標題:
MSP430單片機操作中斷嵌套C語言程序
[打印本頁]
作者:
xueren
時間:
2013-7-14 04:56
標題:
MSP430單片機操作中斷嵌套C語言程序
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; //退出中斷后,退出低功耗模式。若退出中斷后希望保留低功耗模式,需
//將本句屏蔽
}
復制代碼
CO ACLK :32.768K
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1