;Programm zur PP-Demodulation ; .INCLUDE "2313def.inc" .DEF T1L= R0 .DEF T1H= R1 .DEF T2L= R2 .DEF T2H= R3 .DEF Inreg= R16 .DEF Outreg= R17 RESET: ;Register nullen CLR T1L CLR T1H CLR T2L CLR T2H Eingabe: ;Definieren der Ports LDI Inreg, 0x00 OUT DDRD, Inreg LDI Outreg, 0xFF out DDRB, Outreg Warte1: ;wenn Pegel L dann Warteschleife bis Pegel H SBIS PIND,3 RJMP Warte1 T1: ; Zähler für die H Zeit INC T1L SBIC PIND,3 ;springt aus Zähler wenn Eingang L wird BRNE T1 INC T1H DEC T1H ;zieht beim Sprung verursachte Erhöhung ab Warte2: ; wenn Pegel H dann Warteschleife bis Pegel L SBIC PIND,3 RJMP Warte2 T2: ; Zähler für die L Zeit INC T2L SBIS PIND,3 ;springt aus Zähler wenn Eingang L wird BRNE T2 INC T2H DEC T2H ;zieht beim Sprung verursachte Erhöhung ab T: ; Addiert die T1 und T2 zu TGesamt ADD T2L,T1L ;addiert lower byte ADC T2H,T1H ;addiert higher byte mit Übertragsbit c Ausgabe: ;Definiert PortB als Ausgabeport LDI Outreg, 0xFF OUT DDRB, Outreg ; Ausgabe R0 OUT PORTB, T1L LOOP: ;Schleife zur Taster-Abfrage für das Register-Output NOP SBIS PIND,6 RJMP LOOP ; Ausgabe R1 OUT PORTB, T1H LOOP1: ;Entprellung NOP SBIC PIND,6 RJMP LOOP1 LOOP2: NOP SBIS PIND,6 RJMP LOOP2 ; Ausgabe R2 OUT PORTB, T2L LOOP3: NOP SBIC PIND,6 RJMP LOOP3 LOOP4: NOP SBIS PIND,6 RJMP LOOP4 ;Ausgabe R3 OUT PORTB, T2H RESETLOOP: NOP SBIS PIND,2 RJMP RESETLOOP RJMP RESET