以Key4为例,使用定时中断2ms进行消抖,对连续8次(16ms)的按键状态进行判断.
如果全部为1则弹起,将按键当前状态(Keysta)为1;
全部为0则按下,将按键当前状态(Keysta)置0;
其余状态都为抖动,按键当前状态不变。
在主程序里对按键状态进行判断,如果按键当前状态(Keysta)与按键历史状态(backup)不同,则说明按键状态发生变化。程序中是弹起时,按键次数改变,将最新的按键次数送给数码管显示,将按键历史状态更新为当前状态并进行下一次判断。源代码如下:
#include<reg52.h>
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
sbit KEY1 = P2^4;
sbit K