> Global interrupts = enabled > Interrupt on RB0/INT = enabled > Interrupt on TMR0 = enabled > > Situation (example): > > Timer generates an interrupt. > ISR checks for cause and determines it was TMR0. > Services interrupt for TMR0 cause. > Clear TMR0 flag > RETFIE > > Sometime during the ISR (after checking cause), RB0/INT signals an > interrupt. What happens next ? The interrupt flag went true as soon as the RB0 edge was detected. However, interrupts are disabled until the RETFIE instruction. As soon as they are re-enabled by RETFIE you will get another interrupt. It is perfectly OK to write your interrupt routine to handle only one interrupt at a time. If a second interrupt condition occurs while the first is being handled, you will just get another interrupt immediately after the first one. ******************************************************************** Olin Lathrop, embedded systems consultant in Littleton Massachusetts (978) 742-9014, olin@embedinc.com, http://www.embedinc.com -- http://www.piclist.com hint: To leave the PICList mailto:piclist-unsubscribe-request@mitvma.mit.edu