I'm using a 16F688, trying to figure out this timer thing and I'm missing something...

How do I start and stop it?

I see TMR1 has an enable bit which apparently serves to start/stop Timer1, but can't find any such bit for Timer0.

Also, there is a paragraph in the data sheet that says the prescaler is not readable or writable.

Datasheet: 5.1.3 pg 46:
"The prescaler is not readable or writable. When assigned to the Timer0 module, all instructions writing to the TMR0 register will clear the prescaler."

Eh?!?! This seems to tell me I can't change the prescaler, and even if I could, as soon as I write a value to TMR0 (like to pre-load it with a value so it times out sooner) then this prescaler will be cleared. This makes no sense.


I'm just trying to do the super simple task of:

-setting a prescaler of 1:8
-load the TMR0 with 5
-clear the overflow flag
-start the timer
-watch for the flag to occur at overflow


There are also times I'm going to want to stop the timer, read the value, then perhaps re-start it. This would seem to be super simple with a start/stop flag.

I checked to see if there were any notes in the section about the WDT - maybe starting / stopping the WDT also controls Timer0 as they seem closely linked, but still nothing that was obvious.

Stumped. Please help.