Ayude a escribir un lenguaje 51c que agregue automáticamente del 0 al 9999. Presione la tecla k1 una vez para detenerse y luego continuar, y k2 regresa a 0. Intente hacerlo lo más simple posible.
//Oscilador de cristal de 12M.
Tubo digital de 4 dígitos, código de segmento P0, control de bits P1.0~P1.3, inicio/pausa P1.4 reinicio P1.5
//Pantalla 0000~9999
//2012 02 13
#include
#define uchar unsigned char
sbit P10=P1^0; p>
bit P11=P1^1;
bit P12=P1^2;
bit P13=P1^3;
bit KS= P1^4 ; //Inicio/Pausa
sbit KR=P1^5; //Restablecer
uchar time,xs,ge,shi,bai,qian;
pestaña código uchar[ ]= {
0x3F,/*0*/
0x06,/*1*/
0x5B,/*2 */
0x4F,/*3*/
0x66,/*4*/
0x6D,/*5*/
0x7D, /*6*/
0x07,/*7*/
0x7F,/*8*/
0x6F,/*9*/
};
void delay_ms(unsigned int ms) //1ms de retraso
{
uchar a;
while (ms--)
for(a=123;a>0;a--);
}
void display()
void T0intinit( ) //Inicialización del temporizador T0
{
TMOD=0x01;
TH0=(65536-50000 )/256; /Tiempo de 50 ms
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0 =1;
}
void main()
{
T0intinit( );
while( 1)
{
display( );
while(!KS) // Tecla Inicio/Pausa
{
mostrar( );
if(KS)
TR0=!TR0;
}
while(!KR ) //Borrar tecla
{
display( );
if(KR)
TR0= 0;
qian=0;
bai=0;
shi=0;
ge=0;
} p>
if(bai==10)
{
bai=0;
qian++;
} p>
if(qian==10)
{
qian=0;
TR0=0;
}
}
}
visualización nula ( )
{
P13=0;
P0=tab[ge];
delay_ms(1);
P13=1; p> p>
P12=0;
P0=tab[shi];
delay_ms(1);
P12=1; p>
P11=0;
P0=tab[bai];
delay_ms(1);
P11=1;
P10=0;
P0=tab[qian];
delay_ms(1);
P10=1;
}
void T0int( ) interrupción 1 //Temporizador T0 modo de interrupción 1
{
uchar t;
TH0=( 65536 -50000)/256; //Reinstalar la constante de temporización de 50 ms
TL0=(65536-50000)%256;
t++;
if(t = =10)
{
t=0;
ge++;
if(ge==10)
{
ge=0;
shi++;
}
si(shi==10)
{
shi=0;
bai++;
}
}
} p >