
2002 Microchip Technology Inc.
Preliminary
DS40044A-page 47
PIC16F627A/628A/648A
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). Use the instruction sequences
shown in Example 6-1 when changing the prescaler
assignment from Timer0 to WDT, to avoid an unin-
tended device RESET.
EXAMPLE 6-1:
CHANGING PRESCALER
(TIMER0
→
WDT)
To change prescaler from the WDT to the Timer0
module, use the sequence shown in Example 6-2. This
precaution must be taken even if the WDT is disabled.
EXAMPLE 6-2:
CHANGING PRESCALER
(WDT
→
TIMER0)
TABLE 6-1:
REGISTERS ASSOCIATED WITH TIMER0
BCF
STATUS, RP0
;Skip if already in
;Bank 0
;Clear WDT
;Clear TMR0 and
;Prescaler
;Bank 1
;These 3 lines
;(5, 6, 7)
;are required only
;if desired PS<2:0>
;are
;000 or 001
;Set Postscaler to
;desired WDT rate
;Return to Bank 0
CLRWDT
CLRF
TMR0
BSF
MOVLW
STATUS, RP0
'00101111’b
MOVWF
OPTION_REG
CLRWDT
MOVLW
MOVWF
BCF
'00101xxx’b
OPTION_REG
STATUS, RP0
CLRWDT
;Clear WDT and
;prescaler
BSF
MOVLW
STATUS, RP0
b'xxxx0xxx'
;Select TMR0, new
;prescale value and
;clock source
MOVWF
BCF
OPTION_REG
STATUS, RP0
Address
Name
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Value on
POR
Value on
All Other
RESETS
01h, 101h
TMR0
Timer0 module register
xxxx xxxx uuuu uuuu
0Bh, 8Bh,
10Bh, 18Bh
INTCON
GIE
PEIE
T0IE
INTE
RBIE
T0IF
INTF
RBIF
0000 000x 0000 000u
81h, 181h
OPTION
(2)
RBPU
INTEDG
T0CS
T0SE
PSA
PS2
PS1
PS0
1111 1111 1111 1111
85h
TRISA
TRISA7
TRISA6 TRISA5 TRISA4
TRISA3 TRISA2 TRISA1 TRISA0
1111 1111 1111 1111
Legend:
Note
— = Unimplemented locations, read as ‘0’, u = unchanged, x = unknown
Shaded bits are not used by Timer0 module.
Option is referred by
OPTION_REG
in MPLAB
.
1:
2: