Cómo usar un temporizador de microcontrolador 8051 para calcular el tiempo entre dos eventos configurando SFR con ejemplo

8051 tiene dos temporizadores / contadores, temporizador0 y temporizador1. Ambos tienen registro de 16 bits. Como 8051 es un microcontrolador de 8 bits, los registros se dividen en dos registros de 8 bits cada uno, es decir, TL0, TH0 y TL1, TH1 (byte bajo y byte alto). Esto significa que los temporizadores tienen un rango máximo de 0 a 65536 (2 ^ 16).

El siguiente código mide el tiempo entre la pulsación y liberación de la tecla en el pin 5 del puerto 1. (El pin y el puerto seleccionados son aleatorios, no dude en usar cualquier otro puerto)

mybit = P1 ^ 5;
vacío principal (vacío)
{
unsigned int time = 0; // variable para almacenar el tiempo entre eventos
TMOD = 0x01; // Cargue el registro TMOD con los valores apropiados (modo 1)
TL0 = 0x00; // Inicializa los registros del temporizador a cero
TH0 = 0x00;

mybit = 1; // Establecer el pin P1.5 como entrada

mientras que (1)
{
if (mybit == 1) // cuando se presiona la tecla
{
TR0 = 1; // Inicia el temporizador
while (mybit == 1); // espera hasta que se suelte la llave
TR0 = 0; // Parar el temporizador
tiempo = (TH0 << 8) | TL0; // Lee el valor del temporizador
}
TH0 = 0; // Restablecer el temporizador.
TL0 = 0;
}
}

El código anterior se explica por sí mismo. Para los detalles de los SFR, consulte la hoja de datos [1] [2].

Si desea obtener más información sobre el uso de los temporizadores de 8051, visite estos enlaces [3] [4].

Temporizador / Contador es un concepto importante para usar en caso de microcontroladores. Le da una gran flexibilidad a sus proyectos.

Gracias y espero que les sea útil 🙂

Notas al pie

[1] http://ww1.microchip.com/downloa…

[2] http://www.keil.com/dd/docs/data…

[3] PROGRAMACIÓN DE TEMPORIZADORES 8051

[4] Temporizadores | Temporizador 8051 | Programación por temporizador