設計倒計時程序,要求按1,10秒倒計時,按2,20秒倒計時。我寫了倒計時程序但鍵盤加不進去。求大神解答,可酬金答謝
說明:P0段選,P2位選。共陽極數碼管
#include<reg52.h>
unsigned char shi,ge,num1,num2,a;
unsigned int x,y,z;
unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char code shu[]={0,10,20,30};
void delay(x);
void shuhanshu(a);
void display(shi,ge);
unsigned char key()
{unsigned char row=0,col=0,k;
unsigned int t;
P3=0x0F; //行列
if(P3==0x0F)
return k;
t=20000;while(t--);
if(P3==0x0F)
return k;
for(row=0;row<4;row++)
{
P3=~(0x80>>row);
k=P3&0x0F;
if(k!=0x0F)
{
while(k&(0x08>>col))
col++;
k=15-(row*4+col);
/* P1=0x0f;
while(P1!=0x0F);*/
return k;
}
}
}
void delay(x)
{
for(y=x;y>0;y--)
for(z=110;z>0;z--);
} //延時
void display(shi,ge)
{
P0=table[shi];
P2=0x7f;
delay(5);
P0=table[ge];
P2=0xbf;
delay(5);
}
void main()
{
key();
a=key();
num1=shu[a];
TMOD=0x01;
EA=1;
ET0=1;
TR0=1;
while(1)
{
display(shi,ge);
if(num2==20)
{
num2=0;
num1--;
if(num1==0)
num1=shu[a];
shi=num1/10;
ge=num1%10;
}
}
}
void time1() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
num2++; //定時器
}
|