Steve Landas wrote: > The idea is for the WDT never to time out. So you scatter a routine > throughout your code to ensure it is triggered before it can time out. Err, no! That is not what you do. If you want to do that, it is much easier to set WDT_OFF in the configuration word, *then* it will never time out. Correct use of the WDT is a FAQ and slightly involved. Basically, you decide on a part of the code which is always executed if the program is working correctly, at intervals less than the time-out period set up for the WDT. You then place *one* CLRWDT instruction in this code so that if the code fails to execute this instruction because it incorrectly branches somewhere else and gets caught in a loop or something, then the WDT times out and causes a processor reset. This to protect against a glitch causing code execution to go awry. It is not intended to counteract a program error. In practice however, it is often not needed for the protective purpose and used instead as an extra, approximate timer function, particularly to allow current saving in periods of sleep. Sorry, I didn't check the original poster's calculations for the timeout period but it is essentially *approximately* 18 ms times the prescaler value set up for the WDT, *IF* it is assigned to the WDT. If the prescaler is assigned to the counter, then timeout is 18 ms. -- Cheers, Paul B.