长按键C语言程序
zhchxgh | 2009-07-04 01:46:51 阅读:8246
发布文章
一共用了四个按钮.
#define _KEYDOWN_TEST_TIME (20)
unsigned char IsKeyDown(volatile unsigned char Value, unsigned char pin)
{
unsigned long CurState = 0, i;
for(i = 0; i
CurState += _GET_BIT(Value, pin)? 0:1; //键盘接了上拉电阻,低电平才是按下
if(CurState == _KEYDOWN_TEST_TIME)
return 1;
return 0;
}
//以下所有值均是以 DealWithKey函数的调用频率为基础的,该频率是定时器2的定时值决定的
//短按键的计数值,只有当按键检测计数器计数大于等于此值时才认为是一次短按
#define _KEY_SHORT_CNTR (2)
//长按键的计数值,只有当按键检测计数器计数大于等于此值时才认为是一次长按
#define _KEY_LONG_CNTR (_KEY_SHORT_CNTR * 3)
//无按键按下时的按键检测间隔