Programe un cronómetro para realizar la cuenta regresiva, una pantalla de tubo digital LED de 2 dígitos y utilice el método de retardo de hardware para el retardo.
Utilice el temporizador T0 del microcontrolador para cronometrar durante 1 segundo para realizar la función de cronómetro de cuenta regresiva.
El programa es el siguiente
#include
pestaña de código de caracteres sin firmar[]={0xc0,0xf9,0xa4,0xb0,0x99 ,0x92, 0x82,0xf8,0x80,0x90};//*** Tabla de códigos de segmento de tubo digital Yang
unsigned char second;//segundo variable de cuenta regresiva
unsigned char t0n; // Interrupción T0 Conteo de veces
sbit k1=P3^2; //Definir claves
void delay()
{
unsigned int j;
for(j=400;j>0;j--);
}
void display()//mostrar subrutina
{
P2=0x01;
P0=tab[segundo/10];//Mostrar dígito de las decenas
retraso() ;
P2=0x02;
P0=tab[segundo%10];//Mostrar el dígito de las unidades
delay();
} p>
void main()
{
TMOD=0x01;//Usa temporización T0, modo de interrupción
TH0 = 0x3C;//Oscilador de cristal 12M, temporización 50ms
TL0 =0xB0;
IE? =0x82;
mientras(1)
{
display();//Llamando a la subrutina de visualización
if(k1==0)//Botón presionado
{
if(TR0 ==0)
{
TR0=1;//Iniciar la cuenta atrás
segundo=60;//Iniciar la cuenta atrás desde 60 segundos
}
else
TR0=0;
while(k1==0);//espera la clave para ser liberado
}
}
}
//Programa de interrupción T0
void T0_int() interrumpir 1
{
TH0 =0x3C;
TL0 =0xB0;
t0n++;
if( t0n>=20)//1 segundo en llegar
{
t0n=0;
segundo--;//Disminuir 1 segundo
if(segundo==0)TR0 =0;
}
}
El diagrama de simulación es el siguiente