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