|
请教单片机高手,按教程上的例子,做了一下按键程序,里面加了消隐程序。
可是为什么运行后,按键按下后,数字一直在跑?从程序上分析,不应该这样的。
#include<reg52.h>
unsigned char code ledchar[16]={ 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E};
sbit key=P2^7;
sbit a0=P2^2;
sbit a1=P2^3;
sbit a2=P2^4;
void delay();
void main()
{
bit keybuf=1;//按键值暂存,临时保存按键的扫描值
bit backup=1;//按键值备份
unsigned char cnt=0;
a0=1;
a1=1;
a2=1;//只让一位数码管显示
P0=~ledchar[cnt];
while(1)
{
keybuf=key;
if (keybuf != backup);//按键有变化
{
delay();
if (keybuf == key)
{
if (backup == 0) //如果前次值为 0,则说明当前是弹起动作
{
cnt++;
if (cnt>=10)
{
cnt=0;
}
P0=~ledchar[cnt];
}
backup=keybuf;
}
}
}
}
void delay()
{
unsigned int i=8000;
while(i--);
|
|