久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4705|回復: 0
收起左側

單片機按鍵一次處理的優化方法

[復制鏈接]
ID:102668 發表于 2016-1-16 02:27 | 顯示全部樓層 |閱讀模式
                        以前做單片機的時候總會遇到一個問題就是:在單片機的鍵盤輸入的鍵盤一次處理時,原來的做法通常是通過“延時”等待鍵盤的松開,所以單片機就會停留在此處,其他的程序進行不下去。會出現顯示不正常、無響應等錯誤。
以前的程序如下:
其中p10P10端口做鍵盤輸入,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)  //如果p101flag1說明已經被按下并抬起
{
TR0=!TR0;   //松開時相應
flag=0;   //標志清零,為下次按鍵做準備(其實為一次處理)
}
}
程序已經仿真,沒改過的之前,長按按鍵數碼管只有最后一個亮。
改過后長按按鍵,數碼管顯示正常。
細細回味非常有意思,和大家分享。


回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 99综合| 日本一区二区三区精品视频 | 欧美性网站 | 国产精品完整版 | 欧美日韩精品一区二区天天拍 | 欧美一区二区三区在线观看 | 四虎免费视频 | 亚洲一区二区三区免费在线 | 欧美精品久久久 | 中文字幕精品一区二区三区精品 | 欧美日韩成人影院 | a免费在线 | 国产一区二区在线免费 | www97影院| 琪琪午夜伦伦电影福利片 | 成年人精品视频在线观看 | 亚洲综合色自拍一区 | 精品国产一区二区三区久久久蜜月 | 中文一区| 欧美日韩视频 | 国产视频2021 | 久久久久久国产精品免费免费男同 | www.国产| 日韩欧美在线一区二区 | 福利视频一区 | 久久久久久九九九九九九 | 日韩国产欧美视频 | 免费看黄色国产 | 高清免费在线 | 亚洲欧美综合精品久久成人 | 午夜私人影院在线观看 | 亚洲福利一区二区 | 黄色欧美在线 | www.嫩草| 久久精品国产一区二区三区不卡 | 草久久久| 亚洲人成人一区二区在线观看 | 羞羞色网站 | 精品国产乱码久久久久久蜜臀 | av在线播放网 | 欧美区在线|