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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 5413|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

C51單片機(jī)按鍵去抖外部中斷開關(guān)機(jī)(低功耗模式)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:416501 發(fā)表于 2018-10-27 22:50 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
單片機(jī)C語言,適合于初學(xué)者。

低功耗模式的按鍵去抖開關(guān)機(jī)

單片機(jī)源程序如下:


  1. #include <reg52.h>


  2. sbit KEY4 = P3^2;


  3. unsigned char code LedChar[] =
  4. {                          //定義表格一定要使用code,這樣會(huì)做到程序存儲(chǔ)區(qū)中
  5.     0x3F,                  //表格第1步數(shù)據(jù)0b00111111
  6.     0x06,                  //表格第2步數(shù)據(jù)0b00000110
  7.     0x5B,                  //表格第3步數(shù)據(jù)0b01011011
  8.     0x4F,                  //表格第4步數(shù)據(jù)0b01001111
  9.     0x66,                  //表格第5步數(shù)據(jù)0b01100110
  10.     0x6D,                  //表格第6步數(shù)據(jù)0b01101101
  11.     0x7D,                  //表格第7步數(shù)據(jù)0b01111101
  12.     0x07,                  //表格第8步數(shù)據(jù)0b00000111
  13.     0x7F,                  //表格第9步數(shù)據(jù)0b01111111
  14.     0x6F,                  //表格第10步數(shù)據(jù)0b01101111
  15. };
  16. bit KeySta = 1;  //當(dāng)前按鍵狀態(tài)
  17. unsigned char Ke;  

  18. void main()
  19. {
  20.     bit backup = 1;  //按鍵值備份,保存前一次的掃描值
  21.     unsigned char cnt = 0;  //按鍵計(jì)數(shù),記錄按鍵按下的次數(shù)
  22.    
  23.     EA = 1;       //使能總中斷
  24.     TMOD = 0x01;  //設(shè)置T0為模式1
  25.     TH0  = 0xF8;  //為T0賦初值0xF8CD,定時(shí)2ms
  26.     TL0  = 0xCD;
  27.     ET0  = 1;     //使能T0中斷
  28.     TR0  = 1;     //啟動(dòng)T0
  29.     P0 = LedChar[cnt];   //顯示按鍵次數(shù)初值
  30.        
  31.     while (1)
  32.     {
  33.         if (KeySta != backup)  //當(dāng)前值與前次值不相等說明此時(shí)按鍵有動(dòng)作
  34.         {
  35.             if (backup == 0)   //如果前次值為0,則說明當(dāng)前是彈起動(dòng)作
  36.             {
  37.                 cnt++;
  38.                                         P0=0;
  39.                                        
  40.                                         if(Ke==0)
  41.                                         {
  42.                                         IT0 = 1;                 //外部中斷0為下降沿觸發(fā)
  43.                                         EX0 = 1;           //使能總中斷
  44.                                         EA = 1;
  45.                                         PCON=0x02;
  46.                                         }
  47.                                         Ke++;
  48.                                         if(Ke==2) Ke=0;
  49.                                 //        else if(Ke!=1) Ke=0;
  50.                 if (cnt >= 10)
  51.                 {              //只用1個(gè)數(shù)碼管顯示,所以加到10就清零重新開始
  52.                     cnt = 0;
  53.                                
  54.                 }
  55.                 P0 = LedChar[cnt];  //計(jì)數(shù)值顯示到數(shù)碼管上
  56.             }
  57.             backup = KeySta;   //更新備份為當(dāng)前值,以備進(jìn)行下次比較
  58.         }
  59.     }
  60. }
  61. /* T0中斷服務(wù)函數(shù),用于按鍵狀態(tài)的掃描并消抖 */
  62. void InterruptTimer0() interrupt 1
  63. {
  64.     static unsigned char keybuf = 0xFF;  //掃描緩沖區(qū),保存一段時(shí)間內(nèi)的掃描值
  65.    
  66.     TH0 = 0xF8;  //重新加載初值
  67.     TL0 = 0xCD;
  68.     keybuf = (keybuf<<1) | KEY4;  //緩沖區(qū)左移一位,并將當(dāng)前掃描值移入最低位
  69.     if (keybuf == 0x00)
  70.     {   //連續(xù)8次掃描值都為0,即16ms內(nèi)都只檢測(cè)到按下狀態(tài)時(shí),可認(rèn)為按鍵已按下
  71.         KeySta = 0;
  72.     }
  73.     else if (keybuf == 0xFF)
  74.     {   //連續(xù)8次掃描值都為1,即16ms內(nèi)都只檢測(cè)到彈起狀態(tài)時(shí),可認(rèn)為按鍵已彈起
  75.         KeySta = 1;
  76.     }
  77.     else
  78.     {}  //其它情況則說明按鍵狀態(tài)尚未穩(wěn)定,則不對(duì)KeySta變量值進(jìn)行更新
  79. }
  80. void int0() interrupt 0
  81. {
  82. PCON=0;//喚醒單片機(jī)

  83. }
復(fù)制代碼

所有資料51hei提供下載:
按鍵去抖開關(guān)機(jī).rar (27.78 KB, 下載次數(shù): 43)


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1 發(fā)表于 2018-10-31 17:03 | 只看該作者
好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報(bào)

板凳
ID:711438 發(fā)表于 2020-3-24 22:48 | 只看該作者
有電路圖嗎?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕91 | 欧美日韩电影一区二区 | 欧美一区二区三区精品免费 | 亚洲成人精品在线 | 91久久精品一区二区二区 | 久久com| 欧美精品国产精品 | 日韩乱码av | 亚洲最大的成人网 | 久久国产精品一区二区 | 欧美成人免费在线视频 | 99精品在线观看 | 久久久久亚洲视频 | 精品一区二区三区在线视频 | 91精品国产91久久久久青草 | 丝袜美腿一区 | 欧美黑人国产人伦爽爽爽 | 91成人精品 | 蜜桃传媒一区二区 | 91免费入口 | 欧美久久久久久久 | 久久久久久综合 | 国产精品美女一区二区 | 欧美一级做性受免费大片免费 | 欧美va大片| 日屁视频 | 网色| 成人在线精品 | 97成人精品| 日批的视频| 国产精品亚洲综合 | 一起操网站 | 久久精品一 | 中文字幕亚洲视频 | 毛片免费观看视频 | 日韩视频―中文字幕 | 国产xxx在线观看 | 欧美精品导航 | 亚洲综合无码一区二区 | 91久久婷婷 | 国产精品一区二 |