零基础学习8051单片机(十五)

本次先看书学习,并完成了课后习题,题目出自《单片机原理与接口技术》第五版—李清朝

答:

(1)当 CPU正在处理某件事情的时候,外部发生的某一件事件请求 CPU 迅速去处理,于是,CPU暂时中止当前的工作,转去处理所发生的事件,中断服务处理完该事件以后,再回到原来被终止的地方,继续原来的工作,这种过程称为中断,实现这种功能的部件称为中断系统。

(2)功能:

1.使计算机具有实时处理能力,能对外界异步发生的事件作出及时的处理

2.完全消除了 CPU 在查询方式中的等待现象,大大提高了 CPU 的工作效率

3.实现实时控制

解:

利用位操作指令:

SETB  EX0                                ;把中断允许寄存器IE中的EX0位即外部中断0中断允许位置为1,使之允许外部中断0中断

SETB  EX1                                ;把IE中的EX1位即外部中断1中断允许位置为1,使之允许外部中断1中断

SETB  ET0                                ;把ET0位即定时/计数器中断允许位置为1,使其能够允许T0发生中断

SETB  ES                                  ;把ES位即串行口中断允许位置为1,使之能够允许串行口中断

SETB  EA                                  ;把EA位即中断允许总控制位置为1,使CPU开放中断

;上述5条指令,使得INT0、INT1、T0、串行口开放中断,由于T1未要求所以此时T1正在关闭中

SETB  PT0                                ;把IP寄存器中的PT0位置为1,使T0中断成为高优先级中断

答:分时操作、实时处理、故障处理

答:

(1)五种,分别为外部中断INT0、INT1、定时/计数器T0、T1、串行口中断

(2)通过对4个用于中断控制的特殊功能寄存器IE、IP、TCON、SCON中的各位进行置位或者复位等操作,实现控制功能

注:两个外部中断都是低电平有效

答:

1.中断优先级是 CPU 相应中断的先后顺序。

2.原则:

(1)先响应优先级高的中断请求,再响应优先级低的

(2)如果一个中断请求已经被响应,同级的其它中断请求将被禁止

(3)如果同级的多个请求同时出现,则CPU通过内部硬件查询电路,按查询顺序确定应该响应哪个中断请求,查询顺序为:外部中断0→定时器0中断→外部中断1→定时器1中断→串行接口中断

答:

当 CPU执行主程序第K条指令,外设向CPU发出中断请求,CPU接到中断请求信号并在本条指令执行完后,中断主程序的执行并保存断点地址,然后转去响应中断。CPU 在每个 S5P2 期间顺序采样每个中断源,CPU 在下一个机器周期 S6期间按优先级顺序查询中断标志,如果查询到某个中断标志为1,将在接下来的机器周期S1期间按优先级进行中断处理,中断系统通过硬件自动将相应的中断矢量地址装入PC,以便进入相应的中断服务程序。中断服务完毕后,CPU返回到主程序第 K+1 条指令继续执行。

答:

(1)有中断源发出中断请求;
(2)中断总允许位 EA=1,即 CPU 开中断;
(3)申请中断的中断源的中断允许位为1,即中断没有被屏蔽;
(4)无同级或更高级中断正在被服务;
(5)当前的指令周期已经结束;
(6)若现行指令为RETI或者是访问E或IP指令,则该指令以及紧接着的另一条指令已执行完。

答:CPU 在每个机器周期 S5P2 期间顺序采样每个中断源,CPU 在下一个机器周期S6期间按优先级顺序查询中断标志,如查询到某个中断标志为1,将在接下来的机器周期S1期间按优先级进行中断处理,中断系统通过硬件自动将相应的中断矢量地址装入 PC,以便进入相应的中断服务程序。一旦响应中断,89C51 首先置位相应的中断“优先级生效”触发器,然后由硬件执行一条长调用指令,把当前的 PC值压入堆栈,以保护断点,再将相应的中断服务的入口地址送入PC,于是CPU 接着从中断服务程序的入口处开始执行。对于有些中断源,CPU 在响应中断后会自动清除中断标志。

 答:

编程时应在 0000H 处写一跳转指令(一般为长跳转指令),使 CPU 在执行程序时,从 0000H跳过各中断源的入口地址。主程序一般从 0030H开始,主程序后一般是子程序及中断服务程序。在这个大家还要清除各个中断的中断矢量地址。

 答:

作用:对外部异步发生的事件作出及时的处理

过程:中断请求,中断响应,中断处理,中断返回

答:

  1. 可响应新的中断请求的情况:

    • 新的中断请求优先级更高

    • 允许中断嵌套

  2. 不能响应新的中断请求的情况:

    • 新的中断请求优先级相同或更低

    • 禁止了嵌套中断

    • 中断被全局禁用

答:

1.有两种方式:电平触发和边沿触发

2.

(1)电平触发方式:CPU 在每个机器周期的 S5P2期间采样外部中断引脚的输入电平若为低电平,使 IE1(IE0)置“1”,申请中断;若为高电平,则 IE1(IE0)清零。

(2)边沿触发方式:CPU在每个机器周期S5P2期间采样外部中断请求引脚的输入电平。如果在相继的两个机器周期采样过程中,一个机器周期采样到外部中断请求为高电平,接着下一个机器周期采样到外部中断请求为低电平,则使 IE1(IEO)置“1”申请中断:否则,IE1(IE0)置 0。 

解:

(1)答:可以,只需要对IP寄存器中的特定位置1或清0即可

在本题中定时器0、定时器1表现为高优先级,所以将他们对应在IP寄存器中的第1和第3位置为1,其他位置为0即可,满足该置位条件的机器码为0000 1010,其16进制码为0AH

故对应指令为:MOV  IP,#0AH

(2)答:可以,在本题中,将串行口置为最高优先级,其余的都是IP寄存器原来设定的优先级所以只用把第4位置为1即可,对应机器码0001 0000,其16进制码为10H

故指令:MOV  IP,#10H

(3)答:不可以,理由:在8051单片机中,优先级最高的就是外中断0,其次定时器0中断,外中断1、定时器1、串口。但是在本题中优先级外中断0已经是最高优先级,假设把定时器1设为次级中断,那么需要置为1,其优先级将高于外中断0,但8051只能设置两个中断优先级,所以,即使把前两个都置为1,后面也无法按照指定顺序进行,同样的,设置前三个为1,那么在本身的硬件系统的外中断1就高于定时器1,所以依旧无法实现

(4)答:可以,需要把IP寄存器的第0、2、4位置为1,则机器码为0001 0101,对应16进制为15H,故指令为MOV  IP,#15H

(5)答:不可以  理由:后面三个可以按照顺序进行,但是前两个即便设置为高优先级,但是由于本身T0优先级就高于串行口,所以无法实现

(6)答:不可以  理由:要想实现本题的顺序,需要把前4个都设置为1,但是设置为1之后,同优先级按照硬件中的顺序执行,执行的顺序只能是外中断0、定时器0、外中断1、串口、T1,无法是题中的顺序

(7)答:可以,后面三个可以按顺序执行,需要置为前两个,即IP中的第0位和第3位,对应机器码为:0000 1001,对应16进制码为09H,故指令为:MOV  IP,#09H

答:

各中断标志的产生和清“0”如下:

(1)外部中断类
外部中断是由外部原因引起的,可以通过两个固定引脚,即外部中断0和外部中断1输入信号。
外部中断0请求信号,由P3.2脚输入,外中断1由P3.3脚输入

通过 IT0 来决定中断请求信号是低电平有效还是下跳变有效。一旦输入信号有效,则向CPU 申请中断,并且使 IE0=1,硬件复位。外部中断1请求信号,功能与用法类似外部中断0

(2)定时中断类
定时中断是为满足定时或计数溢出处理需要而设置的。

当定时器/计数器中的计数结构发生计数溢出的,即表明定时时间到或计数值已满,这时就以计数溢出信号作为中断请求,去置位一个溢出标志位。这种中断请求是在单片机芯片内部发生的,无需在芯片上设置引入端,但在计数方式时,中断源可以由外部引入。

TFO:定时器 TO 溢出中断请求。当定时器 T0 产生溢出时,定时器 TO 请求标志TF0=1,请求中断处理。使用中断时由硬件复位,在查询方式下可由软件复位。TF1:定时器 T1溢出中断请求。功能与用法类似定时器 TO

(3)串行口中断类
串行口中断是为串行数据的传送需要而设置的。

串行中断请求也是在单片机芯片内部发生的,但当串行口作为接收端时,必须有一完整的串行数据从RI端引入芯片,才可能引发中断。

RI或 TI:串行口中断请求。当接收或发送一串帧数据时,使内部串行口中断请求标志 RI 或 TI=1,并请求中断。响应后必须软件复位。

CPU 响应中断时,中断入口地址如下:
中断源入口地址

外部中断0                                        0003H
定时器 T0 中断                                000BH
外部中断1                                        0013H
定时器 T1 中断                                001BH
串行口中断                                      0023H

答:

中断响应时间不是确定不变的。

理由:CPU不是在任何情况下都对中断请求予以响应的,而且不同情况下对中断响应的时间也是不同的。

现以外部中断为例,说明中断响应的最短时间

 答:因为一般主程序和中断服务程序都可能会用到累加器,PSW寄存器及其他些寄存器。CPU 在进入中断服务程序后,用到上述寄存器时,就会破坏它原来存在寄存器中的内容,一旦中断返回,将会造成主程序的混乱。因而在进入中断服务程序后,一般要先保护现场,然后再执行中断处理程序,在返回主程序以前再恢复现场。
保护方法一般是把累加器、PSW寄存器及其他一些与主程序有关的寄存器压入堆栈。在保护现场和恢复现场时,为了不使现场受到破坏或者造成混乱,一般规定此时 CPU 不响应新的中断请求。这就要求在编写中断服务程序时,注意在保护现场之前要关中断,在恢复现场之后开中断。如果在中断处理时允许有更高级的中断打断它,则在保护现场之后再开中断,恢复现场之前关中断。

 答:

在中断响应中,CPU要完成以下自主操作过程:

a)置位相应的优先级状态触发器,以标明所响应中断的优先级别

b)中断源标志清零(TI、RI除外)
c)中断断点地址装入堆栈保护(不保护PSW)
d)中断入口地址装入PC,以便使程序转到中断入口地址处

在计算机内部,中断表现为 CPU的微查询操作。89C51单片机中,CPU在每个机器周期的 S6 状态,查询中断源,并按优先级管理规则处理同时请求的中断源,且在下一个机器周期的 S1状态中,响应最高级中断请求。
但是以下情况除外:

a)CPU正在处理相同或更高优先级中断

b)多机器周期指令中,还未执行到最后一个机器周期

c)正在执行中断系统的 SFR 操作,如 RETI 指令及访问 IE、IP 等操作时,要延后一条指令

 答:在中断请求有效并开中断状况下,并不能保证立即响应中断。这是因为,在计算机内部,中断表现为 CPU的微查询操作。89C51单片机中,CPU 在每个机器周期的 S6 状态下,查询中断源,并按优先级管理规则处理同时请求的中断源,且在下一个机器周期的 S1 状态中,响应最高级中请求。
在以下情况下,还需要有另外的等待:
a)CPU正在处理相同或更高优先级中断

b)多机器周期指令中,还未执行到最后一个机器周期

c)正在执行中断系统的 SFR 操作,如 RETI 指令及访问 IE、IP 等操作时,要延后
一条指令

答:堆栈是一个特殊的存储区,主要功能是暂时存放数据和地址,通常用来保护断点和现场;堆栈指针SP复位后指向07H单元,00H-1FH为工作寄存器区,20H-2FH为位寻址区,这些单元有其他功能,因此在程序设计时,需要对SP重新赋值。

答:

外部中断的两种中断触发方式包括电平触发方式和跳沿触发方式。这两种方式的主要区别在于它们对外部中断输入信号的响应方式。

  1. 电平触发方式:在电平触发方式中,外部中断申请触发器的状态随着CPU在每个机器周期采样到的外部中断输入线的电平变化而变化。也就是说,只要外部中断输入线保持在一个特定的电平状态(通常是低电平),中断就会持续被触发。这种方式适合于外部中断以低电平输入而且中断服务程序能清除外部中断请求源的情况。
  2. 跳沿触发方式:在跳沿触发方式中,外部中断申请触发器能锁存外部中断输入线上的负跳变。即使CPU暂时不能响应,中断申请标志也不会丢失。这种方式对于外部中断输入信号是边沿变化(如上升沿或下降沿)的情况非常有效。

在实际应用中,大多采用边沿触发方式的原因主要是因为其抗干扰能力强、可靠性高、适应性强。

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

电商+支付双系统项目------实现电商系统中分类模块的开发!

本篇文章主要介绍一下这个项目中电商系统的分类模块开发。电商系统有很多模块,除了分类模块,还有用户模块,购物车模块,订单模块等等。上一篇文章已经讲了用户模块,这篇文章我们讲讲项目中的分类模块。 有的人可能会很…

第2讲:C语言数据类型和变量

第2讲:C语言数据类型和变量 目录1.数据类型介绍1.1字符型1.2整型1.3浮点型1.4 布尔类型1.5 各种数据类型的长度1.5.1 sizeof 操作符1.5.2 数据类型长度1.5.3 sizeof 中表达式不计算 2.signed 和 unsigned3.数据类型的取值范围4. 变量4.1 变量的创建4.2 变量的分类 5…

[word] word如何设置每行字符数 #笔记#经验分享#媒体

word如何设置每行字符数 如何设置每行字符数? 设置WORD设定每行中的字符数和每页中的行数的具体步骤如下: 我们需要准备的材料分别是:电脑、word文档。 1、首先我们打开需要编辑的word文档,点击打开“页面布局”。 2、然后我们…

【算法与数据结构】200、695、LeetCode岛屿数量(深搜+广搜) 岛屿的最大面积

文章目录 一、200、岛屿数量1.1 深度优先搜索DFS1.2 广度优先搜索BFS 二、695、岛屿的最大面积2.1 深度优先搜索DFS2.2 广度优先搜索BFS 三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、200、岛屿数量 1.1 深度优先搜…

CQT新里程碑:SOC 2 数据安全认证通过,加强其人工智能支持

Covalent Network(CQT)发展新里程碑:SOC 2 数据安全认证通过,进一步加强了其人工智能支持 Covalent Network(CQT)现已完成并通过了严格的 Service Organization Control(SOC) 2 Type II 的合规性…

java数据结构与算法刷题-----LeetCode222. 完全二叉树的节点个数

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 1. 法一:利用完全二叉树性质,进行递归二分查找 解…

maven工程打包引入本地jar包

1、通过maven生成本地区仓库包 mvn install:install-file --settings D:\lkx\download\apache-maven-3.6.3\conf\settings.xml -Dfileaspose-cad-21.8.jar -DartifactIdaspose-cad -DgroupIdsystem.core -Dversion21.8 -Dpackagingjar -DgeneratePomtrue # --settings&#xf…

JS前端高频面试

JS数据类型有哪些,区别是什么 js数据类型分为原始数据类型和引用数据类型。 原始数据类型包括:number,string,boolean,null,undefined,和es6新增的两种类型:bigint 和 symbol。&am…

Observability:使用 OpenTelemetry 和 Elastic 监控 OpenAI API 和 GPT 模型

作者: 来自 Elastic David Hope ChatGPT 现在非常火爆,甚至席卷了整个互联网。 作为 ChatGPT 的狂热用户和 ChatGPT 应用程序的开发人员,我对这项技术的可能性感到非常兴奋。 我看到的情况是,基于 ChatGPT 的解决方案将会呈指数级…

TestNG与ExtentReport单元测试导出报告文档

TestNG与ExtentReport集成 目录 1 通过实现ITestListener的方法添加Reporter log 1.1 MyTestListener设置 1.2 输出结果 2 TestNG与ExtentReporter集成 2.1 项目结构 2.2 MyExtentReportListener设置 2.3 单多Suite、Test组合测试 2.3.1 单Suite单Test 2.3…

Pytorch 复习总结 3

Pytorch 复习总结,仅供笔者使用,参考教材: 《动手学深度学习》Stanford University: Practical Machine Learning 本文主要内容为:Pytorch 多层感知机。 本文先介绍了多层感知机的用法,再就训练过程中经常出现的过拟…

win10编译openjdk源码

上篇文章作者在ubuntu系统上实践完成openjdk源码的编译,但是平常使用更多的是window系统,ubuntu上编译出来JDK无法再windows上使用。所以作者又花费了很长时间在windows系统上完成openjdk源码的编译,陆续花费一个月的时间终于完成了编译。 本…

【Unity3D】ASE制作天空盒

找到官方shader并分析 下载对应资源包找到\DefaultResourcesExtra\Skybox-Cubed.shader找到\CGIncludes\UnityCG.cginc观察变量, 观察tag, 观察代码 需要注意的内容 ASE要处理的内容 核心修改 添加一个Custom Expression节点 code内容为: return DecodeHDR(In0, In1);outp…

[bing]“gang调度 Kubernetes的并发控制和一致性机制“论点的对应的源码分析

你是一位K8S专家。请分析在Kubernates(https://github.com/kubernetes/kubernetes.git)项目和调度coscheduling(https://github.com/kubernetes-sigs/scheduler-plugins/tree/master/pkg/coscheduling) 插件中支撑"PodGroup的管理和调度决策涉及到对…

Elasticsearch:使用 ELSER v2 进行语义搜索

在我之前的文章 “Elasticsearch:使用 ELSER 进行语义搜索”,我们展示了如何使用 ELESR v1 来进行语义搜索。在使用 ELSER 之前,我们必须注意的是: 重要:虽然 ELSER V2 已正式发布,但 ELSER V1 仍处于 [预览…

MKS薄膜规622/626/627/628/629说明接口定义等说明

MKS薄膜规622/626/627/628/629说明接口定义等说明

【day02】每天三道 java后端面试题:Java、C++和Go的区别 | Redis的特点和应用场景 | 计算机网络七层模型

文章目录 1. Java、C和 Go 语言的区别,各自的优缺点?2. 什么是Redis?Redis 有哪些特点? Redis有哪些常见的应用场景?3. 简述计算机网络七层模型和各自的作用? 1. Java、C和 Go 语言的区别,各自的…

Bert基础(三)--位置编码

背景 还是以I am good(我很好)为例。 在RNN模型中,句子是逐字送入学习网络的。换言之,首先把I作为输入,接下来是am,以此类推。通过逐字地接受输入,学习网络就能完全理解整个句子。然而&#x…

【实战】CEF框架集成MFC DLL的一些坑

文章目录 DLL 导出方式,函数指针的坑问题出现问题解决 CEF集成MFCafxwin.h预编译编译参数修改 DLL重命名 MFC作为微软的长期主力开发套件之一,之前很多设备开发的C/S端界面都是通过MFC框架来做的,而在我自己的CEF项目中,会集成很多…

顺序表详解(如何实现顺序表)

文章目录 前言 在进入顺序表前,我们先要明白,数据结构的基本概念。 一、数据结构的基本概念 1.1什么是数据结构 数据结构是由“数据”和“结构”两词组合而来。所谓数据就是?常见的数值1、2、3、4.....、姓名、性别、年龄,等。…