标题:
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); //设置端口为输入
KEYIES |= KEY0+KEY1; //设置下降沿中断
KEYIE |= KEY0+KEY1; //打开端口中断
}
/*****************************************************************************
系统初始化
******************************************************************************/
void InitSys()
{
InitKey();
_EINT(); //打开全局中断控制,若不需要打开,可以屏蔽本句
}
int main()
{
WDTCTL = WDTPW + WDTHOLD; //关闭看门狗
InitSys();
LPM3;
}
/*****************************************************************************
端口1中断函数
多中断中断源: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.51hei.com/bbs/)
Powered by Discuz! X3.1