And if you aren't comfortable with interrupts, you can sit in a loop and watch for a timer overflow, reload the timer, run your main program and go back to the loop. As long as your main program takes less time to execute than the timer overflow period (extremely likely), everything works perfectly.

I do this all the time for run-time counters. If you are using 18F devices, you can easily get a 2 second period, even if you are running at 20Mhz. I count the jumps to MAIN. After 30 jumps, I increment the minutes counter.