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

標題: 單片機獨立按鍵狀態機源碼 [打印本頁]

作者: 農村人    時間: 2018-5-18 12:32
標題: 單片機獨立按鍵狀態機源碼
藍橋杯獨立按鍵狀態機單片機源程序如下:
  1. /*
  2.           例程:按鍵實驗例程
  3.                 作者:電子設計工坊
  4. */
  5. #include "reg52.h"

  6. /*獨立按鍵狀態機*/

  7. //#define key_input P3
  8. //#define key_state_0  0  //判斷是否按下
  9. //#define key_state_1  1 //判斷是否為抖動
  10. //#define key_state_2  2 //判斷是否彈起
  11. //   
  12. //char read_key(void)
  13. //{
  14. // static char key_state = 0;
  15. // char key_press, key_return = 0;
  16. // key_press = key_input&key_mask;
  17. // switch (key_state)
  18. //{        
  19. //   case key_state_0:     
  20. //   if (key_press!=key_mask) key_state = key_state_1;
  21. //   break;
  22. //         
  23. //   case key_state_1:   
  24. //   if (key_press==(key_input&key_mask))
  25. //   {
  26. //           if(key_press==0x0e) key_return = 1;  //S7
  27. //                 if(key_press==0x0d) key_return = 2;  //S6
  28. //                 if(key_press==0x0b) key_return = 3;  //S5
  29. //                 if(key_press==0x07) key_return = 4;  //S4
  30. //           key_state = key_state_2;  
  31. //   }
  32. //   else
  33. //            key_state = key_state_0;  
  34. //   break;  
  35. //   case key_state_2:
  36. //   if (key_press==0x0f) key_state = key_state_0;
  37. //   break;
  38. //}
  39. //return key_return;
  40. //}

  41. void Delay10ms()                //@11.0592MHz
  42. {
  43.         unsigned char i, j;

  44.         i = 18;
  45.         j = 235;
  46.         do
  47.         {
  48.                 while (--j);
  49.         } while (--i);
  50. }

  51. /*獨立按鍵三行*/
  52. unsigned char Trg;
  53. unsigned char Cont;
  54. #define KEYPORT P3
  55. void Key_Read( void )
  56. {
  57.     unsigned char ReadData = KEYPORT^0xff;
  58.     Trg = ReadData & (ReadData ^ Cont);      
  59.     Cont = ReadData;                                        
  60. }

  61. /*矩陣按鍵*/
  62. #define KEY P3
  63. #define key_state_0  0  //判斷是否按下
  64. #define key_state_1  1 //判斷是否為抖動
  65. #define key_state_2  2 //判斷是否彈起
  66.    
  67. char read_KBD(void)
  68. {
  69. static char key_state = 0;
  70. unsigned char key_return=0, key_press;
  71. unsigned char key1,key2;
  72.         KEY=0xf0;
  73.         key1=KEY&0xf0;
  74.         KEY=0x0f;
  75.         key2=KEY&0x0f;
  76.         key_press =key1|key2;

  77. switch (key_state)
  78. {        
  79.    case key_state_0:    //
  80.    if (key_press!=0xff) key_state = key_state_1;
  81.    break;
  82.          
  83.    case key_state_1:     
  84.    if (key_press !=0xff)
  85.    {
  86.                         if(key_press==0xde) key_return = 1;  //S15  其他鍵值大家自行推算
  87.                         if(key_press==0xdd) key_return = 2;  //S14
  88.                         key_state = key_state_2;  
  89.    }
  90.    else
  91.                         key_state = key_state_0;  
  92.    break;  
  93.    case key_state_2:
  94.    if (key_press==0xff) key_state = key_state_0;
  95.    break;
  96. }
  97. return key_return;
  98. }

  99. sbit buzzer = P0^6;
  100. void main()
  101. {
  102.         unsigned char key_val;
  103.         while(1)
  104.         {
  105.                 //矩陣鍵盤的實驗
  106.                 key_val=read_KBD();
  107.                 if(key_val==1)//S15
  108.                 {
  109.                         P2=0xa0;buzzer=1;P2=0x00;
  110.                 }
  111.                 if(key_val==2)//S14
  112.                 {
  113.                         P2=0xa0;buzzer=0;P2=0x00;
  114.                 }
  115.                
  116.                 //三行獨立按鍵的實驗               
  117. //                Key_Read();
  118. //                if(Trg & 0x08)//S4
  119. //                {
  120. //                        P2=0xa0;buzzer=1;P2=0x00;
  121. //                }
  122. //                if(Trg & 0x04)//S5
  123. //                {
  124. //                        P2=0xa0;buzzer=0;P2=0x00;
  125. //                }
  126.                
  127.                 //獨立按鍵狀態機的實驗               
  128. //                key_val=read_key();
  129. //                if(key_val==1)//S7
  130. //                {
  131. //                        P2=0xa0;buzzer=1;P2=0x00;
  132. //                }
  133. //                if(key_val==2)//S6
  134. //                {
  135. //                        P2=0xa0;buzzer=0;P2=0x00;
  136. //                }
  137.                 Delay10ms();
  138.         }
  139. }
復制代碼

所有資料51hei提供下載:
6.KEY_課后練習.rar (24.97 KB, 下載次數: 62)



作者: mick32    時間: 2018-5-26 04:07
Thanks for code listing
作者: wdliming    時間: 2018-7-23 22:27
謝謝分享!!!
作者: 初學者10086    時間: 2019-8-3 09:51
謝謝分享




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 在线看片福利 | 国产一区二区三区免费视频 | 国产中文字幕av | 久亚州在线播放 | 一区二区三区高清 | 久久男人| 在线只有精品 | 国产一区二区三区日韩 | av一级| 国产精品夜间视频香蕉 | 欧美性影院 | 国产精品久久午夜夜伦鲁鲁 | 成人在线激情 | 日本在线观看视频 | 久久久久久亚洲精品 | 亚洲午夜精品视频 | 国产视频第一页 | av一区二区三区四区 | 国产jizz女人多喷水99 | 国产精品av久久久久久久久久 | 九色一区 | 91福利网址 | 男人电影天堂 | 91精品久久久 | 热99视频 | 日韩免费一二三区 | 天天草天天 | 中文字幕免费视频 | 精品国产欧美日韩不卡在线观看 | 午夜国产羞羞视频免费网站 | 久久中文字幕一区 | 国产精品不卡视频 | 日韩国产精品一区二区三区 | 亚洲精品在线看 | 九九99精品 | 国产999精品久久久影片官网 | 99久久久无码国产精品 | 国产一级片在线观看视频 | 中文字幕一区二区三区精彩视频 | 五月激情综合网 | 在线免费观看黄色 |