This might be a solution that will work for you:

- Set up a Timer with a prescale and starting value so it overflows at the desired interval ("say 1 min"). Depending on what clock rate your using, you may be limited to a timer with a large prescale. A quick look at the "Complete Mid-Range/High-Range Reference Manuals" shows TIMER0 with a prescale as large as 1:256. Certainly enough for any clock rate you could use.

- Either setup an interrupt handler or just poll the timers interrupt flag periodicly (depending on the timing precision you need) to know when the time period has expired.

- IF the time expires THEN GOTO where ever you want to restart the program.

- When the button is pressed, stop the timer, reset the prescale and starting value, then restart the timer.

Is this what you are looking to accomplish?
Steve