DJ15 8086 中断程序设计

news2024/11/26 4:29:16

目录

一、8086/8088 中断系统

1. 8086/8088 中断源类型

2. 中断向量表

3. CPU 中断类型码的获取方法

二、8259A 的引线及内部结构

1. 外部引线

2. 内部结构

3. 与系统总线的连接方式

4. 级联连接方式

5. 中断触发方式

三、8259A 的工作过程

四、8259A 的工作方式

1. 中断优先级控制方式

2. 中断嵌套方式

3. 中断结束处理方式

4. 中断源屏蔽方式

五、8259A 的控制命令

1. 8259A 内部寄存器的寻址方式

2. 8259A 的初始化顺序

3. 8259A 的初始化命令字 ICW

4. 8259A 初始化编程

5. 8259A 操作命令字

6. 8259A 编程

六、中断程序设计概述


一、8086/8088 中断系统

1. 8086/8088 中断源类型

对内部中断来说,中断的控制完全是在 CPU 内部完成的;而对于外部中断,则是利用 CPU 的两条中断输入信号线 INTR 和 NMI 来告诉 CPU 已发生了中断事件。

(1)INTR 可屏蔽中断输入信号

CPU 能否响应 INTR 信号受到中断允许标志寄存器 IF 的控制:

  • 当 IF = 1 时,CPU 在一条指令执行完后对 INTR 作出响应;
  • 当 IF = 0 时,CPU 不予响应,该中断请求被屏蔽。

(2)NMI 非屏蔽中断请求输入信号

上升沿有效。NMI 不受标志位 IF 的约束,只要 CPU 在正常地执行程序,它就一定会响应 NMI 的请求。

2. 中断向量表

典例:将用户定义的中断服务程序入口地址放入向量表的方法。

题:将类型码为 48H 的中断服务子程序 TIMER 的中断向量放入向量表。

3. CPU 中断类型码的获取方法

(1)内部中断和 NMI 中断

此类中断没有 INTA 总线周期,中断类型码固定或者由指令给出。

(2)可屏蔽中断

二、8259A 的引线及内部结构

1. 外部引线

2. 内部结构

图示

 

3. 与系统总线的连接方式

(1)缓冲方式

(2)非缓冲方式

4. 级联连接方式

注意:图中 SP/EN 的连接只针对非缓冲方式。

5. 中断触发方式

(1)边沿触发方式

(2)电平触发方式

三、8259A 的工作过程

(2)综合当前中断服务寄存器 ISR 和中断屏蔽寄存器 IMR 的状态,找出最高优先权的中断请求,并且判断是否能够发出中断请求。若能则向 CPU 发出信号 INT,请求中断服务。

(3)在多级级联的情况下,主片收到第一个 INTA 脉冲后,通过 CAS2 ~ CAS0 发出从片编码。所有从片均将收到该编码,并且与自身编码进行比较。若相等,则该片在收到第二个 INTA 脉冲后发出中断类型码。

四、8259A 的工作方式

1. 中断优先级控制方式

(1)固定优先级方式

(2)自动循环优先级方式

(3)特殊循环优先级方式

用控制命令指定最低优先级的中断源。

2. 中断嵌套方式

(1)普通全嵌套方式

(2)特殊全嵌套方式

(3)对比

3. 中断结束处理方式

(1)自动中断结束方式

(2)正常中断结束方式

(3)特殊中断结束方式

主要用于特殊循环方式及特殊屏蔽方式下的中断结束,即当前执行的中断程序所对应的 ISR 中需要复位的位不一定是所有置 1 的优先级最高位。

(4)小结

不管是正常中断结束方式,还是特殊中断结束方式,在一个中断服务子程序结束时,对于级联使用的 8259A 都必须发两次中断结束命令,一次是发给主片的,另一次则是发给从片的。

4. 中断源屏蔽方式

(1)普通屏蔽方式

(2)特殊屏蔽方式

PPT:

五、8259A 的控制命令

8259A 是可编程中断控制器,在它工作之前,必须通过软件向其写入控制命令的方法来让它工作在人们所希望的状态下,这就是 8259A 的编程。控制命令分为:

  • 初始化命令字 ICW(Initialization Command Word)
  • 操作命令字 OCW(Operation Command Word)

写入 8259A 后被保存在内部的 ICW 和 OCW 寄存器组中。相应地,对 8259A 的编程也分为初始化编程和操作方式编程两个步骤:

  • 初始化编程:由 CPU 向 8259A 送 2~4 个字节的初始化命令字 ICW。在8259A 工作之前,必须写入初始化命令字使其处于准备就绪状态。
  • 操作方式编程:由 CPU 向 8259A 送 3 个字节的操作命令字 OCW,以规定 8259A 的操作方式。OCW 可在 8259A 初始化以后的任何时刻写入。

1. 8259A 内部寄存器的寻址方式

当对 8259A 进行写时,若 I/O 地址为奇数,则写的对象将包括 4 个寄存器(ICW2、ICW3、ICW4 和 OCW1),即一个 I/O 地址对应了 4 个寄存器,为了区分到底写入的是哪个寄存器,8259A 规定初始化的顺序必须严格按照规定的顺序依次写入,即根据顺序来区分不同的寄存器。

2. 8259A 的初始化顺序

3. 8259A 的初始化命令字 ICW

(1)ICW1:初始化字(确定写入字节数 2~4)

写 ICW1 意味着重新初始化 8259A,ICW1 决定了写几次寄存器,即写几个字节。

(2)ICW2:中断类型码

ICW2 为中断类型码寄存器,用于存放中断类型码。CPU 响应中断时,8259A 将该寄存器内容放到数据总线上供 CPU 读取。

初始化时只需设定中断类型码的高 5 位,低 3 位由 8259A 在中断响应时根据中断源的序号自动填入。

举例

(3)ICW3:级联控制字

ICW3 仅在多片 8259A 级联时需要写入。主片的 8259A 的 ICW3 与从片的 ICW3 在格式上不同。ICW3 应紧接着 ICW2 写入同一 I/O 地址中。

举例

(4)ICW4:方式命令字(主要完成主从设定)

ICW4 紧跟在 ICW3 之后写入同一 I/O 地址中。

缓冲方式与非缓冲方式:

4. 8259A 初始化编程

举例:以微型计算机中使用的单片 8259A 为例,试对其进行初始化设置。在微型计算机中,8259A 的 ICW1 和 ICW4 的端口地址分别为20H、21H。

初始化设置的程序段如下:

5. 8259A 操作命令字

(1)OCW1:中断屏蔽字

OCW1 用于决定中断请求线 IR 被屏蔽否。初始时为全 0(全部允许中断)。

(2)OCW2:中断结束和优先级方式控制字

OCW2 与 OCW3 共用一个端口地址,但其特征位 D4D3=00,因此不会发生混淆。

SL = 1,用于特殊循环优先级方式;SL = 0,用于普通循环优先级方式。

(3)OCW3:屏蔽方式和状态读出控制字

三大功能:

6. 8259A 编程

举例

两片 8259A 级联,提供 15 级向量中断。CAS2 ~ CAS0作为互连线,从片 8259A 的 INT 直接连到主片 8259A 的 IR2 上。

15 级向量中断:

编程

(1)主片 8259A 初始化编程

(2)从片 8259A 初始化编程

六、中断程序设计概述

(1)中断服务程序主体

(2)主程序设置中断向量

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

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

相关文章

K. The Robot(思维 + 看数据范围)

Problem - 1468K - Codeforces 有一个机器人在一个格子场上,这个格子场在各个方向都是无尽的。最初,机器人位于坐标为(0,0)的单元中。他将执行由一串大写拉丁字母 "L"、"R"、"D"、"U "描述的命令。当一个命令被…

使用凸优化来调整基于毫米波的无线通信参数(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 💥1 概述 随着通信产业尤其是个人移动通信的高速发展,无线电频谱的低端频率已趋饱和,即使是采用高斯滤波最小频移…

CentOS7安装runc

CentOS7安装runc前言一、runc简介二、安装runc1.安装 libseccomp-dev2.获取runc源代码2.1先创建 $GOPATH/src/github.com 目录2.2go get下载源代码2.3checkout最新的代码2.4编译并安装runc2.5查看runc版本总结前言 本文记录CentOS7安装runc的过程。 一、runc简介 RunC 是一个…

UWB定位算法介绍

典型的无线定位方法主要有四种: 1.基于信号到达时间(TOA); 2.基于信号到达时间差(TDOA); 3.基于信号到达角度(AOA) 4.基于接信号强度(RSSI) 各自有着不同的优势和应用范围。 定位时一分为两步,第一步:测量时间、角度、信号强度; 第二步…

FFmpeg基础: YUV像素格式介绍和使用

文章目录YUV像素格式YUV采样YUV格式分类YUV存储模式FFmpeg读取YUV数据YUV和RGB转换YUV像素格式 在图片中我们一般都是通过RGB(红-绿-蓝)格式来表示一个像素点。而在视频当中为了兼容黑白和彩色视频我们通过YUV来表示一个像素点,YUV中Y表示像素点的灰度(也就是亮度分…

【nowcoder】笔试强训Day6

目录 一、单选题 二、多选题 三、编程题 3.1不要二 3.2 把字符串转成整数 一、单选题 1.下面哪段程序能够正确的实现了GBK编码字节流到UTF-8编码字节流的转换: A dstString.frombytes(src,”GBK”).getbytes(“UTF-8”) B dstnew String (src,”GBK”).getb…

计算机视觉与图形学-神经渲染专题-非刚体NeRF

《Fast Non-Rigid Radiance Fields from Monocularized Data》链接:https://graphics.tu-bs.de/publications/kappel2022fast摘要单目动态场景下的 3D 重建和新颖视图合成最近受到越来越多的关注。现有工作在合成给定和前向拍摄的真实世界数据下可以合成较好的结果&…

iPhone如何恢复丢失/消失的通讯录联系人,试试这6 种恢复方案

“在我更新 iOS 后,数百个联系人从我的 iPhone 上消失了。我试图从 iCloud 恢复我的联系人存档。我所看到的只是“没有可用的档案”。请来人帮忙!” 每当发布新的 iOS 版本时,许多 iPhone 用户都会争先恐后地开始更新。然而,他们…

【Python学习记录】matplotlib绘图基本配置

✨ 博客主页:小小马车夫的主页 ✨ 所属专栏:Python学习记录 文章目录前言1、设置颜色2、设置每个点marker3、设置标题、X轴、Y轴文字4、设置刻度5、同一图中画多条线、绘制图例6、设置图层顺序7、多个图的设置subplot8、保存图片总结前言 matplotlib是p…

python中文编码json中文输出问题

python2.x版本的字符编码有时让人很头疼,遇到问题,网上方法可以解决错误,但对原理还是一知半解,本文主要介绍 python 中字符串处理的原理,附带解决 json 文件输出时,显示中文而非 unicode 问题。首先简要介…

人机交互-广州DACAI触摸屏开发中遇到的一些(屏幕和编程)问题

目录 背景 一、屏幕相关 1、厂家给的指令集资料可能有错误,请以软件VisualTFT中的指令助手为准。 2、屏幕程序下载方式 3、SD卡文件格式问题 4、画面id的问题 巨坑!!! 5、子画面变暗的问题 6、 VisualTFT自带的键盘问题 …

【openGauss】一键编译openGauss3.1+dolphin,体验新增的mysql兼容特性

前言 前两天写了一篇openGauss3.1关于mysql的相关特性,但由于openGauss官网提供下载的版本还是9月30号第一次发布的版本,很多特性都还没合入,所以不少爱好者不能轻易体验到。 虽然openGauss已经提供了“一键式编译脚本”,但是还是得做一些前…

Linux系统下的常用文件目录指令

文件目录指令 pwd (Print Working Directory):显示当前工作目录的绝对路泾 ls (list) 基本语法:ls[选项][目录或是文件]常用选项 -a:显示当前目录所有的文件和目录,包括隐藏的。 -l:以列表的方式显示信息 cd (change directory) :切换到指定目录 基本语法:cd参数理…

5G无线技术基础自学系列 | 5G网络速率问题分析

素材来源:《5G无线网络规划与优化》 一边学习一边整理内容,并与大家分享,侵权即删,谢谢支持! 附上汇总贴:5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 前面介绍了接入性和移动性两类问题的处…

node.js+uni计算机毕设项目湖南工商大学财务信息查询小程序(程序+小程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置: Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等…

计网第三章.数据链路层—封装成帧、差错检测

以下是湖科大计算机网络公开课的笔记 1 . 数据链路层概述 1.1 一些概念 链路(Link)就是从一个结点到相邻结点的一段物理线路,而中间没有任何其他的交换结点 数据链路(Data Link) 是指实现通信协议的硬件和软件加到…

【自然语言处理】最大熵马尔可夫模型

有任何的书写错误、排版错误、概念错误等,希望大家包含指正。 由于这部分的参考资料比较少,网上大部分资料重复且不完整,对于一些关键计算没有推导,所以这里我主要讨论几篇论文和讲义。但是这些论文和讲义之间也有些许差别&#…

算法CPP时间复杂度

观察数据生成器可以发现对于每次操作均有 。 考虑将这些三元组想象成空间直角坐标系中 为对顶点的长方体。 将操作分成两部分,一部分是对 轴同时操作的,可以一开始就用前缀 统计完,将长方体变 成一个底面为阶梯状的直棱柱。另一部分是对 或…

【网络工程】9、实操-万达酒店综合项目(三)

接上篇《8、实操-万达酒店综合项目(三)》 之前我们按照项目要求进行模拟拓扑的构建实操,完成了办公区部分的网络配置,本篇我们来继续完成其他区域的网络配置。 一、总体架构情况 按照之前项目需求的拓扑图: 我们已经…

爱了爱了,Spring Cloud Alibaba内部微服务架构笔记真的太牛了

现如今微服务架构十分流行,而采用微服务构建系统也会带来更清晰的业务划分和可扩展性。同时,支持微服务的技术栈也是多种多样的,本文主要讲述我们为什么选择Spring Cloud和它的技术概要。 为什么微服务架构需要Spring Cloud 简单来说&#x…