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?
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.
TF1
wird gesetzt, sobald der Timer-1 überläuft. Wenn Sie jetzt löschen, TF1
aber TR1
eingestellt bleiben, läuft der Timer weiter. Nach dem Überlauf beginnt es erneut mit dem Inkrementieren vom 0x00
oder vorgeladenen Wert TH1
(abhängig vom Timer-Modus).
Im Falle des 16-Bit-Timer-Modus müssen Sie also sowohl TF1
als auch löschen TR1
, das Timer-1-Register neu laden und TR1
erneut 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, TF1
um das Ereignis des nächsten Timer-Überlaufs nicht zu verpassen.
Sayan
Mitu Raj