欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機按鍵一次處理的優化方法
[打印本頁]
作者:
51hei社區
時間:
2016-1-16 02:27
標題:
單片機按鍵一次處理的優化方法
以前做單片機的時候總會遇到一個問題就是:在單片機的鍵盤輸入的鍵盤一次處理時,原來的做法通常是通過“延時”等待鍵盤的松開,所以單片機就會停留在此處,其他的程序進行不下去。會出現顯示不正常、無響應等錯誤。
以前的程序如下:
其中
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; //標志清零,為下次按鍵做準備(其實為一次處理)
}
}
程序已經仿真,沒改過的之前,長按按鍵數碼管只有最后一個亮。
改過后長按按鍵,數碼管顯示正常。
細細回味非常有意思,和大家分享。
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1