corrected careless mistake
[my-code/atmel.git] / beginners / test_port_d.asm
1 ;
2 ; portd 3-7 blinken lights ;)
3 ;
4 ; author: hackbard@hackdaworld.dyndns.org
5 ;
6
7 .include "../include/2313def.inc"
8
9 INIT:
10 ldi r30,2 ; light counter
11 ldi r28,1 ; constants
12 ldi r27,0x7f ;
13 out DDRD,r27 ; select all pins as output
14 rjmp LIGHT
15
16 LIGHT:
17 ldi r31,0 ; reset wait counter
18 lsl r30
19 cpi r30,128
20 breq RESET_L
21 ldi r16,0xff
22 sub r16,r30
23 out PORTD,r16
24 rjmp WAIT
25
26 RESET_L:
27 ldi r30,2 ; again start with 1
28 rjmp LIGHT
29
30 WAIT:
31 ldi r29,0 ; reset inner wait counter
32 add r31,r28 ; increment wait counter
33 cpi r31,0xff ; after 255 steps
34 breq LIGHT
35 rjmp WAIT_MORE
36
37 WAIT_MORE:
38 ldi r25,0 ; reset inner inner wait counter
39 add r29,r28 ; increment inner wait loop counter
40 cpi r29,0xff ; goto first wait loop after 255 cycles
41 breq WAIT
42 rjmp WAIT_MORE_MORE
43
44 WAIT_MORE_MORE:
45 add r25,r28 ; inc inner inner wait counter
46 cpi r25,0x05 ; goto wait_more loop
47 breq WAIT_MORE
48 rjmp WAIT_MORE_MORE