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 die 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 zu 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 Rechnung 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 dezimal 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 = 0x00 und TL0=0x00 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.

Programmierung des Timers Lösung.flv

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

weitere Videos

Dezember 5, 2012

Juni 7, 2010

April 12, 2010

Februar 1, 2010

Oktober 22, 2012

April 19, 2010

>