+;
+; portd 3-7 blinken lights ;)
+;
+; author: hackbard@hackdaworld.dyndns.org
+;
+
.include "../include/2313def.inc"
INIT:
-ldi r31,0 ; wait counter
-ldi r30,0 ; decide counter
-ldi r29,0 ; another wait counter
-ldi r28,1 ; constant
-out DDRD,r30 ; select all pins as input
-rjmp DECIDE ; goto decide
-
-DECIDE:
-add r30,r28 ; add 1 to decission counter .. so we start with SET_1
-cpi r30,0
-breq SET_0
-cpi r30,1
-breq SET_1
-cpi r30,2
-breq SET_2
-ldi r30,0 ; now begin with SET_0
-rjmp DECIDE
+ldi r30,2 ; light counter
+ldi r28,1 ; constants
+ldi r27,0x7f ;
+out DDRD,r27 ; select all pins as output
+rjmp LIGHT
-SET_0:
-ldi r16,0
-sbr r16,14 ; ports 3,4,5
-out PORTD,r16
-rjmp WAIT
-
-SET_1:
-ldi r16,0
-sbr r16,48 ; ports 6,7
+LIGHT:
+ldi r31,0 ; reset wait counter
+lsl r30
+cpi r30,128
+breq RESET_L
+ldi r16,0xff
+sub r16,r30
out PORTD,r16
rjmp WAIT
-SET_2:
-ldi r16,0
-sbr r16,42 ; ports 3,5,7
-out PORTD,r16
-rjmp WAIT
+RESET_L:
+ldi r30,2 ; again start with 1
+rjmp LIGHT
WAIT:
ldi r29,0 ; reset inner wait counter
add r31,r28 ; increment wait counter
cpi r31,0xff ; after 255 steps
-breq RESET ; reset wait counter
+breq LIGHT
rjmp WAIT_MORE
WAIT_MORE:
+ldi r25,0 ; reset inner inner wait counter
add r29,r28 ; increment inner wait loop counter
cpi r29,0xff ; goto first wait loop after 255 cycles
breq WAIT
-rjmp WAIT_MORE
+rjmp WAIT_MORE_MORE
-RESET:
-ldi r31,0
-rjmp DECIDE
+WAIT_MORE_MORE:
+add r25,r28 ; inc inner inner wait counter
+cpi r25,0x05 ; goto wait_more loop
+breq WAIT_MORE
+rjmp WAIT_MORE_MORE