🎊专栏【51单片机】
🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。
🎆音乐分享【Love Story】
🥰大一同学小吉,欢迎并且感谢大家指出我的问题🥰
目录
🍔原理
🍔注意管脚的连接
🍔现象
🍔外部中断0和外部中断1的区别
🍔代码
⭐外部中断0
⭐外部中断1
🍔interrupt 后面的数字的意义
使用中断,可以控制LED灯闪烁
🍔原理
主程序中要有下面的代码
EA=1; //打开总中断开关
EXO=1; //设置外部中断0
ITO=0(或ITO=1) //设置外部中断的触发方式
⭐(下降沿,触发后,就进入中断函数)
中断服务函数
void int0 () interrupt 0
{
write your code
}
🍔注意管脚的连接
如果是外部中断0,必须连P3^2
如果是外部中断1,必须连P3^3
🍔现象
二者的现象是一样的
外部中断
🍔外部中断0和外部中断1的区别
外部中断0的优先级比外部中断1高。当两个中断同时发生时,外部中断0的中断服务程序会先被执行
🍔代码
⭐外部中断0
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
typedef unsigned int u16; //对数据类型进行声明定义
typedef unsigned char u8;
sbit k3=P3^2; //定义按键K3
sbit led=P2^0; //定义P20口是led
void delay(u16 i)
{
while(i--);
}
void Int0Init()
{
//设置INT0
IT0=1;//外部中断0下降沿触发
EX0=1;//打开外部中断0
EA=1;//打开总中断
}
void main()
{
Int0Init(); // 设置外部中断0
while(1);
}
void Int0() interrupt 0 //外部中断0的中断函数
{
delay(1000); //延时消抖
if(k3==0)
{
led=~led;
}
}
⭐外部中断1
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
typedef unsigned int u16; //对数据类型进行声明定义
typedef unsigned char u8;
sbit k4=P3^3; //定义按键K4
sbit led=P2^0; //定义P20口是led
void delay(u16 i)
{
while(i--);
}
void Int1Init()
{
//设置INT1
IT1=1;//跳变沿出发方式(下降沿)
EX1=1;//打开INT1的中断允许。
EA=1;//打开总中断
}
void main()
{
Int1Init(); // 设置外部中断1
while(1);
}
void Int1() interrupt 2 //外部中断1的中断函数
{
delay(1000); //延时消抖
if(k4==0)
{
led=~led;
}
}
🍔interrupt 后面的数字的意义
interrupt加数字表示各种中断服务程序的编号,具体编号与对应的中断源有关。
interrupt 0 表示外部中断 0 中断服务程序,
interrupt 1 表示定时器 0 中断服务程序,
interrupt 2 表示外部中断 1 中断服务程序,
interrupt 3 表示定时器 1 中断服务程序
🥰如果大家有不明白的地方,或者文章有问题,欢迎大家在评论区讨论,指正🥰