Jetzt habe ich einmal schnell ein Programm extra für die geschrieben. Auch gleich von mir getestet. Es wird der interne Interrupt des Timers verwendet.
über LJMP HP müsst ihr noch die Include-Datei des Controllers einfügen.
Das hier ist ein 8Bit Zähler von 0 bis 255, immer wenn der Port 3.3 an Masse gelegt ist zählt er.
Code:
LJMP HP
ORG 000bh ; Wenn der Interrupt ausgelöst wird gehts hier los
INC R0
MOV P2,R0
Weiter:
MOV TL0,#0xAF
MOV TH0,#0x3C
reti
;----------------------------------------------------------------------------------------------------------------------------
;Interroutroutine - wird nur einmal vom Controller abgearbeitet
HP:
MOV TL0,#0xAF
MOV TH0,#0x3C
MOV TMOD,#00000001b
MOV P2,#0d
SETB ET0 ;Interruptfreigabe
SETB EA ;allgemeine Interruptfreigabe
;Nach dem Befehl RETI geht der Controller wieder hier rein
StartStop:
JB P3.3,los
sjmp StartStop
stop:
CLR TR0
sjmp StartStop
los:
SETB TR0 ;Wenn StartStop gedrückt wurde, wird der Timer aktiviert
warte:
JNB P3.3,stop ;Wenn StartStop nicht mehr gedrückt ist wird der Timer deaktiviert
sjmp warte
end
Lesezeichen