Eu usei PIC16F877
( datasheet ) para vários projetos. Para uma única mudança de pino externo interrompe, você pode usar a PORTB0
interrupção. Mas agora eu preciso suportar 8 interrupções externas independentes de troca de pinos, em um único circuito.
Na folha de dados, ele diz que há 15 interrupções PIC16F877
, mas acho que essas são contadas, incluindo interrupções do temporizador, etc., que são inúteis nesse caso.
É o que dizem os dados sobre o INTCON
registro.
Posso ter 4 interrupções independentes usando o bit0 RBIF
? Representa mudança em PB7:PB4
. Como posso identificar qual pino foi alterado lendo o valor da porta na rotina de interrupção?
Até eu recebo respostas positivas acima, preciso de 8 interrupções? é claro que ainda posso usar INTE
, para PORTB0
mudar. Então 4 + 1 = 5
, mas e os outros 3? (No entanto, todos os 8 eventos de interrupção são do mesmo tipo, a 4 + 1 + 3 = 8
coisa parece feia, não é?)
Não há outras tarefas pesadas esperadas do microcontrolador além do monitoramento de 8 pinos. (Falando sobre as outras tarefas, ele precisará manter um conjunto de variáveis de contador separadas e transmitir frequentemente cerca de 4 bytes para o PC em série)
Todas as sugestões são bem-vindas. Mesmo que seja sobre mudar o microcontrolador para um mais adequado (mas ... não me diga para não usar PIC
s).