> So are you saying that if someone was to use a pin on port B with > the interrupt on change, that the rest of the ports pins shouldnt be > used for any other application? > I don't quite understadn what you meant. That's pretty much what it means, I'm afraid. Basically there is one real use for the interrupt-on-change feature that actually works fairly well: using a PORTB trigger to wake from sleep. While this will not be 100% reliable in cases where the trigger condition may be "pre-existing", it is good enough to be used for things like remote controls and items like that. Further, even in a remote-control context it may be possible to make the port B trigger reliable: if one can ensure that all the inputs WILL be in an inactive state before the last time portB is read before sleep, then any time they become active will cause an interrupt. For example, assume a keyboard is wired 4x4 using PB0-PB3 as output and PB4-PB7 as input. The following will cause the CPU to go to sleep but re-awaken if and when any button is pushed [assuming pullups on PB0-PB3]: bsf RP0 ; Bank 1 movlw $FF movwf PORTB ; Set TRISB to all inputs bcf RP0 ; Bank 0 clrf PORTB ; Prepares PORTB to ground outputs 0-3, but doesn't ; do it YET [because of TRIS]. bsf RP0 movlw $F0 movwf PORTB ; Set 4 LSB's to low outputs. NOTE: This instruction ; does NOT access PORTB and so cannot clear the PORTB ; latches! bcf RP0 ; Back to bank 0 ... sleep ; Frere Jacques... dormez-vous?