问题1抖动是什么?
问题2下面代码中消除抖动的原理?
问题3 LEDNum++;
P2=~LEDNum; 这是什么?为什么要取反
#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()
{
unsigned char LEDNum=0;
while(1)
{
if(P3_1==0)
{
Delay(20);
while(P3_1==0);
Delay(20);
LEDNum++;
P2=~LEDNum;
}
}
}
抖动就是机械抖动,开关的抖动会导致短时间内出现多次触点断开合上。
消抖的原理我在你前一个问题已经回答了,既然是短时间内出现,那就延时一下,不要在短时间内反复去读取。
LED取反,可能是因为LED对应引脚为低的时候LED才亮。