yo cuando manejo interrupciones pongo esto:
PUSH MACRO
movwf W_TEMP ;SALVO EL REGISTRO W
swapf STATUS,W
movwf STATUS_TEMP ;SALVO EL REGISTRO STATUS
clrf STATUS ;TRABAJO EN BANK 0
movfw PCLATH ;SALVO EL REGISTRO PCLATH
movwf PCLATH_TEMP
clrf PCLATH
ENDM
POP MACRO
movfw PCLATH_TEMP
movwf PCLATH
swapf STATUS_TEMP,W
movwf STATUS
swapf W_TEMP,F
swapf W_TEMP,W
ENDM
asi que cuando se produce la interrupcion.pongo PUSH para guardar los registros,exactmente en la zona donde compruevo que interrupcion ha sucedido.
y POP antes de retfie.