Hi,
ungefähr so würde ich es machen:
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.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
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







Zitieren

Lesezeichen