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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8735|回復(fù): 7
收起左側(cè)

51單片機獨立式鍵盤的按鍵一鍵多功能程序

  [復(fù)制鏈接]
ID:318620 發(fā)表于 2018-5-24 18:05 | 顯示全部樓層 |閱讀模式
按K5按鍵 P0口LED等會變化 每按一次 變化一次

單片機源程序如下:
  1. //獨立式鍵盤的按鍵功能擴展:"以一當(dāng)四"
  2. #include<reg52.h>        //  包含51單片機寄存器定義的頭文件
  3. unsigned char ID;    //儲存按鍵ID
  4. sbit S1=P1^4;          //位定義S1為P1.4

  5. /**************************************************************
  6. 函數(shù)功能:延時子程序
  7. **************************************************************/
  8. void delay(void)    //因為僅對一個按鍵掃描,所以延時時間較長約200ms
  9. {
  10.   unsigned char i,j;
  11.   for(i=0;i<200;i++)
  12.    for(j=0;j<100;j++)
  13.            ;
  14. }


  15. /**************************************************************
  16. 函數(shù)功能:主函數(shù)
  17. **************************************************************/
  18. void main(void)
  19. {
  20.    TMOD=0x02;     //使用定時器T0的模式2
  21.           EA=1;          //開總中斷
  22.         ET0=1;         //定時器T0中斷允許
  23.         TR0=1;         //定時器T0開始運行
  24.         TH0=256-200;   //定時器T0賦初值,每200微妙來1次中斷請求
  25.         TL0=256-200;

  26.   ID=0;
  27.    while(1)
  28.           {
  29.                   switch(ID)
  30.             {
  31.               case 0: P0=0xfe;
  32.                       break;
  33.                                   case 1: P0=0xfd;
  34.                       break;
  35.                                   case 2: P0=0xfb;
  36.                       break;
  37.                                   case 3: P0=0xf7;
  38.                       break;            
  39.             }
  40.      }
  41.    }
  42. /**************************************************************
  43. 函數(shù)功能:定時器T0的中斷服務(wù)子程序,進(jìn)行鍵盤掃描
  44. **************************************************************/
  45. void intersev(void) interrupt 1 using 1
  46. {
  47.   TR0=0;  //關(guān)閉定時器T0
  48.   P1=0xff;
  49.   if(S1==0)       //如果是按鍵S1按下
  50.     {
  51.            delay();       //延時20ms,軟件消抖
  52.             if(S1==0)       //如果是按鍵S1按下
  53.                    ID=ID+1;
  54.                    while(!S1);
  55.           }   
  56.         if(ID==4)
  57.            ID=0;       

  58.           TR0=1;               //啟動定時器T0

  59. }
復(fù)制代碼

所有資料51hei提供下載:
獨立式鍵盤的按鍵一鍵多功能程序.rar (10.41 KB, 下載次數(shù): 63)


評分

參與人數(shù) 1黑幣 +5 收起 理由
舒克和貝塔 + 5

查看全部評分

回復(fù)

使用道具 舉報

ID:337051 發(fā)表于 2018-5-24 19:22 | 顯示全部樓層
謝謝分享
回復(fù)

使用道具 舉報

ID:337808 發(fā)表于 2018-5-25 21:05 來自觸屏版 | 顯示全部樓層
使用delay()函數(shù)以后就很被動了
回復(fù)

使用道具 舉報

無效樓層,該帖已經(jīng)被刪除
ID:67344 發(fā)表于 2018-7-14 20:16 | 顯示全部樓層
謝謝分享
回復(fù)

使用道具 舉報

ID:250337 發(fā)表于 2018-7-14 21:57 | 顯示全部樓層
感覺沒有必要使用定時器,普通鍵盤掃描函數(shù)就可以搞定吧
回復(fù)

使用道具 舉報

ID:441403 發(fā)表于 2019-6-21 10:51 | 顯示全部樓層
沒大用處 不能任意跳 就是沒用的
回復(fù)

使用道具 舉報

ID:66287 發(fā)表于 2019-6-24 15:01 | 顯示全部樓層
樓主真是高手,中斷里面用 delay(),再加上while(!S1);,你這程序還能干其他活?
回復(fù)

使用道具 舉報

ID:718536 發(fā)表于 2020-4-4 21:48 | 顯示全部樓層
bhjyqjs 發(fā)表于 2019-6-24 15:01
樓主真是高手,中斷里面用 delay(),再加上while(!S1);,你這程序還能干其他活?

while(!S1);這個等待按鍵彈起的值吧?收到彈起值之后跳出這個循環(huán)等待......我是新手,不知道這樣理解對不對。而且因為這個程序功能單一,這樣操作感覺并沒有占用太多資源....理解得不對,萬望高手斧正。
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久久婷婷天堂 | 欧美国产日韩精品 | 国产视频第一页 | 一区二区欧美在线 | 国产综合精品 | 中文字幕97 | 亚洲精彩免费视频 | 日韩中文字幕一区二区 | 国产一二三区精品视频 | av激情在线| 日韩国产欧美 | 天天看天天操 | 欧美精品一区二区免费 | 亚洲最新在线视频 | 欧美久久久久久久久中文字幕 | 午夜爽爽爽男女免费观看 | 日本一区二区不卡视频 | 亚洲一页 | 国产综合视频 | 成人av网页| 久久国产精品首页 | 蜜臀网 | 男人天堂网址 | 亚洲国产成人av好男人在线观看 | 国产精品视频久久 | 九七午夜剧场福利写真 | 国产成年人视频 | 久久久精彩视频 | 久久综合狠狠综合久久 | xx性欧美肥妇精品久久久久久 | 欧美日韩免费在线 | 国内自拍视频在线观看 | av激情在线 | 天堂中文字幕av | 国产成人在线一区 | 91精品国产乱码久久久久久久久 | 欧美性受| 午夜久久久久久久久久一区二区 | 看a网站| 日韩成人免费中文字幕 | 麻豆国产一区二区三区四区 |