標題: MSP430單片機操作中斷嵌套C語言程序 [打印本頁]

作者: xueren    時間: 2013-7-14 04:56
標題: MSP430單片機操作中斷嵌套C語言程序
MSP430單片機使用P1.5、P1.6兩個I/O口接按鍵,用于13xx 14xx 15xx 16xx系列。MCLK
  1. #include <MSP430x14x.h>

  2. //選用端口定義
  3. #define KEYDIR P1DIR
  4. #define KEYIES P1IES
  5. #define KEYIE P1IE
  6. #define KEYIN P1IN
  7. #define KEYIFG P1IFG

  8. //定義鍵盤管腳
  9. #define KEY0 BIT5
  10. #define KEY1 BIT6

  11. #define SET_GIE __bis_SR_register(GIE)  //置位全局中斷控制位
  12. /*****************************************************************************
  13. 初始化
  14. *****************************************************************************/
  15. void InitKey()
  16. {
  17.     KEYDIR &= ~(KEY0+KEY1);     //設(shè)置端口為輸入
  18.     KEYIES |= KEY0+KEY1;        //設(shè)置下降沿中斷
  19.     KEYIE |= KEY0+KEY1;         //打開端口中斷
  20. }

  21. /*****************************************************************************
  22. 系統(tǒng)初始化
  23. ******************************************************************************/
  24. void InitSys()
  25. {
  26.     InitKey();
  27.     _EINT();    //打開全局中斷控制,若不需要打開,可以屏蔽本句
  28. }


  29. int main()
  30. {
  31.     WDTCTL = WDTPW + WDTHOLD;   //關(guān)閉看門狗
  32.     InitSys();
  33.     LPM3;
  34. }

  35. /*****************************************************************************
  36. 端口1中斷函數(shù)
  37. 多中斷中斷源:P1IFG.0~P1IFG7
  38. ******************************************************************************/
  39. #pragma vector=PORT1_VECTOR
  40. __interrupt void Port1()
  41. {
  42.     static unsigned char biaozhi=0;
  43.     if((P1IFG&BIT5) ==BIT5)
  44.     {
  45.         //處理P1IN.5中斷      
  46.         SET_GIE;
  47.         P1IFG &= ~BIT5;     //清除中斷標志
  48.         biaozhi=1;     
  49.         while(biaozhi==1);
  50.     }
  51.     else if((P1IFG&BIT6) ==BIT6)
  52.     {
  53.         //處理P1IN.6中斷
  54.         P1IFG &= ~BIT6;     //清除中斷標志
  55.         biaozhi=0;     
  56.     }
  57.     else
  58.     {
  59.         P1IFG =0;
  60.     }

  61.     LPM3_EXIT;  //退出中斷后,退出低功耗模式。若退出中斷后希望保留低功耗模式,需
  62.                     //將本句屏蔽
  63. }
復制代碼
CO   ACLK :32.768K





歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1