Für die Reset Taste muss du einfach den Reset-Pin deines AVRs (bei mir is es Pin9, mega32) über eine Taste mit Masse verbinden.
Hab hier mal das Programm geschrieben, ist natürlich nicht ausführbar weil du die Eingangports definieren musst und noch die Syntax anpassen, weil ich die nicht so gut kenne (programmiere in C).
Code:
dim i as integer
dim taste_gedrueckt as bool
taste_gedrueckt = 0
Config Timer0 = Timer, Prescale = 1024
On Timer0 Timer_irq
'Diese Vorgabe wurde berechnet um die genaue Intervallfrequenz zu erreichen
Const Timervorgabe = 100
'Hier werden die Timer aktiviert
Enable Timer0
Enable Interrupts
Do
if [taste] == 1 then
if taste_gedrueckt = 0 then taste_gedrueckt = 1 endif
if taste_gedrueckt = 1 then taste_gedrueckt = 0 endif
endif
Waitms 1
Loop
Timer_irq:
Timer0 = Timervorgabe
if i == 30000 then
i = 0
taste_gedrückt = 0
'Hier können auch Befehle stehen, die ausgeführt werden wenn die 5 Minuten erreicht sind.
else if taste_gedrückt == 1 then
i++
endif
Return
Das Programm wird über eine Taste gestartet und kann mit der selben Taste unterbrochen werden und der timer wieder "eingeschaltet" werden (stimmt net ganz, weil der timer ja weiterläuft, nur wird i net inkrementiert). Nach 5 Minuten stoppt das Programm die Inkrementation von i und muss mit der Taste neu gestartet werden.
MfG
Lesezeichen