当前位置: 首页 > news >正文

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

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

相关文章:

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

本次先看书学习,并完成了课后习题,题目出自《单片机原理与接口技术》第五版—李清朝 答: (1)当 CPU正在处理某件事情的时候,外部发生的某一件事件请求 CPU 迅速去处理,于是,CPU暂时中止当前的工…...

项目的一些难点

1.不用redis?分布式锁,如何防止用户重复点击? 1.乐观锁 乐观锁是一种在数据库层面上避免并发冲突的机制。它通常通过在数据库记录中添加一个版本号(或时间戳)来实现。每次更新记录时,都会检查版本号是否与数据库中的…...

Kubernetes 卷存储 NFS | nfs搭建配置 原理介绍 nfs作为存储卷使用

1、NFS介绍 NFS(Network File System)是一种分布式文件系统协议,允许客户端远程访问服务器上的文件,实现数据共享。它整合多个存储设备为统一文件系统,方便数据存储和管理,支持负载均衡和故障转移&#xf…...

开启智能互动新纪元——ChatGPT提示词工程的引领力

目录 提示词工程的引领力 高效利用ChatGPT提示词方法 提示词工程的引领力 近年来,随着人工智能技术的迅猛发展,ChatGPT提示词工程正逐渐崭露头角,为智能互动注入了新的活力。这一技术的引入,使得人机交流更加流畅、贴近用户需求&…...

ElasticSearch语法

Elasticsearch 概念 入门学习: Index索引>MySQL 里的表(table)建表、增删改查(查询需要花费的学习时间最多)用客户端去调用 ElasticSearch(3 种)语法:SQL、代码的方法(4 种语法) ES 相比于 MySQL,能够自动帮我们做分词,能够非常高效、灵活地查询内…...

SMT贴片加工厂需要哪些加工资料

SMT贴片加工中在评估报价的时候需要给到SMT贴片加工厂以下资料,以便工程师和采购进行工艺和报价评估。 在SMT加工中如果需要供应商提供一站式的加工服务,那么在前期就需要更频繁的沟通和配合,包工包料服务是需要PCB制板资料和制板说明、BOM清…...

jmeter下载base64加密版pdf文件

一、何为base64加密版pdf文件 如下图所示,接口jmeter执行后,返回一串包含大小写英文字母、数字、、/、的长字符串,直接另存为pdf文件后,文件有大小,但是打不开;另存为doc文件后,打开可以看到和…...

【regex】正则表达式

集合 [0-9.] [0-9.\-] 例子 正则表达式,按照规则写,写的时候应该不算困难,但是可读性差 不同语言中regex会有微小的差异 vim 需要转义, perl/python中不需要转义 锚位 \b am\b i am 命名 / 命名捕获组 ( 捕获组(…...

78.Spring和SpringBoot的关系和区别?

一、Spring和SpringBoot的关系和区别 SpringBoot是Spring生态的产品。 Spring Framework是一个容器框架 SpringBoot 它不是一个框架、它是一个可以快速构建基于Spring的脚手架(里面包含了Spring和各种框架),为开发Spring生态其他框架铺平道路&#xff0…...

【PyTorch][chapter 17][李宏毅深度学习]【无监督学习][ Auto-encoder]

前言: 本篇重点介绍AE(Auto-Encoder) 自编码器。这是深度学习的一个核心模型. 自编码网络是一种基于无监督学习方法的生成类模型,自编码最大特征输出等于输入 Yann LeCun&Bengio, Hinton 对无监督学习的看法. 目录: AE 模型原…...

Modern C++ std::variant的实现原理

前言 std::variant是C17标准库引入的一种类型,用于安全地存储和访问多种类型中的一种。它类似于C语言中的联合体(union),但功能更为强大。与联合体相比,std::variant具有类型安全性,可以判断当前存储的实际…...

⭐北邮复试刷题LCR 018. 验证回文串__双指针 (力扣119经典题变种挑战)

LCR 018. 验证回文串 给定一个字符串 s ,验证 s 是否是 回文串 ,只考虑字母和数字字符,可以忽略字母的大小写。 本题中,将空字符串定义为有效的 回文串 。 示例 1: 输入: s “A man, a plan, a canal: Panama” 输出: true 解释…...

C++面试:数据库的权限管理数据库的集群和高可用

目录 一、数据库的权限管理 1. 用户和角色管理 用户管理 实例举例(以MySQL为例): 角色管理 实例举例(以MySQL为例): 总结 2. 权限和授权 用户和角色管理 用户管理 角色管理 权限和授权 权限 授…...

个人搭建部署gpt站点

2024搭建部署gpt 参照博客 https://cloud.tencent.com/developer/article/2266669?areaSource102001.19&traceIdRmFvGjZ9BeaIaFEezqQBj博客核心点 准备好你的 OpenAI API Key; 点击右侧按钮开始部署: Deploy with Vercel,直接使用 Github 账号登…...

samber/lo 库的使用方法: condition

samber/lo 库的使用方法: condition samber/lo 是一个 Go 语言库,使用泛型实现了一些常用的操作函数,如 Filter、Map 和 FilterMap。汇总目录页面 这个库函数太多,因此我决定按照功能分别介绍,本文介绍的是 samber/l…...

Chrome插件精选 — 缓存清理

Chrome实现同一功能的插件往往有多款产品,逐一去安装试用耗时又费力,在此为某一类型插件挑选出比较好用的一款或几款,尽量满足界面精致、功能齐全、设置选项丰富的使用要求,便于节省一个个去尝试的时间和精力。 1. Chrome清理大师…...

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

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

每日shell脚本之超级整合程序3.0

每日shell脚本之超级整合程序3.0 本期带来之前的升级版2.0整合脚本程序,学习工作小利器,同时模块化构建方便二次开发。 上图 上源码 #!/usr/bin/bash # *******************************************# # * CDDN : M乔木 # # * qq邮箱 …...

Docker介绍与使用

Docker介绍与使用 目录: 一、Docker介绍 1、Docker概述与安装 2、Docker三要素 二、Docker常用命令的使用 1、镜像相关命令 2、容器相关命令 三、Docker实战之下载mysql、redis、zimg 一、Docker介绍 Docker是一个开源的应用容器引擎,让开发者可以打包…...

Gin框架: 使用go-ini配置参数与不同环境下的配置部署

关于 INI 配置文件与go-ini 1 )概述 在INI配置文件中可以处理各种数据的配置INI文件是一种简单的文本格式,常用于配置软件的各种参数go-ini 是地表 最强大、最方便 和 最流行 的 Go 语言 INI 文件操作库 Github 地址:https://github.com/go-…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...

佰力博科技与您探讨热释电测量的几种方法

热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践

作者:吴岐诗,杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言:融合数据湖与数仓的创新之路 在数字金融时代,数据已成为金融机构的核心竞争力。杭银消费金…...

LabVIEW双光子成像系统技术

双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制,展现出显著的技术优势: 深层组织穿透能力:适用于活体组织深度成像 高分辨率观测性能:满足微观结构的精细研究需求 低光毒性特点:减少对样本的损伤…...

c++第七天 继承与派生2

这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分:派生类构造函数与析构函数 当创建一个派生类对象时,基类成员是如何初始化的? 1.当派生类对象创建的时候,基类成员的初始化顺序 …...

Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案

在大数据时代,海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构,在处理大规模数据抓取任务时展现出强大的能力。然而,随着业务规模的不断扩大和数据抓取需求的日益复杂,传统…...

【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制

目录 节点的功能承载层(GATT/Adv)局限性: 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能,如 Configuration …...

前端中slice和splic的区别

1. slice slice 用于从数组中提取一部分元素,返回一个新的数组。 特点: 不修改原数组:slice 不会改变原数组,而是返回一个新的数组。提取数组的部分:slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...