Hallo,
Du solltest für größere Zeiten Timer1 benutzen.
Code:
Config Timer1 = Timer, Prescale = 64
Const Startwert=7936
Load Timer1, Startwert
Timer1 zählt ohne Startwert bis 65535 und lößt dann einen Interrupt aus.
Bei deiner Quarzfrequenz von 3686400 Hz / Vorteiler 64 ergibt das 57600 Takte pro Sekunde.
Wenn der Timer mit einem Startwert von 7936 voreingestellt wird, zählt er von diesem Wert, bis 65535.
Ergibt 65535 - 7936 = 57599. Das heisst, jede Sekunde wird ein Interrupt ausgelößt.
Code:
IRQ_Timer1:
Load Timer1, Startwert 'Startwert wieder neu laden
Incr Zaehler 'Zaehler wird jede Sekunde erhöht
Return
Jetzt musst du nur noch in deinem Programm die Auswertung machen.
Wenn ich dich richtig verstanden habe etwa so ...
Code:
If Variable = 1 Then Zaehler = 0 'den Zaehler starten
If Zaehler < 120 AND Pind.0 = 0 then Portd.5 = 0 ' wenn noch keine 2 Minuten um sind und Pind.0 = 0 dann schalte Portd.5 auf 0
Lesezeichen