increased wait
[my-code/atmel.git] / beginners / test_port_d.asm
1 .include "../include/2313def.inc"
2
3 INIT:
4 ldi r31,0 ; wait counter
5 ldi r30,0 ; decide counter
6 ldi r29,0 ; another wait counter
7 ldi r28,1 ; constant
8 out DDRD,r30 ; select all pins as input
9 rjmp DECIDE ; goto decide
10
11 DECIDE:
12 add r30,r28 ; add 1 to decission counter .. so we start with SET_1
13 cpi r30,0
14 breq SET_0
15 cpi r30,1
16 breq SET_1
17 cpi r30,2
18 breq SET_2
19 ldi r30,0 ; now begin with SET_0
20 rjmp DECIDE
21
22 SET_0:
23 ldi r16,0
24 sbr r16,14 ; ports 3,4,5
25 out PORTD,r16
26 rjmp WAIT
27  
28 SET_1:
29 ldi r16,0
30 sbr r16,48 ; ports 6,7
31 out PORTD,r16
32 rjmp WAIT
33
34 SET_2:
35 ldi r16,0
36 sbr r16,42 ; ports 3,5,7
37 out PORTD,r16
38 rjmp WAIT
39
40 WAIT:
41 ldi r29,0 ; reset inner wait counter
42 add r31,r28 ; increment wait counter
43 cpi r31,0xff ; after 255 steps
44 breq RESET ; reset wait counter
45 rjmp WAIT_MORE
46
47 WAIT_MORE:
48 add r29,r28 ; increment inner wait loop counter
49 cpi r29,0xff ; goto first wait loop after 255 cycles
50 breq WAIT
51 rjmp WAIT_MORE
52
53 RESET:
54 ldi r31,0
55 rjmp DECIDE