Timer
Übersicht
Bei der Erkennung und Steuerung werden in vielen Fällen die Zählfunktion und die Zeitfunktion verwendet. Es gibt drei Hauptmethoden, um diese Funktionen des Timings / Zählens zu realisieren: Software-Timing, Hardware-Timing von digitalen Schaltungen und programmierbares Timing / Zähler.
-
Software-Timing Das
Software-Timing ist ein zyklisches Programm, und die zur Ausführung dieses Programmsegments erforderliche Zeit ist die Verzögerungszeit. -
Hardware-Timing für digitale Schaltungen Bei
dieser Art von Hardware-Timing werden kleine integrierte Schaltungsvorrichtungen verwendet, beispielsweise die Verwendung eines 555-Timing-Chips, um eine Timing-Schaltung zu bilden, die keine CPU-Zeit belegt, aber das Timing dieser Schaltung hängt von den Komponentenparametern in der Schaltung ab. Nachdem die Hardwareschaltung angeschlossen wurde, müssen zum Ändern der Zeitsteuerung die elektronischen Komponenten in der Schaltung geändert werden, was sehr unpraktisch in der Verwendung ist. -
Programmierbarer Timer / Zähler Der
programmierbare Timer / Zähler wurde entwickelt, um das Design und die Anwendung von Mikrocomputersystemen zu erleichtern. Es ist nicht nur das Hardware-Timing, sondern kann auch die Timing-Zeit durch Software leicht bestimmen und ändern. Die Software-Programmierung kann unterschiedliche Anforderungen erfüllen Die Timing- und Zählanforderungen.
### Struktur
Der Timer / Zähler T0 besteht aus speziellen Funktionsregistern TH0, TL0,
Der Timer / Zähler T1 besteht aus speziellen Funktionsregistern TH1 und TL1.
Es gibt 2 Arbeitsmodi für Timer und Zähler , 4 Arbeitsmodi (Modus 0, Modus 1, Modus 2 und Modus 3).
- Der Zählermodus besteht darin, die externen Impulse zu zählen, die zu den beiden Pins T0 (P3.4) und T1 (P3.5) addiert werden.
- Der Timer-Arbeitsmodus besteht darin, das interne Impulssignal des Taktoszillatorsignals des Mikrocontrollers nach der Frequenzteilung auf dem Chip von 12 zu zählen .
### 4 Arbeitsmethoden
M1M0 | Weg | Eigenschaften |
---|---|---|
0 0 | 0 | 13-Bit-Timer / Zähler |
0 1 | 1 | 16-Bit-Timer / Zähler |
1 0 | 2 | 8-Bit-Timer / Zähler wird automatisch mit Zeitkonstante geladen |
1 1 | 3 | Teilen Sie T0 in zwei unabhängige 8-Bit-Zähler und hören Sie auf zu arbeiten, wenn Sie Modus 3 auf T1 einstellen |
### Anforderungen an extern eingegebene Zählsignale
-
Wenn der Timer / Zähler im Zählermodus arbeitet, kommt der Zählimpuls vom externen Eingangspin T0 oder T1.
-
Wenn das Eingangssignal einen negativen Übergang erzeugt, erhöht sich der Wert des Zählers um eins.
-
Während S5P2 jedes Maschinenzyklus wird der externe Eingangspin T0 oder T1 abgetastet.
### Timer / Zähler Programmierung und Anwendung
Schritte
(1) Bestimmen Sie den Arbeitsmodus, dh schreiben Sie das Steuerwort in das Modussteuerregister TMO D.
(2) Berechnen Sie den Anfangswert des Zeitgebers / Zählers und schreiben Sie den Anfangswert in die Register TL und TH.
(3) Stellen Sie den Anfangswert nach Bedarf auf das Interrupt-Steuerregister IE ein, um zu bestimmen, ob der Timer-Interrupt geöffnet werden soll.
(4) Stellen Sie TRx im Betriebssteuerregister TCON ein, um den Timer / Timer zu starten.
Übe
\ 2. Wie viele programmierbare Timer / Zähler enthält der Mikrocontroller AT89S51? Welche Arbeitsmodi können sie haben? Was sind die Arbeitsmethoden? Wie wählen und einstellen? Was sind die Merkmale von jedem?
Die vier Arbeitsmodi von Timer / Zähler werden durch M1 M0 zwei Bits in TMOD bestimmt, wie in der folgenden Tabelle gezeigt.
M1M0 | Weg | Eigenschaften |
---|---|---|
0 0 | 0 | 13-Bit-Timer / Zähler |
0 1 | 1 | 16-Bit-Timer / Zähler |
1 0 | 2 | 8-Bit-Timer / Zähler wird automatisch mit Zeitkonstante geladen |
1 1 | 3 | Teilen Sie T0 in zwei unabhängige 8-Bit-Zähler und hören Sie auf zu arbeiten, wenn Sie Modus 3 auf T1 einstellen |
7. Die Quarzfrequenz der AT89S51-MCU beträgt 6 MHz. Wenn der Timer-Wert 0,1 ms und 10 ms betragen muss und der Timer 0 in Modus 0, Modus 1 und Modus 2 arbeitet, wie hoch sollte der Anfangswert des Timers sein?
**** Antwort: **** (1) 0,1 ms
Weg 0:
0,1 × 10-3 = 213-X × 12 / (6 × 106)
Also: X = 8142 = 1111111001110B
Die unteren 5 Bits von T0 01110B = 0EH
Die oberen 8 Bits von T0: 11111110B = FEH
Methode 1: 0,1 × 10-3 = (216-X) × 12 / (6 × 106)
Also: X = 65486 = FFCEH
Methode 2: 0,1 × 10 –3 = (28 × × 12 / (6 × 10 6)
Also: X = 206 = CEH
(2) 10ms
Methode 0: 10 × 10-3 = (213-X) × 12 / (6 × 106)
Also: X = 3192 = 110001111000B
T0 niedrig 5 Stellen 11000B = 18H
Die oberen 8 Bits von T0: 01100011B = 63H
Methode 1: 10 × 10-3 = (216-X) × 12 / (6 × 106)
Also: X = 60536 = EC78H
Methode 2: In diesem Fall beträgt das längste Timing 512 μs, und das Timing kann nicht für jeweils 10 ms erreicht werden, und der Zeitzyklus von 0,1 ms kann 100 Mal verwendet werden
11. Wie initialisiere ich den Timer / Zähler als externe Interruptquelle? Nehmen Sie T0 als Beispiel, um es durch das Programm zu erklären.
* Antwort: * Initialisierungsverfahren:
```
MOV TMOD, # 06H
MOV TL0, #0FFH
MOV TH0, #0FEH
SETB TR0
SETB EA
SETB ET0
```
14. Es ist bekannt, dass die MCU-Taktoszillationsfrequenz 6 MHz beträgt und eine kontinuierliche Rechteckwelle unter Verwendung des T0-Timers am P1.1-Pin ausgegeben wird.
Abbildung 9-23 Wellenform von Frage 15
**** Lösung: **** Berechnen Sie zuerst die Zeitkonstante:
100us 方式0 Tc=FE0EH; 方式1 Tc=FFCEH; 方式2 Tc=CEH
150us 方式0 Tc=FD15H; 方式1 Tc=FFB5H; 方式2 Tc=B5H
**** Methode eins ****: Verwenden Sie Methode eins, Timer-Interrupt.
Flussdiagramm:
ORG 0000H
LJMP START
ORG 000BH
LJMP TINT0
ORG 0100H
START: MOV TMOD, #01H
MOV TL0, #0CEH
MOV TH0, #0FFH
SETB TR0
SETB EA
SETB ET0
SETB 20H.0
SETB P1.1
SJMP $
TINT0: JNB 20H.0, NEXT
MOV TL0, #0B5H
MOV TH0, #0FFH
CLR P1.1
CPL 20H.0
SJMP LAST
NEXT: MOV TL0, #0CEH
MOV TH0, #0FFH
SETB P1.1
CPL 20H.0
LAST:RETI
**** Methode 2 ****: Verwenden Sie den Timer-Interrupt plus das Verzögerungsprogramm für Methode 2
Flussdiagramm:
ORG 0000H
LJMP START
ORG 000BH
LJMP TINT0
ORG 0100H
START: MOV TMOD, #02H
MOV TL0, #0CEH
MOV TH0, #0CEH
SETB TR0
SETB EA
SETB ET0
SETB 20H.0
SETB P1.1
SJMP $
TINT0: JNB 20H.0, NEXT
CLR TR0
CLR P1.1
LCALL DELAY
CPL 20H.0
SETB TR0
SJMP LAST
NEXT: SETB P1.1
CPL 20H.0
LAST: RETI
DELAY: MOV R7, #8
DELAY1: DJNZ R7, DELAY1
RET