.include "AVR.H" .org 0 begin: rjmp main ;--- Reset and Interrupt vector ---- ;VNr. Beschreibung ----- rjmp main ;1 POWER ON RESET reti ;2 Int0-Interrupt reti ;3 Int1-Interrupt reti ;4 TC2 Compare Match reti ;5 TC2 Overflow reti ;6 TC1 Capture reti ;7 TC1 Compare Match A reti ;8 TC1 Compare Match B reti ;9 TC1 Overflow reti ;10 TC0 Overflow reti ;11 SPI, STC Serial Transfer Complete reti ;12 UART Rx Complete reti ;13 UART Data Register Empty reti ;14 UART Tx Complete reti ;15 ADC Conversion Complete reti ;16 EEPROM Ready reti ;17 Analog Comparator reti ;18 TWI (IC) Serial Interface reti ;19 Store Program Memory Ready main: sbi DDRB,0 ; DDRB,0 als Ausgang initialisieren sbi DDRB,1 ; DDRB,1 als Ausgang initialisieren sbi DDRB,2 ; DDRB,2 als Ausgang initialisieren cbi DDRD,2 ; DDRB,2 als Eingang initialisieren sbi PORTD,2 ; Pull Up Widerstand einschalten cbi DDRD,3 ; DDRB,3 als Eingang initialisieren sbi PORTD,3 ; Pull Up Widerstand einschalten ldi r17,0b00000000 ; lade 0b00000000 in Register 17 start: in r18,PIND ; Lese Register 18 ein und schiebe es in Register 18 sbrs r18,2 ; Überspringe nächsten Befehl wenn Register 18, Bit 2 gesetzt ist rjmp unten ; springe zu Marke unten sbrs r18,3 ; Überspringe nächsten Befehl wenn Register 18, Bit 3 gesetzt ist rjmp oben ; springe zu Marke oben rjmp start ; springe zu Marke start unten: ldi r17,0b00000010 ; lade 0b00000010 in Register 17 mov r16,r17 ; verschiebe den Inhalt von Register 17 in 16 out PORTB,r16 ; gebe Register 16 an Port B aus rjmp start ; springe zu Marke start oben: ldi r17,0b00000001 ; lade 0b00000001 in Register 17 mov r16,r17 ; verschiebe den Inhalt von Register 17 in 16 out PORTB,r16 ; gebe Register 16 an Port B aus rjmp start ; springe zu Marke start ldi r17,0b00000100 ; lade 0b00000100 in Register 17 mov r16,r17 ; verschiebe den Inhalt von Register 17 in 16 out PORTB,r16 ; gebe Register 16 an Port B aus