Ich habe PIC16F877
( Datenblatt ) für mehrere Projekte verwendet. Für einen einzelnen externen Pinwechsel-Interrupt können Sie PORTB0
Interrupt verwenden. Aber jetzt muss ich 8 unabhängige externe Pinwechsel-Interrupts in einem einzigen Schaltkreis unterstützen.
Im Datenblatt steht, dass es 15 Interrupts gibt PIC16F877
, aber ich denke, diese werden gezählt, einschließlich Timer-Überlauf-Interrupts usw., die in diesem Fall unbrauchbar sind.
Dies ist, was Datenblatt über INTCON
Register sagen .
Kann ich mit Bit0 4 unabhängige Interrupts haben RBIF
? Es repräsentiert eine Veränderung in PB7:PB4
. Wie kann ich feststellen, welcher Pin geändert wurde, indem ich den Portwert in der Interruptroutine lese?
Auch wenn ich oben positive Antworten bekomme, brauche ich 8 Interrupts? Natürlich kann ich noch INTE
für PORTB0
Veränderung verwenden. Dann 4 + 1 = 5
, aber was ist mit anderen 3? (Da jedoch alle 8 Interrupt-Ereignisse vom gleichen Typ sind, 4 + 1 + 3 = 8
scheint das Ding hässlich, nicht wahr?)
Vom Mikrocontroller werden keine anderen schweren Aufgaben erwartet als die Überwachung von 8 Pins. (Wenn wir über die anderen Aufgaben sprechen, müssen wir einen Satz separater Zählervariablen verwalten und häufig etwa 4 Bytes seriell an den PC übertragen.)
Anregungen sind willkommen. Auch wenn es darum geht, den Mikrocontroller gegen einen geeigneteren auszutauschen (aber äh ... sag mir nicht, ich soll von PIC
s weggehen ).