removed interrupt stuff, basic blink functionality after 2 days, spitze! :/
[my-code/atmel.git] / beginners / pld_stily.asm
1 ;
2 ; pld for stily (and yvonne) ;)
3 ;
4 ; author: hackbard@hackdaworld.org
5 ;
6
7 .include "../include/m163def.inc"
8
9 INIT:
10 ldi r30,0x00 ; light status
11 ldi r28,1 ; constants
12 ldi r27,0x01;
13 out DDRC,r27 ; select pin 0 as output
14 rjmp LIGHT
15
16 LIGHT:
17 cpi r30,0x00
18 breq LIGHT_ON
19 rjmp LIGHT_OFF
20
21 LIGHT_ON:
22 ldi r31,0 ; reset wait counter
23 ldi r30,0x01
24 out PORTC,r30
25 rjmp WAIT
26
27 LIGHT_OFF:
28 ldi r31,0
29 ldi r30,0x00
30 out PORTC,r30
31 rjmp WAIT
32
33 WAIT:
34 ldi r29,0 ; reset inner wait counter
35 add r31,r28 ; increment wait counter
36 cpi r31,0xff ; after 255 steps
37 breq LIGHT
38 rjmp WAIT_MORE
39
40 WAIT_MORE:
41 ldi r25,0 ; reset inner inner wait counter
42 add r29,r28 ; increment inner wait loop counter
43 cpi r29,0xff ; goto first wait loop after 255 cycles
44 breq WAIT
45 rjmp WAIT_MORE_MORE
46
47 WAIT_MORE_MORE:
48 add r25,r28 ; inc inner inner wait counter
49 cpi r25,0x05 ; goto wait_more loop
50 breq WAIT_MORE
51 rjmp WAIT_MORE_MORE