English
Language : 

PIC17C4X Datasheet, PDF (27/240 Pages) Microchip Technology – High-Performance 8-Bit CMOS EPROM/ROM Microcontroller
PIC17C4X
5.9 Context Saving During Interrupts
During an interrupt, only the returned PC value is saved
on the stack. Typically, users may wish to save key reg-
isters during an interrupt; e.g. WREG, ALUSTA and the
BSR registers. This requires implementation in soft-
ware.
Example 5-1 shows the saving and restoring of infor-
mation for an interrupt service routine. The PUSH and
POP routines could either be in each interrupt service
routine or could be subroutines that were called.
Depending on the application, other registers may also
need to be saved, such as PCLATH.
EXAMPLE 5-1: SAVING STATUS AND WREG IN RAM
;
; The addresses that are used to store the CPUSTA and WREG values
; must be in the data memory address range of 18h - 1Fh. Up to
; 8 locations can be saved and restored using
; the MOVFP instruction. This instruction neither affects the status
; bits, nor corrupts the WREG register.
;
;
PUSH MOVFP WREG, TEMP_W
; Save WREG
MOVFP ALUSTA, TEMP_STATUS ; Save ALUSTA
MOVFP BSR, TEMP_BSR
; Save BSR
ISR
:
; This is the interrupt service routine
:
POP
MOVFP TEMP_W, WREG
; Restore WREG
MOVFP TEMP_STATUS, ALUSTA ; Restore ALUSTA
MOVFP TEMP_BSR, BSR
; Restore BSR
RETFIE
; Return from Interrupts enabled
© 1996 Microchip Technology Inc.
DS30412C-page 27