movwf [COLOR="red"]INTCON[/COLOR] ;Copy W to TEMP register
swapf STATUS,W ;Swap status to be saved into W
clrf STATUS ;bank 0, regardless of current bank, Clears IRP,RP1,RP0
movwf STATUS_TEMP ;Save status to bank zero STATUS_TEMP register
movf PCLATH,W ;Only required if using pages 1, 2 and/or 3
movwf PCLATH_TEMP ;Save PCLATH into W
clrf PCLATH ;Page zero, regardless of current page
:
:(ISR) ;(Insert user code here)
:
movf PCLATH_TEMP,W ;Restore PCLATH
movwf PCLATH ;Move W into PCLATH
swapf STATUS_TEMP,W ;Swap STATUS_TEMP register into W
;(sets bank to original state)
movwf STATUS ;Move W into STATUS register
swapf [COLOR="red"]INTCON[/COLOR],F ;Swap W_TEMP
swapf [COLOR="red"]INTCON[/COLOR],W ;Swap W_TEMP into W
[COLOR="red"]clrf INTCON
bsf INTCON,TMR0IE ;restore to required value
bsf INTCON,other bits[/COLOR].
retfie ;will set INTCON,GIE