.include "m8def.inc" ldi r16, HIGH(RAMEND) ; HIGH-Byte der obersten RAM-Adresse out SPH, r16 ldi r16, LOW(RAMEND) ; LOW-Byte der obersten RAM-Adresse out SPL, r16 ldi r16, 0xFF out DDRD, r16 ; Alle Pins am Port B durch Ausgabe von 0xFF ins ; Richtungsregister DDRB als Ausgangkonfigurieren ldi r16, 0x00 out DDRB, r16 ; Alle Pins am Port D durch Ausgabe von 0x00 ins ; Richtungsregister DDRD als Eingangkonfigurieren ldi r16, 0xFF ; Pull-up Widerstände aktivieren out Portb,r16 loop: push ZH push ZL cbi portd, 0 ; LED 1 wird ausgeschaltet cbi portd, 1 ; LED 2 wird ausgeschaltet sbic pinb, 0 ; überspringe nächsten Befehl, wenn Taster1 nicht gedrückt rcall led1 ; geh zu led1, wenn Taster1 gedrückt sbic pinb, 1 ; überspringe nächsten Befehl, wenn Taster2 nicht gedrückt rcall led2 ; geh zu led1, wenn Taster1 gedrückt pop ZH pop ZL rjmp loop led1: sbi portd, 0 ; schalte LED1 an cbi portd, 1 ; schalte LED2 aus rcall taster1 taster1: sbic pinb, 1 ; überspringe nächsten Befehl, wenn Taster2 nicht gedrückt rcall led2 sbis pinb, 2 ; überspringe nächsten Befehl, wenn Taster3 gedrückt ret rjmp loop led2: sbi portd, 1 ; schalte LED2 an cbi portd, 0 ; schalte LED1 aus rcall taster2 taster2: sbic pinb, 0 ; überspringe nächsten Befehl, wenn Taster1 nicht gedrückt rcall led1 sbis pinb, 2 ; überspringe nächsten Befehl, wenn Taster3 gedrückt ret rjmp loop