Ich habe PIC16F877( Datenblatt ) für mehrere Projekte verwendet. Für einen einzelnen externen Pinwechsel-Interrupt können Sie PORTB0Interrupt 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 INTCONRegister 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 INTEfür PORTB0Verä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 = 8scheint 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 PICs weggehen ).