在中止中参加相应的代码,能够完结计数
//P1.0口做外部中止的设置,做成多使命以便扩展
#include <msp430x41x.h>
unsigned char ISR_Symbol=0;//使命标志
void Iint_Port1(void)
{
P1DIR&=~BIT0;//设置为输入方向
P1SEL&=~BIT0;//设置为一般I/O口功用
P1IES|=BIT0;//挑选下降沿触发
P1IE|=BIT0; //翻开中止答应
P1IFG=0; //P1IES的切换可能使P1IFG置位,需铲除
}
void main(void)
{
WDTCTL=WDTPW+WDTHOLD; //封闭看门狗
Iint_Port1(); //初始化p1.0
_EINT(); //开总中止答应
while(1)
{
LPM3; //低功耗形式3,I/O口中止可将其唤醒
if((ISR_Symbol&BIT0)==BIT0)
{
ISR_Symbol&=~BIT0;//中止服务程序
}
else if((ISR_Symbol&BIT1)==BIT1)
{
ISR_Symbol&=~BIT1;//其他使命
}
}
}
interrupt[PORT1_VECTOR] void P1_ISR(void)
{
P1IFG=0;//多源中止,需靠软件铲除P1IFG
ISR_Symbol|=BIT0; //置使命标志
_BIC_SR_IRQ(LPM3_bits);//将CPU从睡觉形式唤醒
}