Datasheet

© 2009 Microchip Technology Inc. DS40044G-page 49
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
unintended 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
CLRWDT ;Clear WDT
CLRF TMR0 ;Clear TMR0 and
;Prescaler
BSF STATUS, RP0 ;Bank 1
MOVLW '00101111’b ;These 3 lines
;(5, 6, 7)
MOVWF OPTION_REG ;are required only
;if desired PS<2:0>
;are
CLRWDT ;000 or 001
MOVLW '00101xxx’b ;Set Postscaler to
MOVWF OPTION_REG ;desired WDT rate
BCF STATUS, RP0 ;Return to Bank 0
CLRWDT ;Clear WDT and
;prescaler
BSF STATUS, RP0
MOVLW b'xxxx0xxx’ ;Select TMR0, new
;prescale value and
;clock source
MOVWF OPTION_REG
BCF 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: - = Unimplemented locations, read as ‘0’, u = unchanged, x = unknown. Shaded cells are not used for Timer0.
Note 1: Option is referred by OPTION_REG in MPLAB
®
IDE Software.