8051-Mikrocontroller

 

Home

Grundlagen8051Programmierung

On-ChipSpeicherSFRsAssemblerBefehlsartenBefehlslisteUnterprogsInterrupts

Banner Text Interruptverarbeitung PDF

In Mikrocontrollersystem gibt es zwei grundsätzliche Möglichkeiten, auf externe (oder interne) Ereignisse zu reagieren.

Port-Polling

Beim Portpolling wird eine Eingabeleitung des Controllers in einer Schleife zyklisch abgefragt. Dabei handelt es sich um eine reine Softwarelösung, die im 8051-Controller sehr einfach in einer Codezeile zu realisieren ist:
Nachteilig ist allerdings, dass die Eingabeleitung nur an jeweils einer Programmstelle abgefragt wird. Befindet sich die Programmabarbeitung nicht in der Pollingschleife, findet keine Reaktion auf ein externes Ereignis statt. Andererseits führt das "Warten" in der Abfrageschleife dazu, dass der Controller keine weiteren Aufgaben durchführen kann. Insbesondere Sicherheitsfunktionen (z.B. Not-Aus) lassen sich mit dieser Abfrageart nicht realisieren.

Interrupts

Ein Interrupereignis kann demgegenüber jederzeit den normlen Programmablauf unterbrechen. Dies bietet die Möglichkeit, auf bestimmte Ereignisse schnell und sicher zu reagieren.
Wird ein Ereignis vom Interruptsystem erkannt, wird der aktuelle Befehl fertig ausgeführt und anschließend auf die Einsprungadresse des Interrupts gesprungen. Die Rückkehradresse wird - wie bei Unterprogrammen - auf dem Stack gespeichert.
Auf der Einsprungadresse muss das Unterbrechungsprogramm (Interrupt-Service-Routine ISR) stehen. Nach der Abarbeitung der ISR wird zurück ins unterbrochene Programm gesprungen.

Beim 8051 können Interrupts durch verschiedene Ereignisse ausgelöst werden:

Externe Interrupts

Abfallende Flanke oder Low-Signal an den Portpins P3.2 (Int0) oder P3.3 (Int1)

Interne Interrupts:

Timerüberlauf (TF0, TF1, TF2)
serieller Empfangs- oder Sendeinterrupt (TI, RI)
usw.

Der µC bearbeitet nur Interruptanforderungen, wenn der entsprechende Interrupt freigegeben wurde. Jeder Interrupteingang des 8051 hat eine Einzelfreigabe. Weiterhin gibt es eine globale Interruptfreigabe für alle Interrupteingänge kann einzeln freigegeben oder gesperrt werden.

 

 

      arrow6_L.gif    

26.5.2009

    arrow6_R.gif