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 .
Hat Dir der Artikel geholfen? - Dann hilf dem Artikel ;-)
|
Ähnliche Artikel
Folgende Artikel aus der gleichen Kategorie könnten Dich ebenfalls interessieren: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...





{ 1 Kommentar… ihn unten lesen oder einen hinzufügen }
Ich habe da eine Frage. Ich habe jetzt gelernt, wie ich anhand des Timers immer nach einer bestimmten Zeit einen Wert erhöhen kann. Was ist aber, wenn ich mit Hilfe des Timers messen möchte wie lange eine Negative Spannung an P3_2 anliegt?