SHOW:
|
|
- or go back to the newest paste.
1 | main: ldi r16,lo8(RAMEND) | |
2 | - | ; Reset and Interrupt Vector ;VNr. Beschreibung |
2 | + | |
3 | - | rjmp main ;1 POWER ON RESET |
3 | + | |
4 | - | reti ;2 Int0-Interrupt |
4 | + | |
5 | - | reti ;3 Int1-Interrupt |
5 | + | |
6 | - | reti ;4 TC2 Compare Match |
6 | + | |
7 | - | reti ;5 TC2 Overflow |
7 | + | |
8 | - | reti ;6 TC1 Capture |
8 | + | |
9 | - | reti ;7 TC1 Compare Match A |
9 | + | |
10 | - | reti ;8 TC1 Compare Match B |
10 | + | |
11 | - | reti ;9 TC1 Overflow |
11 | + | |
12 | - | reti ;10 TC0 Overflow |
12 | + | |
13 | - | reti ;11 SPI, STC Serial Transfer Complete |
13 | + | |
14 | - | reti ;12 UART Rx Complete |
14 | + | |
15 | - | reti ;13 UART Data Register Empty |
15 | + | |
16 | - | reti ;14 UART Tx Complete |
16 | + | |
17 | - | reti ;15 ADC Conversion Complete |
17 | + | |
18 | - | reti ;16 EEPROM Ready |
18 | + | |
19 | - | reti ;17 Analog Comparator |
19 | + | ;Init ADC [ADEN = 1 : Conversion enabled] |
20 | - | reti ;18 TWI (I2C) Serial Interface |
20 | + | |
21 | - | reti ;19 Store Program Memory Ready |
21 | + | |
22 | ;------------------------------------------------------------------------ | |
23 | - | ; Start, Power On, Reset |
23 | + | |
24 | ;Channel[0 = ADC0, 1 = ADC1, 2 = ADC2 ...] | |
25 | ||
26 | ||
27 | ||
28 | ldi r19,20 | |
29 | add r19,r1 | |
30 | mul r19,2 | |
31 | doit: | |
32 | rcall adco1 | |
33 | ldi r16,4 | |
34 | out PORTB,r16 | |
35 | rcall waitpotims | |
36 | ldi r16,0 | |
37 | out PORTB,r16 | |
38 | rcall waitpotims | |
39 | ||
40 | dec r19 | |
41 | tst r19 | |
42 | - | ;Initialisierung ADC [ADEN = 1 : Conversion enabled] |
42 | + | |
43 | ||
44 | ldi ZL,lo8(pot1) | |
45 | ldi ZH,hi8(pot1) | |
46 | mov r25,r1 | |
47 | rcall displayTextNumber | |
48 | ||
49 | rcall wait500ms | |
50 | ||
51 | ldi r19,20 | |
52 | add r19,r1 | |
53 | mul r19,2 | |
54 | doagain: | |
55 | rcall adco2 | |
56 | ||
57 | ldi r16,4 | |
58 | out PORTB,r16 | |
59 | rcall waitpotims | |
60 | ldi r16,0 | |
61 | out PORTB,r16 | |
62 | rcall waitpotims | |
63 | ||
64 | dec r19 | |
65 | tst r19 | |
66 | brne doagain | |
67 | ||
68 | ldi ZL,lo8(pot2) | |
69 | ldi ZH,hi8(pot2) | |
70 | mov r25,r1 | |
71 | rcall displayTextNumber | |
72 | ||
73 | rcall wait500ms | |
74 | ||
75 | ||
76 | rjmp mainloop | |
77 | ||
78 | adco1: | |
79 | ||
80 | ldi r16, (1<<REFS0)// set channel | |
81 | out ADMUX, r16 | |
82 | sbi ADCSRA, ADSC // start conversion | |
83 | ||
84 | wait_for_conv_finished: | |
85 | sbic ADCSRA, ADSC //bit ADSC goes low after conversion done | |
86 | rjmp wait_for_conv_finished | |
87 | ||
88 | in r1, ADCL | |
89 | in r2, ADCH | |
90 | ||
91 | ret | |
92 | ||
93 | adco2: | |
94 | ||
95 | ldi r16, (1<<REFS0) | 1// set channel | |
96 | out ADMUX, r16 | |
97 | sbi ADCSRA, ADSC // start conversion | |
98 | ||
99 | wait_for_conv_finished2: | |
100 | sbic ADCSRA, ADSC //bit ADSC goes low after conversion done | |
101 | rjmp wait_for_conv_finished2 | |
102 | ||
103 | in r1, ADCL | |
104 | in r2, ADCH | |
105 | ret | |
106 | ||
107 | ||
108 | waitpotims: add r16,r1 ;50 * 10ms = 0,5s | |
109 | rcall wait10ms | |
110 | ret | |
111 | ||
112 | wait500ms: ldi r16,50 ;50 * 10ms = 0,5s | |
113 | rcall wait10ms | |
114 | ret | |
115 | ||
116 | wait10ms: tst r16 | |
117 | breq wait10msc | |
118 | push r16 | |
119 | push r24 | |
120 | push r25 | |
121 | wait10ms1: wdr | |
122 | ldi r24,lo8(3686400/3200) | |
123 | ldi r25,hi8(3686400/3200) | |
124 | wait10ms2: sbiw r24,1 | |
125 | brne wait10ms2 | |
126 | dec r16 | |
127 | brne wait10ms1 | |
128 | pop r25 | |
129 | pop r24 | |
130 | pop r16 | |
131 | wait10msc: ret | |
132 | ||
133 | ||
134 | #include "lcd_display.s" | |
135 | .text | |
136 | pot1: .string "Pot.1: " | |
137 | pot2: .string "Pot.2: " |