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

news/发布时间2024/6/17 15:37:19

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

答:

(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://www.bcls.cn/HAFI/2125.shtml

如若内容造成侵权/违法违规/事实不符,请联系编程老四网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

提升网络质量:UDPspeeder 实现网络优化与提速

提升网络质量:UDPspeeder 实现网络优化与提速 背景与意义原理与功能使用方法未来展望相关链接服务 在当今高度互联的网络环境下,网络质量的优化和提速对于用户体验至关重要。针对高延迟和丢包率较高的网络链路,UDPspeeder 提供了一种前向纠错…

Vue3学习——标签的ref属性

在HTML标签上&#xff0c;可以使用相同的ref名称&#xff0c;得到DOM元素ref放在组件上时&#xff0c;拿到的是组件实例&#xff08;组件defineExpose暴露谁&#xff0c;ref才可以看到谁&#xff09; <script setup lang"ts"> import RefPractice from /compo…

大数据02-数据仓库

零、文章目录 大数据02-数据仓库 1、数据仓库介绍 &#xff08;1&#xff09;基本概念 数据仓库&#xff0c;英文名称为Data Warehouse&#xff0c;可简写为DW或DWH。数据仓库的目的是构建面向分析的集成化数据环境&#xff0c;为企业提供决策支持&#xff08;Decision Sup…

机器人初识 —— 电机传动系统

一、背景 波士顿动力公司开发的机器人&#xff0c;其电机传动系统是其高性能和动态运动能力的核心部分。电机传动系统通常包括以下几个关键组件&#xff1a; 1. **电动马达**&#xff1a;波士顿动力的机器人采用了先进的电动马达作为主要的动力源&#xff0c;如伺服电机或步进…

极狐GitLab 如何重置管理员密码

在之前安装极狐GitLab 的文章中提到&#xff0c;极狐GitLab 安装成功后&#xff0c;初始登录密码会放在 /etc/gitlab/initial_root_password 文件下&#xff0c;用户可以使用初始用户名 root 及文件内的初始密码即可登录极狐GitLab 实例。 但是有些情况下&#xff0c;可能会发…

抓包分析 TCP 协议

TCP 协议是在传输层中&#xff0c;一种面向连接的、可靠的、基于字节流的传输层通信协议。 环境准备 对接口测试工具进行分类&#xff0c;可以如下几类&#xff1a; 网络嗅探工具&#xff1a;tcpdump&#xff0c;wireshark 代理工具&#xff1a;fiddler&#xff0c;charles&…

Qt_快速安装指南

下载Qt在线安装程序&#xff08;不仔细介绍&#xff09;注册Qt账号&#xff08;不仔细介绍&#xff09;使用快速运行的命令&#xff0c;按照指定的下载地址下载 在Qt指定目录打开cmd命令窗口.\eqt-unified-windows-x86-4.0.1-1-online. exe --mirror https://mirrors.ustc.edu.…

数据结构——lesson3单链表介绍及实现

目录 1.什么是链表&#xff1f; 2.链表的分类 &#xff08;1&#xff09;无头单向非循环链表&#xff1a; &#xff08;2&#xff09;带头双向循环链表&#xff1a; 3.单链表的实现 &#xff08;1&#xff09;单链表的定义 &#xff08;2&#xff09;动态创建节点 &#…

C++中键盘响应结合OpenCV库进行图像灰度图、HSV图转换和亮度调整

QuickDemo.cpp #include<quick_opencv.h> //键盘响应 void QuickDemo::key_demo(Mat &image) {Mat dstMat::zeros(image.size(),image.type());while (true) {char c waitKey(100);if (c 27) {//key #esc,退出break;}if (c 49) {//key #1,按键1&#xff0c;打印y…

挑战杯 地铁大数据客流分析系统 设计与实现

文章目录 1 前言1.1 实现目的 2 数据集2.2 数据集概况2.3 数据字段 3 实现效果3.1 地铁数据整体概况3.2 平均指标3.3 地铁2018年9月开通运营的线路3.4 客流量相关统计3.4.1 线路客流量排行3.4.2 站点客流量排行3.4.3 入站客流排行3.4.4 整体客流随时间变化趋势3.4.5 不同线路客…

3DSC特征描述符、对应关系可视化以及ICP配准

一、3DSC特征描述符可视化 C #include <pcl/point_types.h> #include <pcl/point_cloud.h> #include <pcl/search/kdtree.h> #include <pcl/io/pcd_io.h> #include <pcl/features/normal_3d_omp.h>//使用OMP需要添加的头文件 #include <pcl…

微信小程序引入官方《评价组件》的一些坑点

作为微信小程序开发者&#xff0c;多少有些想对其吐槽的冲动。文档是多&#xff0c;却混乱、自相矛盾等等。 这次遇到的坑就是官方的《评价组件》&#xff0c;原本引入该组件是为了增加用户体验&#xff0c;结果却不如人意。 按官方文档引入组件&#xff08;代码层面的引入&a…

Unity设备分级策略

Unity设备分级策略 前言 之前自己做的设备分级策略&#xff0c;在此做一个简单的记录和思路分享。希望能给大家带来帮助。 分级策略 根据拟定的评分标准&#xff0c;预生成部分已知机型的分级信息&#xff0c;且保存在包内&#xff1b;如果设备没有被评级过&#xff0c;则优…

学习如何在js中指定按照数组中某一个值排序sort方法

学习如何在js中指定按照数组中某一个值排序sort方法 定义和用法排序数组按升序对数组中的数字进行排序按降序对数组中的数字进行排序获取数组中的最小值获取数组中的最大值获取数组中的最大值按字母顺序对数组进行排序&#xff0c;然后反转排序项的顺序&#xff08;降序&#x…

如何选择最适合的图纸加密软件?用户体验及性价比

安秉网盾图纸加密软件是一款功能强大的图纸加密工具&#xff0c;具有以下特点和优势&#xff1a; 全盘加密&#xff1a;安秉网盾采用先进的加密算法&#xff0c;能对文件、文件夹、磁盘等数据进行全面加密&#xff0c;确保数据在存储和传输过程中的安全性。 监控与审计&#…

open3d k-means 聚类

k-means 聚类 一、算法原理1、介绍2、算法步骤 二、代码1、机器学习生成kmeans聚类2、点云学习生成聚类 三、结果1、原点云2、机器学习生成kmeans聚类3、点云学习生成聚类 四、相关链接 一、算法原理 1、介绍 K-means聚类算法是一种无监督学习算法&#xff0c;主要用于数据聚…

[嵌入式系统-28]:开源的虚拟机监视器和仿真器:QEMU(Quick EMUlator)与VirtualBox、VMware Workstation的比较

目录 一、QEMU概述 1.1 QEMU架构 1.2 QEMU概述 1.3 什么时候需要QEMU 1.4 QEMU两种操作模式 1.5 QEMU模拟多种CPU架构 二、QEMU与其他虚拟机的比较 2.1 常见的虚拟化技术 2.1 Linux KVM 2.2 Windows VirtualBox 2.3 Windows VMware workstation 三、VirtualBox、VM…

elementui 中el-date-picker 选择年后输出的是Wed Jan 01 2025 00:00:00 GMT+0800 (中国标准时间)

文章目录 问题分析 问题 在使用 el-date-picker 做只选择年份的控制器时&#xff0c;出现如下问题&#xff1a;el-date-picker选择年后输出的是Wed Jan 01 2025 00:00:00 GMT0800 (中国标准时间)&#xff0c;输出了两次如下 分析 在 el-date-picker 中&#xff0c;我们使用…

FISCO BCOS(十七)利用脚本进行区块链系统监控

要利用脚本进行区块链系统监控&#xff0c;你可以使用各种编程语言编写脚本&#xff0c;如Python、Shell等 利用脚本进行区块链系统监控可以提高系统的稳定性、可靠性&#xff0c;并帮助及时发现和解决潜在问题&#xff0c;从而确保区块链网络的正常运行。本文可以利用脚本来解…

day09-MongoDB

文章目录 day09-MongoDB一、回顾1.1. 行为实战核心要点说明 二、评论系统2.1 MongoDB2.1.1 MongoDB简介①简介②体系结构与术语 2.1.2 安装与连接2.1.3 Springboot整合MongoDB①引入依赖②添加服务端配置③准备实体类④测试-新增⑤测试-查询⑥测试-更新测试-删除 2.2 app端评论…
推荐文章