按键消抖
#include <reg52.h>sbit LED1 = P0^0;
sbit LED2 = P0^1;
sbit LED3 = P0^2;
sbit LED4 = P0^3;
sbit KEY1 = P2^0;
sbit KEY2 = P2^1;
sbit KEY3 = P2^2;
sbit KEY4 = P2^3;
void delay();
void main()
{
bit keybuf = 1;//按键值暂存,临时保存按键的扫描值
bit backup = 1;//按键值备份,保存前一次的扫描值
while (1)
{
keybuf = KEY4; //把当前扫描值暂存
if (keybuf != backup) //当前值与前次值不相等说明此时按键有动作
{
delay(); //延时大约10ms
if (keybuf == KEY4) //判断扫描值有没有发生改变,即按键抖动
{
if (backup == 0)//如果前次值为0,则说明当前是弹起动作
{
P0 =~P0;//计数值显示到数码管上
}
backup = keybuf;//更新备份为当前值,以备进行下次比较
}
}
}
}
//软件延时函数,延时约10ms
void delay()
{
unsigned int i = 1000;
while (i--);
} 谢谢分享按键消抖 感谢分享,谢谢了啦!! xiexie
页:
[1]
