.include "m8def.inc" ; ======================================= ; Variablen definieren ; ======================================= .DEF MERK = R16 .DEF WERT = R17 ; ======================================= ; IRQ Sprungadressen definieren ; ======================================= .ORG 0x000 RJMP MAIN ; ======================================= ; Stackpointer initialisieren ; ======================================= MAIN: LDI WERT, LOW(RAMEND) OUT SPL, WERT LDI WERT, HIGH(RAMEND) OUT SPH, WERT ; ======================================= ; Tasteneingang PORTD und Ausgang PORTB aktivieren ; ======================================= LDI WERT, 0xFF OUT DDRB, WERT LDI WERT, 0x00 OUT DDRD, WERT LDI WERT, 0xFF OUT PORTD, WERT ; ======================================= ; Hauptprogramm ; ======================================= Loop: MOV MERK, WERT IN WERT, PIND CPI WERT, 0b11111100 BRNE Loop SBIC MERK, 0 RCALL Weiter_1 SBIC MERK, 1 RCALL Weiter_2 RJMP LOOP Weiter_1 SBIS PinB, 2 SBI PortB, 2 SBIC PinB, 2 CBI PortB, 2 RET Weiter_2: SBIS PinB, 3 SBI PortB, 3 SBIC PinB, 3 CBI PortB, 3 RET