Red de conocimientos turísticos - Conocimientos sobre calendario chino - La implementación del retraso en la programación del microcontrolador

La implementación del retraso en la programación del microcontrolador

#include & ltreg 51. h & gt;//Contiene el archivo de encabezado para la definición de registro de 51 microcontroladores.

Código de caracteres sin firmar Tab[10]={0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x 90};

//Pantalla de tubo digital la tabla de códigos de segmento del 0 al 9.

Carácter sin firmar int _ time//Registra el número de interrupciones.

Segundos de caracteres sin firmar; //segundos de almacenamiento

/*************************** * ***********************************************

Característica: Retraso de escaneo dinámico rápido, el retraso es de aproximadamente 0,6 milisegundos.

********************************************* *** *******************************/

Retraso no válido (no válido)

{

Carácter sin firmar I;

for(I = 0;i<200;i++);

}

/** ************************************************** * *******************

Función: Mostrar segundos

Parámetro de entrada: k

Exportar Parámetros: Ninguno

****************************************** ** *************************************/

evitar segundos de visualización ( carácter sin signo k)

{

P2 = Tab[k/10]; //Mostrar dígito de las decenas

P3 = 0x 01; Salida de pin de nivel alto, ilumina el dígito de las decenas.

delay();

P3 = 0x fc; //Apaga todos los tubos digitales.

P2 = Tab[k % 10]; //Unidad de visualización

P3 = 0x 02; //Salidas del pin P3.1 de alto nivel, iluminando a todos.

delay();

P3 = 0x fc; //Apaga todos los tubos digitales.

}

Void main(void) //Función principal

{

TMOD = 0x 01 //Usar temporizador T0

TH0 =(65536-5000)/256; //Establece el temporizador en 50 milisegundos.

TL0 =(65536-5000)% 256;

EA = 1; //Activar interrupción del host

ET0 = 1 //Habilitar temporizador T0; Interrumpir

TR0 = 1; //Inicia el temporizador T0 para comenzar a funcionar.

int _ time = 0; //Inicialización del número de interrupciones

Segundos = 99; //Inicialización de segundos

while(1)

{

DisplaySecond(segundos); //Llama a la segunda subrutina de visualización

mientras(segundos==0)

DisplaySecond(segundos) ;

p>

}

}

//********************* *********** *******************************

/ /Función: Interrumpir el programa de servicio del temporizador T0.

//****************************************** ****************

interrupción nula (void) 1 usa 1

{

TR0 = 0 ;/ /Cerrar temporizador T0

int _ time++; //Para cada interrupción, el número de interrupción int_time aumenta en 1.

If(int_time==20) // Suficiente para 20 interrupciones, es decir, el resultado de la prueba se muestrea cada 1 segundo.

{

int _ time = 0; //Borrar el número de interrupciones.

Segundo-;//Disminuye 1 en segundos

}

TH0 =(65536-5000)/256;//Reasignar el valor inicial al contador T0.

TL0 =(65536-5000)% 256;

TR0 = 1; //Iniciar temporizador T0

If(segundo==0) // Si la cuenta regresiva es 0, detenga el temporizador T0.

TR0 = 0;

}