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