Datasheet

1996 Microchip Technology Inc. DS30430B-page 31
PIC16F8X
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).
Note:
To avoid an unintended device RESET,
the following instruction sequence
(Example 6-1) must be executed when
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 Example 6-2.
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 ; 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 ;
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
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 RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0
1111 1111 1111 1111
85h TRISA
TRISA4
TRISA3 TRISA2 TRISA1 TRISA0
---1 1111 ---1 1111
Legend:
x
= unknown,
u
= unchanged.
-
= unimplemented read as '0'. Shaded cells are not associated with Timer0.