I've used PIC16F877
(datasheet) for several projects. For a single external pin change interrupts, you can use PORTB0
interrupt. But now I need to support 8 independent external pin change interrupts, in a single circuit.
In the datasheet it says there are 15 interrupts in PIC16F877
, but i guess those are counted including timer overflow interrupts etc... which are useless in this case.
This is what datasheet say about INTCON
register.
Can I have 4 independent interrupts using bit0, RBIF
? It represent change in PB7:PB4
. How can I identify which pin changed, is it by reading the port value in the interrupt routine?
Even I get positive answers to above, I need 8 interrupts? of course I can still use INTE
, for PORTB0
change. Then 4 + 1 = 5
, but what about other 3? (However being all the 8 interrupt events are of same type, the 4 + 1 + 3 = 8
thing seems ugly, isn't it?)
There's no other heavy tasks expected from the micro-controller other that monitoring 8 pins. (Talking about the other tasks, it'll have to maintain a set of separate counter variables and frequently transmit about 4 bytes to PC serially)
Any suggestions are welcome. Even if it's about changing the micro-controller for more suited one (but uh.. don't tell me to go away from PIC
s).