ARM的P0.25接一个LED,引脚设置时连接EINT1功能,按钮触发中断。中断服务程序另LED快速闪烁。
#include <LPC2124.H>
#define LEDCON 0x02000000/*LED接在P0.25上*/
typedef unsigned int uint32;
void IRQ_Eint1(void) __attribute__ ((interrupt));/*声明某函数为中断服务子程序的方法*/
uint32 times = 100;/*循环次数默认为100*/
void IRQ_Eint1(void){
times = 5;
while((EXTINT&0x02)!=0){
EXTINT=0x02; //清除EINT1中断标志
}
VICVectAddr=0;
}
void delay100(void) {
unsigned volatile long i,j;
for(i=0;i<10000;i++)
for(j=0;j<times;j++)
;
if(times > 100){
times--;
}else if(times <100){
times++;
}
}
int main(void)
{
IO0DIR = LEDCON;
PINSEL0 = 0x20000000;/*引脚选中EINT1功能*/
PINSEL1 = 0x00000000;
/*以下为中断控制部分*/
VICIntSelect=0;/*全部中断设置为IRQ,若某位为1是FIQ*/
VICIntEnable=0x00008000;/*使能EINT1,EINT为第15位*/
VICVectCntl1=0x2F;/*0xF,15号中断*/
VICVectAddr1=(int)IRQ_Eint1;/*设置中断服务子程序*/
EXTINT=0x07;
while (1) {
IO0CLR = LEDCON;
delay100();
IO0SET = LEDCON;
delay100();
}
}
喜欢的可以关注微信公众号“伊斯电子编程”获取更多单片机资源