MSP430程序---P1.0口外部中斷
//P1.0口做外部中斷的設(shè)置,做成多任務(wù)以便擴(kuò)展
本文引用地址:http://m.butianyuan.cn/article/201611/316465.htm#include <msp430x41x.h>
unsigned char ISR_Symbol=0;//任務(wù)標(biāo)志
void Iint_Port1(void)
{
P1DIR&=~BIT0;//設(shè)置為輸入方向
P1SEL&=~BIT0;//設(shè)置為普通I/O口功能
P1IES|=BIT0;//選擇下降沿觸發(fā)
P1IE|=BIT0; //打開中斷允許
P1IFG=0; //P1IES的切換可能使P1IFG置位,需清除
}
void main(void)
{
WDTCTL=WDTPW+WDTHOLD; //關(guān)閉看門狗
Iint_Port1(); //初始化p1.0
_EINT(); //開總中斷允許
while(1)
{
LPM3; //低功耗模式3,I/O口中斷可將其喚醒
if((ISR_Symbol&BIT0)==BIT0)
{
ISR_Symbol&=~BIT0;//中斷服務(wù)程序
}
else if((ISR_Symbol&BIT1)==BIT1)
{
ISR_Symbol&=~BIT1;//其他任務(wù)
}
}
}
interrupt[PORT1_VECTOR] void P1_ISR(void)
{
P1IFG=0;//多源中斷,需靠軟件清除P1IFG
ISR_Symbol|=BIT0; //置任務(wù)標(biāo)志
_BIC_SR_IRQ(LPM3_bits);//將CPU從睡眠模式喚醒
}
評論