Korzystałem PIC16F877
( arkusz danych ) do kilku projektów. W przypadku pojedynczych przerwań zmiany zewnętrznego pinu można użyć PORTB0
przerwania. Ale teraz muszę obsługiwać 8 niezależnych zewnętrznych przerwań zmiany pinów w jednym obwodzie.
W arkuszu danych jest napisanych, że jest 15 przerwań PIC16F877
, ale myślę, że są one liczone, w tym przerwania nadmiaru czasu itp., Które w tym przypadku są bezużyteczne.
Tak mówi arkusz danych o INTCON
rejestrze.
Czy mogę mieć 4 niezależne przerwań używając bit0, RBIF
? Reprezentuje zmianę w PB7:PB4
. Jak mogę zidentyfikować, który pin został zmieniony, czy jest to odczytane przez wartość portu w procedurze przerwania?
Nawet jeśli mam pozytywne odpowiedzi na powyższe pytania, potrzebuję 8 przerwań? oczywiście nadal mogę używać INTE
do PORTB0
zmian. Potem 4 + 1 = 5
, ale co innego 3? (Ponieważ jednak wszystkie 8 zdarzeń przerwania są tego samego typu, 4 + 1 + 3 = 8
sprawa wydaje się brzydka, prawda?)
Od mikrokontrolera nie oczekuje się żadnych innych ciężkich zadań poza monitorowaniem 8 styków. (Mówiąc o innych zadaniach, będzie musiał zachować zestaw oddzielnych zmiennych licznika i często przesyłać około 4 bajtów do komputera szeregowo)
Wszelkie sugestie są mile widziane. Nawet jeśli chodzi o zmianę mikrokontrolera na bardziej odpowiedni (ale nie mów mi, żebym odszedł od PIC
s).