INT0 对应的是P3.2 口的附加功能,可由IT0(TCON.0)选择其为低电平有效还是下降沿有效。当CPU 检测到P3.2 引脚上出现有效的中断信号时,中断标志IE0(TCON.1)置1,向CPU 申请中断。
INT0中断的初始化:
void INT0_Init()
{
EA = 1; //EA为总开关,EA为1时中断才能用
IT0 = 1; //当IT0=0 时,为电平触发方式。当IT0=1 时,为边沿触发方式(下降沿有效)
EX0 = 1; //INT0的开关
}
中断服务函数
void INT0_ZD(void) interrupt 0
{
while(1)
{
P2 = P2 << 1;
Delay100ms(10);
if(P2 == 0x00)
{
P2 = 0xff;
}
}
}
主函数
void main()
{
EX0_Init();
P2 = 0xff;
while(1)
{
INT0 = 0; //触发INT0
}
}
延时函数
void Delay100ms(unsigned int r) //@11.0592MHz
{
unsigned char i, j,k;
for(k=0;k<r;k++)
{
i = 180;
j = 73;
do
{
while (--j);
} while (--i);
}
}
LED灯由管脚P2控制。