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

微机原理与接口技术——中断系统与可编中断控制芯片8259A

目录

一、8259A 芯片介绍

二、8259A 的内部结构和引脚

三、8259A 的中断工作过程

四、8259A 的工作方式

五、8259A 的编程

六、外部中断服务程序

一、8259A 芯片介绍

Intel 8259A 是可编程中断控制器,可用于管理 Intel 8080/8085、8086/8088、80286/80386 的可屏蔽中断。其主要功能包括:

1.具有 8 级优先权控制,通过级联可扩展至 64 级。

2.每一级均可通过编程实现屏蔽或开放。

3.能向 CPU 提供相应的中断类型号。

4.可通过编程选择不同的工作方式。

二、8259A 的内部结构和引脚

1.中断控制:

(1)中断请求寄存器 IRR:保存 8 条外设中断请求信号 IR0~IR7 的请求状态,DI=1 表示 IRi 引脚有中断请求,DI=0 表示无请求。

(2)中断服务寄存器 ISR:保存正在被 8259A 服务着的中断状态,DI=1 表示 IRi 中断正在服务中,DI=0 表示没有被服务。

(3)中断屏蔽寄存器 IMR:保存对中断请求信号 IRi 的屏蔽状态,DI=1 表示 IRi 中断被屏蔽(禁止),DI=0 表示 IRi 中断被开放(允许)。

2.读写控制

3.中断级连:

一个系统中 8259A 可以级连,有一个主 8259A 和若干个(最多 8 个)从 8259A。

级连时,主 8259A 的三条级连线 CAS0~CAS2 作为输出线,连至每个从 8259A 的 CAS0~CAS2;每个从 8259A 的中断请求信号 INT,连至主 8259A 的一个中断请求输入端 IRi;主 8259A 的 INT 线连至 CPU 的中断请求输入端 INTR;CPU 的中断响应输出端 INTA 连至主 8259A 和从 8259A 的 INTA端。SP/EN 在非缓冲方式下规定该 8259A 是主片(SP=1)还是从片(SP*=0)。

4.引脚功能,

例如中断请求输入线 IR7~IR0 可设置为上升沿或高电平触发中断请求等。

三、8259A 的中断工作过程

中断响应周期包含两个阶段:

1.第一个响应周期:数据线浮空,通知发中断请求的设备,CPU 准备响应中断,应准备好中断类型号。

2.第二个响应周期:被响应的外设将一个字节的中断类型号送数据线,CPU 读取类型号。

四、8259A 的工作方式

1.设置优先权方式:

(1)普通全嵌套方式:中断优先权顺序固定不变,从高到低依次为 IR0、IR1、IR2……IR7。中断请求后,8259A 对当前请求中断中优先权最高的中断 IRi 予以响应,将其向量号送上数据总线,对应 ISR 的 DI 位置位,直到中断结束(ISR 的 DI 位复位)。在 ISR 的 DI 位置位期间,禁止再发生同级和低级优先权的中断,但允许高级优先权中断的嵌套。

(2)特殊全嵌套方式:允许响应同级中断请求。

(3)优先权自动循环方式:响应后,优先权最低;开始优先权 IR0 最高,IR7 最低。

(4)优先权特殊循环方式:响应后,优先权最低;开始最低优先权由用户指定。

2.结束中断处理方式:

8259A 利用中断服务寄存器 ISR 判断中断是否结束,某位为 1 表示正在进行中断服务,该位为 0 表示中断结束。

(1)自动中断结束方式(AEOI):CPU 一旦进入中断响应总线周期,8259A 就自动将 ISR 相应位清 0,常用于不允许中断嵌套或保证不出现中断重复嵌套的场合。

(2)普通中断结束方式:配合普通全嵌套方式使用,当 CPU 用输出指令往 8259A 发出普通中断结束 EOI 命令时,8259A 就会把所有正在服务的中断中优先权最高的 ISR 位复位。

(3)特殊中断结束方式:需指定结束的引脚。

3.屏蔽中断源方式:

(1)普通屏蔽方式:将 IMR 的 DI 位置 1,则对应的中断 IRi 被屏蔽,该中断请求不能从 8259A 送到 CPU;如果 IMR 的 DI 位置 0,则允许 IRi 中断产生。

(2)特殊屏蔽方式:执行较高级中断服务时,开放较低级的中断请求。

4.中断触发方式:

(1)边沿触发方式:将中断请求输入端出现的上升沿作为中断请求信号的触发方式。

(2)电平触发方式。

5.数据线连接方式:

(1)缓冲方式:8259A 的数据线需加缓冲器予以驱动,SP*/EN 引脚作为输出端,作为输出的 EN 使用时,作为数据总线缓冲器的使能信号。

(2)非缓冲方式。

五、8259A 的编程

1.初始化编程:

8259A 开始工作前,必须进行初始化编程,给 8259A 写入初始化命令字 ICW(ICW1~ICW4),ICW1 和 ICW2 是必须写的,ICW3 和 ICW4 由工作方式决定。初始化流程需要按照 ICW1~ICW4 的顺序写入。

2.中断操作编程:

在 8259A 工作期间,可以写入操作命令字 OCW(OCW1~OCW3)将选定的操作传送给 8259A,使之按新的要求工作,还可以读取 8259A 的信息,了解其工作状态。OCW 写入时没有顺序要求。

3.读取状态字:

CPU 可读出 IRR、ISR、IMR 和查询字。读 IRR、ISR 和查询字时,A0 为低电平,在读之前需先设定要读的寄存器,由 OCW3 中 RR 和 RIS 位设定读取 IRR 或 ISR,由 OCW3 中 P 位设定读取查询字。读 IMR 时,A0 为高电平时,可直接读取。

六、外部中断服务程序

编写主程序时,需注意修改中断向量、控制 CPU 的中断允许标志、设置 8259A 的中断屏蔽寄存器。编写外部可屏蔽中断服务程序时,需注意发送中断结束命令。

在实际应用中,需要根据具体的系统需求和硬件连接情况,合理设置 8259A 的工作方式和编程参数,以实现高效、准确的中断管理和控制。同时,要注意中断处理程序的编写,确保其能够正确处理中断请求,并及时进行中断结束操作,以避免中断嵌套等问题的出现。如果涉及到多个 8259A 芯片的级联,还需要正确配置主从片之间的连接和通信。具体的编程和应用细节可能会因不同的微机系统和应用场景而有所差异。

相关文章:

微机原理与接口技术——中断系统与可编中断控制芯片8259A

目录 一、8259A 芯片介绍 二、8259A 的内部结构和引脚 三、8259A 的中断工作过程 四、8259A 的工作方式 五、8259A 的编程 六、外部中断服务程序 一、8259A 芯片介绍 Intel 8259A 是可编程中断控制器,可用于管理 Intel 8080/8085、8086/8088、80286/80386 的…...

【JavaEE初阶 — 多线程】Thread类的方法&线程生命周期

目录 1. start() (1) start() 的性质 (2) start() 和 Thread类 的关系 2. 终止一个线程 (1)通过共享的标记结束线程 1. 通过共享的标记结束线程 2. 关于 lamda 表达式的“变量捕获” (2) 调用interrupt()方法 1. isInterrupted() 2. currentThread() …...

面试题分享11月7日

1、ThreadLocal 是什么 是 Java 中线程的本地方法变量,用来存储每个线程的私有数据,每个线程都有它的独立副本,相互隔离,互不影响 2、ThreadLocal 实现原理 每个 ThreadLocal 都有一个 ThreadLocalMap 对象,用来存储…...

数据结构_哈夫曼树及其应用

构造算法的例子 构造算法的实现 初始化&#xff0c;置权值 int i, m, s1, s2;m 2 * n - 1;for (i 1; i < m; i){HT[i].lch 0;HT[i].rch 0;HT[i].parent 0;}for (i 1; i < n; i){cin >> HT[i].weight;}合并结点 // 创建哈夫曼树for (i n 1; i < m; i){s1…...

从0开始学习机器学习--Day19--学习曲线

一般来说&#xff0c;如果一个算法的表现不理想&#xff0c;那么多半是因为出现了欠拟合或过拟合问题&#xff0c;这种时候我们要做的就是搞清楚出现的是偏差问题还是方差问题&#xff0c;亦或是二者皆有&#xff0c;这有助于我们精准定位问题所在。 之前&#xff0c;我们发现…...

2.索引:深入解析 B+ 树:原理、MySQL 应用及与其他数据结构的对比

B 树是一种高效的平衡树结构&#xff0c;在数据库和文件系统中被广泛应用&#xff0c;尤其在 MySQL 中&#xff0c;InnoDB 存储引擎通过 B 树实现索引结构&#xff0c;提升了大数据量条件下的查询性能。 本文将深入介绍 B 树的原理和设计特点&#xff0c;分析 MySQL 中使用 B …...

[全网最细数据结构完整版]第六篇:3分钟带你吃透栈并模拟实现

目录 1->栈的概念和结构 1.1栈的概念 1.2栈的结构 2->栈的实现 2.1定义关于栈的结构体和各种函数 2.2栈的初始化 STInit 函数 2.3栈的销毁 STDestroy 函数 2.4栈的插入操作 STPush 函数 2.5栈的判断是否为空操作 STEmpty 函数 2.6栈的删除操作 STPop 函数 2.7…...

如何在 Docker 容器中启动 X11 图形界面程序

如何在 Docker 容器中启动 X11 图形界面程序 在使用 Docker 时&#xff0c;我们通常会发现&#xff0c;容器中的图形应用没法直接显示到宿主机的界面上。不过&#xff0c;我们可以通过共享 X11 的 Unix 套接字&#xff0c;让容器把显示数据传递给宿主机的 X11 服务器&#xff…...

pycharm保存是自动格式化

在PyCharm中设置保存时自动格式化代码&#xff0c;可以按照以下步骤进行&#xff1a; 1. 打开设置 在Windows和Linux系统中&#xff0c;可以通过File&#xff08;文件&#xff09;->Settings&#xff08;设置&#xff09;打开设置窗口&#xff1b;在Mac系统中&#xff0c;…...

.netCore WebAPI中字符串加密与解密

In today’s digital landscape, securing sensitive information is more critical than ever. If you’re using ASP.NET Core, you might store configuration settings in appsettings.json. However, hardcoding sensitive data like connection strings or API keys in p…...

Next.js + Move 石头剪刀布

rock-paper-scissors 写在前面 本地 源码&#xff1a;https://github.com/zcy1024/SuiStudy/tree/main/rock-paper-scissors # 或其它等价的命令来安装依赖并将项目跑起来 pnpm install pnpm run dev # http://localhost:3000/在线&#xff08;如果没过期的话&#xff09; …...

[面试]关于Redis 的持久化你了解吗

Redis的持久化是指Redis服务器在关闭或重启时&#xff0c;将内存中的数据保存到磁盘上的一种机制。Redis支持多种持久化方式。 一、RDB&#xff08;Redis Database&#xff09;持久化 RDB持久化是Redis默认采用的持久化方式&#xff0c;它将Redis在某个时间点的数据保存到磁盘上…...

Systemd:tmpfiles

Systemd提供了一个结构化的可配置方法来管理临时文件和目录,即systemd-tmpfiles,可以创建、删除和管理临时文件的服务。 $ systemctl list-units --all | grep systemd-tmpfilessystemd-tmpfiles-clean.service load…...

【Flutter 内嵌 android 原生 View以及相互跳转】

Flutter 内嵌 android 原生 View以及相互跳转 一. 内嵌android 原生View二、android 与 flutter 相互跳转 一. 内嵌android 原生View 在android 工程的包名下&#xff0c;也可在MainActivity创建 android 原生view &#xff0c;继承PlatformView // 1.自定义textview public st…...

python externally-managed-environment 外部管理环境

https://realpython.com/python-virtual-environments-a-primer/?refyaolong.net#why-do-you-need-virtual-environments 简而言之&#xff0c; pip 默认会将您安装的所有外部包放置在 Python 安装路径/site-packages/ 的文件夹中一些Linux 和 macOS操作系统 预装了内部的 P…...

前端 | MYTED单篇TED词汇学习功能优化

文章目录 &#x1f4da;实现效果&#x1f407;before&#x1f407;after &#x1f4da;模块实现解析&#x1f407;html&#x1f407;css&#x1f407;javascript &#x1f4da;实现效果 &#x1f407;before 点击TED单篇词汇表按钮&#xff0c;选择对应TED打卡号&#xff0c;…...

64 mysql 的 表锁

前言 我们这里来说的就是 我们在 mysql 这边常见的 几种锁 行共享锁, 行排他锁, 表意向共享锁, 表意向排他锁, 表共享锁, 表排他锁 我们前面了解了行共享锁, 行排他锁, 表意向共享锁, 表意向排他锁 等等相关 我们这里 来看一下 表共享锁, 表排他锁 的获取, 以及 和 其他表级…...

【计网不挂科】计算机网络期末考试——【选择题&填空题&判断题&简述题】题库(1)

前言 大家好吖&#xff0c;欢迎来到 YY 滴计算机网络 系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 本博客主要内容&#xff0c;收纳了一部门基本的计算机网络题目&#xff0c;供yy应对期中考试复习。大家可以参考 欢迎订阅 YY滴其他专栏&#xff01;…...

ajax关于axios库的运用小案例

AJAX案例 图书管理 四大功能&#xff1a; 展示图书删除图书编辑图书信息新增图书 步骤 1.bootstrap弹窗来实现新增和编辑图书时出现的弹窗 有两种方案&#xff1a; a.可以用自带的属性来进行弹窗的显示和隐藏 b.可以通过JS进行控制&#xff0c;此操作可以进行自定义&am…...

微搭低代码入门01变量

目录 1 变量的定义2 变量的赋值3 变量的类型4 算术运算符5 字符串的连接6 模板字符串7 检查变量的类型8 解构赋值8.1 数组的解构赋值8.2 对象的解构赋值 9 类型转换9.1 转换为字符串9.2 转换为数字9.3 转换为布尔值 总结 好些零基础的同学&#xff0c;在使用低代码的时候&#…...

盘点2024年10款视频剪辑,哪款值得pick!!

在这个短视频盛行的时代&#xff0c;如何让我们的故事更生动有趣呢&#xff1f;那就要对短视频进行修饰了。这就需要借助视频剪辑工具&#xff1a;而一款好的工具不仅仅是视频的“美颜”&#xff0c;更是创意的灵魂所在&#xff01;想象一下&#xff0c;运用一款功能齐全的剪辑…...

苹果手机照片批量删除:一键清理,释放空间

在数字化时代&#xff0c;iPhone不仅是我们沟通的桥梁&#xff0c;也是记录生活的重要工具。然而&#xff0c;随着时间的积累&#xff0c;手机中的照片数量不断增加&#xff0c;不仅占用大量存储空间&#xff0c;也让设备变得缓慢。苹果手机照片批量删除成为了一个普遍的需求。…...

《AI 大模型:重塑软件开发新生态》

《AI 大模型&#xff1a;重塑软件开发新生态》 一、AI 大模型引领软件开发新潮流二、AI 大模型在软件开发中的优势&#xff08;一&#xff09;提高开发效率&#xff08;二&#xff09;减少错误与提升质量&#xff08;三&#xff09;激发创新与拓展功能 三、AI 大模型在软件开发…...

uniapp(API-Promise 化)

一、异步的方法&#xff0c;如果不传入 success、fail、complete 等 callback 参数&#xff0c;将以 Promise 返回数据异步的方法&#xff0c;且有返回对象&#xff0c;如果希望获取返回对象&#xff0c;必须至少传入一项 success、fail、complete 等 callback 参数&#xff0c…...

【考研数学 - 数二题型】考研数学必吃榜(数二)

数学二 suhan, 2024.10 文章目录 数学二一、函数❗1.极限1.1求常见极限1.2求数列极限1.2.1 n项和数列极限1.2.2 n项连乘数列极限1.2.3 递推关系定义的数列极限 1.3确定极限式中的参数1.4无穷小量阶的比较 2.连续2.1判断是否连续&#xff0c;不连续则判断间断点类型2.2证明题 二…...

Redis生产问题(缓存穿透、击穿、雪崩)——针对实习面试

目录 Redis生产问题什么是缓存穿透&#xff1f;如何解决缓存穿透&#xff1f;什么是缓存击穿&#xff1f;如何解决缓存击穿&#xff1f;缓存穿透和缓存击穿有什么区别&#xff1f;什么是缓存雪崩&#xff1f;如何解决缓存雪崩&#xff1f; Redis生产问题 什么是缓存穿透&#x…...

android openGL中模板测试、深度测试功能的先后顺序

目录 一、顺序 二、模板测试 1、概念 2、工作原理 3、关键函数 三、深度测试 1、概念 2、工作原理 3、关键函数 三、模板测试和深度测试的先后顺序 一、顺序 在Android OpenGL中&#xff0c;模板测试&#xff08;Stencil Testing&#xff09;是在深度测试&#xff0…...

CCF PTA 编程培训师资认证2021年7月真题- C++兑换礼品

【题目描述】 小零和小壹是两个爱玩游戏的小孩&#xff0c;他俩平时最擅长的是解谜游戏&#xff0c;可今天 遇到了一个有点难的算法问题&#xff0c;希望能得到你的帮助。 他们面对的是一个电子装置&#xff0c;正面有 n 个排成一列的按钮&#xff0c;按钮上贴着编号 1~n 号的…...

火山引擎云服务docker 安装

安装 Docker 登录云服务器。 执行以下命令&#xff0c;添加 yum 源。 yum update -y yum install epel-release -y yum clean all yum list依次执行以下命令&#xff0c;添加Docker CE镜像源。更多操作请参考Docker CE镜像。 # 安装必要的一些系统工具 sudo yum install -y yu…...

【taro react】 ---- 常用自定义 React Hooks 的实现【六】之类渐入动画效果的轮播

1. 效果 2. 场景 css 效果实现:可以看到效果图中就是一个图片从小到大的切换动画效果,这个效果很简单,使用 css 的 transform 的 scale 来实现图片的从小到大的效果,切换就更加简单了,不管是 opacity 还是 visibility 都可以实现图片的隐藏和显示的切换。React.Children.m…...