IO中断的使用
1.寄存器
PxIE IO中断使能寄存器
PxIES 中断触发边沿选择。0上升沿,1下降沿
PxIFG 中断标志位寄存器。事件发生后被置1,响应后需要手动置0
寄存器的使用方法与day1相同,不再赘述
2.中断函数的写法
#pragma vector=PORT1_VECTOT;
//#pragma为系统编译指令;vector=后加中断向量地址的宏定义,如定时器TIMER0_A1_VECTOR;
__interrupt void PORT1(void)
//__interrupt中断服务关键字(前面是两道下划线);PORT1为函数名,可自定义
{
//用户代码
}
3.按键通过中断控制LED
根据按键S2的状态,控制绿色LED灯。每按下S2一次,LED改变一次亮灭状态。
#include
int main()
{
WDTCTL = WDTPW | WDTHOLD;
P1DIR = BIT6;
P1REN = BIT3;
P1OUT = BIT3;
P1IE = BIT3;//开P1.3中断
P1IES = BIT3;//P1.3中断触发边沿选择下降沿,0为上升沿,1为下降沿;
P1IFG &= ~BIT3;//P1.3中断标志位置0
_BIS_SR(GIE);//开总中断
while(1)
{
__no_operation(); //什么都不做
}
}
#pragma vector=PORT1_VECTOR
__interrupt void PORT1(void)
{
P1OUT ^= BIT6;
P1IFG &= ~BIT3;//中断标志位置0
}
完成GPIO初始化后,务必要使用_BIS_SR(GIE)指令来开总中断,否则不会相应中断请求。
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』