I do not think you can reliably use the interrupt on change feature to support this requirement. Here is my thinking: 1: an interrupt occurs because, for example RB7 changes 2: your interrupt handler clears the interrupt-on-change interrupt flag. 3: your interrupt handler reads PORTB to determine which pin changed. 4: just as your interrupt handler is reading PORTB, RB5 also changes, but the 'interrupt-on-change-bug' means that the new value of RB5 will neither be seen by your read, nor will it set the interrupt-on-change interrupt flag again. This is my understanding of how this works. However, I have never used the interrupt-on-change feature myself, so I could be wrong. Bob Ammerman RAm Systems -- http://www.piclist.com hint: To leave the PICList mailto:piclist-unsubscribe-request@mitvma.mit.edu