独立按键
(2)按位取反(按一下亮,再按灭。。。)(灯)
按键抖动:
按键闭合/开启的瞬间发生(5-10ms不定)
按键的消抖:
硬件:加电路,抖动过滤(触发器)
软件:延时20ms,将抖动的时间覆盖
检测松手: while(P3_1==0);
#include<REGX52.H>
void Delay1ms(unsigned int xms)
{
unsigned char i,j;
while(xms)
{
i=2;j=239;
do
{
while(--j);
}while(--i);
xms--;
}
}
void main()
{
while(1)
{
if(P3_1==0)//如果按键按下
{
Delay1ms(20);//覆盖抖动消抖//即让抖动产生的电平变化不会产生任何效果影响
while(P3_1==0);//只要按键不松开就不会产生效果,程序停留在这
Delay1ms(20);//覆盖抖动消抖
P2_0=~P2_0;//0/1变换按位取反,初始为1,LED不亮,按一下为0亮,再按为1,灭
}
}
}
K1按键接到P3_1口
nop需要加#include<INTRINS.H>这个头文件