Datasheet
PIC16F8X
1996-2013 Microchip Technology Inc. DS30430D-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
(TIMER0WDT)
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
(WDTTIMER0)
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
(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.
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 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.