; ************************************* ; Beispielprogramm Externer Interrupt 0 ; ************************************* TCON data 88h ; Timer Control SFR ITCON data 9ah ; Interruptkontrolle SFR ;-------------------------------- ; Sprung zu den Interruptroutinen ;-------------------------------- ORG 3h ; externer Interrupt 0 ljmp Int_EX0 ; Sprung in Interruptroutine ORG 0bh ; Timer 0 Interrupt clr ET0 ; Interrupt abschalten reti ; Rücksprung ORG 13h ; externer Interrupt 1 clr EX1 ; evtl. externen Interrupt 1 abschalten reti ; Rücksprung ORG 1bh ; Timer 1 Interrupt clr ET1 ; Interrupt abschalten reti ; Rücksprung ; Nur bei Betrieb mit Tasking Monitor: ; Anmerkung: Der Interrupt für die SIO darf nicht mit ORG ; überladen werden, sonst stürzt der Monitor beim Laden ; des Programmes ab! ;------------------------------ ; Hauptprogramm ; 1. Initialisierung ;------------------------------ ORG 100h clr EA ; alle Interrupts verbieten mov SP, #0c0h ; Stack einrichten mov P1, #0 ; Anfangswert für P1 setb P3.2 ; Interrupteingang als Eingang vorbereiten setb EX0 ; EX0=1 Freigabe des externen Interrupts 0 clr PX0 ; PX0=0 niedrige Priorität (PX0=1 hohe Priorität) anl TCON, #0feh ; TCON.0=0 fallende Flanke orl ITCON,#1 ; ITCON.0=1 anl ITCON,#0fdh ; ITCON.1=0setb TCON.2 setb EA ; EA=1 globale Interruptfreigabe ;------------------------------- ; eigentliches Programm: ; leere Schelfie, die nichts tut ;------------------------------- ljmp $ ; Endlosschleife, $ -- aktuelle Befehlsadresse ;============================================== ; Interruptroutine für den externen Interrupt 0 ; Ausgelöst durch Druck auf Taste "Int0" ;============================================== Int_EX0: inc P1 ; LEDs weiterzählen und anzeigen reti ; Interrupt quittieren END