Red de conocimiento informático - Conocimiento sistemático - 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.

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();

}

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