一:if((key_v & 0x01) == 0)语句中的(key_v & 0x01)的括号 忘记输入,导致按键移位功能没有实现
原因:由于不加括号时“==”运算符的优先级高于‘&’,if内部的条件表达式会从右到坐进行运算,导致错误。
二: key_s = 0x00;
key_s |= K2;
key_s <<= 1;
key_s |= K1;
return key_s;
想用这种方法进行8位按键的键值保存,而实际上4位以上的高位用按位移的指令后会被接下来的重复移位将高位直接丢弃,不能完成键值的准确读取。
三: 按键去抖动的应用
简单的直接读取一次按键值进行相应显示操作的可以省略去抖动,比如按键读取显示在LED灯上。但是若果有重复动作,比如按键移位或者计数器加1,就必须加上去抖动操作,防止意外的抖动干扰,导致一次按键触发多次操作的错误功能实现。
原因:由于不加括号时“==”运算符的优先级高于‘&’,if内部的条件表达式会从右到坐进行运算,导致错误。
二: key_s = 0x00;
key_s |= K2;
key_s <<= 1;
key_s |= K1;
return key_s;
想用这种方法进行8位按键的键值保存,而实际上4位以上的高位用按位移的指令后会被接下来的重复移位将高位直接丢弃,不能完成键值的准确读取。
三: 按键去抖动的应用
简单的直接读取一次按键值进行相应显示操作的可以省略去抖动,比如按键读取显示在LED灯上。但是若果有重复动作,比如按键移位或者计数器加1,就必须加上去抖动操作,防止意外的抖动干扰,导致一次按键触发多次操作的错误功能实现。