Red de conocimiento informático - Conocimiento del nombre de dominio - ¿Cómo utilizar el temporizador del microcontrolador 51?

¿Cómo utilizar el temporizador del microcontrolador 51?

Uso del temporizador de 51 microcontroladores

Uso del temporizador/temporizador de 51 microcontroladores

Pasos:

1 Activar el bit de permiso de interrupción:

Controlar el registro IE La información de cada bit del registro IE se muestra en la siguiente figura:

EA: cuando es 0, todas las interrupciones se desactivan; es 1, todas las interrupciones están activadas

ET2: cuando es 0, desactiva la interrupción T2; cuando es 1, activa la interrupción T2. ​​Solo 8032, 8052 y 8752 tienen. esta interrupción ES: cuando es 0, apaga la interrupción del puerto serie cuando es 1, activa la interrupción del puerto serie ET1: cuando es 0 apaga la interrupción T1 cuando es 1, activa la interrupción T1 EX1; : cuando es 0, apaga 1, cuando está encendido ET0: cuando es 0, apaga la interrupción T0 cuando es 1, enciende la interrupción T0 EX0: cuando es 0, está apagado 1 cuando está encendido;

2. Seleccione el modo de trabajo del temporizador/temporizador:

Formato Timer TMOD

La CPU detecta T0/T1 una vez en cada ciclo de la máquina, pero solo en el tiempo anterior El contador se incrementará en 1 solo si es

1 y la última detección es 0. Por lo tanto, el contador no se activa con el flanco negativo del reloj externo, sino que cuenta cuando se detecta dos veces una transición negativa. Dado que dos detecciones requieren 24 pulsos de reloj, la duración de 0 o 1 entrada en la línea T0/T1 no puede ser inferior a un ciclo de máquina. Normalmente, la frecuencia del pulso de conteo en la línea de entrada T0 o T1 es siempre inferior a 100 kHz.

Modo 0: El temporizador/temporizador cuenta sumando de 1 a 13 bits. Estos 13 bits se componen de los 8 bits superiores en TH y los 5 bits inferiores en TL. Los 3 bits superiores en TL se descartan. . No requerido (compatible con MCS-48).

El contador de 13 bits cuenta como un contador más-1. Cuando llega a 0, puede enviar automáticamente una solicitud de interrupción por desbordamiento a la CPU. Sin embargo, si quiere volver a contar, la CPU debe recargarse. el valor inicial para él en su rutina de servicio de interrupción.

Modo 1: 16 bits más 1 contador, compuesto por TH y TL Las condiciones de trabajo en el modo 1 son las mismas que en el modo 0, excepto que el valor del contador es 8 veces mayor que el del modo 0. .

1

1/3

Método 2: el contador se divide en un registro TH de 8 bits y un contador TL de 8 bits. inicialícelos Envíe el mismo valor de tiempo inicial. Cuando se inicia el contador, TL cuenta por 8 bits más 1. Cuando está lleno y vuelve a cero, por un lado, envía una solicitud de interrupción por desbordamiento a la CPU y, por otro lado, recupera el valor inicial de TH y empieza a contar.

Modo 3: T0 y T1 funcionan de diferentes maneras. TH0 y TL0 funcionan como dos contadores independientes de 8 bits, y T1 solo puede funcionar en modo 2 sin interrupciones. Hay una diferencia entre TH0 y TL0 en el modo 3: TL0 se puede configurar para que funcione en modo temporizador/temporizador o contador, aún controlado por TR0, y usa TF0 como indicador de interrupción de desbordamiento. TH0 solo puede funcionar en modo temporizador/temporizador; funciona, toma prestados TR1 y TF1 para controlar y almacenar el indicador de interrupción de desbordamiento. Por lo tanto, T1 no tiene bits de control para usar, por lo que TL1 no generará una solicitud de interrupción por desbordamiento cuando llegue a cero. Obviamente, configurar T0 y T1 en el modo 3 es en realidad equivalente a configurar tres contadores de 8 bits para que funcionen al mismo tiempo. TH0 y TL0 son dos contadores de 8 bits que se recargan mediante software, y TH1 y TL1 se recargan automáticamente. -Contador de bits, pero no se genera ninguna solicitud de interrupción por desbordamiento. Dado que TL1 funciona en un estado de solicitud sin interrupción, se utiliza como variable de puerto serie en baudios

3 Asignar un valor al contador

Cálculo del valor inicial del contador

.

TC =M?C

TC: valor inicial del contador, M: valor del módulo del contador (2k), C: cálculo del valor inicial del temporizador cuando el contador está lleno

T=( M?TC)T cuenta

o

TC=M?T/?count

M: valor del módulo, T cuenta: ciclo de reloj del microcontrolador TCLK (ΦCLK 12 veces el recíproco de TC) es el valor inicial del temporizador y T es el tiempo a cronometrar.

TC=M?T×/12

M: valor del módulo, ΦCLK: ciclo de reloj del microcontrolador, ΦCLK es el valor de temporización inicial del temporizador y T es el tiempo para ser cronometrado.

Por ejemplo: la frecuencia de pulso principal ΦCLK del microcontrolador es 12MHz y el tiempo máximo de temporización es: En modo 0, TMAX = 213×1us = 8.192ms En modo 1, TMAX = 216×1us = 65.536ms En modo 2 y modo 3, TMAX = 28 × 1us = 0.256ms

4TR0: cuando es 0, detiene el conteo de T0; cuando es 1, comienza a contar T0

2

2/3

TF0: Cuando es 0, no hay interrupción T0 (reinicio de hardware); cuando es 1, hay una interrupción de desbordamiento T0 TR1: Cuando es 0, se detiene el conteo de T1; cuando es 1, se inicia el conteo de T1 TF1: cuando es 0, no hay interrupción T1 (reinicio de hardware); cuando es 1, hay una interrupción de desbordamiento de T1 IE1: cuando es 0, se reinicia el hardware; cuando es 1, IT1: cuando es 0, el nivel INT1 se activa (reinicio de software); cuando es 1, el flanco negativo de INT1 activa IE0: cuando es 0, reinicio de hardware; cuando es 0, se activa el nivel INT0 (se activa el flanco negativo de INT0)

5

Utilice la interrupción x en el lenguaje C de C51 Para especificar la dirección de entrada de interrupción, x es el número de interrupción, por ejemplo, interrupción T0: void Time0_Int() interrupción 1 //Programa de entrada de interrupción del temporizador T0