设置一个P0口中断,操作的寄存器如下,可以做参考,这是我一个工程拷贝出来的,P0_1中断
需要操作下面几个寄存器,对应寄存器怎么设置请参考另外一个博客:
http://blog.youkuaiyun.com/a791404623/article/details/78010485
P0IEN |= 0x2; // P0.1 设置为中断方式 1:中断使能
P0_1 = 1;
PICTL |= 0x1; //下降沿触发
IEN1 |= 0x20; //允许P0口中断;
P0IFG = 0x00; //初始化中断标志位
EA = 1;
设置好了之后可以设置中断了:
协议栈下的中断定义有所不同,
#pragma vector = P0INT_VECTOR
_PRAGMA(URX0_VECTOR) __near_func __interrupt void P0_ISR(void)
{
Delay_ms(10); //延时去抖
if(KEY1 == 0){
P0IFG = 0; //清中断标志
P0IF = 0; //清中断标志
LED1 = 1; //改变LED1状态
}
}
记得要清除中断标志
中断函数的中断向量和方法定义在另外一个博客:
http://blog.youkuaiyun.com/a791404623/article/details/75577334
http://blog.youkuaiyun.com/a791404623/article/details/78004941