English
Language : 

PIC16F636-I Datasheet, PDF (144/234 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 W_TEMP
SWAPF STATUS,W
MOVWF
:
:(ISR)
:
SWAPF
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
;Swaps are used because they do not affect the status bits
;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
DS41232D-page 142
© 2007 Microchip Technology Inc.