<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > MSP430F14-直接IO口按鍵檢處理程序

          MSP430F14-直接IO口按鍵檢處理程序

          作者: 時(shí)間:2016-11-11 來源:網(wǎng)絡(luò) 收藏
          //MSP430F14-直接IO口按鍵檢處理程序

          /*************************************************************************/

          本文引用地址:http://www.ex-cimer.com/article/201611/316575.htm

          //分別使用了采個(gè)4個(gè)按鍵接到MSP430的通用IO口,按任意一個(gè)按鍵可以使板上的對應(yīng)LED反轉(zhuǎn).
          //例程中,按鍵采用不斷查詢方式,以得到鍵值.并沒有使用到低功耗.此程序結(jié)構(gòu)比較適合
          //用在非手持設(shè)備或非電池供電的設(shè)計(jì)中.此程序結(jié)構(gòu)比較通用,級用戶可參與或套用修改.
          /*************************************************************************/
          #include <msp430x14x.h>

          //初級用戶要習(xí)慣采用宏定義,以方便的編寫和修改
          #define keyio 0xf0 //定義按鍵IO口,Px0-Px3 IO口.
          #define key_1 0xfe //定義返回鍵值1
          #define key_2 0xfd //定義返回鍵值2
          #define key_3 0xfb //定義返回鍵值3
          #define key_4 0xf7 //定義返回鍵值3

          //聲明子程序
          unsigned char key_chcek(void);
          void display_update(unsigned char dta);
          void key_process_0(void);
          void key_process_1(void);
          void key_process_2(void);
          void key_process_3(void);
          //*************************************************************************
          //將單片機(jī)初始化程序放在main()前面是方便查看單片機(jī)的初始化狀態(tài)情況.
          void MCU_int(void)
          {//默認(rèn)MCLK主時(shí)鐘頻率為DCO=~800K
          P1OUT |= BIT4+BIT5+BIT6+BIT7; //設(shè)置LED,上電為滅.電路可以查看MC430F14電路圖.
          P1DIR |= BIT4+BIT5+BIT6+BIT7; //P1.0~P1.3設(shè)置為輸出.
          //MSP430單片機(jī)IO口上電默認(rèn)方向?yàn)檩斎?所以接按鍵的IO無需再設(shè)為輸入.
          }

          //*************************************************************************
          void main (void)
          { unsigned char key_value; //定義鍵值全局變是
          WDTCTL = WDTPW + WDTHOLD; //關(guān)狗
          MCU_int(); //初始化單片機(jī)

          while(1) //主程序主循環(huán)
          {
          key_value=key_chcek(); //檢測,有鍵按下并松開,返回一個(gè)鍵值.

          switch (key_value) //對鍵值進(jìn)行處理.采switch語法結(jié)構(gòu)查詢
          {
          case key_1: key_process_0(); //調(diào)用鍵處理程序1
          break;
          case key_2: key_process_1(); //調(diào)用鍵處理程序2
          break;
          case key_3: key_process_2(); //調(diào)用鍵處理程序3
          break;
          case key_4: key_process_3(); //調(diào)用鍵處理程序4
          break;
          default: ;
          break;
          }
          // display_update(key_value); //如果有需要可以在這里加上顯示更新程序.
          key_value=0x00; //最后清除鍵值.將繼續(xù)主循環(huán).
          }
          }

          //*************************************************************************
          //按鍵檢測程序
          //返回值: 無符號字符型鍵值
          unsigned char key_chcek(void)
          {
          unsigned int i;
          unsigned char timp,active;
          active=0;
          while(!active)
          {
          while(0xff ==( P2IN | keyio)); //一直等待有鍵按下
          timp = P2IN | 0xf0; //若有鍵接下了,則讀入IO狀態(tài).
          for(i=0;i<7000;i++); //延時(shí),是為了去按鍵抖動.
          if (timp ==(P2IN | 0xf0)) //經(jīng)延時(shí)后,還是那鍵嗎?
          { active = 1; //是,則按鍵有效.
          while(0xff !=( P2IN | keyio)); //一直等待按鍵松開
          }
          else
          { //去按鍵抖動后讀入的鍵值與之前不同.則先效.
          active = 0; //再循環(huán)檢測.
          }
          }
          return timp; //返回一個(gè)鍵值.
          }

          //*************************************************************************
          void key_process_0(void) //值處理,用戶可以自己修改...
          {
          P1OUT ^= BIT4;
          }
          //*************************************************************************
          void key_process_1(void) //值處理,用戶可以自己修改...
          {
          P1OUT ^= BIT5;
          }
          //*************************************************************************
          void key_process_2(void) //值處理,用戶可以自己修改...
          {
          P1OUT ^= BIT6;
          }
          void key_process_3(void) //值處理,用戶可以自己修改...
          {
          P1OUT ^= BIT7;
          }
          //*************************************************************************
          /*void display_update(unsigned char dta)
          {
          ; //用戶可以根據(jù)需要來放置顯示程序,如LCD,LED,Digital-LED....
          //靈活應(yīng)用,
          }*/
          //*************************************************************************



          關(guān)鍵詞: MSP430F14IO口按鍵檢處

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();