msp430单片机外部中断
1、查阅msp430x2xx系列单片机说明书,了解到msp430单片机所有的P1、P2口都可以配置为中断方式,P1口所有引脚共用一个中断向量,P2口所有引脚共用一个中断向量。PxIFG记录中断触发信号,当P1/P2口某引脚触发时,置位PxIFG相应位。比如P1.0中断触发,在P1IFG的BIT0就会置位为1,其余为均为0.
2、msp430单片机引脚多具有复用功能,默认上电涛销复位后引脚配置为通用IO,如果要使用引脚中断,需要配肺泰置寄存器使能相应位,与引脚中断配置相关寄存器主要有PxIE、PxIES、PxIFG。
3、PxIE寄存器
引脚中断使能寄存器,置位该寄存器中某位,使能该引脚中断触发功能。如果复位,则禁止该引脚功能,比如置位P1IE中BIT3则使能P1.3中断触发功能。

4、PxIES寄存器
中断触发信号寄存器,用于中断触发信号的选择。复位该位则设置中断触发信号为上升沿触发;置位该位则选择中断触发信号为下降沿触发。

5、PxIFG寄存器
在设置完PxIE与PxIES寄存器之后,需清除PxIFG寄存器对应位,开启系统中断GIE就可以了。

6、中断服务程序
配置完引脚中断后,需要编写中断服务程序。与其它中断服务程序一样,设置中断向量,编写中断服务程序,需要注意的时,在中断服务程序里需要判断是那个引脚中断,并要清除中断标志位。
7、示例代码如下:
#include <msp430.h>
int main( void )
{
WDTCTL = WDTPW + WDTHOLD;
P1DIR = BIT0 + BIT6 ;
P1OUT &= ~(BIT0 + BIT6);
P1IE |= BIT3;
捧铲争 P1IES |= BIT3;
P1IFG &= ~BIT3; //P1.3 input interrupt configurate
_EINT();
while(1);
}
// P1 interrupt service
#pragma vector =PORT1_VECTOR
__interrupt void Port1_ISR(void)
{
if((P1IFG|0xf7) == 0xff)
{
P1IFG &= ~BIT3;
P1OUT ^= BIT6;
}
P1OUT |= BIT0;
}