欢迎入群共同学习交流
时间记录:2024/7/2
一、电路原理图
51单片机包含INT0、INT1两个外部中断接口
二、知识点介绍
1.中断寄存器位介绍
(1)TCON定时控制寄存器,位0(IT0)中断INT0请求信号选择位,1表示下降沿信号、0表示低电平信号,位1(IE0)中断INT0信号标志位,1产生中断信号、0未产生中断信号,位2(IT1),位3(IE1)
(2)IE中断允许控制寄存器,位0(EX0)中断INT0中断允许位,位2(EX1),位7(EA)总中断允许位
(3)IP中断优先级控制寄存器,位0(PX0)中断INT0优先级设定位,默认为0低优先级,位2(PX1)中断INT1优先级设定位
2.中断源编号(编写中断函数时需要)
三、代码示例
#include <reg51.h>
typedef unsigned int u16; //重定义
sbit led = P1^0;
sbit key1 = P3^2;
sbit key2 = P3^3;
void delay(u16 ms) //延时函数
{
u16 i=0;
while(ms--)
{
for(i=0;i<110;i++);
}
}
void exti0Init(void);
void exti1Init(void);
int main()
{
exti0Init();
exti1Init();
while(1)
{
}
}
void exti0Init(void) //外部中断0初始化,3.2端口
{
IT0=1; //触发方式,下降沿触发/低电平触发
IE0=0; //中断标志位,有相应电平该位变为1,可不设置
EX0=1; //中断允许位
EA=1; //总中断允许位
PX0=0; //中断优先级,默认为0
}
void exti1Init(void)
{
IT1=1;
EX1=1;
EA=1;
}
void exti0(void) interrupt 0 //中断函数
{
delay(20);
if(key1==0)
{
led=0;
}
}
void exti1(void) interrupt 2
{
delay(20);
if(key2==0)
{
led=1;
}
}