【蓝桥杯练习-外部中断】

外部中断练习

内容来自B站小蜜蜂老师 yyds

一、什么是中断
通俗的来讲中断就是当我们正在执行一件事件的时候,被另外一件突发事件所打断,
紧接着去处理该突发事件 在返回接着做我们正在执行的事情。
二、51的中断系统
中断名称符号表示/中断号
外部中断0INT0 、0
定时/计数器0TF0 、1
外部中断1INT1 、2
定时/计数器1TF1 、3
串口中断RI/TI 、4
三、中断相关寄存器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、中断函数编写规则
对于每个中断函数我们都可以将其分为两个部分
1.相关配置初始化   2.中断功能执行函数

中断函数框架
void 函数名() interrupt 中断号
{

}

中断的优先级:
外部中断0 > 定时/计数器0 >外部中断1 > 定时/计数器1 >串口中断

每个中断源都对应着一个固定的入口地址,也就是中断向量,它们依次是:
    0    0x0003:  INT0
    1    0x000B:  TF0
    2    0x0013:  INT1
    3    0x001B:  TF1
    4    0x0023:  RI/TI

practise

在这里插入图片描述
在这里插入图片描述

从原理图可以看出控制外部中断0和外部中断1的两个引脚分别是P3^2 P3^3
#include "reg52.h"


//定义两个led
sbit L1 = P0^0;
sbit L8 = P0^7;

//-----------------------------简单延时函数---------------------------
void Delay(unsigned int t)
{
	unsigned int i,j;
 	for(i = 0; i< t;i++)
	{
	 	for(j =0;j< 12000;j++);
	}
}
//--------------------------------------------------------------------

//------------------------74HC138初始化--------------------------------
void Init_74HC138(unsigned char n)
{
 	switch(n)
	{
	 	case 4: P2 = P2 |0x1f; P2 = 0x80; break;
		case 5: P2 = P2 |0x1f; P2 = 0xa0; break;
		case 6: P2 = P2 |0x1f; P2 = 0xc0; break;
		case 7: P2 = P2 |0x1f; P2 = 0xe0; break;
	}

}
//----------------------------------------------------------------------



//-----------------------------外部中断0初始化函数-----------------------
void Init_INT0(void)
{
 	 EX0 = 1; //使能外部中断0
	 IT0 = 1; //下降沿触发
	 EA = 1;  //中断总开关
}
//------------------------------------------------------------------------


//---------------------------------led1功能函数---------------------------
void LED1_Work(void)
{
 	L1 = 0;
	Delay(10);
	L1 = 1;
	Delay(10);

}

//------------------------------主函数------------------------------------
void main(void)
{
	Init_INT0();
	Init_74HC138(4);
	P0 = 0xff; //关闭所有led
 	while(1)
	{
		 LED1_Work();

	}

}

//------------------------------中断服务函数------------------------------
void ServerINT0() interrupt 0
{
	L8 = 0;
	Delay(10);
	L8 = 1;
	Delay(10);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小殷学长

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

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

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

打赏作者

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

抵扣说明:

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

余额充值