题目多功能按键设计。利用一个IO口,接一个按键,实现3.docVIP

题目多功能按键设计。利用一个IO口,接一个按键,实现3.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
题目多功能按键设计。利用一个IO口,接一个按键,实现3.doc

题目:多功能按键设计。利用一个I/O口,接一个按键,实现3功能操作:单击?+?双击?+?长按。?? ============================================================================? 用户基本操作定义:? ????1。短按操作:按键按下,按下时间1s,属于一次短按操作? ????2。长按操作:按键按下,按下时间1s,属于一次长按操作? 在正常0.5s内无按键操作为启始按键扫描条件下,扫描按键将产生以下3种按键事件:? ????1。长按事件:任何1次出现的长按操作都属于长按事件? ????2。单击事件:1次短按操作后,间隔0.5内没有短按操作? ????3。双击事件:2次短按操作间隔时间0.5s,则2次短按操作为1次双击事件,且2次短按都取消? 特别操作情况定义:? ????1。短按操作和长按操作间隔0.5s,以及,长按操作和短按操作间隔0.5s,均不产生双击事件? ????2。连续n次(n为奇数)短按操作,且间隔均0.5s,产生(n-1)/2次双击事件+1次单击事件? ????3。连续n次(n为偶数)短按操作,且间隔均0.5s,产生n/2次双击事件? 对按键操作者的建议:????? ????由于按键的多功能性质,建议操作者每次在单击/长按/双击按键事件发生后,隔0.5s后再进行下一次的按键操作。因为在特别操作情况下,程序是保证按定义进行判断和处理的,主要是怕操作者自己记不清楚导致操作失误。? 对软件设计者的要求:? ????1。应该全面进行分析,给出严格定义和判断条件,如上所示。如果自己都不清楚,你的设计出的系统就不稳定,不可靠。? ????2。在1的基础上,编写出符合要求的程序,并进行全面测试。? /*=============? 低层按键(I/0)扫描函数,即低层按键设备驱动,只返回无键、短按和长按。具体双击不在此处判断。参考本人教材的例9-1,稍微有变化。教材中为连_发。? ===============*/? #define?key_input????PIND.7????//?按键输入口? #define?N_key????0?????????????//无键? #define?S_key????1?????????????//单键? #define?D_key????2?????????????//双键? #define?L_key????3?????????????//长键? #define?key_state_0?0? #define?key_state_1?1? #define?key_state_2?2? unsigned?char?key_driver(void)? {? ????static?unsigned?char?key_state?=?key_state_0,?key_time?=?0;? ????unsigned?char?key_press,?key_return?=?N_key;? ????key_press?=?key_input;????????????????????//?读按键I/O电平? ????switch?(key_state)? ????{? ??????case?key_state_0:??????????????????????????????//?按键初始态? ????????if?(!key_press)?key_state?=?key_state_1;??????//?键被按下,状态转换到按键消抖和确认状态? ????????break;? ??????? ??????case?key_state_1:??????????????????????//?按键消抖与确认态? ????????if?(!key_press)? ????????{? ?????????????key_time?=?0;???????????????????//?? ?????????????key_state?=?key_state_2;???//?按键仍然处于按下,消抖完成,状态转换到按下键时间的计时状态,但返回的还是无键事件? ????????}? ????????else? ?????????????key_state?=?key_state_0;???//?按键已抬起,转换到按键初始态。此处完成和实现软件消抖,其实按键的按下和释放都在此消抖的。? ????????break;? ??????? ??????case?key_state_2:? ????????if(key_press)?

文档评论(0)

tangtianbao1 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档