1. Wenn die Zentraleinheit (CPU) etwas verarbeitet, erfolgt eine Notfallanforderung von außen, sodass die CPU die aktuelle Arbeit unterbrechen und zur Verarbeitung des Notfallereignisses wechseln muss. Kehren Sie nach der Verarbeitung zum ursprünglich unterbrochenen Ort zurück und fahren Sie fort Ursprünglich wurde ein solcher Vorgang als Unterbrechen bezeichnet. 2. Normalerweise wird die Interrupt-Quelle entsprechend der Priorität der Interrupt-Quelle in die Warteschlange gestellt, und die Interrupt-Anforderungsquelle des dringendsten Ereignisses wird zuerst verarbeitet, dh jeder Interrupt-Quelle wird eine Prioritätsstufe zugewiesen. Die CPU antwortet auf die Interrupt-Anfrage immer zuerst mit der höchsten Priorität. 3. Der C51-Mikrocontroller verfügt über 8 Interrupt-Anforderungsquellen:
1. Timer T0-Unterbrechung
Wie in der Abbildung gezeigt: Interrupts benötigen auch Konfigurationsregister. Das erste ist das Bit-Interrupt-Steuerregister (IE und XICON) und das zweite ist das Prioritätssteuerregister. Hier untersuchen wir nur einen Interrupt des Timers T0. So verwenden Sie den Timer-T0-Interrupt:
ET0 = 1;ET0为定时器T0的中断开关,为1时打开中断
EA = 1; EA为中断源的总开关。
1
2
Nachdem die eingestellte Zeit abgelaufen ist, führen Sie das Programm in der Interrupt-Funktion aus. Woher wissen Sie also, welche Funktion die Interrupt-Funktion ist? — Fragen Sie die Interrupt-Nummer ab (die von verschiedenen Interrupt-Quellen generierten Interrupt-Nummern sind unterschiedlich)
2. Fall: Verwendung der Timer-T0-Unterbrechung, um das Ein- und Ausschalten des Lichts in Intervallen von 1 Sekunde zu realisieren
Wenn der Interrupt aktiviert ist, springt die Hauptfunktion alle 10 ms heraus und das Programm in der Interrupt-Funktion wird ausgeführt.
Wenn die ersten 10 ms des Timings eintreffen, führen Sie die Interrupt-Funktion aus, setzen Sie den Timer für 10 ms zurück, cnt = 1, und das Licht ist immer noch aus.
Wenn die zweiten 10 ms des Timers eintreffen, führen Sie die Interrupt-Funktion aus, setzen Sie den Timer auf 10 ms zurück, cnt = 2, und das Licht ist immer noch aus.
…
Wenn die 100. 10 ms des Timers eintreffen, führen Sie die Interrupt-Funktion aus, setzen Sie den Timer für 10 ms zurück, cnt = 100, und das Licht geht an.
Dadurch werden Ein- und Ausschaltintervalle von 1s erreicht.