用独立按键控制静态数码管,按一次按键,数码管显示加1.
但是有的时候按一次按键数码管会跳加1或者加2.程序如下,希望大神可以解释。
按键接P2口,P0口驱动静态数码管。头文件我就不写了。
uchar code table[]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07,
0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71};
uchar num;
uchar temp;
void delay5ms() //误差 0us
{
uchar a,b;
for(b=19;b>0;b--)
for(a=130;a>0;a--);
}
void main()
{num=0;
while(1)
{
temp=P2;
if(temp!=0xff)
{
delay5ms();
if(temp!=0xff)
{
num++;
delay5ms();
if(num==16)
{
num=0;
}
while(temp!=0xff)
{
temp=P2;
}
P0=~table[num];
}
}
}
}
但是有的时候按一次按键数码管会跳加1或者加2.程序如下,希望大神可以解释。
按键接P2口,P0口驱动静态数码管。头文件我就不写了。
uchar code table[]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07,
0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71};
uchar num;
uchar temp;
void delay5ms() //误差 0us
{
uchar a,b;
for(b=19;b>0;b--)
for(a=130;a>0;a--);
}
void main()
{num=0;
while(1)
{
temp=P2;
if(temp!=0xff)
{
delay5ms();
if(temp!=0xff)
{
num++;
delay5ms();
if(num==16)
{
num=0;
}
while(temp!=0xff)
{
temp=P2;
}
P0=~table[num];
}
}
}
}