--- a/led7seg.s Wed May 05 23:43:38 2010 +0300
+++ b/led7seg.s Wed May 05 23:54:50 2010 +0300
@@ -173,6 +173,25 @@
; Done
ret
+;; Delay for approx. 1s
+Delay_1s:
+ ; 20 * 255 * 255 = 1.3M cycles
+ ldi r20, 40
+ ldi r21, 255
+ ldi r22, 255
+
+delay:
+ dec r22
+ brne delay
+ dec r21
+ brne delay
+ dec r20
+ brne delay
+
+ ret
+
+
+Main:
init:
; Stack
ldi r16, high(RAMEND)
@@ -189,11 +208,47 @@
; LCD (requires interrupts)
rcall LCD_Init
-main:
- ; Output something
- ldi r16, LCD_4
+;; Count down from 9
+count:
+ ; init from 9
+ ldi r24, LCD_9
+
+loop:
+ ; display
+ mov r16, r24
rcall LCD_Show
-loop:
+ ; exit if zero
+ tst r24
+ breq blink
+
+ ; count down
+ dec r24
+
+ ; wait...
+ rcall Delay_1s
+
+ ; next
rjmp loop
+
+;; Blink between dot and empty
+blink:
+ rcall Delay_1s
+
+ ; dot
+ ldi r16, LCD_DOT
+ rcall LCD_Show
+ ; wait...
+ rcall Delay_1s
+
+ ; empty
+ ldi r16, LCD_EMPTY
+ rcall LCD_Show
+
+ ; loop
+ rjmp blink
+
+end:
+ rjmp end
+