Programmierung

 

Home

Grundlagen8051Programme

IDEVerfahren7 SegmentUARTInterruptsEEPROMSpezial

Impressum

Banner Text Interruptprogrammierung

Interruptquellen und Interruptfreigabe

Durch Interrupts wird der normale Programmablauf unterbrochen. Dies bietet die Möglichkeit, auf bestimmte Ereignisse schnell und sicher zu reagieren (Bsp. Not-AUS). Abfallende Flanken oder Low-Signale können externe Interruptereignisse (INT0/, INT1/) auslösen, überlaufende Timer lösen Timer-Interrupts (TF0, TF1, TF2) aus, über die serielle Schnittstelle gesendete (TI) oder empfangene (RI) Zeichen können Interrupts auslösen.

Die Interrupt-Anfoderungs-Bits (s.u.) werden immer gesetzt, der entsprechende Interrupt wird jedoch nur dann bearbeitet, wenn die Interrupts freigegeben sind und die globale Interrupt-Freigabe EA = 1 ist. Zur Bearbeitung der Interrupts springt der Controller zu festgelegten Einsprungadressen im Programmspeicher. Dort wird kurzer Code direkt ausgeführt, oder bei umfangreicheren Aufgaben, zu einer Interrupt-Service-Routine (ISR) gesprungen.
 

Interrupt

Programmspeicher
Einsprungadresse

Interrupt-Anforderungs-Bit

Externer Interrupt 0

0003h

IE0

Timer0 - Überlauf

000Bh

TF0

Externer Interrupt 1

0013h

IE1

Timer1 Überlauf

001Bh

TF1

Serieller Port

0023h

TI oder RI

Timer2 Überlauf oderexterner Interrupt 2

002Bh

TF2 oder EXF2


Nach erfolgter Bearbeitung eines Interrupt setzt der Controller das Programm wieder an der Stelle des Auftretens der Unterbrechung fort. Dazu wird die Rücksprungadresse im Stapelspeicher (Stack) des Controllers gespeichert. Der Befehl RETI beendet die Interruptverarbeitung und schreibt die Rücksprungadresse vom Stapelspeicher in den Programmzähler (PC).

  1. Programmierung der externen Interrupteingänge  Adobe.gif

 

 

    arrow6_L.gif   

1.3.2009

    arrow6_R.gif