高级会员

- 积分
- 842
- 金钱
- 842
- 注册时间
- 2012-2-8
- 在线时间
- 19 小时
|
发表于 2012-7-18 16:59:15
|
显示全部楼层
下面是我的键盘扫描 http://www.openedv.com/posts/list/5970.htm
u8 Key_Scan(void)
{
u8 key_ret = 0;
static u8 key_num = 0,del_count,tim_count;
static bit key_flag = 0;
if((!SET)||(!KUP)||(!KDN)||(!KOK)){/*判断是否有键按下*/
if(++del_count==5){/*计数消抖*/
del_count = 0;
if(++tim_count>4){/*长按识别*/
key_flag = 0;/*短按无效*/
tim_count = 4;/*锁定长按*/
switch(key_num){
case 1:key_ret = 5;break;
case 2:key_ret = 6;break;
case 3:key_ret = 7;break;
case 4:key_ret = 8;break;
}
}
else{/*短按有效*/
key_flag = 1;/*短按标志位*/
if(!SET)key_num = 1;/*一下用于识别按键*/
if(!KUP)key_num = 2;
if(!KDN)key_num = 3;
if(!KOK)key_num = 4;
}
}
}else{/*松手之后*/
tim_count = 0;
if(key_flag){/*松手*/
key_flag = 0;
switch(key_num){
case 1:key_ret = 1;break;
case 2:key_ret = 2;break;
case 3:key_ret = 3;break;
case 4:key_ret = 4;break;
}
}
}
return key_ret;
}
|
|