Temporizador de cuenta regresiva en lenguaje C basado en el microcontrolador at89C52
Requiere la capacidad de realizar una cuenta regresiva a 9999 segundos
Implementado en lenguaje C
****************************** ******* *****/
##includelt;at89X51.hgt;
#define uchar unsigned char
#define uint unsigned int
uchar num_qian, num_bai, num_shi, num_ge; // Definir miles, centenas, decenas y dígitos.
uint time; // Hora a mostrar 0~9999
uint tcnt; // Unidad de tiempo
//******** *********//
/ La siguiente es la definición del puerto
//**************** ********/ /
}
//************************ ********* *******************
// Aquí está el controlador de contenido de la pantalla del tubo digital de actualización del temporizador 0
//**** ***************************************** ****
/*************************************** ********* ***
** Descripción funcional: controlador de tubo digital de 7 segmentos
*** Recursos de pin ocupados: selección de segmento de tubo digital, digital selección de broca de tubo
** Ocupa el recurso del sistema T0
*************************** *************** *******************/
void t0(void) interrupción 1 // utilizar 0
{
TH0= (65536-5000)/256; //interrupción de 5 ms
TL0=(65536-5000)256; -modo de temporizador de bits
WEI=0xff; //Selección de bit apagado
DUAN=dispcode[dispbuf[dispcount]] //selección de segmento
WEI= dispbitcode[dispcount]; //en la selección de bits
dispcount;
if(dispcount==5)
dispcount=0; > tcnt; //cuenta el número más uno
if( tcnt ==5*200)//satisface 1S ahora
{
tcnt=0; /cuenta número cero
tiempo--; //tiempo menos uno
if(time==0)//tiempo
while(1);
}
if(time lt; 10)//tiempo menos de 10
laba=~laba;//alarma sonora
}
¡Eso es!