Я использовал 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 байтов на ПК последовательно)
Любые предложения приветствуются. Даже если речь идет о замене микроконтроллера на более подходящий (но ... не говорите мне уходить от PIC
s).