首页 > 编程 > C++ > 正文

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

2020-05-23 13:24:31
字体:
来源:转载
供稿:网友

最近看了一本书《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 ;}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对VEVB武林网的支持。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表