分享

MSP430 P10中断程序

 自学电子馆 2013-03-23
MSP430的P1和P2端口每个引脚都具有中断功能,有PxSEL选择引脚功能,引脚功能没有包括中断能力。
只有设置PxIE、PxIES、PxIFG这三个标志位才是对引脚中断能力配置。
如:配置PxIES然后允许中断PxIE:设置为上升下降沿都触发中断。当信号跳变的时候,PxIFG对应位被自
动置一,应该注意的是:PXIFG.0~PXIFG.7共用一个中断向量,为多源中断。当任一事件引起的中断进行
处理时,PXIFG.0~PXIFG.7不会自动复位,必须由软件来判断是对哪一个事件,并将相应的标志复
位。另外,外部中断事件的时间必须保持不低于1.5倍的MCLK时间,以保证中断请求被接受,且使
相应中断标志位置位。

/*******************************************************************************
* 文件名称:P10_Interrupt.c
*  述:工作在LPM3低功耗模式,外部按键P10触发中断
*  P40LED取反(=1亮),外部按键直接接地。
* 编译环境:IAR MSP430 V5.3
* 创建时间:2013-3-23 14:59:29
* 当前版本:V1.0 
* 编 写 人: 
*  司:
*******************************************************************************/
#include<msp430f247.h>


/*******************************************************************************
* 函数名称:void main(void)
* 功能描述:外部按键P10触发中断,P40LED取反(=1亮)
*  数:无
* 返 回 值:无
* 备    注:PxREN是设置上拉或者下拉的使能寄存器,
*  置一使能,使能后,通过PxOUT设置上拉还是下拉
*******************************************************************************/
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; //关闭看门狗
//点亮LED灯
P4OUT |= BIT0;
P4DIR |= BIT0;
//按键中断设置
P1REN |= BIT0; //设置上拉/下拉使能 =0不使能
P1OUT |= BIT0; //设置带上拉电阻
P1DIR &= ~BIT0; //中断引脚应该设置为输入
P1IES |= BIT0; //设置为下降沿触发 =0上升沿触发
P1IFG &= ~BIT0; //因为P1IES设置会使中断标志位置位,故清零
P1IE |= BIT0; //设置中断使能
_EINT(); //打开总中断
LPM3; //设置为LPM3低功耗模式,产生中断时自动激活
//为活动模式,如果在中断中没有修改低功耗模
//式,中断程序执行完成后,又进入LPM3模式
while(1);
}

/*******************************************************************************
* 函数名称:__interrupt void P1_Interrupt(void)
* 功能描述:进入中断函数,P40LED取反(=1亮)
*  数:无
* 返 回 值:无
* 备    注:无
*******************************************************************************/
#pragma vector = PORT1_VECTOR
__interrupt void P1_Interrupt(void)
{
if((P1IFG&0x01) == BIT0)//判断是不是按键P10产生的中断
//因为P1端口共用这个中断向量表
{
P1IFG &= ~BIT0; //中断标志清楚(注意)
P4OUT ^= BIT0; //LED取反
}
else 
{
P1IFG &= ~BIT0; //非P10的中断处理
}
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多