¿Cómo escribir el microcontrolador para que la luz LED se encienda cada 5 segundos y el tubo digital siempre muestre la cuenta regresiva de 5 a 0?
Establecer en *** tubo digital de siete segmentos de ánodo
char? , 0x90} //*** Código de siete segmentos del ánodo char? bitCode[]={0x01, 0x02, 0x04, 0x08, 0x10, 0x20} //*** Código de 6 bits del ánodo, válido de alto nivel
/***Mostrar datos en la posición especificada***/
// m son los datos del código de siete segmentos que se mostrarán
// k son los datos especificados datos de visualización de posición
void show(char m, char k)
{? char dat;
dat = segCode[m]; // m= 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
HC573(dat, 1); //Código de segmento de salida
dat = bitCode[] k];? // k=0, 1, 2, 3, 4, 5
HC573(dat, 2); //Código de bits de salida
}
sbit segm = P2^6;? //Bit de bloqueo
sbit bitc = P2^7;? //Bit de bloqueo
/*** HC573 recibe datos bloqueados * **/
void HC573(char dat, char nub)
{
P0=dat;
if(nub= = 1)
{ segm=1; segm=0; } ? //Señal de bloqueo del segmento de salida
if(nub==2)
{ bitc = 1; bitc = 0; }? //Señal de bloqueo de bit de salida
}
bit intflag;
void main()
{ char times;
intflag=0;? times=5;
P1=0xff;
initime0(); //Inicializar temporizador 0
p>while(1)
{? if(intflag)?
? { intflag=0;?
show(veces, 0) ); // Debido a que solo se muestra un bit, el problema de escaneo de bits no se considera
? =5; P1 =~P1; }
}
}
}