von Ulli Kainka
Elektronik-Labor Projekte AVR
;Timer_M.asm, AD-Wandler Eingang PB4 8 Bit, Ausgang PB0, Taster PB2
;Stand 23-07-2012 Timer 0-46sek fuer Kaffemuehle
.include "tn13def.inc"
.def A = r16
.equ TS = 2
.equ Ausg = 0
rjmp Anfang
Anfang:
sbi ddrb,Ausg
cbi portb,Ausg
rcall AdcInit
Schleife:
rcall RdTst
rcall RdADC
rcall Pwron
rcall Zeit
rcall Pwroff
rjmp Schleife
AdcInit:
ldi A,3 ;Clock / 4
out ADCSRA,A
sbi ADCSRA,ADEN ;AD einschalten
ret
RdADC:
ldi A,2
out ADMUX,A
sbi ADMUX,ADLAR ;Left adjust
sbi ADCSRA,ADSC ;Wandlung starten
ADrdy:
sbic ADCSRA,ADSC
rjmp ADrdy
sbi ADCSRA,ADSC
ADrdyb:
sbic ADCSRA,ADSC
rjmp ADrdyb
in A,ADCH
ret
RdTst:
sbis pinb,TS
rjmp RdTst
RdTstb:
sbis pinb,TS
ret ;Taster mit neg Flanke an PB2
rjmp RdTstb
Zeit: ;180 Millisekunden
Ldi r17,250
Warten1: ;äußere Schleife
Ldi r18,240
Warten2: ;innere Schleife
dec r18
brne Warten2
dec r17
brne Warten1
sbic pinb,TS ;dauer-an falls Taster gedrueckt
rjmp Pperm ;dauer-an falls Taster gedrueckt
dec r16
brne Zeit
ret ;Rücksprung zum Hauptprogramm
Pperm:
sbic pinb,TS
sbi portb,Ausg
Ppermb:
sbic pinb,TS
rjmp Ppermb
ret
Pwron:
sbi portb,Ausg
ret
Pwroff:
cbi portb,Ausg
ret