led7seg.inc
changeset 26 db2ec641c955
parent 25 33496b1a964f
child 30 5226e512755c
--- a/led7seg.inc	Sat May 08 20:59:22 2010 +0300
+++ b/led7seg.inc	Sat May 08 21:19:53 2010 +0300
@@ -39,13 +39,8 @@
 .equ LED7_DOT   = 16
 .equ LED7_EMPTY = 17
 
-; output buffer
-.set LED7_COUNT = 2
-
-.dseg
-led7_buffer:    .byte LED7_COUNT
-
-.cseg
+; LEDs are on beginning of SPI universe
+.set led7_buffer = spi_outbuf + 0
 
 ;; Initialize LCD to empty, and enable
 LED7_Init:
@@ -58,11 +53,8 @@
         sts         led7_buffer + 0, r16
         sts         led7_buffer + 1, r16
 
-    ; Output
-        ldi         r16, LED7_COUNT
-        ldi         XL, low(led7_buffer + LED7_COUNT)
-        ldi         XH, high(led7_buffer + LED7_COUNT)
-        rcall       SPI_SendBuf
+    ; Update display
+        rcall       SPI_SendRecv
 
     ; Enable output once the initial display has been shifted out
         cbi         LED7_PORT, LED7_OE
@@ -151,16 +143,11 @@
 ;; Display a raw segment mask
 ;;  Input: r16, r17
 LED7_ShowRaw:
-    ; Set buffer
+    ; Store buffer
         sts         led7_buffer + 0, r16
         sts         led7_buffer + 1, r17
 
-    ; Output
-        ldi         r16, LED7_COUNT
-        ldi         XL, low(led7_buffer + LED7_COUNT)
-        ldi         XH, high(led7_buffer + LED7_COUNT)
-
-    ; Display
-        rjmp        SPI_SendBuf
+    ; Update display
+        rjmp        SPI_SendRecv