|
MSP430單片機使用P1.5、P1.6兩個I/O口接按鍵,用于13xx 14xx 15xx 16xx系列。MCLK- #include <MSP430x14x.h>
-
- //選用端口定義
- #define KEYDIR P1DIR
- #define KEYIES P1IES
- #define KEYIE P1IE
- #define KEYIN P1IN
- #define KEYIFG P1IFG
-
- //定義鍵盤管腳
- #define KEY0 BIT5
- #define KEY1 BIT6
-
- #define SET_GIE __bis_SR_register(GIE) //置位全局中斷控制位
- /*****************************************************************************
- 初始化
- *****************************************************************************/
- void InitKey()
- {
- KEYDIR &= ~(KEY0+KEY1); //設(shè)置端口為輸入
- KEYIES |= KEY0+KEY1; //設(shè)置下降沿中斷
- KEYIE |= KEY0+KEY1; //打開端口中斷
- }
-
- /*****************************************************************************
- 系統(tǒng)初始化
- ******************************************************************************/
- void InitSys()
- {
- InitKey();
- _EINT(); //打開全局中斷控制,若不需要打開,可以屏蔽本句
- }
-
-
- int main()
- {
- WDTCTL = WDTPW + WDTHOLD; //關(guān)閉看門狗
- InitSys();
- LPM3;
- }
-
- /*****************************************************************************
- 端口1中斷函數(shù)
- 多中斷中斷源:P1IFG.0~P1IFG7
- ******************************************************************************/
- #pragma vector=PORT1_VECTOR
- __interrupt void Port1()
- {
- static unsigned char biaozhi=0;
- if((P1IFG&BIT5) ==BIT5)
- {
- //處理P1IN.5中斷
- SET_GIE;
- P1IFG &= ~BIT5; //清除中斷標志
- biaozhi=1;
- while(biaozhi==1);
- }
- else if((P1IFG&BIT6) ==BIT6)
- {
- //處理P1IN.6中斷
- P1IFG &= ~BIT6; //清除中斷標志
- biaozhi=0;
- }
- else
- {
- P1IFG =0;
- }
-
- LPM3_EXIT; //退出中斷后,退出低功耗模式。若退出中斷后希望保留低功耗模式,需
- //將本句屏蔽
- }
復(fù)制代碼 CO ACLK :32.768K
|
|