Ho usato PIC16F877
( scheda tecnica ) per diversi progetti. Per una singola interruzione della sostituzione dei pin esterni, è possibile utilizzare l' PORTB0
interruzione. Ma ora ho bisogno di supportare 8 interrupt di cambio pin esterni indipendenti, in un singolo circuito.
Nel foglio dati dice che ci sono 15 interrupt in PIC16F877
, ma immagino che siano contati inclusi gli interrupt di overflow del timer ecc ... che sono inutili in questo caso.
Questo è ciò che dice la scheda tecnica sul INTCON
registro.
Posso avere 4 interrupt indipendenti utilizzando bit0, RBIF
? Rappresenta il cambiamento in PB7:PB4
. Come posso identificare quale pin è cambiato, leggendo il valore della porta nella routine di interrupt?
Anche io ricevo risposte positive a quanto sopra, ho bisogno di 8 interruzioni? ovviamente posso ancora usare INTE
, per PORTB0
cambiare. Quindi 4 + 1 = 5
, ma per quanto riguarda gli altri 3? (Comunque essendo tutti e 8 gli eventi di interruzione sono dello stesso tipo, la 4 + 1 + 3 = 8
cosa sembra brutta, vero?)
Non ci sono altri compiti pesanti previsti dal microcontrollore se non il monitoraggio di 8 pin. (Parlando delle altre attività, dovrà mantenere una serie di variabili contatore separate e spesso trasmettere seriamente al PC circa 4 byte)
Eventuali suggerimenti sono ben accetti Anche se si tratta di cambiare il microcontrollore con uno più adatto (ma ... non dirmi di andarmene da PIC
s).