新手上路
- 积分
- 33
- 金钱
- 33
- 注册时间
- 2013-5-1
- 在线时间
- 0 小时
|
发表于 2013-5-3 21:46:36
|
显示全部楼层
uchar keysearch(void)
{
uchar keynum=0;
static uchar keynum_code=0,keytime=0,keyflag=0;//注意要static
if((P3&0x3c)!=0x3c) //检测按键是否按下
{
if(!keyflag) //按键标志位为0
{
keytime++; //多次扫描,延时
if(keytime>=2) //大于2次,那就确定是按键按下了
{
// num++;
keyflag=1; //按键标志位置高
keynum_code=P3&0x3c;//记录下按键值
}
if(keytime>=LTIME) //按键检测到的次数超过设定的长按时间值
{
//这里可以实现长按功能
}
}
}
else //没有按键按下,也有可能是按键抬起
{
if(keyflag) //在这里判断是否有按键标志
{
switch(keynum_code) //根据之前的记录值来判断是哪个按键按下
{
case 0x1c:keynum=1;break;
case 0x2c:keynum=2;break;
case 0x34:keynum=3;break;
case 0x38:keynum=4;break;
default:keynum=0;break;
}
keyflag=0; //记得清除按键标志位
keynum_code=0;
}
keytime=0; //清除按键次数
}
return(keynum); //返回结果
}
这是我自己用51写的一段定时器扫按键的函数,只要把它放定时器里去扫就是了 |
|