# HG changeset patch # User Tero Marttila # Date 1273092890 -10800 # Node ID b45780fbd7e8913ddd4ea592c92b9cb281763c42 # Parent 0584de343264c6d2a819e37b582d4c716b7c4c92 count down a and blink \o/ diff -r 0584de343264 -r b45780fbd7e8 led7seg.s --- 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 +