【EA协会培训】入门篇——理解中断、掌握中断、熟用中断

系列目录


预热篇——

  • 软件安装与使用
  • 编程

入门篇——

  • 1、 STC8951最小系统
  • 2、 GPIO口的配置与复用
  • 3、 中断系统
  • 4、 定时器/计数器
  • 5、 串口通讯

进阶篇——

  • 5、 定时器
  • 6、 串口通讯
  • 7、 AD/DA
  • 8、 IIC协议/SPI协议

外设篇——

  • 7、 OLED12864
  • 8、 USB_TTL
  • 9、 待续… …

文章目录

  • 系列目录
  • 前言
  • 一、中断系统是什么?
    • 1.内部结构
    • 2.STC89C52中断资源
    • 3.外部中断
    • 中断寄存器的配置
  • 二、实践讲解
    • 1.点灯大师
    • 2.数码大师
    • 3.题外话——中断嵌套
  • 总结


前言

本文将带领您体验51单片机中断系统的魅力。我们将从基础开始,逐步深入了解中断的概念、原理以及如何在51单片机上使用中断实现各种功能。无论您是初学者还是有一定经验的开发者,本文都将为您提供宝贵的知识和实用的技巧。

通过学习51单片机中断系统,您将不仅能够更好地理解中断的工作原理,还能够充分发挥其在实际项目中的应用价值。中断系统可以帮助您实现任务的优先级管理外部设备的响应定时操作低功耗模式以及多任务处理等功能。掌握中断系统对于编写高效、稳定的嵌入式代码至关重要。
【EA协会培训】入门篇——理解中断、掌握中断、熟用中断_第1张图片

而51单片机的中断系统,相对于其他的高级芯片来说较为简单,方便初学者们作为一个入门的案例,因此,我们在这里要求大家掌握并学会使用51单片机的中断系统


一、中断系统是什么?

为了使CPU具有实时处理外部突发事件的能力,设置了中断系统。

当中央处理器CPU正在处理某件事情时发生紧急请求时,要求CPU暂停当前的工作,然后处理紧急情况处理完后,再回到原来中断的地方继续原来的工作,这样的过程称为中断。实现此功能的组件称为中断系统

请求CPU中断的请求源称为中断源。微机的中断系统一般允许多个中断源。当多个中断源同时向CPU请求中断时,CPU优先响应中断源请求是一个问题。通常,根据中断源的优先级,首先处理最紧急事件的中断请求源,即每个中断源都有一个优先级。CPU总是首先响应优先级最高的中断请求。


1.内部结构

关于内部结构呢,他需要一定的数电知识,在这里呢为了防止劝退,我们不多做介绍

但是!!!我们不妨看个大概,
首先最右边他说了中断查询次序,也就是我们的优先级的高低,(high–>low)那么再往左看,我们会看到有一些寄存器,如IP,XICON,IPH,他们内部还有一些抽象成开关的东西,如:EX0,EA,PT0…这个就是需要我们在编程中要配置的东西,这些寄存器我们可以看到它控制着它的下一级寄存器的功能能否实现,
也就是说,中断的配置有一定的顺序(最好是按顺序来)

在最后,最左边,我们可以看到八个大黑体英文单词,他就是我们今天的主角,也是以后的主角

【EA协会培训】入门篇——理解中断、掌握中断、熟用中断_第2张图片
请记住这个流程框图!!! 很重要,后面也会提到

2.STC89C52中断资源

根据上图我们可以总结出来:

  • 中断源个数:8个(外部中断0、定时器0中断、外部中断1、定时器1中断、串口中断、定时器2中断、外部中断2、外部中断3)
  • 中断优先级个数:4个
  • 中断号:【EA协会培训】入门篇——理解中断、掌握中断、熟用中断_第3张图片
  • 高级中断可以打断低级中断

3.外部中断

根据我们上面的总结,我们可以发现,中断资源分别有定时器中断串口中断以及外部中断这三大类;
为了防止给大家过大的负担,我们今天只学习外部中断

在单片机上的位置

【EA协会培训】入门篇——理解中断、掌握中断、熟用中断_第4张图片

配置流程如下:
【EA协会培训】入门篇——理解中断、掌握中断、熟用中断_第5张图片
首先我们要确定中断的触发行为,也就是怎样激活我们的中断
【EA协会培训】入门篇——理解中断、掌握中断、熟用中断_第6张图片

由上表我们可以看到我们在编程中将刚才的INT0(P3.2)脚设置为1,那么单片机的中断触发方式就被设置为下降沿触发(也就是检测到此引脚由高电平变为低电平时,会进入中断系统,执行中断任务);

将刚才的INT0(P3.2)脚设置为0,那么单片机的中断触发方式就被设置为低电平触发(也就是检测到此引脚处于低电平时,也就是0,会进入中断系统,执行中断任务)。

其他的中断1之类都是一样的道理。

中断寄存器的配置

【EA协会培训】入门篇——理解中断、掌握中断、熟用中断_第7张图片

这是52中所有的中断寄存器,我们要进行中断系统的配置,就要配置这些寄存器

下面我们逐个介绍他们的使用,这里我们以中断0为例,

首先请回想刚才*那个重要的流程框图! 上边是0,低电平触发;下边是1,下降沿触发
【EA协会培训】入门篇——理解中断、掌握中断、熟用中断_第8张图片

要进入中断的大门首先是经过IE寄存器,这里中断0对应IE0寄存器

【EA协会培训】入门篇——理解中断、掌握中断、熟用中断_第9张图片
【EA协会培训】入门篇——理解中断、掌握中断、熟用中断_第10张图片

【EA协会培训】入门篇——理解中断、掌握中断、熟用中断_第11张图片
由上表可以看到他提到了可 位寻址,也就是说我们可以一位一位的控制,那么我们打开我们的控制位EX0E1

	EA =1;
	EX0 = 1;

但是在上面的XICON寄存器中,我们只看到了IE2和IE3, 没有我们的IE0,我们刨根问底,发现IE0和IE1在这里
【EA协会培训】入门篇——理解中断、掌握中断、熟用中断_第12张图片
同时这个寄存器也是可以位寻址的,也就是可以单独操作

IT0=1;

不然的话,如果不能位寻址,我们还要进行二进制到十六进制的转换
在这里插入图片描述

TCON=0X01;

我们可以看到,后面还有一个寄存器,是用来更改优先级的,但是我们一般不会去更改,按照默认的优先级即可
【EA协会培训】入门篇——理解中断、掌握中断、熟用中断_第13张图片

二、实践讲解

在实际中,我们一般将按键作为中断的触发源,就好比我们平时用关机键解决手机电脑90%的卡死问题,哈哈哈,

我们可以用这个辅助我们理解中断概念,关机键打断了进入死循环的任务,执行优先级最高的关机中断任务,而关机中断任务包括,关闭大部分功能任务,进入低功耗待机模式

1.点灯大师

我们在这里只是用点灯用来检测我们的中断是否配置正确,我们在中断任务中写一个点灯任务,如果配置正确,进入到中断,并能够执行任务,我们可以通过指示灯,得到反馈

效果如下:

【EA协会培训】入门篇——理解中断、掌握中断、熟用中断_第14张图片

,在这里我用的下降沿触发,代码如下:

#include 
#define uchar unsigned char
#define uint unsigned int
sbit LED = P0^0;

void mian()
{
 	LED = 1;
	EA =1;
	EX0 = 1;
	TCON = 0x01;
	while(1);
}

void External_Interrupt_0() interrupt 0
{
 	LED = ~LED;
}

2.数码大师

这个跟点灯一个原理,也是下降沿触发,也是只有一个中断源,没有多个中断同时使用

效果如下:

【EA协会培训】入门篇——理解中断、掌握中断、熟用中断_第15张图片

代码如下:

void main()
{
 	P0 = 0xff;
	P1 = 0xff;
	P2 = 0xff;
	IE = 0x81;
	IT0 = 1;
	while(1)
	{
	 	if(Clear_Key == 0)
			Count = 0;
		Show_Count_NO_DSY();
	}
}

void EX_INT0() interrupt 0
{
 	Count ++;
}

3.题外话——中断嵌套

有时候项目的任务过于复杂,我们可能需要多重中断

打个比方,就是说平时我们在打游戏,但是一个电话可能就会打断我们的游戏界面,那么我们也有关机中断,来打断我们的游戏,而我们在关机状态下,电话这个中断是不会打扰到我们这个关机的,但是闹钟却可以让关机变成开机。可能这个举例不太严谨,但是我们可以用它来辅助我们理解。

假设我们有两个中断:中断A和中断B,中断A的优先级比中断B高。在执行中断A的过程中,如果中断B被触发,中断系统会打断中断A的执行,转而执行中断B的中断服务程序,这种情况就称为中断嵌套。

#include 

// 中断A的中断服务程序
void interruptA() interrupt 1 {
    // 处理中断A的代码
    EA = 0;     // 屏蔽其他中断
    // 触发中断B
    INT0 = 1;
    EA = 1;     // 开放其他中断
}

// 中断B的中断服务程序
void interruptB() interrupt 0 {
    // 处理中断B的代码
}

void main() {
    EA = 1;     // 允许中断
    IT0 = 1;    // 设置INT0为下降沿触发
    while(1);
}

总结

【什么是重点,什么是难点,】
51单片机中断系统是一种基于中断机制的系统,用于实现硬件设备和软件程序之间的协作。它具有以下重点和难点。

重点:
1. 中断概念:中断是一种由硬件或软件触发的事件,可打断当前正在执行的程序,并转移到中断服务程序执行相应的操作。
2. 中断优先级:不同的中断具有不同的优先级,优先级高的中断能够打断正在执行的低优先级中断或程序。
3. 中断向量表:中断向量表是一张表格,存储了每个中断对应的中断服务程序的入口地址。
4. 中断服务程序:每个中断都需要编写一个对应的中断服务程序,用于处理中断事件。
5. 中断控制器:中断控制器是一个硬件设备,用于管理和控制各个中断的优先级和触发条件。

难点:
1. 中断嵌套:当一个中断正在执行时,另一个更高优先级的中断可能被触发,需要正确处理中断嵌套的情况。
2. 中断响应时间:中断的响应时间是指从中断事件发生到中断服务程序开始执行的时间,需要优化中断响应时间以提高系统的实时性。
3. 中断同步:在多个中断同时发生时,需要合理地对中断进行同步处理,以避免竞争和冲突。

总体而言,了解51单片机中断系统的重点和难点,有助于合理地设计和实现中断相关的应用程序,并提高系统的可靠性和实时性。

你可能感兴趣的:(EA培训,单片机,嵌入式硬件)