这个按键程序有没有问题?我按着按钮不放时为什么个位上的数字不会显示,但十位上的数字还在显示啊?
按原因来说: while(!key);只要我按钮不松开就不会调用显示程序吧?应该数码管都没有东西吧?
程序如下:
#include<reg52.h>
sbit key=P1^3;
#define uchar unsigned char
#define uint unsigned int
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90};//显示段码//
uchar code wei[]={0x01,0x02,0x04,0x08,0x10,0x20};//位编码//
uchar num;
display(uchar );
delay(uchar);
void main()
{
num=0;
while(1)
{
if(key==0)//检测按钮
{
delay(50);
if(key==0)//确定按下
{
if(num==99)//最大显示值
num=0;
else
num++;
while(!key);//检测按钮是否松开
}
}
display(num);//调用显示子程序
}
}
display(uchar num1)//显示子程序
{
P3=0x00;
P2=table[num1%10];
P3=wei[5];
delay(80);
P3=0x00;
P2=table[num1/10];
P3=wei[4];
delay(80);
}
delay(uchar x)//延时子程序
{
uchar a,b;
for(a=x;a>0;a--)
for(b=200;b>0;b--);
} |