Advertisement
PiXLFAIL

Untitled

Dec 18th, 2023
41
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.43 KB | None | 0 0
  1. https://t.ly/xIQk1
  2. Um die gewünschte Aufgabe mit einem Atmega8 in Assembler zu erledigen, müssen Sie die folgenden Schritte ausführen:
  3.  
  4. 1. Konfigurieren Sie die Ports und Interrupts:
  5. - Legen Sie den Port D, Pin 2 als Eingang (Input) für den ersten Taster fest.
  6. - Legen Sie den Port D, Pin 3 als Eingang (Input) für den zweiten Taster fest.
  7. - Konfigurieren Sie den Pin 2 als INT0 und den Pin 3 als INT1.
  8. - Aktivieren Sie die externen Interrupts für INT0 und INT1.
  9.  
  10. 2. Schreiben Sie die Interrupt-Routinen:
  11. - Erstellen Sie eine Interrupt-Routine für INT0, die die LED einschaltet, wenn der erste Taster gedrückt wird.
  12. - Erstellen Sie eine Interrupt-Routine für INT1, die die LED ausschaltet, wenn der zweite Taster gedrückt wird.
  13.  
  14. 3. Schreiben Sie den Hauptprogrammcode:
  15. - Initialisieren Sie die Ports und Interrupts.
  16. - Verwenden Sie eine Endlosschleife, um das Programm zu halten.
  17.  
  18. Hier ist ein Beispiel für den Assemblercode:
  19.  
  20. ```
  21. ; Initialisierung
  22. .include "m8def.inc"
  23. .org 0x0000
  24. rjmp main
  25.  
  26. ; Interrupt-Routine für INT0
  27. int0:
  28. sbi PINB, PINB2 ; Überprüfen Sie, ob der erste Taster gedrückt wurde
  29. brtc led_ein ; Wenn nicht, springen Sie zum Ende der Routine
  30. cbi PINB, PINB2 ; Wenn ja, setzen Sie den PINB2-Bit auf 0 (ausgeschaltet)
  31. reti
  32.  
  33. ; Interrupt-Routine für INT1
  34. int1:
  35. sbi PINB, PINB3 ; Überprüfen Sie, ob der zweite Taster gedrückt wurde
  36. brtc led_aus ; Wenn nicht, springen Sie zum Ende der Routine
  37. cbi PINB, PINB3 ; Wenn ja, setzen Sie den PINB3-Bit auf 0 (ausgeschaltet)
  38. reti
  39.  
  40. ; Hauptprogramm
  41. main:
  42. ; Initialisierung der Ports und Interrupts
  43. ldi r16, 0x00
  44. out DDRB, r16 ; Setzen Sie alle Bits von PORTB auf Eingang (0)
  45. out DDRD, r16 ; Setzen Sie alle Bits von PORTD auf Eingang (0)
  46.  
  47. ldi r16, 0x02 ; Konfigurieren Sie INT0 (PINB2) als externen Interrupt
  48. sts EICRA, r16
  49. ldi r16, 0x03 ; Konfigurieren Sie INT1 (PINB3) als externen Interrupt
  50. sts EICRA, r16
  51.  
  52. sei ; Aktivieren Sie die Interrupts
  53.  
  54. ; Endlosschleife
  55. loop:
  56. rjmp loop
  57.  
  58. ; Subroutinen
  59. led_ein:
  60. cbi PINB, PINB0 ; Schalten Sie die LED ein
  61. ret
  62.  
  63. led_aus:
  64. sbi PINB, PINB0 ; Schalten Sie die LED aus
  65. ret
  66. ```
  67.  
  68. 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