Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Um die gewünschte Aufgabe mit einem Atmega8 in Assembler zu erledigen, müssen Sie die folgenden Schritte ausführen:
- 1. Konfigurieren Sie die Ports und Interrupts:
- - Legen Sie den Port D, Pin 2 als Eingang (Input) für den ersten Taster fest.
- - Legen Sie den Port D, Pin 3 als Eingang (Input) für den zweiten Taster fest.
- - Konfigurieren Sie den Pin 2 als INT0 und den Pin 3 als INT1.
- - Aktivieren Sie die externen Interrupts für INT0 und INT1.
- 2. Schreiben Sie die Interrupt-Routinen:
- - Erstellen Sie eine Interrupt-Routine für INT0, die die LED einschaltet, wenn der erste Taster gedrückt wird.
- - Erstellen Sie eine Interrupt-Routine für INT1, die die LED ausschaltet, wenn der zweite Taster gedrückt wird.
- 3. Schreiben Sie den Hauptprogrammcode:
- - Initialisieren Sie die Ports und Interrupts.
- - Verwenden Sie eine Endlosschleife, um das Programm zu halten.
- Hier ist ein Beispiel für den Assemblercode:
- ```
- ; Initialisierung
- .include "m8def.inc"
- .org 0x0000
- rjmp main
- ; Interrupt-Routine für INT0
- int0:
- sbi PINB, PINB2 ; Überprüfen Sie, ob der erste Taster gedrückt wurde
- brtc led_ein ; Wenn nicht, springen Sie zum Ende der Routine
- cbi PINB, PINB2 ; Wenn ja, setzen Sie den PINB2-Bit auf 0 (ausgeschaltet)
- reti
- ; Interrupt-Routine für INT1
- int1:
- sbi PINB, PINB3 ; Überprüfen Sie, ob der zweite Taster gedrückt wurde
- brtc led_aus ; Wenn nicht, springen Sie zum Ende der Routine
- cbi PINB, PINB3 ; Wenn ja, setzen Sie den PINB3-Bit auf 0 (ausgeschaltet)
- reti
- ; Hauptprogramm
- main:
- ; Initialisierung der Ports und Interrupts
- ldi r16, 0x00
- out DDRB, r16 ; Setzen Sie alle Bits von PORTB auf Eingang (0)
- out DDRD, r16 ; Setzen Sie alle Bits von PORTD auf Eingang (0)
- ldi r16, 0x02 ; Konfigurieren Sie INT0 (PINB2) als externen Interrupt
- sts EICRA, r16
- ldi r16, 0x03 ; Konfigurieren Sie INT1 (PINB3) als externen Interrupt
- sts EICRA, r16
- sei ; Aktivieren Sie die Interrupts
- ; Endlosschleife
- loop:
- rjmp loop
- ; Subroutinen
- led_ein:
- cbi PINB, PINB0 ; Schalten Sie die LED ein
- ret
- led_aus:
- sbi PINB, PINB0 ; Schalten Sie die LED aus
- ret
- ```
- Dieser Code konfiguriert die Ports und Interrupts gemäß Ihren Anforderungen und schaltet die LED ein oder aus, je nachdem, welcher Taster gedrückt wurde.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement