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

devtools/2024/11/8 22:08:20/

目录

一、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 芯片的级联,还需要正确配置主从片之间的连接和通信。具体的编程和应用细节可能会因不同的微机系统和应用场景而有所差异。


http://www.ppmy.cn/devtools/132409.html

相关文章

性能测试|docker容器下搭建JMeter+Grafana+Influxdb监控可视化平台

前言 在当前激烈的市场竞争中,创新和效率成为企业发展的核心要素之一。在这种背景下,如何保证产品和服务的稳定性、可靠性以及高效性就显得尤为重要。 而在软件开发过程中,性能测试是一项不可或缺的环节,它可以有效的评估一个系…

【贪心算法】No.1---贪心算法(1)

文章目录 前言一、贪心算法:二、贪心算法示例:1.1 柠檬⽔找零1.2 将数组和减半的最少操作次数1.3 最⼤数1.4 摆动序列1.5 最⻓递增⼦序列1.6 递增的三元⼦序列 前言 👧个人主页:小沈YO. 😚小编介绍:欢迎来到…

Qt多边形填充/不填充绘制

1 填充多边形绘制形式 void GraphicsPolygonItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) {Q_UNUSED(option);Q_UNUSED(widget);//painter->setPen(pen()); // 设置默认画笔//painter->setBrush(brush()); // 设置默…

PHP+MySQL开发的一套招聘管理系统开发案例源码功能介绍

‌人才招聘系统‌,也称为招聘管理系统(HRMS)的细化分支,是一种基于互联网的招聘管理平台。它旨在协助企业以更高效的方式完成外部人才的吸引、识别、筛选及录用工作。在国外,这种系统常被称为Applicant Tracking Syste…

【FastAdmin】在页面中使用layui,以此引申使用颜色选择器示例

目录 1.首先在backend-init.js中定义依赖配置,路径:public/assets/js/backend-init.js 2.然后再你需要使用layui的地方引用即可 3.一个颜色选择器的示例 html完整示例: js完整示例: 好看的layui使我喜欢他,但是在…

鸿蒙next打包流程

目录 下载团结引擎 添加开源鸿蒙打包支持 打包报错 路径问题 安装DevEcoStudio 可以在DevEcoStudio进行打包hap和app 包结构 没法直接用previewer运行 真机运行和测试需要配置签名,DevEcoStudio可以自动配置, 模拟器安装hap提示报错 安装成功,但无法打开 团结1.3版本新增工具…

华为HarmonyOS打造开放、合规的广告生态 - 开屏广告

场景介绍 开屏广告是一种在应用启动时且在应用主界面显示之前需要被展示的广告。您需要预先为App设计一张开屏默认的Slogan图片,确保在未获得到开屏广告之前展示默认的Slogan,提供良好的用户体验。 开屏广告分为全屏开屏广告、半屏开屏广告&#xff0c…

基于vue+neo4j 的中药方剂知识图谱可视化系统

前言 历时一周时间,中药大数据R02系统中药开发完毕,该系统通过scrapy工程获取中药数据,使用python pandas预处理数据生成知识图谱和其他相关数据,利用vuespringbootneo4jmysql 开发系统,具体功能请看本文介绍。 简要…