Prinzip des Microcomputer-08-Timers

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.

  1. Software-Timing Das
    Software-Timing ist ein zyklisches Programm, und die zur Ausführung dieses Programmsegments erforderliche Zeit ist die Verzögerungszeit.

  2. 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.

  3. 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?
Fügen Sie hier eine Bildbeschreibung ein

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.

img

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:

img

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:

img

    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

Veröffentlichte 225 Originalartikel · Gefällt mir 140 · Besuchen Sie 250.000+

Ich denke du magst

Origin blog.csdn.net/jankin6/article/details/105402846
Empfohlen
Rangfolge