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