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

news2024/12/23 14:28:44

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

答:

(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.coloradmin.cn/o/1461994.html

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

相关文章

【前端】夯实基础 css/html/js 50个练手项目(持续更新)

文章目录 前言Day 1 expanding-cardsDay 2 progress-steps 前言 发现一个没有用前端框架的练手项目,很适合我这种纯后端开发夯实基础,内含50个mini project,学习一下,做做笔记。 项目地址:https://github.com/bradtr…

纯血鸿蒙来画龙!基于HarmonyOS ArkTS来操作SVG图片

大家好,龙年报喜,大地回春,作为程序员,以代码之名,表达对于龙年的祝福。本节将演示如何在基于HarmonyOS ArkTS的Image组件来实现画一条中国龙,祝大家“码”上“鸿”福到! 本文涉及的所有源码&a…

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

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

Stable diffusion UI 介绍-文生图

1.提示词: 你希望图中有什么东西 2.负面提示词:你不希望图中有什么东西 选用了什么模型 使用参数 1.采样器 sampling method 使用什么算法进行采样 2.采样迭代步数 sampling steps 生成图像迭代的步数,越多越好,但是生成速度越大越…

qt-OPENGL-星系仿真

qt-OPENGL-星系仿真 一、演示效果二、核心程序三、下载链接 一、演示效果 二、核心程序 #include "model.h"Model::Model(QOpenGLWidget *_glWidget) { glWidget _glWidget;glWidget->makeCurrent();initializeOpenGLFunctions(); }Model::~Model() {destroyV…

如何添加或编辑自定义WordPress侧边栏

WordPress侧边栏是许多WordPress网站上的固定装置。它为您的内容提供了一个垂直空间,您可以在其中帮助读者导航、增加电子邮件列表或社交关注、展示广告等。 因为它是许多WordPress网站不可或缺的一部分,所以我们认为侧边栏值得拥有自己的大型指南。在这…

JS前端高频面试

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

五种多目标优化算法(MOGWO、MOJS、NSWOA、MOPSO、MOAHA)性能对比,包含6种评价指标,9个测试函数(提供MATLAB代码)

一、5种多目标优化算法简介 1.1MOGWO 1.2MOJS 1.3NSWOA 1.4MOPSO 1.5MOAHA 二、5种多目标优化算法性能对比 为了测试5种算法的性能将其求解9个多目标测试函数(zdt1、zdt2 、zdt3、 zdt4、 zdt6 、Schaffer、 Kursawe 、Viennet2、 Viennet3)&#xff0…

二分图模型即状态整理

二分图首先是个无向图。 主要有以下几类问题: 1.二分图,不存在奇数环,染色法不存在矛盾 2.匈牙利算法,匹配,最大匹配,匹配点,增广路径 3.最小点覆盖,最大独立集,最小路径…

支付宝小程序实现类似微信多行输入

先来看看微信小程序输入框展示效果: 输入超过 8 行的时候会出现滚动,这样做的好处就是输入框不会直接顶到页面最顶部。 支付宝小程序实现多行输入框:使用textarea多行输入框实现 思路一: textarea 标签设置max-height, 标签自…

2024龙年特别篇 -- 魔法指针 之 assert断言 传址调用 传值调用

你是否为 assert断言,传址调用,传值调用而进一步加深印象,接下来就让白子寰同学为你详细讲解!!! 目录 assert断言 概念 assert介绍 #define NDEBUG的使用 注意事项 传值调用 VS 传址调用 传值调用…

SpringMVC(十二)SpringMVC执行流程

一、SpringMVC常用组件 DispatcherServlet:前端控制器,不需要工程师开发,由框架提供 作用:统一处理请求和响应,整个流程控制的中心,由它调用其它组件处理用户的请求 HandlerMapping:处理器映射器,不需要工程师开发,由框架提供 作用:根据请求的url、method等信息查找Han…

鸿蒙会成为安卓的终结者吗?

随着近期鸿蒙OS系统推送测试版的时间确定,关于鸿蒙系统的讨论再次升温。 作为华为自主研发的操作系统,鸿蒙给人的第一印象是具有颠覆性。 早在几年前,业内就开始流传鸿蒙可能会代替Android的传言。毕竟,Android作为开源系统&…

【IP】固定虚拟机的IP地址

查询网关地址 在windows的cmd中输入ipconfig,可以查看对应的网关地址 查看虚拟机ip地址 # 查看虚拟机的ip地址 ifconfig 切换到网络相关的文件夹 cd /etc/sysconfig/network-scripts编辑ip相关配置文件 # 不同的centos版本对应的文件名不同,但是前…

npm run dev和npm run serve两个命令的区别

npm run dev和npm run serve两个命令的区别 前端开发过程中运行Vue项目的时候,有时候使用npm run serve命令可以启动项目,有时候却会报错;有时候使用npm run dev命令可以启动项目,有时候却也会报错。是什么原因造成这种情况呢&am…

【OpenSSH+Jenkins搭建项目自动化部署】

OpenSSHJenkins搭建项目自动化部署 一、Windows安装OpenSSH1.下载2.解压3.安装4.启停服务5.SSH免密登录 二、Jenkins安装1.下载2.安装启动3.登录 三、项目自动化部署1.SSH配置2.项目配置3.权限控制 一、Windows安装OpenSSH 1.下载 https://github.com/PowerShell/Win32-0penS…

Redis篇----第六篇

系列文章目录 文章目录 系列文章目录前言一、Redis 的持久化机制是什么?各自的优缺点?二、Redis 常见性能问题和解决方案:三、redis 过期键的删除策略?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章…

ORM中常用的字段和参数,正反向概念

django表查询测试环境搭建 首先,在此之前我们先来回顾一下之前学习的orm内容 1. django自带一个小型的sqlite3的小型数据库 但是这个数据库的功能非常有限,并且针对日期类型的数据兼容性很差 2. 切换数据库数据(MySQL) 2.1 在django1.x版本中你需要在_…

win10编译openjdk源码

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

简单mock server模拟用户请求给小程序提供数据

整理小程序代码时发现一此小程序离开了mock-server基本上没有办法显示了,因此用node,express来满足给小程序提供演示数据的功能 const express require(express); const { createCanvas, Image } require(canvas); const fs require(fs); const path require(path);…