51单片机中断系统的结构和结构以及中断的使用

中断的开启与关闭、设置启用哪一个中断都是由单片机内部一些特殊功能的寄存器来决定的,就如同IO操作,也是操作IO口寄存器实现相关的功能。有的单片机的中断为8个,额外增加两个外部中断,一个定时计数器中断。下图为51单片机均有的5个中断的中断系统结构示意图:

1. 中断简介 1.1 中断的概念

中断是指CPU在工作时,中断某项当前的正常工作,以处理其他紧急情况。 处理完紧急情况后,又回到原来中断的地方,继续刚才的工作。

例如:学习时,热水器烧水,水壶发出沸腾的声音; 这时,你停止学习,立即关掉火,把热水倒回保温瓶里,然后继续回去。 学习; 这个过程是一个中断。

对于单片机来说,中断是指CPU正在处理一个事件A,另一个事件B发生,请求CPU快速处理(中断发生); CPU暂时停止当前工作(中断响应),转去处理事件B。(中断服务); CPU处理完事件B后,会回到原来的事件A(断点)继续执行。 这个过程称为中断。

产生中断的源称为中断源。 CPU中有多个中断源。 当多个中断源同时向CPU请求中断时,CPU首先响应其中一个中断源。 也就是说,每个中断源都有一个优先级,CPU总是先响应优先级较高的中断请求。

中断的打开和关闭,以及使能哪个中断,都是由单片机内部的一些特殊功能寄存器决定的。 就像IO操作一样,也对IO口寄存器进行操作来实现相关功能。

1.2 中断系统结构

在51单片机中,必须有5个基本中断源,分别是外部中断0(INT0)、外部中断1(INT1)、定时器/计数器0中断(T0)、定时器/计数器1(T1)中断和串口中断( UART),这也是我们经常使用的5个中断。 一些微控制器有 8 个中断,外加两个额外的外部中断和一个定时器/计数器中断。

这些中断源有两个中断优先级可供选择,可以实现两级中断服务程序的嵌套。 下图是51单片机中5个中断的中断系统结构示意图:

如上图所示:中断的产生与中断使能寄存器(IE)和中断优先级寄存器(IP)有关。

中断允许寄存器(IE):寄存器中的每一位对应不同的中断源。 每个位都有用户软件设置“允许”或“禁用”,相当于每个中断源的一个开关。 另外,IE的最高位是主开关。 为了允许中断源中断,IE的最高位需要=1;

中断优先级寄存器(IP):该寄存器的每一位也对应不同的中断源。 将其重置为0会将相应的中断优先级设置为最低优先级,将其设置为1将设置相应的中断优先级。 为高优先级。

所谓中断源,就是引起中断的事件;

1、(INT0):对应P3.2引脚的外部中断0,可通过(TCON.0)选择低电平有效或下降沿有效; 一个有效的中断发生,当CPU检测到P3.2引脚接收信息时,向CPU请求中断。

2、(INT1):对应P3.3引脚的外部中断0,可通过(TCON.1)选择低电平有效或下降沿有效; 当CPU检测到P3.3引脚时,产生有效中断。 当接收到信息时,向CPU请求中断。

3、T0:对应P3.4引脚; TF0(TCON.5)是片内定时器/计数器T0溢出中断标志位。 当定时器/计数器T0溢出时,置位TF0并向CPU请求中断。

4、T1:对应P3.5引脚; TF1(TCON.7)是片内定时器/计数器T0溢出中断标志位。 当定时器/计数器T1溢出时,置位TF1并向CPU请求中断。

5、RXD和TXD:对应P3.0和P3.1端口的附加功能,RI(SCON.0)或TI(SCON.1),串口中断请求标志。 当串口收到一帧串行数据时设置 RI,或者当串口发送一帧串行数据时设置 TI,并向 CPU 申请。

1.3 中断相关寄存器 1.3.1 中断使能寄存器(IE)

功能:CPU对中断系统中所有中断以及某个中断源的打开和关闭都是由中断使能寄存器IE来控制的。

其中: EA:CPU总权限、总开关位置;

ES:串口中断使能位;

ET1:定时器/计数器T1中断使能位;

EX1:外部中断1使能位;

ET0:定时器/计数器T0中断使能位;

EX0:外部中断0使能位;

1.3.2 定时器/计数器控制计数器(TCON)

功能:主要用于控制两个定时器/计数器溢出中断标志和外部中断请求标志。

TF1:定时器/计数器T1溢出中断请求标志;

TF0:定时器/计数器T0溢出中断请求标志;

IE1:外部中断1中断请求标志;

IT1:外部中断1触发方式标志位;

IE0:外部中断0中断请求标志;

IT0:外部中断0触发方式标志位;

1.3.3 中断优先级(IP)

PS:串口中断优先级控制位;

PT1:定时器/计数器T1中断优先级控制位;

PX1:外部中断1优先级控制位;

PT0:定时器/计数器T0中断优先级控制位;

PX0:外部中断0优先级控制位;

如果它们具有相同的优先级,则它们的顺序由中断系统的硬件决定。

串口控制寄存器(SCON)将在后面的博客中介绍;

1.4 中断的使用

CPU如何响应中断?

中断响应需要满足三个条件: 1、中断源必须有中断请求; 2、中断使能位打开; 3. 中断主开关打开。

面对以上三种中断情况,在使用中断时,我们需要考虑:使用哪种中断? 其触发条件? 为什么要打断? 以外部中断0为例;

主程序所需的中断代码:

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

EX0=1;//开启外部中断0;

IT0=0;//设置外部中断的触发方式;

中断服务函数:

void int0()中断0 // int0为函数名,可自定义; Interrupt是一个关键字,表示51个单片机中断。 后面的“0”是中断号,外部中断0的中断号为0。

//编写用户需要的功能代码

位寻址是指可以直接调用该寄存器中的每一位值

例如:按位寻址的 IE 中有 8 位 EA – ET2 ES ET1 EX1 ET0 EX0,可以直接操作 ET2=1;

不可位寻址的TMOD 只能使用TMOD=0x00 来控制每一位。

您无法控制未打开的一位,也无法单独为一位指定值。

2、外部中断实验

利用中断系统实现:独立按钮控制LED灯的亮灭,独立按钮K3连接到外部中断0引脚。

2.1 外部中断配置

上面我们提到,51单片机要产生中断,必须满足三个条件: 1、中断源有中断请求; 2、中断源对应的中断打开; 3、主中断开关(CPU打开中断)。

外部中断0的配置应该是:

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

EX0=1;//开启外部中断0;

IT0=1;//设置外部中断的触发方式;

由于独立按键的一端接地,只要按下按键,对应的IO口就会被拉低。 这里采用下降沿触发方式,即IT0=1;

2.2 硬件设置

本实验使用的硬件资源为:

独立按钮K3和LED(D1);

电路图如下: 2

单片机

基于单片机和各种传感器来完成总体整体整体设计的流程

2024-2-5 18:07:49

单片机

51、AVR、430、ARM(包括嵌入操作系统)

2024-2-5 19:04:07

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索