PIC16F5X
7.2.1
SWITCHING PRESCALER
ASSIGNMENT
The prescaler assignment is fully under software control
(i.e., it can be changed “on-the-fly” during program
execution). To avoid an unintended device Reset, the
following instruction sequence (Example 7-1) must be
executed when changing the prescaler assignment
from Timer0 to the WDT.
EXAMPLE 7-1:
CHANGING PRESCALER
(TIMER0→WDT)
CLRWDT
CLRF
MOVLW
OPTION
CLRWDT
MOVLW
OPTION
TMR0
B'00xx1111’
B'00xx1xxx’
;Clear WDT
;Clear TMR0 & ;Prescaler
;Last 3 instructions
;in this example
;are required only if
;desired
;PS<2:0> are 000 or 001
;Set Prescaler to
;desired WDT rate
To change prescaler from the WDT to the Timer0
module, use the sequence shown in Example 7-2. This
sequence must be used even if the WDT is disabled. A
CLRWDT instruction should be executed before
switching the prescaler.
EXAMPLE 7-2:
CHANGING PRESCALER
(WDT→TIMER0)
CLRWDT
MOVLW
OPTION
B'xxxx0xxx'
;Clear WDT and
;prescaler
;Select TMR0, new
;prescale value and
;clock source
FIGURE 7-5:
BLOCK DIAGRAM OF THE TIMER0/WDT PRESCALER
TCY ( = FOSC/4)
T0CKI
pin
T0SE(1)
0
M
U
1X
T0CS(1)
1
M
U
0X
PSA(1)
Sync
2
Cycles
Data Bus
8
TMR0 reg
Watchdog
Timer
WDT Enable bit
0
M
U
1X
PSA(1)
8-bit Prescaler
8
8-to-1 MUX
PS<2:0>(1)
0
1
MUX
PSA(1)
WDT
Time-Out
Note 1: T0CS, T0SE, PSA PS<2:0> are bits in the Option register.
DS41213D-page 36
© 2007 Microchip Technology Inc.