51单片机的外部中断的以及相关寄存器的讲解

中断系统

本文主要涉及8051单片机的中断系统的讲解与使用
其中包括中断相关寄存器的介绍与使用以及外部中断初始化的代码分析。

文章目录

  • 中断系统
    • 一、 中断的介绍
    • 二、 中断结构及相关寄存器
      • 2.1 中断源
    • 2.2 中断请求控制器
      • 2.2.1 TCON寄存器
      • 2.2.2 SCON寄存器
      • 2.2.3 中断允许寄存器IE
      • 2.2.4 中断优先级寄存器IP
    • 三、 外部中断代码
      • 3.1 中断的初始化
      • 3.2 中断服务函数

一、 中断的介绍

对于单片机来讲,中断是指 CPU 在处理某一事件 A 时,发生了另一事件 B,请求 CPU 迅速去处理(中断发生);CPU 暂时停止当前的工作(中断响应), 转去处理事件 B(中断服务);待 CPU 将事件 B 处理完毕后,再回到原来事件 A 被中断的地方继续处理事件 A(中断返回),这一过程称为中断。
在这里插入图片描述

中断的定义
当中央处理机 CPU 正在处理某件事的时候外界发生了紧急事件请求,要求CPU 暂停当前的工作,转而去处理这个紧急事件,处理完以后,再回到原来被中断的地方,继续原来的工作,这样的过程称为中断。

引起 CPU 中断的根源称为中断源。中断源向 CPU 提出中断请求,CPU 暂时中断原来的事务 A,转去处理事件 B,对事件 B 处理完毕后,再回到原来被中断的地方(即断点),称为中断返回。实现上述中断功能的部件称为中断系统(中断机构)。

当 CPU 正在处理一个中断源请求的时候(执行相应的中断服务程序),发生了另外一个优先级比它还高的中断源请求。如果 CPU 能够暂停对原来中断源的服务程序,转而去处理优先级更高的中断请求源,处理完以后,再回到原低级中断服务程序,这样的过程称为中断嵌套。这样的中断系统称为多级中断系统,没有中断嵌套功能的中断系统称为单级中断系统。

为什么要设置中断

    1. 提高CPU工作效率
    1. 具有实时处理功能
    1. 具有故障处理能力
    1. 实现分时操作

二、 中断结构及相关寄存器

在这里插入图片描述

2.1 中断源

51单片机总共有5个中断源,其中2个为外部中断源,3个为内部中断源。

(1)INT0*—外部中断请求0,中断请求信号由引脚输入,中断请求标志为IE0
(2)INT1*—外部中断请求1,中断请求信号由引脚输入,中断请求标志为IE1
(3)定时器/计数器T0-计数溢出发出的中断请求,中断请求标志为TF0
(4)定时器/计数器T1-计数溢出发出的中断请求,中断请求标志为TF1
(5)串行口中断请求,中断请求标志为发送中断TI或接收中断RI

2.2 中断请求控制器

80C51涉及的中断请求控制寄存器有2个。定时和外中断用TCON,串行中断用SCON。

2.2.1 TCON寄存器

字节地址为88H,可位寻址
该寄存器中既包括:

  • T0和T1的溢出中断请求标志位TF0和TF1,
  • 两个外部中断请求的标志位IE1与IE0,
  • 两个外部中断请求源的中断触发方式选择位

在这里插入图片描述

2.2.2 SCON寄存器

SCON为串行口控制寄存器,字节地址为98H,可位寻址
请求标志TI和RI,其格式如图5-4所示。
在这里插入图片描述

SCON中各标志位的功能如下:
(1)TI—串行口的发送中断请求标志位。CPU将一个字节的数据写入串行口的发送缓冲器SBUF时,就启动一帧串行数据的发送,每发送完一帧串行数据后,硬件使TI自动置“1”。

注:CPU响应串行口发送中断时,并不清除TI中断请求标志,TI标志必须在中断服务程序中用指令对其清“0”。
(2)RI—串行口接收中断请求标志位。在串行口接收完一个串行数据帧,硬件自动使RI中断请求标志置“1”。
注:CPU在响应串行口接收中断时,RI标志并不清“0”,必须在中断服务程序中用指令对RI清“0”。

2.2.3 中断允许寄存器IE

IE控制CPU对各中断源的开放或屏蔽,的字节地址为A8H,可进行位寻址,其格式如图5-5所示。

在这里插入图片描述

(1)EA—中断总允许开关控制位。
EA=0,所有中断被屏蔽。
EA=1,所有中断被开放。
只要有中断被允许,EA=1

(2)ES—串行口中断允许位。
ES=0,禁止串行口中断。
ES=1,允许串行口中断。

(3)ET1—定时器/计数器T1的溢出中断允许位。
ET1=0,禁止T1溢出中断。
ET1=1,允许T1溢出中断。

(4)EX1—外部中断1中断允许位。
EX1=0,禁止外部中断1中断。
EX1=1,允许外部中断1中断

(4)EX1—外部中断1中断允许位。
EX1=0,禁止外部中断1中断。
EX1=1,允许外部中断1中断。

(5)ET0—定时器/计数器T0的溢出中断允许位。
ET0=0,禁止T0溢出中断。
ET0=1,允许T0溢出中断。

(6)EX0—外部中断0中断允许位。
EX0=0,禁止外部中断0中断。
EX0=1,允许外部中断0中断。

复位以后,IE被清“0”,所有的中断请求被禁止

2.2.4 中断优先级寄存器IP

中断请求源有两个中断优先级,每一中断请求源可由软件设置为高优先级中断或低优先级中断。

中断嵌套,就是单片机正在执行低优先级中断的服务程序时,可被高优先级中断请求所中断,待高优先级中断处理完毕后,再返回低优先级中断服务程序。
在这里插入图片描述

关于各中断源的中断优先级关系,可归纳为下面两条基本规则:
(1)低优先级可被高优先级中断,高优先级不能低优先级中断。
(2)任何一种中断(不管是高级还是低级),一旦得到响应,不会再被它的同级中断源所中断。

中断优先级寄存器IP,其字节地址为B8H,可位寻址。IP寄存器的格式如图5-7所示。
在这里插入图片描述

中断优先级寄存器IP各位的含义如下:
(1)PS—串行口中断优先级控制位
PS=1,串行口中断为高优先级
PS=0,串行口中断为低优先级

(2)PT1—定时器T1中断优先级控制位
PT1=1,定时器T1中断为高优先级
PT1=0,定时器T1中断为低优先级

(3)PX1—外部中断1中断优先级控制位
PX1=1,外部中断1中断为高优先级
PX1=0,外部中断1中断为低优先级

(4)PT0—定时器T0中断优先级控制位
PT0=1,定时器T0中断为高优先级
PT0=0,定时器T0中断为低优先级

(5)PX0—外部中断0中断优先级控制位
PX0=1,外部中断0中断为高优先级
PX0=0,外部中断0中断为低优先级

复位以后,IP的内容为0,各个中断源均为低优先级中断.

在同时收到几个同一优先级的中断请求时,哪一个中断请求能优先得到响应,取决于内部的查询顺序。这相当于在同一个优先级内,还同时存在另一个辅助优先级结构,其查询顺序如表5-1所示。
在这里插入图片描述

由此可见,各中断源在同一个优先级的条件下,外部中断0的中断优先权最高,串行口中断的优先权最低

三、 外部中断代码

3.1 中断的初始化

void init_exit0()
{
    EA=1//打开总中断开关
    EX0=1//开外部中断 0
    IT0=1//设置外部中断的触发方式0-电平触发 1-边沿触发
}
void init_exit1()
{
    EA=1//打开总中断开关
    EX1=1//开外部中断 0
    IT1=0//设置外部中断的触发方式
}

3.2 中断服务函数

中断号
在这里插入图片描述

void exit0()    interrupt 0 //外部中断0的中断服务函数
{
    //中断响应后要做的事情

}


void exit1() interrupt 2 //外部中断1的中断服务函数
{
    //中断1响应后需要做的事情
}

原理图中 K3 键是连接在单片机 P3.2 口(外部中断 0),K4 按键是连接在 P3.3 口(外部中断 1)。

在这里插入图片描述

所以中断的触发是通过这两个按键来实现的,使用中断时需要注意。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/246738.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spark与PySpark(1.概述、框架、模块)

目录 1.Spark 概念 2. Hadoop和Spark的对比 3. Spark特点 3.1 运行速度快 3.2 简单易用 3.3 通用性强 3.4 可以允许运行在很多地方 4. Spark框架模块 4.1 Spark Core 4.2 SparkSQL 4.3 SparkStreaming 4.4 MLlib 4.5 GraphX 5. Spark的运行模式 5.1 本地模式(单机) Local运行模…

智能优化算法应用:基于模拟退火算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于模拟退火算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于模拟退火算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.模拟退火算法4.实验参数设定5.算法结果6.…

2036开关门,1109开关门

一:2036开关门 1.1题目 1.2思路 1.每次都是房间号是服务员的倍数的时候做处理,所以外层(i)枚举服务员1~n,内层(j)枚举房间号1~n,当j % i0时,做处理 2.这个处理指的是&…

module ‘tensorflow‘ has no attribute XXX 报错解决

问题描述: 粘了别人的tensorflow项目,运行总是报错module ‘tensorflow’ has no attribute什么什么 问题解决: 导入tensorflow的代码如下 import tensorflow as tf此时,某个某块报错,比如下面这个 那么就直接把tf.…

【【ZYNQ 7020显示 图片 实验 】】

ZYNQ 7020显示 图片 实验 关键配置 BRAM 因为本次 我想显示的 图片是 400*400 所以在 内部 的 ROM 存储单元选择 了160000 ZYNQ7020的内部资源 最多是 大概 200000左右的 大小 大家可以根据 资源选择合适的像素 此处存放 内部的 图片转文字的COE文件 PLL设置 我选用的是按…

言简意赅的 el-table 跨页多选

步骤一 在<el-table>中:row-key"getRowKeys"和selection-change"handleSelectionChange" 在<el-table-column>中type"selection"那列&#xff0c;添加:reserve-selection"true" <el-table:data"tableData"r…

第二证券:京沪楼市松绑,地产板块强势拉升,京能置业等涨停

地产板块15日盘中强势拉升&#xff0c;到发稿&#xff0c;上实开展、京能置业、大龙地产、新黄浦等涨停&#xff0c;京投开展涨逾6%&#xff0c;保利开展、招商蛇口等涨超3%。 消息面上&#xff0c;12月14日&#xff0c;北京发布调整优化一般住所标准和个人住所告贷政策的告诉…

MIT_线性代数笔记:第 17 讲 正交矩阵和施密特正交化

目录 正交向量 Orthonormal vectors标准正交矩阵 Orthonormal matrix标准正交列向量的优势 Orthonormal columns are good施密特正交化 Gram-Schmidt 本讲我们完成对“正交”的介绍。Gram-Schmidt 过程可以将原空间的一组基转变为标准正交基。 正交向量 Orthonormal vectors 满…

PyQt6 一个简单的例子

PyQt6简单例子 需求代码目录代码实现代码运行效果 需求 1、通过PyQt6实现一个小的应用程序&#xff0c;并设置应用程序的图标&#xff0c;应用程序的标题&#xff0c;然后再提示一个气泡框&#xff0c;不过显示一会就会消失不见。 代码目录 在PyQt文件夹下新建一个包&#x…

五、Shell 注释

一、单行注释 以井号&#xff08;#&#xff09;来注释单行&#xff0c;Shell 并不会处理 Shell 脚本中的注释行。然而 Shell 脚本第一行是个例外&#xff0c;# 号后面的感叹号&#xff08;!&#xff09;是用来告诉系统用哪个解释器来运行脚本。示例和运行结果如图所示&#xf…

基于Java SSM框架实现在线课程教育资源考试管理系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架实现在线课程教育资源考试管理系统演示 摘要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线教育资源管理系统&#xff0c;主要的模块包括管理员&#xff1b;个人中心、学生…

GoLang EASY 微服务游戏框架 01

1 Overview EASY 是一个go语言编写的框架&#xff0c;兼容性支持go版本1.19&#xff0c;go mod 方式构建管理。它是一个轻型&#xff0c;灵活&#xff0c;自定义适配强的微服务框架。 它支持多种网络协议TCP&#xff0c;websocket&#xff0c;UDP&#xff08;待完成&#xf…

java-sec-code的xss

java-sec-code 用于学习java漏洞代码 环境部署 直接在idea中使用git 运行即可 RequestMapping("/reflect") ResponseBody public static String reflect(String xss) {return xss;}当用户访问到/reflect URL地址时&#xff0c;程序会自动调用reflect方法&#xff0c…

机器视觉系统选型-工业相机的焦距

机器视觉项目需要尽快完成&#xff0c;需要有能力&#xff0c;有技术&#xff0c;经过项目的毒打过的老员工才可以扛起“战时状态”大旗&#xff0c;并且充分完成此类机器视觉项目&#xff0c;毫不夸张地说&#xff0c;就是公司机器视觉项目的顶梁柱。老员工就是机器视觉公司的…

【力扣】19. 删除链表的倒数第 N 个结点

19. 删除链表的倒数第 N 个结点 相比于昨天&#xff0c;感觉刷题越来越轻松了~ 我进步了&#xff01; 以后刷题力度要加快了&#xff0c;因为我报了蓝桥杯&#xff01;加油~ 法一&#xff1a;计算链表长度 思路&#xff1a; 首先用个函数来计算出该链表的长度&#xff0c;然…

【PWN】学习笔记(三)【返回导向编程】(下)

目录 课程回顾ret2libc![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/ebe1a9a9e54f4319946621dbe89c5774.png)做题 课程 课程链接&#xff1a;https://www.bilibili.com/video/BV1854y1y7Ro/?vd_source7b06bd7a9dd90c45c5c9c44d12e7b4e6 课程附件&#xff1a; h…

Linux:时间显示(函数介绍)

文章目录 1、sleep&#xff1a;延迟函数2、time/localtime3、示例&#xff1a;sleep time localtime4、Linux时间调整 1、sleep&#xff1a;延迟函数 函数原型&#xff1a;unsigned int sleep(unsigned int seconds); 功 能&#xff1a;延时 参 数&#xff1a;seconds:秒&am…

【Python必做100题】之第十八题(找质数因子)

题目&#xff1a;输入一个正整数&#xff0c;输出它的所有质数因子&#xff08;如180的质数因子为2、2、3、3、5&#xff09; 代码如下&#xff1a; a int(input("请输入一个自然数&#xff1a;")) y 2 list [ ]while a ! y:if a % y 0:list.append(y)a / yelse…

华为认证 | HCIE-Security V3.0 认证将在12月底发布!

非常荣幸地通知您&#xff0c;华为认证HCIE-Security V3.0&#xff08;中文版&#xff09;预计将于2023年12月29日正式对外发布。 为了帮助您做好学习、培训和考试计划&#xff0c;现进行预发布通知&#xff0c;请您关注。 HCIE-Security V3.0考试代码&#xff1a; H12-731&…

力扣131. 分割回文串(java 回溯法)

Problem: 131. 分割回文串 文章目录 题目描述思路解题方法复杂度Code 题目描述 思路 题目要求我们给出所有的回文子字符串&#xff0c;而涉及到穷举我们可以利用回溯来解决&#xff0c;另外我们也可以发现问题中涉及到元素存在重复但不可复用的特性&#xff0c;因此我们可以类…