Temporizador
Resumen
En detección y control, la función de conteo y la función de temporización se utilizan en muchas ocasiones. Existen tres métodos principales para realizar estas funciones de temporización / conteo: temporización de software, temporización de hardware de circuitos digitales y temporización / contadores programables.
-
Programación de
software La programación de software es un programa cíclico, y el tiempo requerido para ejecutar este segmento de programa es el tiempo de retraso. -
Temporización de hardware de circuito digital
Este tipo de temporización de hardware utiliza dispositivos de circuito integrado a pequeña escala, como el uso de un chip de temporización 555 para formar un circuito de temporización, que no ocupa el tiempo de CPU, pero la temporización de este circuito depende de los parámetros del componente en el circuito. Después de conectar el circuito de hardware, para cambiar el tiempo de sincronización, es necesario cambiar los componentes electrónicos en el circuito, lo cual es muy incómodo de usar. -
Temporizador / contador
programable El temporizador / contador programable está desarrollado para facilitar el diseño y la aplicación de sistemas de microcomputadora. No solo es la temporización de hardware, sino que también puede determinar y cambiar fácilmente el tiempo de temporización a través del software. La programación de software puede satisfacer diferentes Los requisitos de tiempo y conteo.
### Estructura
El temporizador / contador T0 consta de registros de funciones especiales TH0, TL0,
El temporizador / contador T1 consta de registros de funciones especiales TH1 y TL1.
Hay 2 modos de trabajo de temporizador y contador , 4 modos de trabajo (modo 0, modo 1, modo 2 y modo 3).
- El modo contador es contar los pulsos externos agregados a los dos pines T0 (P3.4) y T1 (P3.5).
- El modo de funcionamiento del temporizador es contar la señal de pulso interno de la señal del oscilador del reloj del microcontrolador después de la división de frecuencia en el chip de 12 .
### 4 métodos de trabajo
M1M0 | Camino | Caracteristicas |
---|---|---|
0 0 | 0 0 | Temporizador / contador de 13 bits |
0 1 | 1 | Temporizador / contador de 16 bits |
1 0 | 2 | Temporizador / contador de 8 bits cargado automáticamente con constante de tiempo |
1 1 | 3 | Divida T0 en dos contadores independientes de 8 bits; deje de funcionar cuando configure el modo 3 en T1 |
### Requisitos para señales de conteo de entrada externa
-
Cuando el temporizador / contador funciona en el modo contador, el pulso de conteo proviene del pin de entrada externo T0 o T1.
-
Cuando la señal de entrada produce una transición negativa, el valor del contador aumenta en uno.
-
Durante S5P2 de cada ciclo de la máquina, se muestra el pin de entrada externo T0 o T1.
### Programación y aplicación de temporizador / contador
Pasos
(1) Determine el modo de trabajo, es decir, escriba la palabra de control en el registro de control de modo TMO D.
(2) Calcule el valor inicial del temporizador / contador y escriba el valor inicial en los registros TL y TH.
(3) Establezca el valor inicial en el registro de control de interrupción IE según sea necesario para determinar si se abre la interrupción del temporizador.
(4) Configure TRx en el registro de control de operación TCON para iniciar el temporizador / temporizador.
Practica
\ 2. ¿Cuántos temporizadores / contadores programables hay en el microcontrolador AT89S51? ¿Qué tipos de modos de trabajo pueden tener? ¿Cuáles son los métodos de trabajo? ¿Cómo elegir y configurar? ¿Cuáles son las características de cada uno?
Los cuatro modos de funcionamiento del temporizador / contador están determinados por M1 M0 dos bits en TMOD, como se muestra en la siguiente tabla.
M1M0 | Camino | Caracteristicas |
---|---|---|
0 0 | 0 0 | Temporizador / contador de 13 bits |
0 1 | 1 | Temporizador / contador de 16 bits |
1 0 | 2 | Temporizador / contador de 8 bits cargado automáticamente con constante de tiempo |
1 1 | 3 | Divida T0 en dos contadores independientes de 8 bits; deje de funcionar cuando configure el modo 3 en T1 |
7) La frecuencia de cristal de la MCU AT89S51 es de 6 MHz. Si se requiere que el valor del temporizador sea 0.1 ms y 10 ms respectivamente, y el temporizador 0 funciona en modo 0, modo 1 y modo 2, ¿cuál debería ser el valor inicial del temporizador?
**** Respuesta: **** (1) 0.1ms
Camino 0:
0.1 × 10-3 = (213-X) × 12 / (6 × 106)
Entonces: X = 8142 = 1111111001110B
Los 5 bits inferiores de T0 01110B = 0EH
Los 8 bits superiores de T0: 11111110B = FEH
Método 1: 0.1 × 10-3 = (216-X) × 12 / (6 × 106)
Entonces: X = 65486 = FFCEH
Método 2: 0.1 × 10-3 = (28-X) × 12 / (6 × 106)
Entonces: X = 206 = CEH
(2) 10ms
Método 0: 10 × 10-3 = (213-X) × 12 / (6 × 106)
Entonces: X = 3192 = 110001111000B
T0 bajo 5 dígitos 11000B = 18H
Los 8 bits superiores de T0: 01100011B = 63H
Método 1: 10 × 10-3 = (216-X) × 12 / (6 × 106)
Entonces: X = 60536 = EC78H
Método 2: en este caso, el tiempo más largo es de 512 μs, y el tiempo no se puede lograr durante 10 ms a la vez, y el ciclo de tiempo de 0.1 ms se puede usar 100 veces
11) ¿Cómo inicializo el temporizador / contador como una fuente de interrupción externa? Tome T0 como ejemplo para explicar a través del programa.
* Respuesta: * Procedimiento de inicialización:
```
MOV TMOD, # 06H
MOV TL0, #0FFH
MOV TH0, #0FEH
SETB TR0
SETB EA
SETB ET0
```
14) Se sabe que la frecuencia de oscilación del reloj MCU es de 6MHz, y se emite una onda cuadrada continua en el pin P1.1 usando el temporizador T0.
Figura 9-23 Forma de onda de la pregunta 15
**** Solución: **** Primero calcule la constante de tiempo:
100us 方式0 Tc=FE0EH; 方式1 Tc=FFCEH; 方式2 Tc=CEH
150us 方式0 Tc=FD15H; 方式1 Tc=FFB5H; 方式2 Tc=B5H
**** Método uno ****: Use el método uno, interrupción del temporizador.
Diagrama de flujo:
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
**** Método 2 ****: Use el método 2 de interrupción del temporizador más el programa de retraso
Diagrama de flujo:
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