关于单片机按键问题性能提升总结
最近看了一本书《8051单片机创新教程》,这本书比大学课本写得好,在大学的课本中,我们常见的按键扫描程序如下:
unsingedcharKeyScan(void) { unsignedcharKeyValue=0; if(KEY_IO!=0xFF)//检测到有按键按下 { DelayNms(20);//延时20毫秒(严重影响单片机的运行效率) if(KEY_IO!=0xFF)//确认按键按下 { switch(KEY_IO) { case0xFE:KeyValue=1;break; case0xFD:KeyValue=2;break; default:KeyValue=0;break; } } } returnKeyValue; }
在现实中,论坛上看到以下代码,我们不妨这样,没有用延时,运行效率大大提高!单片机实时性能显著提高!
//读取按键 ucharread_key() { staticintKey_on_off=0;//按键自锁变量 ucharnum,temp; num=P2; num&=0xf0;//将低四位清0 if(num!=0xf0) { if(Key_on_off==0) { Key_on_off=1; switch(num) { //返回按键的编码 case0xe0:temp=1;break; case0xd0:temp=2;break; case0xb0:temp=3;break; case0x70:temp=4;break; } } } else Key_on_off=0; returntemp; }
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对毛票票的支持。如果你想了解更多相关内容请查看下面相关链接