(C)stachan 08.02.2024

Task 6 :: Button & Interrupt

Aktivieren Sie den roten Button:

  • Schreiben Sie ein Programm mit Endlosschleife, das im Abstand von 1T=20000 immer wieder von 3 bis 9 zählt (Schleife benutzen!!!) und dies im Debugger ausgibt.

  • Bei Klick auf den roten Button soll im Debugger der Text „Interrupted by [IHR_NACHNAME]“ ausgegeben werden.

; Wie man Interrupt aktiviert:
; Aus dem Demo-Beispiel von YASP.me benötigen Sie folgende Zeilen:

; ---- Zeilen 9-12:

; Enable interrupts for the red button (= pin 2)
; Pin:  7 6 5 4 3 2 1 0
; Mask: 0 0 0 0 0 1 0 0 = 4dec
	ENABLE  4


; ---- Hier folgt Ihr Programm:
main:
	; Ihr Code ...
	JMP     main	; Alles nach dieser Zeile darf nie direkt erreichbar sein

; ---- Ab Zeile 30:

isr1:			; wenn der rote Button geklickt wird
	; Ihr Code ...
	RETI            ; Rückkehr zum Hauptprogramm

; ---- interrupt table, alle 4 Zeilen!!!
	ORG     0x100
	DW      0	    ; pin 0 (not wired)
	DW      0	    ; black button
	DA      isr1	    ; red button
END

Activate the red button:

  • Write a programme with an infinite loop that counts from 3 to 9 at intervals of 1T=20000 (use the loop!!!) and outputs this in the debugger.

  • When the red button is clicked, the text ‘Interrupted by [YOUR_LAST_NAME]’ should be output in the debugger.

; How to enable interrupt:
; From the demo example of YASP.me you need the following lines:

; ---- Lines 9-12:

; Enable interrupts for the red button (= pin 2)
; Pin:  7 6 5 4 3 2 1 0
; Mask: 0 0 0 0 0 1 0 0 = 4dec
	ENABLE  4


; ---- Here is your program:
main:
	; Your code ...
	JMP     main	; Everything after this line must never be 
                        ; directly accessible

; ---- From line 30:

isr1:			; when the red button is pressed
	; Your code ...
	RETI            ; Return to the main program

; ---- interrupt table, all 4 lines!!!
	ORG     0x100
	DW      0	    ; pin 0 (not wired)
	DW      0	    ; black button
	DA      isr1	    ; red button
END