中断使能主要有四个步骤:
(1)使.EA 位为 1,开中断。
(2)设置寄存器 IEN0、IEN1和IEN2中相应中断使能位为1。
(3)如果需要,则设置P0、P1、P2各引脚对应的各中断使能位为1。
(4)最后在寄存器 PICTL中设置中断是上升沿还是下降沿触发。
首先对需要控制的led灯进行初始化
P0SEL&=~0x02;//对P0_1进行功能选择
P0DIR|=0x02;//配置led2输出
然后对需要按键配置的按键进行中断初始化
EA=1;//总中断开启
IEN2|=0x10;//对应引脚中断使能,P0脚用IEN1,P1脚用IEN2
P1IEN|=0x02;//配置P1_1为中断
PICTL|=0x02;//下降沿触发
然后完整带码如下:
#include "iocc2530.h"
void delay()
{
int i,j;
for(i=0;i<1000;i++)
{
for(j=0;j<30;j++);
}
}
void Init()
{
P0SEL&=~0x02;
P0DIR|=0x02;//配置led2输出
EA=1;//总中断开启
IEN2|=0x10;//对应引脚中断使能,P0脚用IEN1,P1脚用IEN2
P1IEN|=0x02;//配置P1_1为中断
PICTL|=0x02;//下降沿触发
}
#pragma vector=P1INT_VECTOR
__interrupt void fun(void)
{
if(P1IFG&0x02)
{
delay();
if(P1_1==0)
{
P0_1=~P0_1;
}
}
P1IFG=0;
IEN2|=0x00;
}
void main()
{
Init();
while(1)
{
}
}
部分原理图如下: