Red de conocimiento informático - Computadora portátil - 51 Programa de cuenta atrás del tubo digital del microcontrolador, cuenta atrás desde 999999, se completa la interrupción del temporizador T1

51 Programa de cuenta atrás del tubo digital del microcontrolador, cuenta atrás desde 999999, se completa la interrupción del temporizador T1

#include

#define uchar unsigned char

código uchar ledtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f .0x6f,0x40};//0-9

uchar sec=0,min=0,hora;

uchar tiempo;

uchar disdat[6 ];

retraso nulo (unsigned int x)

{

unsigned int i,j;

for(i=0; i

for(j=0;j<120;j++);

}

disdat[1]=sec/10;

disdat[2]=min%10;

disdat[3]=min/10;

disdat[4]=hora%10;

disdat[3]=min/10;

disdat[4]=hora%10;

p>

disdat[5]=hora/10;

}

void t0isr() interrupción 1 // segundo temporizador

{

TH0=0x3c;

TL0=0xb0;

tiempo++;

if(tiempo==20)

{

tiempo=0;

si(sec>0)seg--;

si no(min>0){sec= 99; min--;}

si no( hora>0){sec=99;min=99;hora--;}

}

dischg()

}

void t1isr() interrupción 3 //mostrar

{

TH1=0xec;

TL1=0x78;

cambiar( escaneado)

{

caso 0:

P2=0x20;

p>

P0=~ledtab[disdat[5]] ;

rotura;

caso 1:

P2=0x10;

P0=~ledtab[disdat[4]];

rotura;

caso 2:

P2=0x08;

P0=~ledtab[disdat[3]];

rotura;

caso 3:

P2=0x04;

P0 =~ledtab[disdat[2]];

break;

caso 4:

P2=0x02;

P0=~ ledtab[disdat[1]];

romper;

caso 5:

P2=0x01;

P0=~ledtab[ disdat[0 ]];

romper;

predeterminado: pausa;

}

escaneado++;

escaneado%=6;

}

principal()

{

TMOD=0x11

TH0 =0x3c;

TL0=0xb0;

TH1=0xec;

TL1=0x78;

TR1=1;

TR0=0;

ET0=1;

ET1=1;

EA=1;

fmq=0;

escaneado=0;

tiempo=0;

modo=1;

dischg();

mientras(1)

{

if(keyhu ==0)

{

mientras (keyhu==0);

TR0=0;

hora++;

hora%=24;

}

if(keyhd==0)

{

mientras(keyhd= =0);

TR0=0;

si(hora>0)hora--;

if(hora==0)hora=23;

}

if(keymu==0)

{

mientras(keymu==0);

TR0= 0;

mín ++;

mín%=60;

}

if(keymd==0)

{

mientras(keymd==0);

TR0=0;

if(min>0)min--;

if(min==0 )min=59;

}

if(keysu==0)

{

mientras(keysu==0);

TR0=0;

seg++;

seg%=60;

}

if(keysd==0)

{

mientras(keysd==0);

TR0=0;

si(sec>0)seg--;

if(sec==0)sec=59;

}

si (keyst==0)

Si(keyst==0)

{

mientras(keyst==0);

TR0=~TR0;

}

dischg();

}

}

}

}

}