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

QQ登錄

只需一步,快速開(kāi)始

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

一個(gè)單片機(jī)按鍵掃描函數(shù)分享

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:221467 發(fā)表于 2017-10-30 21:07 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
單片機(jī)源程序如下:
  1. #include "reg51.h"               //頭文件

  2. #define u8 unsigned char         //宏定義
  3. #define u16 unsiged int

  4. u8 key_data=0;                   //定義全局標(biāo)量

  5. /*
  6.    按鍵掃描函數(shù):
  7.    輸入:
  8.    輸出:按鍵值
  9. */

  10. void key_san(void)
  11. {
  12.   static bit key_bit = 0;                //按鍵標(biāo)志

  13.   static  u8 key_num = 0;             //時(shí)間標(biāo)志

  14.   static  u8 key_temp;

  15.   if((P2 !=  0xFF) && (!key_bit)){ //判斷按鍵是否按下?

  16.      key_num +=1;                        //時(shí)間累加(每次自動(dòng)累加1ms)

  17.      if(key_num == 10){                 //當(dāng)累加到10ms

  18.         key_temp = P2;                    //讀取當(dāng)前獨(dú)立按鍵接口的值

  19.         key_bit =1;                            //將標(biāo)志位置1
  20.     }
  21.   }
  22.   if((P2 == 0xFF) && (key_bit)){      //判斷按鍵是否放開(kāi)?

  23.       key_num -= 1;                         //時(shí)間累加(每次自動(dòng)減1ms)

  24.       if(key_num == 0){                   //當(dāng)累減到0ms

  25.           key_data = key_temp;          //將值甩到全局標(biāo)量

  26.           key_bit = 0;                         //將標(biāo)志位復(fù)位0      
  27.    }
  28.   }
  29. }
復(fù)制代碼



評(píng)分

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

查看全部評(píng)分

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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表