单片机按键一次处理的优化方法

来源:本站
导读:目前正在解读《单片机按键一次处理的优化方法》的相关信息,《单片机按键一次处理的优化方法》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《单片机按键一次处理的优化方法》的详细说明。
简介:在这里和大家分享单片机按键一次处理的优化方法,感兴趣的朋友可以看一下。

以前做单片机的时候总会遇到一个问题就是:在单片机的键盘输入的键盘一次处理时,原来的做法通常是通过“延时”等待键盘的松开,所以单片机就会停留在此处,其他的程序进行不下去。会出现显示不正常、无响应等错误。以前的程序如下:其中p10为P10端口做键盘输入,p10= =0为按下,调用的delay程序为voiddelay(unsigned int cnt){unsigned char i;while(cnt--!=0)for(i=100;i!=0;i--);}键盘扫描子程序如下:voidscankey()  //扫描按键{if(p10==0) //p10口按键及处理程序      {      delay(100);//键盘防抖动      if(p10==0)             {             do delay(10);//如果键盘一直按下则一直“延时”等待松开             while(p10==0);             TR0=!TR0;   //松开时相应             }      }}所以从以上程序看如果程序一直按下则单片机一直会在延时程序等待,占用了整个单片机我想通过flag可以很好的解决这个问题bitflag=0; 定义标志以下是键盘处理程序:voidscankey()  //扫描按键{if(p10==0&&flag= =0) //p10口按键及处理程序,其中flag如果为1就不用再扫描{delay(10);flag=1;delay(5);}if(p10==1&&flag= =1)  //如果p10为1,flag为1说明已经被按下并抬起{TR0=!TR0;   //松开时相应flag=0;   //标志清零,为下次按键做准备(其实为一次处理)}}程序已经仿真,没改过的之前,长按按键数码管只有最后一个亮。改过后长按按键,数码管显示正常。细细回味非常有意思,和大家分享。

提醒:《单片机按键一次处理的优化方法》最后刷新时间 2024-03-14 00:58:15,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《单片机按键一次处理的优化方法》该内容的真实性请自行鉴别。