第二章 中断
中断边缘选择寄存器PxIES
Bit = 0 上升沿触发
Bit = 1 下降沿触发
注意:当向PxIES写入时,当前的PxIN状态将会影响中断触发
PxIES | PxIN | PxIFG |
---|---|---|
0→1 | 0 | 触发 |
0→1 | 1 | 不触发 |
1→0 | 0 | 不触发 |
1→0 | 1 | 触发 |
中断使能寄存器PxIE
BIT = 0 中断不使能
BIT = 1 中断使能
中断标志寄存器PxIFG
BIT = 0 中断未发生
BIT = 1 中断已发生
注意:要使用中断,首先添加头文件#include "msp430.h"
然后_EINT();
打开中断总开关
以下为P1.1开启中断初始化语句:
P1IE |= BIT1; //中断使能
P1IES |= BIT1; //选择下降沿触发
P1IFG &= ~BIT1; //清除中断标志位
P1REN |= BIT1; //设置p1.1为上拉电阻使能
P1OUT |= BIT1; //将P1.1输出拉高
以下为中断服务子程序示例,注意要手动清除中断标志位:
#pragma vector = PORT1_VECTOR
__interrupt void P1_IRQ(void)
{
delay(255); //按键消抖,延时程序自写
if(P1IFG&0x02) //判断中断来源
{
P4OUT^=BIT7; // 翻转输出
P1IFG &= ~BIT1; //清除中断标志位
}
}