本帖最后由 Jack315 于 2014-4-19 23:14 编辑
从程序看是单键判断。。。
一般按键都有个“抖动”的问题:当按键按下时,端口的电平会在高低电平间来回“抖动”(持续时间在10ms~50ms之间),从而给软件判断按键状态带来困扰,因此,需要有“去抖动”的措施。“去抖动”功能可以由硬件或软件来实现。硬件实现的方法是是在按键(开关)的两端并联一个电容(0.1uF)。软件的实现方法如下:
unsigned char Count=0; // 8-bit unsigned
while (1) // main loop
{
...
if (Key == 0) // Low detected.
{
if (Count < 255) Count++;
}
else // High detected.
{
if (Count > 0) Count--;
}
if (Count > 128) // Key pressed.
{
// Actions for key pressed.
}
else // Key released.
{
// Actions for key released, if any.
}
...
};
本帖最后由 Jack315 于 2014-4-19 23:14 编辑
从程序看是单键判断。。。
一般按键都有个“抖动”的问题:当按键按下时,端口的电平会在高低电平间来回“抖动”(持续时间在10ms~50ms之间),从而给软件判断按键状态带来困扰,因此,需要有“去抖动”的措施。“去抖动”功能可以由硬件或软件来实现。硬件实现的方法是是在按键(开关)的两端并联一个电容(0.1uF)。软件的实现方法如下:
unsigned char Count=0; // 8-bit unsigned
while (1) // main loop
{
...
if (Key == 0) // Low detected.
{
if (Count < 255) Count++;
}
else // High detected.
{
if (Count > 0) Count--;
}
if (Count > 128) // Key pressed.
{
// Actions for key pressed.
}
else // Key released.
{
// Actions for key released, if any.
}
...
};
举报