矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
查看: 2641|回复: 6

单片机应用小技巧之 最简易的单按键程序

[复制链接]
     
发表于 2018-4-4 12:39:11 | 显示全部楼层 |阅读模式
在使用一些小空间MCU应用时,单片机的存储空间非常有限,为了节约空间会想尽办法压缩程序,按键程序就是其中之一。下面应该是最简单的按键判断程序。
U8 KEY_FLAG;
void KEY_READ()
{
    KEY_FLAG+=KEY_FLAG;
   if(!KEY)
  {
        KEY_FLAG+=1;
  }
  1、按下有效
   if( KEY_FLAG==0x7f)
   {
        //按键处理程序
   }
2、放开有效
     if( KEY_FLAG==0x80)
   {
        //按键处理程序
   }
3、长按有效
       if( KEY_FLAG==0xFF)
   {
        if(++KEY_TIMER>250)
      {
            KEY_TIMER=250;
        }
      if(KEY_TIMER==200)
     {
        
        //按键处理程序
      }
        
   }
}

程序包含了短按,长按等操作,占用空间也非常小,有兴趣的朋友可以试试。

评分

1

查看全部评分

     
发表于 2018-4-4 13:52:31 | 显示全部楼层
不灵敏吧?
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2018-4-4 13:55:21 | 显示全部楼层

可以根据实际情况调整。
回复 支持 反对

使用道具 举报

     
发表于 2018-4-4 14:01:07 | 显示全部楼层
楼主最好给每行都加个注释,这样小白也能看明白了。
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2018-4-4 14:08:34 | 显示全部楼层
KEY 是按键检测的端口,KEY_FLAG  是寄存器,当没有按键时KEY_FLAG中的值为0,有按键按下时KEY_FLAG就会有变化。程序中忘了按键释放后的清0操作。
回复 支持 反对

使用道具 举报

     
发表于 2018-4-5 14:51:05 | 显示全部楼层
防抖部分怎么样?
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2018-4-6 08:08:42 | 显示全部楼层
zystbbs 发表于 2018-4-5 14:51
防抖部分怎么样?

是带有防抖的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2025-4-30 12:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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