--- 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