Hi,
ungefähr so würde ich es machen:
Code:
Config Timer0 = Timer, Prescale = 1024
On Timer0 Timer0_ISR
Const Timervorgabe = 100
Enable Timer0
Enable Interrupts
Dim I as Integer
Dim sec_vorgabe as Integer
do
loop
Timer0_ISR:
Timer0 = Timervorgabe
If I = 100 Then
I = 0
Decr sec_vorgabe
Endif
Incr I
If sec_vorgabe = 0 Then
'Hier was nach der abgelaufenen Zeit passieren soll
Endif
Return
In sec_vorgabe speicherst du die vorgegeben Zeit in Sekunden. Alle 100 ISR Aufrufe (also jede Sekunde einmal) wird sec_vorgabe um eins verkleinert, weil ja eine Sekunde vergangen ist.
Danach wird überprüft ob sec_vorgabe null erreicht hat, weil dann die Zeit um wäre. Natürlich könntest du auch außerhalb der ISR überprüfen ob sec_vorgabe 0 ist.
MfG
Edit: Wie du den Timer genau einstellst solltest du mit dem Programm rnAvr ausrechnen. Die Einstellungen im Beispiel sind für einen 16 Mhz Quarz
Lesezeichen