Eine Frage zu Timern in 8051

Angenommen, der Timer 1 von 8051 hat das Zählen beendet und TF1 erhöht. Da es auf 0 zurückgesetzt wird, also derzeit TH1 = 00, TL1 = 00, und angenommen, dass das Bit TR1 immer noch gesetzt ist. Wenn wir in diesem Moment nur den TF1 löschen, wird er jetzt wieder von 00 an zählen? Weil wir den Timer noch nicht gestoppt haben.

Die nächste Frage ist: Nehmen wir an, TF1 ist gesetzt, aber TR1 ist zurückgesetzt. Können wir in diesem Moment TH1 und TL1 mit #-Adressierung (sofort) laden?

Antworten (1)

Wenn wir in diesem Moment nur den TF1 löschen, wird er jetzt wieder von 00 an zählen? Weil wir den Timer noch nicht gestoppt haben.

TF1wird gesetzt, sobald der Timer-1 überläuft. Wenn Sie jetzt löschen, TF1aber TR1eingestellt bleiben, läuft der Timer weiter. Nach dem Überlauf beginnt es erneut mit dem Inkrementieren vom 0x00oder vorgeladenen Wert TH1(abhängig vom Timer-Modus).

Im Falle des 16-Bit-Timer-Modus müssen Sie also sowohl TF1als auch löschen TR1, das Timer-1-Register neu laden und TR1erneut setzen, um denselben Zyklus fortzusetzen.

Im Falle des automatischen Neuladens des 8-Bit-Timer-ModusTF1 wird nur das Löschen angehängt. Kein Löschen erforderlich TR1, da der Timer automatisch ab dem vorgeladenen Wert in neu startet TH1.

Nehmen wir an, TF1 ist gesetzt, aber TR1 ist zurückgesetzt. Können wir in diesem Moment TH1 und TL1 mit #-Adressierung (sofort) laden?

Ja, das kannst du. Und sobald Sie eingestellt haben TR1, beginnt der Timer mit dem geladenen Wert zu laufen. Aber Sie sollten klarstellen, TF1um das Ereignis des nächsten Timer-Überlaufs nicht zu verpassen.

In den letzten beiden Zeilen sagten Sie "Sie sollten TF1 zurücksetzen ...", aber es sollte "Sie müssen TF1 zurücksetzen ..." lauten. Ist es nicht so? Ich denke, bei einem erhöhten TF1 beginnt der Timer nicht einmal zu zählen auch wenn TR1 gesetzt ist.
Mit „Zurücksetzen“ ist „Löschen“ gemeint. TF1 muss gelöscht werden. nicht TR1. TR1 gesetzt bedeutet, dass der Zähler unabhängig vom TF1-Wert läuft. TF1 ist kein Steuerflag, sondern ein Statusflag. Wenn Sie vergessen haben, TF1 zu löschen, verpassen Sie nachfolgende Timer-Überlaufereignisse, da der Timer tatsächlich noch darin läuft.