;ADXL202_10bit.asm, AD-Wandler abfragen .include "tn13def.inc" .def A = r16 .def B = r17 .def Delay = r18 .def Count = r19 ;Port B .equ TXD = 1 .equ Eingang = 3 rjmp Anfang Anfang: sbi ddrb,TXD ;Datenrichtung TXD AdcInit: ldi A,3 ;Clock / 4 out ADCSRA,A sbi ADCSRA,ADEN ;AD einschalten Schleife: rcall RdCOM rcall RdADC rcall WrCOM mov A,B rcall WrCOM rjmp Schleife RdADC: out ADMUX,A sbi ADCSRA,ADSC ;Wandlung starten ADrdy: sbic ADCSRA,ADSC rjmp ADrdy sbi ADCSRA,ADSC ADrdyb: sbic ADCSRA,ADSC rjmp ADrdyb in B,ADCL in A,ADCH ret RdCOM: sbis pinb,Eingang ;Eingang abfragen rjmp RdCOM ldi Delay,58 D1: dec Delay brne D1 ldi A,0 ldi Count,8 L1: lsr A sbic pinb,Eingang ori A,128 ldi Delay, 38 D2: dec Delay brne D2 dec Count brne L1 ldi Delay, 38 D3: dec Delay brne D3 com A ret WrCOM: sbi portb,TXD ;Senden ldi Delay,38 D4: dec Delay brne D4 ldi Count,8 L2: sbrc A,0 rjmp OFF rjmp ON ON: sbi portb,TXD rjmp BitD OFF: cbi portb,TXD rjmp BitD BitD: ldi Delay,38 D5: dec Delay brne D5 lsr A dec Count brne L2 cbi PORTB,TXD ldi Delay,38 D6: dec Delay brne D6 ret