📄 p0中断.c
字号:
//=========================================//
//BEIJING LSD MCU TECH CO.,LTD
//P1.0口做外部中断的设置,做成多任务以便扩展
// MSP430FXXX
// -----------------
// /|\| XIN|- /|\
// | | | |
// --|RST XOUT|- |
// | | 1MΩ
// | P1.0|<--|
// 0.1uF
// |
// \|/
#include <msp430x41x.h>
unsigned char ISR_Symbol=0; //任务标志
void Iint_Port1(void); //函数声明
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从睡眠模式唤醒
}
void Iint_Port1(void)
{ P1DIR&=~BIT0; //设置为输入方向
P1SEL&=~BIT0; //设置为普通I/O口功能
P1IES|=BIT0; //选择下降沿触发
P1IE|=BIT0; //打开中断允许
P1IFG=0; //P1IES的切换可能使P1IFG置位,需清除
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -