与外部中断有关的寄存器
除了这些公共中断使能之外,每个端口的位都有位于 SFR 寄存器 P0IEN、P1IEN 和 P2IEN 的单独的中断使能。即使配置为外设 I/O 或通用输出的 I/O 引脚使能时都有中断产生
I/O中断方式由寄存器PICTL控制
当中断条件发生在 I/O 引脚之一上面,P0-P2 中断标志寄存器 P0IFG、P1IFG 或 P2IFG 中相应的中断状态标志将设置为 1。不管引脚是否设置了它的中断使能位,中断状态标志都被设置。当中断已经执行,中断状态标志被清除,该标志写入 0。这个标志必须在清除 CPU 端口中断标志(PxIF)之前被清除
P0IFG: P0 中断标志
P1IFG: P1 中断标志
P2IFG: P2 中断标志
初始化步骤:
1.设置寄存器IEN0、IEN1和IEN2中相应中断使能位为1
2.设置P0、P1、P2中指定引脚中断使能位为1
3.最后在寄存器PICTL中设置中断是上升沿或是下降沿触发
4.使能IEN0中EA位为1,开总中断
代码
#include "iocc2530.h"#define D3 P1_0
#define D4 P1_1#define SW1 P1_2void GPIO_init(){P1DIR |= 0X03;D3 =0;D4 =0;
}void INT_init(){IEN2 |= 0X10; //P1口的中断使能P1IEN |=0X04; //开启P1_2的中断使能PICTL |=0X02; //P1_2为下降沿触发EA=1; //开启总中断
}void main(){GPIO_init();INT_init();while(1){}
}#pragma vector = P1INT_VECTOR
__interrupt void P1_INT(void){ if(P1IFG>0){ D3 = !D3;D4 = !D4;//注意一定先清位的中断标志位,在清组标志位P1IFG = 0; //把中断状态标志位清0 P1IF = 0; //组中断标志位清0}while(SW1==0);
}
上一篇:初学者必须知道的idea设置
下一篇:C++ 模板2