PIC16C55X
7.3.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 WDT. Lines 5-7
are required only if the desired postscaler rate is 1:1
(PS<2:0> = 000) or 1:2 (PS<2:0> = 001).
EXAMPLE 7-1: CHANGING PRESCALER
(TIMER0WDT)
BCF STATUS, RP0 ;Skip if already in
;Bank 0 CLRWDT Clear WDT
CLRF TMR0
;Clear TMR0 & Prescaler
BSF STATUS, RP0 ;Bank 1
MOVLW '00101111’b ;These 3 lines (5, 6, 7)
MOVWF OPTION
;Are required only if
;Desired PS<2:0> are
;CLRWDT 000 or 001
MOVLW '00101xxx’b ;Set Postscaler to
MOVWF OPTION
;Desired WDT rate
BCF STATUS, RP0 ;Return to Bank 0
To change prescaler from the WDT to the TMR0
module use the sequence shown in Example 7-2. This
precaution must be taken even if the WDT is disabled.
EXAMPLE 7-2:
CHANGING PRESCALER
(WDTTIMER0)
CLRWDT
BSF
MOVLW
MOVWF
BCF
STATUS, RP0
b'xxxx0xxx'
OPTION
STATUS, RP0
;Clear WDT and
;prescaler
;Select TMR0, new
;prescale value and
;clock source
TABLE 7-1: REGISTERS ASSOCIATED WITH TIMER0
Address Name Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
01h
TMR0 Timer0 module’s register
0Bh/8Bh INTCON GIE Reserved T0IE
81h
OPTION RBPU INTEDG T0CS
85h
TRISA
—
—
—
Legend: — = Unimplemented locations, read as ‘0’,
Note 1: Shaded bits are not used by TMR0 module.
INTE
T0SE
TRISA4
RBIE
PSA
TRISA3
T0IF
PS2
TRISA2
INTF
PS1
TRISA1
RBIF
PS0
TRISA0
Value on
POR
xxxx xxxx
0000 000x
1111 1111
---1 1111
Value on
All Other
RESETS
uuuu uuuu
0000 000x
1111 1111
---1 1111
1996-2013 Microchip Technology Inc.
Preliminary
DS40143E-page 51