
PIC16F8X
1998 Microchip Technology Inc.
DS30430C-page 31
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).
EXAMPLE 6-1:
CHANGING PRESCALER
(TIMER0
→WDT)
BCF
STATUS, RP0
;Bank 0
CLRF
TMR0
;Clear TMR0
; and Prescaler
BSF
STATUS, RP0
;Bank 1
CLRWDT
;Clears WDT
MOVLW
b’xxxx1xxx’
;Select new
MOVWF
OPTION_REG
; prescale value
BCF
STATUS, RP0
;Bank 0
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 clock source
MOVWF
OPTION_REG
;
BCF
STATUS, RP0
;Bank 0
TABLE 6-1
REGISTERS ASSOCIATED WITH TIMER0
Note:
To avoid an unintended device RESET, the
following
instruction
sequence
changing the prescaler assignment from
Timer0 to the WDT. This sequence must
be taken even if the WDT is disabled. To
change prescaler from the WDT to the
Timer0 module use the sequence shown in
Address
Name
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Value on
Power-on
Reset
Value on all
other resets
01h
TMR0
Timer0 module’s register
xxxx xxxx
uuuu uuuu
0Bh
INTCON
GIE
EEIE
T0IE
INTE
RBIE
T0IF
INTF
RBIF
0000 000x
0000 0000
81h
OPTION_
REG
RBPU
INTEDG
T0CS
T0SE
PSA
PS2
PS1
PS0
1111 1111
85h
TRISA
—
TRISA4
TRISA3
TRISA2
TRISA1
TRISA0
---1 1111
Legend: x = unknown, u = unchanged. - = unimplemented read as ’0’. Shaded cells are not associated with Timer0.