零基础学习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暂时不能响应,中断申请标志也不会丢失。这种方式对于外部中断输入信号是边沿变化(如上升沿或下降沿)的情况非常有效。

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

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

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

相关文章

Android的ViewModel

前言 在Compose的学习中,我们在可组合函数中使用rememberSaveable​​​​​​​保存应用数据,但这可能意味着将逻辑保留在可组合函数中或附近。随着应用体量不断变大,您应将数据和逻辑从可组合函数中移出。 而在之前的应用架构学习中&…

计算机视觉基础知识(十四)--深度学习开源框架

深度学习框架 Caffetensorflow框架是深度学习的库;编程时需要import 应用优势 框架的出现降低了入门的门槛;不需要从复杂的神经网络开始编写代码;根据需要,使用已有的模型;模型的参数经过训练得到;可以在已有的模型基础上增加自己的layer;在顶端选择自己的分类器和优化算法;…

自然语言处理(NLP)—— 神经网络自然语言处理(2)实际应用

本篇文章的第一部分是关于探索词嵌入(word embedding)向量空间。词嵌入是一种语言模型和文本表示技术,其中单词或短语从词汇表被映射到向量的高维空间中。通过这种方式,可以通过计算向量之间的距离来捕捉单词之间的语义关系。 1.…

unity-firebase-Analytics分析库对接后数据不显示原因,及最终解决方法

自己记录一下unity对接了 FirebaseAnalytics.unitypackage(基于 firebase_unity_sdk_10.3.0 版本) 库后,数据不显示的原因及最终显示解决方法: 1. 代码问题(有可能是代码写的问题,正确的代码如下&#xff…

Vue3之ref与reactive的基本使用

ref可以创建基本类型、对象类型的响应式数据 reactive只可以创建对象类型的响应式数据 接下来让我为大家介绍一下吧! 在Vue3中,我们想让数据变成响应式数据,我们需要借助到ref与reactive 先为大家介绍一下ref如何使用还有什么注意点 我们需…

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

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

政安晨:【示例演绎机器学习】(二)—— 神经网络的二分类问题示例 (影评分类)

政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 收录专栏: 政安晨的机器学习笔记 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正,让小伙伴们一起学习、交流进步! 作者对人工智能…

BTC系列-系统学习铭文(一)-比特币上的NFT

Ordinals协议概况 开源项目: https://github.com/ordinals/ord铭文浏览器: https://Ordinals.com关于Ordinals的BIP: https://github.com/ordinals/ord/blob/master/bip.mediawiki序数理论手册: https://docs.ordinals.com/overview.html 所需的技术积累 Ordinals NFTs 是基…

SQL注入:网鼎杯2018-unfinish

目录 使用dirmap扫描 使用dirsearch扫描 使用acunetix扫描 爆破后端过滤的字符 绕过限制获取数据 这次的进行SQL注入的靶机是:BUUCTF在线评测 进入到主页面后发现是可以进行登录的,那么我们作为一个安全人员,那肯定不会按照常规的方式来…

达梦数据库--DM8两节点DSC集群安装部署(达梦数据库DSC集群搭建)

1 前期规划 系统规划 本地磁盘规划 共享存储规划 DMDSC 集群为了实现多实例同时访问和修改数据,需要数据文件、控制文件和日志文件都放到共享存储上。DM 支持两种共享存储,裸设备和 DMASM,裸设备是未经过格式化的特殊字符设备,…

【MATLAB】 MODWT信号分解+FFT傅里叶频谱变换组合算法

有意向获取代码,请转文末观看代码获取方式~ 展示出图效果 1 MODWT分解算法 MODWT分解算法是一种基于小波变换的信号分解算法,与EWT分解算法类似,它也可以将信号分解为一系列具有不同频率特性的小波分量。但是,MODWT分解算法在小…

2.21学习总结

1.【模板】ST 表 2.Balanced Lineup G 3.景区导游 4.最近公共祖先(LCA) 倍增思想:主要用于LCA问题,RMQ问题。在进行 递推 时,如果 状态空间很大,通常的 线性递推 无法满足 时间 与 空间复杂度 的要求&…

Web基础②nginx搭建与配置

目录 一.Nginx概述 1.定义 2.Nginx模块作用 (1)main模块 (2)stream服务模块 (3)邮件服务模块 (4)第三方模块 (5)events模块 (6&#xff…

程序媛的mac修炼手册-- 如何彻底卸载Python

啊,前段时间因为想尝试chatgpt的API,需要先创建一个python虚拟环境来安装OpenAI Python library. 结果,不出意外的出意外了,安装好OpenAI Python library后,因为身份认证问题,根本就没有获取API key的权限…

Redis之缓存穿透问题解决方案实践SpringBoot3+Docker

文章目录 一、介绍二、方案介绍三、Redis Docker部署四、SpringBoot3 Base代码1. 依赖配置2. 基本代码 五、缓存优化代码1. 校验机制2. 布隆过滤器3. 逻辑优化 一、介绍 当一种请求,总是能越过缓存,调用数据库,就是缓存穿透。 比如当请求一…

新版Java面试专题视频教程——多线程篇②

新版Java面试专题视频教程——多线程篇② 0. 问题汇总0.1 线程的基础知识0.2 线程中并发安全0.3 线程池0.4 使用场景 1.线程的基础知识2.线程中并发锁3.线程池3.1 说一下线程池的核心参数(线程池的执行原理知道嘛)3.2 线程池中有哪些常见的阻塞队列Array…

Java Web演化史:从Servlet到SpringBoot的技术进程及未来趋势

引言 在快速演进的IT世界里,Java Web开发始终屹立不倒,它不仅承担着历史的厚重,也始终面向未来。 自诞生之日起,Java Web技术就在不断地进化,以适应不同时代的需求。 本文将回顾Java Web开发的重要里程碑,…

django rest framework 学习笔记-实战商城2

01收货地址模型类和视图定义_哔哩哔哩_bilibili 本博客借鉴至大佬的视频学习笔记 地址信息的管理:增删改查的实现 # 序列化器配置 class AddrSerializer(serializers.ModelSerializer):"""收货地址的模型序列化器"""class Meta:mo…

喀秋莎画中画怎么设置 喀秋莎画中画视频怎么导出 喀秋莎什么意思 camtasia studio下载

画中画视频,顾名思义,就是在一个视频中有两个画面,游戏解说、微课等类型的视频常常就以画中画的形式出现。作为一款专业的视频编辑软件,使用camtasia可以轻松地制作画中画视频并导出。接下来我将为大家介绍:喀秋莎画中…

HEVC视频编解码标准学习笔记-1

视频编解码标准H.265/HEVC(High Efficiency Video Coding)通过将视频数据编码为更高效格式,大幅改善了视频流的压缩效率。这里主要介绍Tile、Slice和CTU的定义,以及介绍这些技术组件之间的相互关系。 CTU(编码树单元&…