<> You just need to disable the interrupt being serviced, then set GIE. The following is an excerpt from INT.ASM, the entirety of which may be found in DEMO.ZIP, wherever ASPIC.ZIP is found: PROCINT: .if (PICDEVICE == 1671) ;--- A/D interrupt --- btfss ADIE ;skip if interrupt enabled goto _not_iad ;not enabled btfsc ADIF ;not A/D interrupt goto I_ADC ;A/D Interrupt! _not_iad: .endif ;--- RTCC interrupt --- btfss RTIE ;skip if interrupt enabled goto _not_irt ;not enabled btfsc RTIF ;not RTCC interrupt goto I_RTCC ;A/D Interrupt! _not_irt: ;--- RB Change interrupt --- btfss RBIE ;skip if interrupt enabled goto _not_irb ;not enabled btfsc RBIF ;not RB change interrupt goto I_RB ;PORT B change Interrupt! _not_irb: ;--- RB0 INT interrupt --- btfss INTE ;skip if interrupt enabled goto _not_int ;not enabled btfsc INTF ;not INT interrupt goto I_INT ;RB0 edge interrupt _not_int: .if (PICDEVICE == 1684) ;--- EEPROM interrupt --- btfss EEIE ;skip if interrupt enabled goto _not_iee ;not enabled btfsc EEIF ;not EEPROM interrupt goto I_EE ;EEPROM Interrupt! _not_iee: .endif retfie ;********************************************************************** ;* RB0 edge interrupt (unused) ;********************************************************************** I_INT: CLB INTE ;clear unwanted enable! retfie ;exit ;********************************************************************** ;* RB CHANGE interrupt (unused) ;********************************************************************** I_RB: CLB RBIE ;clear unwanted enable! retfie ;exit ;********************************************************************** ;* RTCC overflow interrupt handler ;********************************************************************** .seg REGS ;file space used by this function _RT_WSAVE: .ds 1 ;w register save _RT_STAT: .ds 1 ;STATUS save .seg CODE I_RTCC: CLB RTIE ;disable interrupt to prevent recursion SEB GIE ;enable other interrupts CLB RTIF ;clear flag movwf _RT_WSAVE ;save W movfw STATUS ;get STATUS movwf _RT_STAT ;save STATUS movfw _RT_STAT ;get STATUS movwf STATUS ;restore saved status swapf _RT_WSAVE ;restore W without affecting status swapf _RT_WSAVE,W ;w is restored CLB GIE ;disable interrupts SEB RTIE ;re-enable this one retfie ;exit (re-enabling interrupts)