Я использовал PIC16F877( таблица данных ) для нескольких проектов. Для прерывания смены одного внешнего вывода вы можете использовать PORTB0прерывание. Но теперь мне нужно поддерживать 8 независимых внешних прерываний смены контактов в одной цепи.
В таблице указано, что в ней 15 прерываний PIC16F877, но я думаю, что они учитываются, включая прерывания по переполнению таймера и т. Д., Которые в этом случае бесполезны.
Это то, что технические данные говорят о INTCONрегистрации.

Могу ли я иметь 4 независимых прерываний с помощью Bit0, RBIF? Это представляет изменение в PB7:PB4. Как я могу определить, какой контакт изменился, читая значение порта в процедуре прерывания?
Даже если я получу положительные ответы на выше, мне нужно 8 прерываний? конечно, я все еще могу использовать INTE, для PORTB0изменения. Тогда 4 + 1 = 5, а как насчет других 3? (Однако, учитывая, что все 8 событий прерывания относятся к одному и тому же типу, 4 + 1 + 3 = 8все выглядит ужасно, не правда ли?)
Никаких других тяжелых задач от микроконтроллера не ожидается, кроме мониторинга 8 контактов. (Говоря о других задачах, он должен будет поддерживать набор отдельных переменных счетчика и часто передавать около 4 байтов на ПК последовательно)
Любые предложения приветствуются. Даже если речь идет о замене микроконтроллера на более подходящий (но ... не говорите мне уходить от PICs).