51系列单片机提供了两个外部中断输入端口,/INT0和/INT1,分别对应P3.2和P3.3。中断方式可以选择电平中断方式或是边沿中断方式。只需在/INT0或者/INT1输入满足中断条件的逻辑信号即可实现中断。
下面的代码给出了如何处理中断,通过外部1Hz的时钟输入实现了LED的闪烁。
#include<reg52.h>
#define INTERRUPT_EXTERNAL_0 0 //外部中断0向量号
typedef unsigned int uint;
typedef unsigned char uchar;
#define LED P1
void main()
{
LED = 0xFF;
EX0 = 1;
IT0 = 1; //外部中断使能,低电平触发
EA = 1; //开全局中断
while(1)
{
PCON |= 0x01; //进入低功耗模式,节省功耗
}
}
void EX0_Interrupt() interrupt INTERRUPT_EXTERNAL_0 //外部中断0响应函数
{
LED ^= 0xFF;
}
下面的代码给出了如何处理中断,通过外部1Hz的时钟输入实现了LED的闪烁。
#include<reg52.h>
#define INTERRUPT_EXTERNAL_0 0 //外部中断0向量号
typedef unsigned int uint;
typedef unsigned char uchar;
#define LED P1
void main()
{
LED = 0xFF;
EX0 = 1;
IT0 = 1; //外部中断使能,低电平触发
EA = 1; //开全局中断
while(1)
{
PCON |= 0x01; //进入低功耗模式,节省功耗
}
}
void EX0_Interrupt() interrupt INTERRUPT_EXTERNAL_0 //外部中断0响应函数
{
LED ^= 0xFF;
}