![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
C51单片机键值重复读取
C51单片机键值重复读取程序写进去之后,按下按键单片机偶尔会重复读取多次键值,请问这个需要怎么改进?...
C51单片机键值重复读取程序写进去之后,按下按键单片机偶尔会重复读取多次键值,请问这个需要怎么改进?
展开
展开全部
你这程序这么写,在调用时肯定会重复读取一个键值的。
改进方法:在没有按键时,读取的键值应该是多少,知道吗,或者能计算出来吗?用xx表示。
主程序要用一个变量,假设叫keyx,保存原键值的,初始值就是那个未按键的值keyx=xx。
好了,在主程序调用时,判断键值,是未按键:keyx=xx,就不处理。继续调用。
如果有按键,按键值=keyx?不等,说明是新按键了,keyx=新键值。
这时会出现重复读取的现象了,但是:按键值=keyx了,就不处理了。
这样有按键,只处理一次。
当松开按键,读取的是按键值xx,keyx=xx了。
再有新按键,按键值=keyx肯定不成立,则又有新按键,依此类推,就可以了。
改进方法:在没有按键时,读取的键值应该是多少,知道吗,或者能计算出来吗?用xx表示。
主程序要用一个变量,假设叫keyx,保存原键值的,初始值就是那个未按键的值keyx=xx。
好了,在主程序调用时,判断键值,是未按键:keyx=xx,就不处理。继续调用。
如果有按键,按键值=keyx?不等,说明是新按键了,keyx=新键值。
这时会出现重复读取的现象了,但是:按键值=keyx了,就不处理了。
这样有按键,只处理一次。
当松开按键,读取的是按键值xx,keyx=xx了。
再有新按键,按键值=keyx肯定不成立,则又有新按键,依此类推,就可以了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询