English
Language : 

PIC12F635 Datasheet, PDF (126/196 Pages) Microchip Technology – 8/14-PIN FLASH-BASED, 8-BIT CMOS MICROCONTROLLERS WITH NANOWATT TECHNOLOGY
PIC12F635/PIC16F636/639
12.10 Context Saving During Interrupts
During an interrupt, only the return PC value is saved
on the stack. Typically, users may wish to save key
registers during an interrupt (e.g., W and Status
registers). This must be implemented in software.
Since the lower 16 bytes of all banks are common in the
PIC12F635/PIC16F636/639 (see Figure 2-2), temporary
holding registers, W_TEMP and STATUS_TEMP, should
be placed in here. These 16 locations do not require
banking and therefore, make it easier to context save and
restore. The same code shown in Example 12-1 can be
used to:
• Store the W register.
• Store the Status register.
• Execute the ISR code.
• Restore the Status (and Bank Select Bit register).
• Restore the W register.
Note:
The PIC12F635/PIC16F636/639 normally
does not require saving the PCLATH.
However, if computed GOTO’s are used in
the ISR and the main code, the PCLATH
must be saved and restored in the ISR.
EXAMPLE 12-1: SAVING STATUS AND W REGISTERS IN RAM
MOVWF
SWAPF
CLRF
MOVWF
:
:(ISR)
:
SWAPF
W_TEMP
STATUS,W
STATUS
STATUS_TEMP
STATUS_TEMP,W
MOVWF
SWAPF
SWAPF
STATUS
W_TEMP,F
W_TEMP,W
;Copy W to TEMP register
;Swap status to be saved into W
;bank 0, regardless of current bank, Clears IRP,RP1,RP0
;Save status to bank zero STATUS_TEMP register
;Insert user code here
;Swap STATUS_TEMP register into W
;(sets bank to original state)
;Move W into Status register
;Swap W_TEMP
;Swap W_TEMP into W
DS41232B-page 124
Preliminary
© 2005 Microchip Technology Inc.