View difference between Paste ID: 8a4hnzCQ and rqArZiw9
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: "