OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7507|回复: 6
打印 上一主题 下一主题

大家评论一下这种方法怎么样

[复制链接]

19

主题

248

帖子

2

精华

高级会员

Rank: 4

积分
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; 
}
正点原子逻辑分析仪DL16劲爆上市
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-10-12 06:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表