关于单片机按键问题性能提升总结
最近看了一本书《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;
}
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对毛票票的支持。如果你想了解更多相关内容请查看下面相关链接