Kostenloser Elektrotechnik VIDEO-Kurs


Grundlagen der Elektrotechnik, Gleichstromnetze und Berechnungsverfahren
Wechselstrom- und Drehstromnetze, elektrische Maschinen und Regelungstechnik
Digitaltechnik, Mikrocontrollertechnik und C-Programmierung


Timer Interrupt Lösung der Aufgabe

Am Ende der vergangen Folge, in der es um die Programmierung eines Timer Interrupts ging, hatte ich die Aufgabe gestellt, eine Interrupt Service Routine zu erstellen, die den Port P0 genau alle 10 Sekunden inkrementiert.

Die Aufgabe sollte so gelöst werden, dass der Interrupt Service Routine des Timers 0 alle 10 ms aufgerufen wird.

Bei jedem 1.000 Durchlauf der Interrupt Service Routine sollte dann der Port inkrementiert werden.

1000 x 10ms = 10s

Zunächst müssen also die SFR-Register TH0 und TL0 bestimmt werden, um eine Zeit von 10ms z realisieren. Im Video rechne ich die Prozedur einmal vor.

Die Berechnung der Timer-Werte für TH0 und TL0

Damit Du die Werte besser mit Deinen Werten vergleichen kannst, gebe ich die Rechung hier noch einmal kurz an.

Der Mikrocontroller wird mit 12 MHz getaktet. Durch den Teiler von 12 wird TL0 also jede µs inkrementiert.

10 ms entsprechen 10.000 Inkrementierungen, denn 10.000 x 1µs = 10 ms

Da die beiden Bytes bei 0xFF, dezimal also 65536 überlaufen, muss der Timerstand dezimal auf

65536-10000 =55536

gesetzt werden.

55536 dez entspricht D8F0 hexadezimal

Damit ergeben sich folgende Werte:

TH0 = 0xD8;
TL0 = 0xF0

Soweit zur Theorie ;-)

Video zur Programmierung des Timers

Im Video zeige ich die Programmierung der Interrupt Service Routine. Wichtig hierbei ist die Werte für TH0 und TL0 in der Interrupt Service Routine noch einmal zu setzen, weil die Zähler ansonsten beim aktuellen Stand, also TH0 = 0×00 und TL0=0×00 loslaufen würden, statt bei TH0 = 0xD8 und TL0 = 0xF0.
Zudem darf natürlich nicht vergessen werden mit

  • EAL = 1; Interrupts generell freizugeben
  • ET0 = 1; den Interrupt für den Timer 0 freizugeben
  • TR0 = 1; den Timer zu starten

Viel Spaß beim Video und bis zum nächsten Mal. Dann geht es um das auto-reload, bei dem der Timerstartwert „automatisch“ gesetzt wird.






Dieser Artikel ist Teil des Mikrocontrollerkurs auf ET-Tutorials.de.
Hier geht es zurück zur Übersichtsseite des Mikrocontroller-Kurses .

Elektrotechnik muss nicht kompliziert sein.
Deshalb gibt es VIDEO-Tutorials.

Hat Dir der Artikel geholfen? - Dann hilf dem Artikel ;-)

Timer Interrupt Lösung der Aufgabe:
1 Star2 Stars3 Stars4 Stars5 Stars
5,00 von 5 Punkten, basieren auf 3 abgegebenen Stimmen.
Stimme jetzt ab ! (auf die Sternchen klicken)
Loading ... Loading ...


Fragen und Antworten zu diesem Artikel und zu anderen Themen findest Du im ET-Tutorials Forum

Ähnliche Artikel

Folgende Artikel aus der gleichen Kategorie könnten Dich ebenfalls interessieren:

Programmieren des Timer Interrupts Heute geht es wieder ans Eingemachte. Mit einer schönen Aufgabe zum Schluss. Wann wird ein Timer Int...

Timer Interrupt des 8051 Mikrocontrollers Zu den wichtigsten Aufgaben eines Mikrocontrollers gehören Steuerungs-, Regelungs- und Messaufgaben....

Software Interrupts, Traps Wie bereits in der Übersicht zu externen Interrupts gezeigt, können Interrupts auch durch Software a...

Externe Interrupts beim 8051 Heute geht es nun um die Programmierung eines externen Interrupts. Die Programmierung eines externen...

Timer Interrupts 8 bit auto reload In dieser Folge geht es um den Mode 2 des Timer Interrupts, dem 8 bit auto-reload Modus. Im Gegensat...