Red de conocimiento informático - Conocimientos de programación - Programación sencilla de cuenta atrás de diez segundos

Programación sencilla de cuenta atrás de diez segundos

Programa para implementar un cronómetro de cuenta atrás, una pantalla de tubo digital LED de 2 dígitos y utilizar un método de retardo de hardware para el retardo.

Utilice el temporizador T0 del microcontrolador para cronometrar 1 segundo para realizar la función de cuenta atrás del cronómetro.

El proceso es el siguiente

# include & ltreg 51. h & gt;

Pestaña de código de caracteres sin firmar[]={0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x 90}; //* * *Tabla de códigos de segmento de tubo digital Yang

Segundos de caracteres sin firmar //Segunda variable de cuenta regresiva

Carácter sin signo t0n//Recuento de interrupciones T0

sbit k1=p3^2; //Definir clave

Retraso no válido()

{

Unsigned int j;

for(j = 400; j & gt0;j-);

}

Void display() //Mostrar subrutina

{

P2 = 0x 01;

P0 = tab[segundos/10]; //Mostrar dígitos de decenas

retraso( );

P2 = 0x 02;

P0 = tab[segundo % 10]; //Unidad de visualización

retraso( );

}

void main()

{

TMOD = 0x 01; //Temporización T0, modo de interrupción

TH0 = 0x3C//Oscilador de cristal 12M, temporización 50ms.

TL0 = 0xB0

IE = 0x82

mientras(1)

{

display(); //Ajustar subrutina de visualización

If(k1==0)//Botón.

{

If (TR0==0)

{

TR0 = 1; //Inicia el cronómetro.

Segundos = 60; //Comienza la cuenta regresiva desde 60 segundos.

}

Otros

TR0 = 0;

while(k 1 = = 0); //Espera la clave para ser liberado

}

}

}

//programa de interrupción T0

void interrupción T0_int() 1

{

TH0 = 0x3C

TL0 = 0xB0

t0n++;

if(t0n & gt ;=20 )//Llegó en 1 segundo

{

t0n = 0;

Segundo -;//Negativo 1 segundo

si( Segundos = = 0)TR0 = 0;

}

}