¿Cómo hacer un cronómetro simple de 9 segundos usando un microcontrolador de 51 y un solo tubo digital?
Supongamos que P0 está conectado al tubo digital, el programa es el siguiente:
#include
#define uchar unsigned char
# define uint unsigned int
uchar a=0;
uchar b=9;
//***Tubo digital Yin código de siete segmentos
tabla de códigos uchar[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77};
retraso nulo (uchar aa)//subrutina de retraso
{
uchar bb,cc;
for(bb=aa;bb>0;bb--)
for(cc=200;cc>0;cc--);
}
void main(void)//programa principal
{
TMOD=0x01; // Temporizador 0 modo de trabajo 1
ET0=1;
EA=1;
TH0=(65536- 50000)/256;//Tiempo 50ms
TL0=(65536-50000)%256;
TR0=1;//Inicio
while(b >0)
{
P0= tabla[b]
retraso(5);
}
P0=0;
TR0=0;
mientras(1);
}
/ /Interrumpir subrutina
void Timer0(void) interrupción 1
{
TH0=(65536-50000)/256;
TL0 =(65536- 50000)%256;
a++;
if(a==20) {a=0;b--;}
}