.include "4433def.inc" .def temp1 = r16 .def zahl = r17 .cseg .org $000 rcall start ;reset handle start: ldi temp1,RAMEND ;LOW-Byte der obersten RAM-Adresse out SPL,temp1 sbi UCSRB,TXEN ;TX aktivieren ldi temp1,4000000/(9600*16)-1 ;Baudrate 9600 einstellen (bei 4MHz) out UBRR,temp1 ldi temp1,0x00 out PORTB,temp1 ; PORT B als Eingang ;out PORTC,temp1 ; PORT C als Eingang ;out PORTD,temp1 ; PORT D als Eingang rjmp MainLoop ; Ab ins Programm!!! reti Warte_1sek: ; ============================= ; Warteschleifen-Generator ; 4000000 Zyklen: ; ----------------------------- ; warte 3999996 Zyklen: ldi R24, $24 WGLOOP0: ldi R25, $BC WGLOOP1: ldi R26, $C4 WGLOOP2: dec R26 brne WGLOOP2 dec R25 brne WGLOOP1 dec R24 brne WGLOOP0 ; ----------------------------- ; warte 3 Zyklen: ldi R24, $01 WGLOOP3: dec R24 brne WGLOOP3 ; ----------------------------- ; warte 1 Zyklus: nop ; ============================= reti serout: sbis UCSRA,UDRE ;Warten, bis UDR für das nächste Byte bereit ist rjmp serout out UDR, temp1 reti MainLoop: ldi temp1, 66 ; PORT B signalisieren rcall serout rcall Warte_1sek ;sbic PINB,0 ;ldi temp1, 65 ;sbis PINB,0 ;ldi temp1, 66 in temp1,PINB rcall serout rcall Warte_1sek ldi temp1, 67 ; PORT C signalisieren rcall serout rcall Warte_1sek in temp1,PINC rcall serout rcall Warte_1sek ldi temp1, 68 ; PORT D signalisieren rcall serout rcall Warte_1sek in temp1,PIND rcall serout rcall Warte_1sek rjmp MainLoop