1.每次按键按下,都会发生抖动,既然抖动会发生20ms,那么这个时候我们在按键按下的后延时20ms就可以消除抖动带来的影响了
延时函数的由来:这里的延时函数就是有形参传入的那种
2.实例代码
#include <REGX52.H>
void Delay(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) //如果K1按键按下
{
Delay(20); //延时消抖
while(P3_1==0); //如果还一直按着那么就一直保持延时消抖,但是一旦松开按键
Delay(20); //就启动延时消抖
P2_0=~P2_0; //第一个LED取反
}
}
}
3.最终的现象就是按下按键,灯不亮,松手后灯亮