¿Cómo utiliza AT89S52 el temporizador 2 para cronometrar un segundo para implementar la función?
El temporizador 2 AT89S52 es un temporizador de 16 bits que puede realizar la función de recarga automática. Tiene sus propias ventajas sobre el temporizador 0 y el temporizador 1. Por supuesto, para lograr una temporización de 1 segundo, también es necesario utilizar un bucle, porque un temporizador de 16 bits, con un oscilador de cristal de 12 M, sólo puede cronometrar durante unos 65 milisegundos como máximo. Aquí hay un ejemplo:
#include
#define uchar unsigned char
#define uint unsigned int
sbit Led=P0^0; Bit LED
void Timer2() interrupción 5 //Llamar al temporizador 2, modo de recarga automática
{
static uchar i=0; i
TF2=0; //El indicador de interrupción del temporizador 2 debe borrarse mediante el software
i++ //El indicador de conteo aumenta en 1
if(i==20) //Determina si llega a 1s
{
i=0 //Borrar la variable estática a 0
Led=; ~Led; //Nega el bit del LED
}
}
void main()
{
RCAP2H=(65536-50000)/ 256; //Recargar contador y asignar valor inicial
RCAP2L=(65536-50000)%256;
ET2=1; interrupción del temporizador 2
EA=1; //Habilitar interrupción total
TR2=1; //Habilita el temporizador y establece el modo de recarga automática
while(1 );
}
El programa anterior realiza la función de encender y apagar la luz LED en 1 segundo.