【51单片机】外部中断

🎊专栏【51单片机

🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。

🎆音乐分享【Love Story

🥰大一同学小吉,欢迎并且感谢大家指出我的问题🥰

目录

🍔原理 

🍔注意管脚的连接 

🍔现象

🍔外部中断0和外部中断1的区别

🍔代码

⭐外部中断0

⭐外部中断1 

🍔interrupt 后面的数字的意义


 

使用中断,可以控制LED灯闪烁

🍔原理 

13a2f502661c4514b0853ab1100549bb.png

 

 

 

 

 

 

主程序中要有下面的代码

EA=1;                        //打开总中断开关

EXO=1;                     //设置外部中断0

ITO=0(或ITO=1)        //设置外部中断的触发方式

⭐(下降沿,触发后,就进入中断函数)

中断服务函数

void int0 () interrupt 0

{

        write your code

}

🍔注意管脚的连接 

fe5a634c491844d6a34053926a3855bc.png

如果是外部中断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加数字表示各种中断服务程序的编号,具体编号与对应的中断源有关。

26a0a637e7e54a36b667a886c656c3b6.png

🥰如果大家有不明白的地方,或者文章有问题,欢迎大家在评论区讨论,指正🥰

 

评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

在下小吉.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值