久久久久久久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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜欧美a级理论片915影院 | 激情欧美一区二区三区 | 天天亚洲 | 91免费观看 | 日韩视频在线一区 | 嫩草伊人| 一区二区三区四区在线免费观看 | 99久9 | aa级毛片毛片免费观看久 | 综合久久99 | 成人福利在线视频 | 亚洲精品久久久一区二区三区 | 精品久久久久久久久久久 | 国产91中文 | 观看av| 免费美女网站 | 成人在线日韩 | 搞黄视频免费看 | 久久中文字幕在线 | 精品国产欧美 | 一区视频在线免费观看 | 亚洲视频一区二区三区 | 日韩精品久久一区二区三区 | 99久久久久| 一区二区三区视频在线观看 | 精品一区在线 | 成人午夜视频在线观看 | 国产成人99久久亚洲综合精品 | 一区二区三区中文字幕 | 国产精品久久久久久久免费大片 | 欧美精品综合在线 | 日韩精品四区 | 久久精品一区二区 | 国产永久免费 | 欧美日韩国产三级 | 亚洲午夜精品一区二区三区他趣 | 在线āv视频 | 99精品国产一区二区三区 | 成av在线 | a精品视频| 国产久|