
1997 Microchip Technology Inc.
DS30272A-page 35
PIC16C71X
6.3.1
SWITCHING PRESCALER ASSIGNMENT
The prescaler assignment is fully under software con-
trol, i.e., it can be changed “on the y” during program
execution.
Note:
To avoid an unintended device RESET, the
following instruction sequence (shown in
changing the prescaler assignment from
Timer0 to the WDT. This sequence must be
followed even if the WDT is disabled.
EXAMPLE 6-1:
CHANGING PRESCALER (TIMER0
→WDT)
BCF
STATUS, RP0
;Bank 0
CLRF
TMR0
;Clear TMR0 & Prescaler
BSF
STATUS, RP0
;Bank 1
CLRWDT
;Clears WDT
MOVLW
b'xxxx1xxx'
;Selects new prescale value
MOVWF
OPTION_REG
;and assigns the prescaler to the WDT
BCF
STATUS, RP0
;Bank 0
To change prescaler from the WDT to the Timer0
EXAMPLE 6-2:
CHANGING PRESCALER (WDT
→TIMER0)
CLRWDT
;Clear WDT and prescaler
BSF
STATUS, RP0 ;Bank 1
MOVLW
b'xxxx0xxx' ;Select TMR0, new prescale value and
MOVWF
OPTION_REG
;clock source
BCF
STATUS, RP0 ;Bank 0
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,
BOR
Value on all
other resets
01h
TMR0
Timer0 module’s register
xxxx xxxx
uuuu uuuu
0Bh,8Bh,
INTCON
GIE
ADIE
T0IE
INTE
RBIE
T0IF
INTF
RBIF
0000 000x
0000 000u
81h
OPTION RBPU INTEDG
T0CS
T0SE
PSA
PS2
PS1
PS0
1111 1111
85h
TRISA
—
PORTA Data Direction Register
---1 1111
Legend: x = unknown, u = unchanged, - = unimplemented locations read as '0'. Shaded cells are not used by Timer0.