中易网

用中断处理或者是定时扫描按键的方法,如何确保不丢键?

答案:3  悬赏:50  
解决时间 2021-02-18 06:11
按键的处理方法可能莫过于主程序扫描,中断扫描法和定时扫描法。使用中断扫描和定时扫描的方法只有有按键触发中断或是定时时间到了在进行处理按键程序相比于主程序循环扫描的方法可能占用系统资源会更少。但在使用中断扫描或是定时扫描的时候如何才能保证按键能及时的响应而又不丢键呢?比如说定时扫描,扫描到了新的按键 但这个时候主函数来不及处理,要等一会才能响应。但就在这个期间又有了新的按键 这就会导致上一次按键丢键。我能想到的办法就是开辟按键缓存,把没有响应的键都储存起来,然后等到系统逐一响应。不知道各位对这个有什么别的看法?还是说我多虑了~二姨家的朋友们多多赐教啊~
最佳答案
大概可以这么写void EXIT(){ key_read();//读键值 function = 0x01;//判断键值}void key_judge(){ switch(键值) { case 键值1: {function=0x10;break;} case 键值2: {function=0x11;break;} . . . }}void key_handing1();//按键1处理{ 处理…… function = 0;}void man(){ INIT(); while(1) { if(function == 0x01) key_judge();//键值判断 if(function == 0x10) key_handing1();//按键1处理 if(function == 0x11) key_handing2();//按键2处理 。 。 。 }}
全部回答
自己建一个状态表,有按键按下就在对应的状态表上置1,在开起超时功能防止系统不进行处理。主程序要做的就是查这个状态表,当查到对应该的状态表上有按键按下的时候,去执行相应的功能,执行完以后清状态表,这样你的按键就不会被其他按键打断,就是其他按键按下你不会清除你以前按下的按的状态,除非他执行了或者超时了。这样实现起来基本没什么问题了
只要主程序处理得当,不会丢失按键.所以不用特殊的处理.若是程序中有太多的while(delay)这样的东西就不好说了.按键总是要消抖的,小于100ms左右的延时,从程序角度看抖动就是一连串的按键.
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
老大烧烤我想知道这个在什么地方
Little Wang Jun could not go to school,__
新蜜蜡17mm手串 重35克 要450元一克 现在蜜蜡
小米手机专卖怎么去啊,有知道地址的么
安卓手机驱动安装失败!!!
保育员怎样报名
推荐几个好听的手机铃声 各种类型 如题 人们
长1、7米宽1、4米高3米的楼梯洞口怎样做楼梯
90后回忆童年的歌曲
锦园宾馆这个地址在什么地方,我要处理点事
魔道用宇宙真理好吗
自助十元盒饭,一人连来三天,一吃四十分钟能
华美日化这个地址在什么地方,我要处理点事
o/oo数学式表示千分之?还是万分之五
遇到老虎主动出击,吓唬老虎,有没有生还可能
推荐资讯
唯一 解封Q-Q空间/Q-Q飞车/Q-Q游戏&#
工商银行助学贷款是否还清问题
鑫华丰快捷酒店我想知道这个在什么地方
长兴望江苑(西南门)这个地址在什么地方,我要
打气泵盖垫串气泡原因
京15s2t车牌是什么车
2012江苏高考3本分数线
主流前线在哪里啊,我有事要去这个地方
成都德荣生态农副产品经营部地址在什么地方,
昆山三一重机好还是吴江伟创力好?
永胜有私人卖小狗的吗
看完黑客帝国有什么感想
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?