b8f299e185376ce12e62f330865c1b15d289d002
[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 ; ------------------
10 ; interrupt vectors:
11 ; ------------------
12
13 ; reset
14 nop
15 rjmp INIT
16
17 ; int0
18 nop
19 reti
20
21 ; int1
22 nop
23 reti
24
25 ; timer 2 compare
26 nop
27 reti
28
29 ; timer 2 overflow
30 nop
31 reti
32
33 ; timer 1 capture
34 nop
35 reti
36
37 ; timer 1 compare a
38 nop
39 reti
40
41 ; timer 1 compare b
42 nop
43 reti
44
45 ; timer 1 overflow
46 nop
47 rjmp LASER_OFF
48
49 ; timer 0 overflow
50 nop
51 rjmp INC_COUNT
52
53 ; spi transfer complete
54 nop
55 reti
56
57 ; uart rx complete
58 nop
59 reti
60
61 ; uart data register empty
62 nop
63 reti
64
65 ; uart tx complete
66 nop
67 reti
68
69 ; adc complete
70 nop
71 reti
72
73 ; eeprom ready
74 nop
75 reti
76
77 ; analog comparator
78 nop
79 reti
80
81 ; twi
82 nop
83 reti
84
85 ; -----
86 ; code:
87 ; -----
88
89 INIT:
90 ; set stackpointer
91 ldi r16,low(RAMEND)
92 out SPL,r16
93 ; timer/counter 0 setting (f_clk/1024)
94 ldi r16,(1<<CS02)|(1<<CS00)
95 out TCCR0,r16
96 ; timer/counter 0 enable
97 ldi r16,(1<<TOIE0)
98 out TIMSK,r16
99 ; timer counter 1 setting (f_clk/8)
100 ldi r16,(1<<CS11)
101 out TCCR1B,r16
102 ; adc
103 ldi r16,(1<<ADLAR) ; left adjusted, pin 0 connected to adc, a ref connected
104 out ADMUX,r16
105 ldi r16,(1<<ADEN)|(1<<ADSC)|(1<<ADFR) ; enable, running mode, start first conv.
106 out ADCSR,r16
107 ; port c setings
108 ldi r16,(1<<DDC0)
109 out DDRC,r16
110 ; registers
111 ldi r23,0
112 ldi r25,0
113 ldi r30,0
114 ldi r31,(1<<PINC0)
115
116 MAIN:
117 in r25,ADCH
118 cp r23,r25
119 breq LASER_ON 
120 rjmp MAIN
121
122 LASER_ON:
123 ldi r16,(1<<TOIE1)|(1<<TOIE0)
124 out TIMSK,r16
125 out PORTC,r31
126 rjmp MAIN
127
128 LASER_OFF:
129 ldi r16,(1<<TOIE0)
130 out TIMSK,r16
131 out PORTC,r30
132 rjmp MAIN
133
134 INC_COUNT:
135 inc r23
136 reti
137