单片机一个按键多次击键组合判别技巧

单片机一个按键多次击键组合判别技巧

ID:20437386

大小:38.00 KB

页数:8页

时间:2018-10-09

单片机一个按键多次击键组合判别技巧_第1页
单片机一个按键多次击键组合判别技巧_第2页
单片机一个按键多次击键组合判别技巧_第3页
单片机一个按键多次击键组合判别技巧_第4页
单片机一个按键多次击键组合判别技巧_第5页
资源描述:

《单片机一个按键多次击键组合判别技巧》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、《一个按键的多次击键组合判别技巧》大话篇小匠自从上次在旧社区发表了一篇《<程序编写规范倡议书>大话篇》后,好久没有发表"高"论了.急坏了一帮MM,以为小匠退隐江湖了。(斑竹在旁问道:“MM”不是“MieMie”,而是“MaMa”吧?)论坛内外谣言四起,有人说小匠改行了,不做程序匠,改做泥水匠了;还有人说小匠上阿富汗反恐怖去了;其实非也,只因新板论坛启用后,小匠一直用不惯......(斑竹在旁笑道:是“用不来”吧?)今天,小匠再次隆重登坛献演。贴一个小程序段.....(斑竹道:我看是“蹬痰现眼”吧?)(程序匠人贴完帖子,下到后台,一边洗着手上残余的浆糊,一边哼着小曲:“

2、如果你的‘芯’是一座作坊,我愿作那不知疲倦的程序匠,……”)(一黑客悄悄贴近匠人,将一个废弃的浆糊桶扣到匠人头上......)(匠人忙问:“斑竹,谁把灯给关了?”)(众人哈哈大笑!......)一个按键的多次击键组合判别技巧有时在设计中,往往要用一个按键来输入多种信息。如:单击/双击/三击、短击/长击、还有各种组合击键方式。可以用以下程序来做。如果按键闭合时间<500MS,判断为一次短击(0);如果按键闭合时间>500MS,判断为一次长击(1);两次击键时间间隔应<700MS,如果按键释放后700MS内无键按下,则结束读键。读键完毕返回一个键号值KEY_NUM。其意义

3、如下:KEY_NUM意义00000000无键按下过00000001无意义00000010单次短击00000011单次长击00000100短击+短击00000101短击+长击00000110长击+短击00000111长击+长击…………100000007次短击111111117次长击上表中的KEY_NUM值的规律是,从左向右看,第一个"1"后面的每一位代表一次击键;"0"代表短击,"1"代表长击。掌握该规律后,我们可将任何一个8位的二进制数"翻译"成一种击键组合。例如:01010101,代表的是:短+长+短+长+短+长。该程序最多可识别7次连续击键,共254种组合。但并非

4、每个程序中用得上。在大多数程序中,能判断双击即可以了,这时可将程序中的ZHBIT定义为2。同理,如果要判断3次按键,将ZHBIT定义为3即可。当ZHBIT=1时,程序仅能判断一次击键,包括2种组合(短击/长击);当ZHBIT=2时,程序还能判断两次击键,包括6(2+4)种组合(短击/长击/(短+短)/(短+长)/(长+短)/(长+长));以次类推,当ZHBIT=3时,程序能判断三次击键,包括14(2+4+8)种组合。ZHBIT组合种类1222+4=632+4+8=1442+4+8+16=3052+4+8+16+32=6262+4+8+16+32+64=12672+4+

5、8+16+32+64+128=254下面这段程序摘自小匠的一个智能充电器程序(MCU是EM78P458),如下:;********************************;读键子程序;出口:KEY_NUM=键号值;中间:KEY_DL=计数器;说明:/*短击:键按下时间<500MS长击:键按下时间>500MS两次按键间隔时间<700MS键号定义:KEY_NUM=00000000:无键按下KEY_NUM=00000001:无意义KEY_NUM=00000010:单次短击KEY_NUM=00000011:单次长击KEY_NUM=00000100:短击+短击KEY_N

6、UM=00000101:短击+长击KEY_NUM=00000110:长击+短击KEY_NUM=00000111:长击+长击......KEY_NUM=11111110:长击+长击+长击+长击+长击+长击+短击KEY_NUM=11111111:长击+长击+长击+长击+长击+长击+长击*/ZHBITEQU2;按键组合位(选择范围1~7);********************************READKEY:CLRKEY_NUM;清键号JKOFFREADKEYF;键未按下跳BSKEY_NUM,0;"1"->键号低位;=================READKEY

7、A:CLRKEY_DL;清计数器READKEYB:CALLDL10MSINCKEY_DLMOVA,@50SUBA,KEY_DLJBCR3,CJMPREADKEYC;计数器溢出跳JKONREADKEYB;键未释放跳BCR3,C;C=0JMPREADKEYD;=================READKEYC:WDTC;喂狗JKONREADKEYC;键未释放跳BSR3,C;C=1READKEYD:RLLCKEY_NUM;键号左移一位,C->键号低位JBCKEY_NUM,ZHBIT;按键检测未完成继续RET;=================CLRKEY_

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。