关于单片机按键问题性能提升总结

时间:2021-05-19

最近看了一本书《8051单片机创新教程》,这本书比大学课本写得好,在大学的课本中,我们常见的按键扫描程序如下:

unsinged char KeyScan(void){ unsigned char KeyValue=0; if(KEY_IO != 0xFF) //检测到有按键按下 { DelayNms(20); //延时 20 毫秒(严重影响单片机的运行效率) if(KEY_IO != 0xFF)//确认按键按下 { switch(KEY_IO) { case 0xFE: KeyValue=1;break; case 0xFD: KeyValue=2;break; default : KeyValue=0;break; } } } return KeyValue;}

在现实中,论坛上看到以下代码,我们不妨这样,没有用延时,运行效率大大提高!单片机实时性能显著提高!

//读取按键uchar read_key(){ static int Key_on_off = 0 ;//按键自锁变量 uchar num , temp ; num = P2 ; num &= 0xf0 ; //将低四位清0 if(num != 0xf0) { if(Key_on_off == 0) { Key_on_off = 1 ; switch(num) { //返回按键的编码 case 0xe0 : temp = 1 ; break ; case 0xd0 : temp = 2 ; break ; case 0xb0 : temp = 3 ; break ; case 0x70 : temp = 4 ; break ; } } } else Key_on_off = 0 ; return temp ;}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章