SlideShare a Scribd company logo
1 of 144
第 6 章 入 出技输 输
术
6.3 中断方式
6.4 直接存 器存取贮
6.5 例 解析题
6.2 程序控制方式
6.1 入 出的基本方法输 输
- 2- 目录 上页 下页 束结
第 6 章 基本 入 出接口输 输
教学重点
I/O 接口电路的典型结构
无条件传送方式
查询传送方式
中断工作过程
- 3- 目录 上页 下页 束结
6.1 输入输出的基本方法
6.1.1 输入输出接口的概念及基本结构
 为什么需要 I/O 接口(电路)?
微机的外部设备多种多样
工作原理、驱动方式、信息格式、以及
工作速度方面彼此差别很大
它们不能与 CPU 直接相连
必须经过中间电路再与系统相连
这部分电路被称为 I/O 接口电路
多 外种
设
1. 接口电
路
- 4- 目录 上页 下页 束结
6.1.1 输入 / 输出接口概述(续 1 )
什么是 I/O 接口(电路)?
 I/O 接口是位于系统与外设间、用来
协助完成数据传送和控制任务的逻辑
电路
 PC 机系统板的可编程接口芯片、 I/O
总线槽的电路板(适配器)都是接口
电路 CPUCPUCPUCPU
接口接口
电路电路
I/OI/O
设备设备
- 5- 目录 上页 下页 束结
6.1.1 输入 / 输出接口概述(续 2 )
什么是微机接口技术?
 处理微机系统与外设间联系的技术
 注意其软硬结合的特点
 根据应用系统的需要,使用和构造相
应的接口电路,编制配套的接口程序
,支持和连接有关的设备
- 6- 目录 上页 下页 束结
2. 接口电路分类
 ⑴ 按接口电路的通用性
 ⑵ 按数据传送格式
 ⑶ 按接口是否可编程
 ⑷ 按时序控制方式
用接口 通用接口专
并行接口 串行接口
可 程接口 不可 程接口编 编
同步接口 步接口异
- 7- 目录 上页 下页 束结
3. 接口的基本功能
⑴ 对输入输出数据进行缓冲和锁存
输出接口有锁存环节
输入接口有缓冲环节
⑵ 对信号的形式和数据的格式进行变
换
微机直接处理:数字量、开关量、脉冲量
⑶ 对 I/O 端口进行寻址
⑷ 与 CPU 和 I/O 设备进行联络
⑸ 中断管理 /DMA 控制功能
- 8- 目录 上页 下页 束结
4. 接口电路的基本结构
控制总线 CB
地址总线
AB
I/O 接口电路
数据
控制
状态
数据总线 DBCPU 外设
控制寄存器
状态寄存器
数据寄存器
- 9- 目录 上页 下页 束结
6.1.2 外设接口的编址方式
接口电路占用的 I/O 端口有两类编排形
式
 I/O 端口单独编址
I/O 地址空间独立于存储地址空间
如 8086/8088
 I/O 端口与存储器统一编址
它们共享一个地址空间
如 M6800
- 10- 目录 上页 下页 束结
1. I/O 端口与存储器统一编址
 优点:
不需要专门的 I/O 指令
I/O 数据存取与存储器数
据存取一样灵活
 缺点:
I/O 端口要占去部分存储
器地址空间
程序不易阅读(不易分清
访存和访问外设)
内存
部分
I/O
部分
存
储
空
间
0
FFFFF
- 11- 目录 上页 下页 束结
2. I/O 端口单独编址
 优点:
I/O 端口的地址空间独立
控制和地址译码电路相对
简单
专门的 I/O 指令使程序清
晰易读
 缺点:
I/O 指令没有存储器指令丰
富
内存
空间
I/O
空间
FFFFF
0
FFFF
0
80x86 采用 I/O 端口独立编址80x86 采用 I/O 端口独立编址
- 12- 目录 上页 下页 束结
补充 : 8088/8086 的输入输出指令
 输入指令
IN AL,i8/DX ; 字节输入
IN AX,i8/DX ; 字输入
 输出指令
OUT i8/DX,AL ; 字节输出
OUT i8/DX ; 字输出
功能演示
功能演示
- 13- 目录 上页 下页 束结
6.1.3 输入输出的基本方法
 1. 程序控制方式
 2. 中断控制方式
 3. 直接存储器存取控制方式
 4. 通道方式
 5. 外围处理方式
- 14- 目录 上页 下页 束结
数据传送方式
 程序控制下的数据传送——通过 CPU 执行
程序中的 I/O 指令来完成传送,又分为:
无条件传送
查询传送
中断传送
 直接存储器存取( DMA )——传送请求由
外设向 DMA 控制器( DMAC )提出,后
者向 CPU 申请总线,最后 DMAC 利用系统
总线来完成外设和存储器间的数据传送
 I/O 处理机—— CPU 委托专门的 I/O 处理机
来管理外设,完成传送和相应的数据处理
- 15- 目录 上页 下页 束结
1. 无条件传送方式及其接口
 在 CPU 与慢速变化的设备交换数据时,可以认
为它们总是处于“就绪”状态,随时可以进行数
据传送,这就是无条件传送,或称立即传送、
同步传送
 适合于简单设备,如 LED 数码管、按键 / 按纽
等
 无条件传送的接口和操作均十分简单
 这种传送有前提:外设必须随时处于就绪状态送传
流程
送传
流程
接口
例实
接口
例实
6.2. 程序控制方式
- 16- 目录 上页 下页 束结
无条件传送:输入示例
IOR
三
态
缓
冲
器 OE
I/O
装
置地
址
译
码
器CS
D7 ~ D0
A15 ~ A1
A0
0160H
MOV DX, 160H
IN AL, DX
MOV DX, 160H
IN AL, DX
- 17- 目录 上页 下页 束结
无条件传送:输入实例
MOV DX, 160H
IN AL, DX
MOV DX, 160H
IN AL, DX
74LS244
+5V
10K x 8
G1 G2
数
据
总
线
CS
RD
- 18- 目录 上页 下页 束结
无条件传送:输出示例
地
址
译
码
器
数
据
锁
存
器
A15
A0 ~ A14
-IOW
CS
0160H
输
出
设
备
D7 ~ D0
MOV DX, 160H
MOV AL, [BX]
OUT DX, AL
MOV DX, 160H
MOV AL, [BX]
OUT DX, AL
- 19- 目录 上页 下页 束结
无条件传送:输出实例
MOV DX, 160H
MOV AL, [BX]
OUT DX, AL
MOV DX, 160H
MOV AL, [BX]
OUT DX, AL
+5V
74LS373
300 x 8
LE OE
数
据
总
线
CS
WR
- 20- 目录 上页 下页 束结
无条件传送:输入输出接口
K7
K1
K0
+5V
D0 ~ D7
A0 ~
A15
CLK
LS06
反相
驱动器
LS273
8D
锁存器
LS244
三态
缓冲器
8000H
译码
+5V
LED0
LED7…
…
-G
-IOW
-IOR
- 21- 目录 上页 下页 束结
无条件传送:输入输出接口
next: mov dx,8000h ;DX 指向数据端口
in al, dx ; 从输入端口读开关状
态
not al ; 反相
out dx, al ; 送输出端口显示
call delay ; 调子程序延时
jmp next ; 重复
next: mov dx,8000h ;DX 指向数据端口
in al, dx ; 从输入端口读开关状
态
not al ; 反相
out dx, al ; 送输出端口显示
call delay ; 调子程序延时
jmp next ; 重复
- 22- 目录 上页 下页 束结
就 ?绪
2. 查询传送方式及其接口
 CPU 先了解(查询)外设的工作状态,
在外设就绪(可以交换信息的情况下)
实现数据的输入或输出
 对多个外设的情况,则 CPU 按一定顺序
依次查询(轮询)。先查询的外设将优
先进行数据交换
 查询传送的特点是:工作可靠,适用面
宽,但传送效率低
- 23- 目录 上页 下页 束结
查询传送的两个环节
 查询环节
寻址状态口
读取状态寄存器的标志位
若不就绪就继续查询,直至就绪
 传送环节
寻址数据口
是输入,通过输入指令从数据口读入数据
是输出,通过输出指令向数据口输出数据
输入状态
就绪?
数据交换
Y
N
送流程传
接口 例实
- 24- 目录 上页 下页 束结
查询输入接口
-IOR
+5V
8D
锁存器
8 位
三态
缓冲器
译码
1 位
三态
缓冲器
A0 ~
A15
8000H
8001H
D0 ~
D7
D0
输入
设备
-IOR
-STB
R
QD
- 25- 目录 上页 下页 束结
查询输入接口
mov dx,8000h ;DX 指向状态端口
status: in al,dx ; 读状态端口
test al,01h ; 测试标志位 D0
jz status ;D0 = 0 ,未就绪,继续查询
inc dx ;D0 = 1 ,就绪, DX 指向数据
端口
in al,dx ; 从数据端口输入数据
mov dx,8000h ;DX 指向状态端口
status: in al,dx ; 读状态端口
test al,01h ; 测试标志位 D0
jz status ;D0 = 0 ,未就绪,继续查询
inc dx ;D0 = 1 ,就绪, DX 指向数据
端口
in al,dx ; 从数据端口输入数据
- 26- 目录 上页 下页 束结
查询输出接口
8D
锁存器
译码
1 位
三态
缓冲器
R
Q
A0 ~ A15
8000H
8001H
D0 ~ D7
D7
D
+5V
-ACK
-IOW
-IOR
输出
设备
- 27- 目录 上页 下页 束结
查询输出接口
mov dx,8000h ;DX 指向状态端口
status: in al,dx ; 读取状态端口的状态数据
test al,80h ; 测试标志位 D7
jnz status ;D7 = 1 ,未就绪,继续查询
inc dx ;D7 = 0 ,就绪, DX 指向数据
端口
mov al,buf ; 变量 buf 送 AL
out dx,al ; 将数据输出给数据端口
mov dx,8000h ;DX 指向状态端口
status: in al,dx ; 读取状态端口的状态数据
test al,80h ; 测试标志位 D7
jnz status ;D7 = 1 ,未就绪,继续查询
inc dx ;D7 = 0 ,就绪, DX 指向数据
端口
mov al,buf ; 变量 buf 送 AL
out dx,al ; 将数据输出给数据端口
- 28- 目录 上页 下页 束结
6.3 中断传送方式
程序
断点
主程序
中断请求 为
外
设
继
续
执
行
返回断点
送流程传送流程传
 CPU 在执行程
序中,被内部或
外部的事件所打
断,转去执行一
段预先安排好的
中断服务程序;
 服务结束后,又
返回原来的断点
,继续执行原来
的程序
 CPU 在执行程
序中,被内部或
外部的事件所打
断,转去执行一
段预先安排好的
中断服务程序;
 服务结束后,又
返回原来的断点
,继续执行原来
的程序
提
供
服
务
中断服务程序
入口
6.3.1 中断的基本概念
1. 中断的概
念
- 29- 目录 上页 下页 束结
2. 中断控制方式
 中断传送是一种效率更高的程序传送方
式
 进行传送的中断服务程序是预先设计好
的
 中断请求是外设随机向 CPU 提出的
 CPU 对请求的检测是有规律的:一般是
在每条指令的最后一个时钟周期采样中
断请求输入引脚
 本书主要论述中断在输入和输出方面的
应用
 中断还有着非常广泛的应用
- 30- 目录 上页 下页 束结
3. 中断源
 能够引发中断的事件被称为中断源。通常,中
断源有两类:内部中断源和外部中断源。
 由处理机内部产生的中断事件称为内部中断源。
常见的内部中断源有计算溢出、指令的单步运
行、执行特定的中断指令等。
 由处理机之外的外围设备产生的中断事件称为
外部中断源。常见的外部中断源有外设的输入 /
输出请求、定时时间到、电源掉电、设备故障
等。
- 31- 目录 上页 下页 束结
三态
缓冲器
中断传送与接口(续)
D0 ~ D7
+5V
8D
锁存器
8 位
三态
缓冲器
R
Q 译码
8001H
中断向量号
D0 ~ D7
INTR
D
输入
设备
中断允许
触发器
A0 ~ A15
中断请求
触发器
-IOR
-INTA
-STB
- 32- 目录 上页 下页 束结
4. 中断处理过程
1. 中断请求(外设)
2. 中断响应( CPU )
3. 关中断( CPU )
4. 断点保护( CPU )
5. 中断识别(硬件 / 软
件)
6. 现场保护(用户)
7. 中断服务(用户)
8. 恢复现场(用户)
9. 开中断( CPU/ 用
户)
10. 中断返回(用户)
中断服务是进行数据
交换的实质性环节
- 33- 目录 上页 下页 束结
5. 中断系统的功能
 ① 能进入中断和退出中断,即
完成上述中断响应和中断返回的
过程 .
 ② 能对某些中断进行屏蔽,并
在必要时开放 .
 ③ 能进行优先权排队 .
 ④ 提供中断嵌套能力 .
- 34- 目录 上页 下页 束结
6.3.2 8086 中断系统
 8086 的中断系统采用向量中断机制
 一共可处理 256 个中断
 采用中断向量编号 0 ~ 255 ,对 256 个中断
加以区别
 可屏蔽中断需借助专用的中断控制器 Intel
8259A 对系统中的可屏蔽中断资源进行管理
:
扩充系统的可屏蔽中断资源,并管理它们:
实现中断优先权比较
实现中断源的识别
- 35- 目录 上页 下页 束结
1. 8086 中断类型
硬件中断 软件中断
⑴ 硬件中断
硬件中断,又称外部中断,它是由处
理器外部的硬件、外围设备的请求而引起的
中断。 8086 有两条硬件中断请求信号线:
NMI (非屏蔽中断)和 INTR (可屏蔽中
断)。
- 36- 目录 上页 下页 束结
8088 的中断类型
中断逻辑
INTO
指令
单步
中断
除法
错误
INT N
指令
CPU
NMI
8259A
中断
控制器
IR0
IR1
IR2
IR3
IR4
IR5
IR6
IR7
外
设
中
断
源
-INTA
可屏蔽中断申
请
INTR
不可屏蔽中断申
请
可屏蔽中断
源
不可屏蔽中断
源
内部中断
- 37- 目录 上页 下页 束结
⑵ 软件中断 ( 内部中断 )
 内部中断——内部机制产生
除法错中断( 0 号)——除运算结果溢出时产生
指令中断( n 号)——执行 int n 指令后产生(操作码
CDH )
断点中断( 3 号)——执行 int 3 指令(单字节指令操作码
CCH )用于在调试中设置断点,程序遇断点则中断
溢出中断( 4 号)——执行 into 指令,且前面运算有溢出
( OF=1 )时产生
单步中断( 1 号)—— TF 标志置 1 后,每执行一条子指
令将发生一次
 外部中断——外部引脚触发
非屏蔽中断(外设提供向量号)——触发 INTR 引脚产生
可屏蔽中断( 2 号)—— 触发 NMI 引脚产生
 内部中断——内部机制产生
除法错中断( 0 号)——除运算结果溢出时产生
指令中断( n 号)——执行 int n 指令后产生(操作码
CDH )
断点中断( 3 号)——执行 int 3 指令(单字节指令操作码
CCH )用于在调试中设置断点,程序遇断点则中断
溢出中断( 4 号)——执行 into 指令,且前面运算有溢出
( OF=1 )时产生
单步中断( 1 号)—— TF 标志置 1 后,每执行一条子指
令将发生一次
 外部中断——外部引脚触发
非屏蔽中断(外设提供向量号)——触发 INTR 引脚产生
可屏蔽中断( 2 号)—— 触发 NMI 引脚产生
- 38- 目录 上页 下页 束结
⑶ 中断优先权
 8086 规定中断优先权从高到低的顺序
为:
① 除法错、溢出中断指令 INTO 、中
断指令 INT n 。
② 非屏蔽中断 NMI 。
③ 可屏蔽中断 INTR 。
④ 单步中断。
- 39- 目录 上页 下页 束结
2. 8088 的中断向量表
 中断向量:指示中断服务程序的入口地址,
该地址包括:偏移地址 IP 、段地址 CS
(共 32 位)
 每个中断向量的低字是偏移地址、高字是段
地址,需占用 4 个字节(低对低,高对高)
。
 8088 微处理器从物理地址 000H 开始到
3FFH ( 1KB ),依次安排各个中断向量,
向量号从 0 到 255 。
 256 个中断响亮所占用的 1KB 区域,称中断
向量表
 中断向量:指示中断服务程序的入口地址,
该地址包括:偏移地址 IP 、段地址 CS
(共 32 位)
 每个中断向量的低字是偏移地址、高字是段
地址,需占用 4 个字节(低对低,高对高)
。
 8088 微处理器从物理地址 000H 开始到
3FFH ( 1KB ),依次安排各个中断向量,
向量号从 0 到 255 。
 256 个中断响亮所占用的 1KB 区域,称中断
向量表
• 几个概念:向量号 N/ 中断向
量 / 中断服务程序的入口地址
• 中断向量的存放首址= N×4
• 几个概念:向量号 N/ 中断向
量 / 中断服务程序的入口地址
• 中断向量的存放首址= N×4
4B
4B
中
断
向
量
表
1KB
3FFH
0H
0 号中断向
量
IP
CS
- 40- 目录 上页 下页 束结
 内部中断是由于 8086 内部执行程序出现特殊
情况而引起的中断
除法错中断: 向量号为 0
指令中断( int n ): 向量号为 n
断点中断( int 3 ): 向量号为 3
溢出中断( into ) : 向量号为 4
单步中断: 向量号为 1
 内部中断是由于 8086 内部执行程序出现特殊
情况而引起的中断
除法错中断: 向量号为 0
指令中断( int n ): 向量号为 n
断点中断( int 3 ): 向量号为 3
溢出中断( into ) : 向量号为 4
单步中断: 向量号为 1
内部中断的中断向量号已由 Intel 公司确
定
内部中断的中断向量号已由 Intel 公司确
定
- 41- 目录 上页 下页 束结
 外部中断是由于 8086 外部通过 CPU 引脚提出
中断请求而引起的中断
非屏蔽中断( NMI ): 向量号为 2
外部通过非屏蔽中断 NMI 请求,必须响应
非屏蔽中断主要用于处理系统的意外或故障(如奇偶校
验或协处理器运算错误等)
可屏蔽中断( INTR ): 向量号由中断控制器提供
外部通过可屏蔽中断 INTR 请求,由标志位 IF 控制是
否响应;响应时将产生有效的 – INTA 信号
可屏蔽中断主要用于外设中断请求(请求交换数据等服
务)
 外部中断是由于 8086 外部通过 CPU 引脚提出
中断请求而引起的中断
非屏蔽中断( NMI ): 向量号为 2
外部通过非屏蔽中断 NMI 请求,必须响应
非屏蔽中断主要用于处理系统的意外或故障(如奇偶校
验或协处理器运算错误等)
可屏蔽中断( INTR ): 向量号由中断控制器提供
外部通过可屏蔽中断 INTR 请求,由标志位 IF 控制是
否响应;响应时将产生有效的 – INTA 信号
可屏蔽中断主要用于外设中断请求(请求交换数据等服
务)
标志位 IF 控制可屏蔽中断的响应标志位 IF 控制可屏蔽中断的响应
- 42- 目录 上页 下页 束结
中断标志 IF 的状态
 IF = 0 :可屏蔽中断不会被响应(禁止中断,关中
断,中断屏蔽)
系统复位,使 IF = 0
任何一个中断被响应,使 IF = 0
执行指令 CLI ,使 IF = 0
 IF = 1 :可屏蔽中断会被响应(允许中断,开中断
,中断开放)
执行指令 STI ,使 IF = 1
 执行指令 IRET 后 IF 将恢复为中断前的状态
 IF = 0 :可屏蔽中断不会被响应(禁止中断,关中
断,中断屏蔽)
系统复位,使 IF = 0
任何一个中断被响应,使 IF = 0
执行指令 CLI ,使 IF = 0
 IF = 1 :可屏蔽中断会被响应(允许中断,开中断
,中断开放)
执行指令 STI ,使 IF = 1
 执行指令 IRET 后 IF 将恢复为中断前的状态
明确 IF 标志的状态是关键明确 IF 标志的状态是关键
- 43- 目录 上页 下页 束结
3. 8086 中断处理过程
⑴ 可屏蔽中断的中断过程
 中断源通过中断控制器 8259 向 CPU 发出中断请求信号
 CPU 在每一个指令周期的最后一个时钟周期采样 INTR 信
号线
 当 CPU 响应可屏蔽级的中断请求时,首先通过信号线向
8259 连续发出两个负脉冲的中断响应信号。
 CPU 暂停执行当前程序,而转去执行相应的中断处理程
序
 CPU 执行中断服务程序
 返回断点,继续执行被打断的程序
 中断源通过中断控制器 8259 向 CPU 发出中断请求信号
 CPU 在每一个指令周期的最后一个时钟周期采样 INTR 信
号线
 当 CPU 响应可屏蔽级的中断请求时,首先通过信号线向
8259 连续发出两个负脉冲的中断响应信号。
 CPU 暂停执行当前程序,而转去执行相应的中断处理程
序
 CPU 执行中断服务程序
 返回断点,继续执行被打断的程序
- 44- 目录 上页 下页 束结
⑵ 非屏蔽中断和软件中断的执行
过程
 查询中断的先后顺序决定了各中断源的优先级
别
软件中断
除法错中断
指令中断
溢出中断
非屏蔽中断
可屏蔽中断
单步中断
 查询中断的先后顺序决定了各中断源的优先级
别
软件中断
除法错中断
指令中断
溢出中断
非屏蔽中断
可屏蔽中断
单步中断
高
低
- 45- 目录 上页 下页 束结
8086 的中断响应过程
NMI
N
软件中断
INTR
TF=1
中断响应周期
读中断向量号
下条指令
现行指令
IF = 1
N
NN
N
Y
Y
Y
Y
Y
执行中断服
务
- 46- 目录 上页 下页 束结
8086 的中断响应过程(续)
Y还有 NMI
TEMP = 1
标志寄存器入栈
TEMP = TF , IF = TF
= 0
CS : IP 入栈
获取中断向量
执行服务程序
弹出 CS : IP
弹出标志寄存器
返回被中断程序
( 1 )
( 2 )
( 3 )
( 4 )
( 5 )
N
N
Y
( 6 )
单步中
断
- 47- 目录 上页 下页 束结
8086 的中断响应过程(续)
 8088 各种中断源的优先权,实际上
是指被识别的先后顺序
 多种中断同时请求时,最先响应的
则可能是单步中断或 NMI 中断
 8088 各种中断源的优先权,实际上
是指被识别的先后顺序
 多种中断同时请求时,最先响应的
则可能是单步中断或 NMI 中断
- 48- 目录 上页 下页 束结
6.3.3 8259 中断控制器
 Intel 8259A 是可编程中断控制器 PIC
 可配合 CPU ( I8080/85 、 I8086/88/286/386
等)管理可屏蔽中断
 8259A 的基本功能
1 片 8259A 可以管理 8 级中断,经级联最多可扩展至
64 级
每一级中断都可单独被屏蔽或允许
在中断响应周期,可提供相应的调用指令(配合
I8080/85 )或中断向量号(配合 I8086/88/286/386 )
8259A 设计有多种工作方式,通过初始化编程进行设
置
 Intel 8259A 是可编程中断控制器 PIC
 可配合 CPU ( I8080/85 、 I8086/88/286/386
等)管理可屏蔽中断
 8259A 的基本功能
1 片 8259A 可以管理 8 级中断,经级联最多可扩展至
64 级
每一级中断都可单独被屏蔽或允许
在中断响应周期,可提供相应的调用指令(配合
I8080/85 )或中断向量号(配合 I8086/88/286/386 )
8259A 设计有多种工作方式,通过初始化编程进行设
置
- 49- 目录 上页 下页 束结
1. 8259A 的内部结构和引脚
D7~D0
-INTA
INT
中
断
请
求
寄
存
器
中断屏蔽寄存器
数据
总线
缓冲器
IR0
IR7
读 / 写
控制
逻辑
级联
缓冲器
比较器
-RD
-WR
A0
-CS
CAS0
CSA1
CAS2
-SP/-EN
优
先
权
判
别
电
路
中
断
服
务
寄
存
器
控制逻辑
- 50- 目录 上页 下页 束结
⑴ 8259 的内部结构
 中断请求寄存器 IRR
保存 8 条外界中断请求信号 IR0 ~ IR7 的请求状态
Di 位为 1 表示 IRi 引脚有中断请求;为 0 表示无请求
 中断服务寄存器 ISR
保存正在被 8259A 服务着的中断状态
Di 位为 1 表示 IRi 中断正在服务中;为 0 表示没有被
服务
 中断屏蔽寄存器 IMR
保存对中断请求信号 IR 的屏蔽状态
Di 位为 1 表示 IRi 中断被屏蔽(禁止);为 0 表示允
许
 中断请求寄存器 IRR
保存 8 条外界中断请求信号 IR0 ~ IR7 的请求状态
Di 位为 1 表示 IRi 引脚有中断请求;为 0 表示无请求
 中断服务寄存器 ISR
保存正在被 8259A 服务着的中断状态
Di 位为 1 表示 IRi 中断正在服务中;为 0 表示没有被
服务
 中断屏蔽寄存器 IMR
保存对中断请求信号 IR 的屏蔽状态
Di 位为 1 表示 IRi 中断被屏蔽(禁止);为 0 表示允
许
- 51- 目录 上页 下页 束结
 优先权判别器 PR
优先权判别器( PR )用来识别各中断请求的优先级别
 读 / 写控制电路
读 / 写控制电路接收来自 CPU 的读 / 写控制命令和片
选控制信息
 数据总线缓冲器
这是一个 8 位的双向三态缓冲器,使 8259 和 CPU 数
据总线 D7 ~ D0 直接挂接,完成命令和状态信息的传送。
 优先权判别器 PR
优先权判别器( PR )用来识别各中断请求的优先级别
 读 / 写控制电路
读 / 写控制电路接收来自 CPU 的读 / 写控制命令和片
选控制信息
 数据总线缓冲器
这是一个 8 位的双向三态缓冲器,使 8259 和 CPU 数
据总线 D7 ~ D0 直接挂接,完成命令和状态信息的传送。
- 52- 目录 上页 下页 束结
 控制电路
它是 8259 内部的控制器,根据 CPU 对 8259 编
程设定的工作方式产生内部控制信号,向 CPU 发出
中断请求信号 INT ,请求 CPU 响应,同时产生与当
前中断请求服务有关的控制信号,并在接收到来自
CPU 的中断响应信号后,将中断类型号送到数据总线。
 级联缓冲 / 比较器
该功能部件用来实现多个 8259 的级联连接及
数据缓冲方式。
 控制电路
它是 8259 内部的控制器,根据 CPU 对 8259 编
程设定的工作方式产生内部控制信号,向 CPU 发出
中断请求信号 INT ,请求 CPU 响应,同时产生与当
前中断请求服务有关的控制信号,并在接收到来自
CPU 的中断响应信号后,将中断类型号送到数据总线。
 级联缓冲 / 比较器
该功能部件用来实现多个 8259 的级联连接及
数据缓冲方式。
- 54- 目录 上页 下页 束结
中断级连
 8259A 可以级连, 1 个主片最多可以级连 8 个从
片
 级连时,主片的级连线 CAS0 ~ CAS2 连至每个
从片的 CAS0 ~ CAS2 ,输出被选中的从片编号
,
 每个从片的中断请求信号 INT ,连至主 8259A
的一个中断请求输入端 IRx ;主片的 INT 线连
至 CPU 的中断请求输入端 INTR
 在非缓冲方式下,引脚 -SP/-EN ,通过接地指
定该片充当从片( -SP = 0 );反之若接高电
平则该片充当主片( -SP = 1 )。
 8259A 可以级连, 1 个主片最多可以级连 8 个从
片
 级连时,主片的级连线 CAS0 ~ CAS2 连至每个
从片的 CAS0 ~ CAS2 ,输出被选中的从片编号
,
 每个从片的中断请求信号 INT ,连至主 8259A
的一个中断请求输入端 IRx ;主片的 INT 线连
至 CPU 的中断请求输入端 INTR
 在非缓冲方式下,引脚 -SP/-EN ,通过接地指
定该片充当从片( -SP = 0 );反之若接高电
平则该片充当主片( -SP = 1 )。
- 55- 目录 上页 下页 束结
⑵ 8259 的引脚功能
 8259 芯 片 有
28 条 引 脚 ,
双列直插式封
装 , 如 图
6.10 所示。
 8259 芯 片 有
28 条 引 脚 ,
双列直插式封
装 , 如 图
6.10 所示。
图 6.10 8259 芯片引脚定义
- 56- 目录 上页 下页 束结
2. 8259A 的中断过程
CAS0 ~
CAS2
D0 ~ D7
-SP/-EN
IR0 ~ IR7
CPU 响应周期
8259A 工作波形
INT
第 1 个总线周
期
T1 T2 T3 T4
ALE
CLK
第 2 个总线周
期
T1 T2 T3 T4
第 1 个 -INTA 前 保 持 高 电
平
-INTA
-LOCK
中断向量
主片输出
级联信号
从片接收
- 57- 目录 上页 下页 束结
3. 8259A 的工作方式
普通全嵌套方式
特殊全嵌套方式
自动循环方式
特殊循环方式
优先权固定方式
优先权循环方式
 设置优先权方式
普通中断结束方式
特殊中断结束方式
自动中断结束方式
非自动中断结束方
式
 结束中断方式
 中断屏蔽方式
普通屏蔽方式
特殊屏蔽方式
 中断触发方式 边沿触发方式
电平触发方式
 数据线连接方式
缓冲方式
非缓冲方式
 与 CPU 配合方式
与 8080/8085 CPU 配
合与 8086/8088 CPU 配
合
 级连方式
级连
不级连
- 58- 目录 上页 下页 束结
( 1 )中断结束处理方式
什 么 是 8259A 的 中 断 结 束
?
8259A 利用中断服务寄存器 ISR 判断:
某位为 1 ,表示正在进行中断服务
;
该位为 0 ,就是该中断结束服务。
这里说明如何使 ISR 某位为 0 ,不
反映 CPU 的工作状态。
- 59- 目录 上页 下页 束结
( 1 )中断结束处理方式(续)
自动中断结束方式
普通中断结束方式
配合全嵌套优先权方式使用
当 CPU 用输出指令往 8259A 发出普通
中断结束 EOI 命令时, 8259A 就会把所有正
在服务的中断中优先权最高的 ISR 位复位。
特殊中断结束方式
配合循环优先权方式使用
CPU 在程序中向 8259A 发送一条特殊中断
结束命令,这个命令中指出了要清除哪个 ISR
位。
- 60- 目录 上页 下页 束结
( 2 ) 缓冲方式
 缓冲方式
8259A 的数据线需加缓冲器予以驱动
8259A 把 SP*/EN* 引脚作为输出端,输出
允许信号,用以锁存或开启缓冲器
 非缓冲方式
SP*/EN* 引脚为输入端
若 8259A 级连,由其确定是主片或从片
- 61- 目录 上页 下页 束结
( 3 )嵌套方式
 普通全嵌套方式
8259A 的中断优先权顺序固定不变,从高到低依次为
IR0 、 IR1 、 IR2 、…… IR7
中断请求后, 8259A 对当前请求中断中优先权最高
的中断 IRi 予以响应,将其向量号送上数据总线,
对应 ISR 的 Di 位置位,至到中断结束( ISR 的 Di
位复位)
在 ISR 的 Di 位置位期间,禁止再发生同级和低级优
先权的中断,但允许高级优先权中断的嵌套
 特殊全嵌套方式
 优先权自动循环方式
 优先权特殊循环方式
- 62- 目录 上页 下页 束结
( 4 ) 中断屏蔽方式
 普通屏蔽方式
将 IMR 的 Di 位置 1 ,则对应的中断 IRi 被
屏蔽,该中断请求不能从 8259A 送到 CPU
如果 IMR 的 Di 位置 0 ,则允许 IRi 中断产
生
 特殊屏蔽方式
将 IMR 的 Di 位置 1 ,对应的中断 IRi 被屏
蔽的同时,使 ISR 的 Di 位置 0
- 63- 目录 上页 下页 束结
⑸ 优先级的控制
 ① 固定优先级
所谓固定优先级,即是指 8259 的 8 个中断源中, IR0 优先级最高
, IR1 优先级次之,依次降低,直到 IR7 优先级最低,这个顺序固定不
变。
 ② 循环优先级
8259 将中断源 IR0 ~ IR7 按下标序号顺序构成一个环,有两种规定
方式:
● 自动优先循环级。
该方式规定:刚被服务过的中断源,其优先级别被改为最低级,而
将最高优先级赋给原来比它低一级的中断源,其它中断源的优先顺序依
中断源顺序环确定。例如: CPU 对 IR3 的中断服务刚结束时, IR3 的
优先级别变为最低,这时 8259 的 8 个中断源优先顺序由高到低为
IR4 , IR5 , IR6 , IR7 , IR0 , IR1 , IR2 , IR3 。
● 指定优先循环级。
该方式规定:在 OCW2 中指定的中断源,其优先级别被设为最低
级,其它中断源的优先顺序依中断源顺序环确定。例如: CPU 在对
IR3 的中断服务过程中,通过指令在 OCW2 中指定 IR5 具有最低优先级
,则 IR3 中断服务结束时, 2859A 的 8 个中断源优先顺序由高到低为
IR6 , IR7 , IR0 , IR1 , IR2 , IR3 , IR4 , IR5 。
- 64- 目录 上页 下页 束结
优先权方式
 普通全嵌套方式
8259A 的中断优先权顺序固定不变,从高到低依次为 :
IR0 、 IR1 、 IR2 、…… IR7
中断请求后, 8259A 对当前请求中断中优先权最高的中断 IRi 予以
响应,将其向量号送上数据总线,对应 ISR 的 Di 位置位,至到
中断结束( ISR 的 Di 位复位)
在 ISR 的 Di 位置位期间,禁止再发生同级和低级优先权的中断,
但允许高级优先权中断的嵌套
 特殊全嵌套方式——允许同级中断嵌套(用于级连主片)
 优先权自动循环方式——最高优先权自动转移到相邻的低优先
级中断源
 优先权特殊循环方式——最高优先权转移到由指令指定的中断
源
- 65- 目录 上页 下页 束结
( 6 ) 中断触发方式
 边沿触发方式
8259A 将中断请求输入端出现
的上升沿作为中断请求信号
 电平触发方式
中断请求端出现的高电平是有
效的中断请求信号
- 66- 目录 上页 下页 束结
( 7 ) 中断级连
 一个系统中, 8259A 可以级连,有一个主
8259A ,若干个(最多 8 个)从 8259A
 级连时,主 8259A 的三条级连线 CAS0 ~
CAS2 作为输出线,连至每个从 8259A 的
CAS0 ~ CAS2
 每个从 8259A 的中断请求信号 INT ,连至主
8259A 的一个中断请求输入端 IR
 主 8259A 的 INT 线连至 CPU 的中断请求输入
端
 SP*/EN* 在非缓冲方式下,规定该 8259A 是主
片( SP* = 1 )还是从片( SP* = 0 )
- 67- 目录 上页 下页 束结
级连方式
 不级连——只用 1 片,如 PC/XT
 级连——使用 2~9 片,如 PC/AT ( 2
片)
-INTA
INTR
IR0
IR7
IR7
IR0
CAS0~CAS2=010
INT
INT
D0~D7
- 68- 目录 上页 下页 束结
4. 8259A 的编程
初始化编程
8259A 开始工作前,
用户必须对 8259A 进行初始化编程。通过
写入初始化命令字 ICW 对 8259A 进行初始化。
工作方式编程
在 8259A 工作期间
可以随时向 8259A 写入操作命令字
OCW ,使之按用户设置的新的工作方式进行工
作,用户还可以通过写操作命令字 OCW 通知
8259A ,下面的操作要读取 8259A 中的状态信
息,以便了解其工作情况。
- 69- 目录 上页 下页 束结
⑴ 8259 的初始化编程
 8259 初始化编程的主要任务有:
 ① 复位 8259 芯片。
 ② 设定中断请求信号 INT 有效的形式,是高电
平有效,还是上升沿有效。
 ③ 设定 8259 工作在单片方式还是多片级联方
式。
 ④ 设定 8259 管理的中断类型号的基值,即 0
级 IR0 所对应的中断类型号。
 ⑤ 设定各中断级的优先次序, IR0 最高, IR7
最低。
 ⑥ 设定一次中断处理结束时的结束方式。
- 70- 目录 上页 下页 束结
( 1 )初始化命令字 ICW
 初始化命令字 ICW 最多有 4 个
 8259A 在开始工作前必须写入
 必须按照 ICW1 ~ ICW4 顺序写入
 ICW1 和 ICW2 是必须送的
 ICW3 和 ICW4 由工作方式决定
流程
D7 D6 D5 D4 D3 D2 D1 D0
- 71- 目录 上页 下页 束结
ICW1
× × × 1 LTIM × SNGL IC4
D7 D6 D5 D4 D3 D2 D1 D0
×—— 表示可以任意
为 1 为 0 都 可 以 ( 建 议 为
0 )
1—— 只能为 1 ,作为标志
中断触发方式:
LTIM = 1 ,电平触发方式
LTIM = 0 ,边沿触发方式
规定单片或级连方式:
SNGL = 1 ,单片方式
SNGL = 0 ,级连方式
是否写入 ICW4
IC4 = 1 ,要写入 ICW4
IC4 = 0 ,不写入 ICW4 ,
即 ICW4 规定的位全为 0
- 72- 目录 上页 下页 束结
ICW2
T7 T6 T5 T4 T3 × × ×
D7 D6 D5 D4 D3 D2 D1 D0
设置中断向量号
T7 ~ T3 为中断向量号的高 5
位
低 3 位由 8259A 自动确定:
IR0 为 000 、 IR1 为 001 、 …
…、 IR7 为 111
- 73- 目录 上页 下页 束结
ICW3
S7 S6 S5 S4 S3 S2/
ID2
S1/
ID1
S0/
ID0
D7 D6 D5 D4 D3 D2 D1 D0
级连命令字
主片 8259A : Si = 1 对应 IRi 接有从
片;否则 IRi 没有连接从片
从片 8259A : ID0 ~ ID2 编码说明从
片 INT 引脚接到主片哪个 IR 引脚
- 74- 目录 上页 下页 束结
ICW4
0 0 0 SFNM BUF M/S AEOI μPM
D7 D6 D5 D4 D3 D2 D1 D0
嵌套方式:
特 殊 全 嵌 套 方 式 ( SFNM =
1 )
普 通 全 嵌 套 方 式 ( SFNM =
0 )
数据线的缓冲方式:
缓冲方式( BUF = 1 )
非缓冲方式( BUF = 0 )
主片 / 从片选择:
主片( M/S=1 )
从片( M/S=0 )
中断结束方式:
自动中断结束( AEOI = 1 )
非自动中断结束( AEOI =
0 )
微处理器类型:
16 位 80x86 ( PM =
1 )
8 位 8080/8085 ( PM =
0 )
- 75- 目录 上页 下页 束结
8259 芯片的初始化流程
ICW4 ( A0=1
)
SNGL=0 ?
ICW1 的
IC4=1 ?
初始化完,准备接受中断请求输入
是
是
否
ICW1 ( A0=0 , D4=1
)
ICW2 ( A0=0 )
ICW3 ( A0=0 )
否
- 76- 目录 上页 下页 束结
初始化主片 8259A
mov al,11h ; 写入 ICW1
out 20h,al
jmp intr1
intr1: mov al,08h ; 写入 ICW2
out 21h,al
jmp intr2
intr2: mov al,04h ; 写入 ICW3
out 21h,al
jmp intr3
intr3: mov al,1h ; 写入 ICW4
out 21h,al
中断控制器的初始化程序段
- 77- 目录 上页 下页 束结
初始化从片 8259A
mov al,11h ; 写入 ICW1
out 0a0h,al
jmp intr5
intr5: mov al,70h ; 写入 ICW2
out 0a1h,al
jmp intr6
intr6: mov al,02h ; 写入 ICW3
out 0a1h,al
jmp intr7
intr7: mov al, 01h ; 写入 ICW4
out 0a1h,al
中断控制器的初始化程序段
- 78- 目录 上页 下页 束结
⑵ 工作方式编程
 8259 工作方式编程主要完成的任务是对中断请求的屏
蔽、优先级循环控制、中断结束方式、内部控制寄存
器的查询等。
 8259A 工作期间,可以随时接受操作命令字 OCW
 OCW 共有 3 个: OCW1 ~ OCW3
 写入时没有顺序要求,需要哪个 OCW 就写入那个
OCW
D7 D6 D5 D4 D3 D2 D1 D0
- 79- 目录 上页 下页 束结
OCW1
M7 M6 M5 M4 M3 M2 M1 M0
D7 D6 D5 D4 D3 D2 D1 D0
屏蔽命令字
内容写入中断屏蔽寄存器 IMR
Di = Mi 对 应 IRi , 为 1 禁 止
IRi 中断;
为 0 允许 IRi 中断。各位互相独
立。
- 80- 目录 上页 下页 束结
OCW2
R SL EOI 0 0 L2 L1 L0
D7 D6 D5 D4 D3 D2 D1 D0
R 、 SL 和 EOI 配 合
使用
产 生 中 断 结 束 EOI
命 令 和 改 变 优 先 权
顺序
L2 ~ L0 的 3 位 编
码
指定 IR 引脚
- 81- 目录 上页 下页 束结
OCW3
0 ESMM SMM 0 1 P RR RIS
D7 D6 D5 D4 D3 D2 D1 D0
ESMM 、 SMM
设 置 中 断 屏 蔽 方
式
P 、 RR 和 RIS
规定随后读取的
状态字含义
- 82- 目录 上页 下页 束结
读取状态字
 CPU 可读出 IRR 、 ISR 、 IMR 和查
询字
 A0 为低,由 OCW3 中 RR 和 RIS 位
设定读取 IRR 或 ISR ,由 OCW3 中
P 位设定读取查询字
 而 A0 引脚为高电平时读取的都是
IMR
 查询字反映 8259A 是否有中断请求
- 83- 目录 上页 下页 束结
查询字
I - - - - W2 W1 W0
D7 D6 D5 D4 D3 D2 D1 D0
中 断 位 I 位 为
1 ,
有外设请求中断
W2 ~ W0 的 编
码
当前中断请求的
最高优先级
- 84- 目录 上页 下页 束结
补充: 命令字和状态字的区别方
法
⑴ 利用读写信号区别写入的控制寄存器
和读出的状态寄存器
⑵ 利用地址信号区别不同 I/O 地址的寄
存器
⑶ 由控制字中的标志位说明是哪个寄存
器
⑷ 由芯片内顺序控制逻辑按一定顺序识
别不同的寄存器
⑸ 由前面的控制字决定后续操作的寄存
器
接口电路中常用的方法
- 85- 目录 上页 下页 束结
( 1 )与 CPU 的配合方式
 与 8080/8085 CPU 配合—— 中断响应时, -INTA 信号 3
次有效, 8259A 送 CALL XXXXH 指令( 3 个字节)的
机器代码到数据总线 ;
 与 8086/8088 CPU 配合——中断响应时, -INTA 信号 2
次有效, 8259A 送相应的中断向量号( 1 个字节)到数
据总线。
8080/
85
CPU
8259A
8086/
88
CPU
8259A
CALL XXXXH 中断向量号
-INTA
INTR
-INTA
INTR
5. 80X86 微机的中断控制
器
- 86- 目录 上页 下页 束结
( 2 ) 与处理器接口
-CS A0 -RD -WR 功能
0 0 1 0
0 1 1 0
0 0 0 1
0 1 0 1
0 × 1 1
1 × × ×
写入 ICW1 、 OCW2 和
OCW3
写入 ICW2 ~ ICW4 和 OCW1
读出 IRR 、 ISR 和查询字
读出 IMR
数据总线高阻状态
数据总线高阻状态
- 87- 目录 上页 下页 束结
6.4.3 中断识别和中断优先权处理
问题 1 :系统有多个中断请求
,
CPU 如何识别中断源?
办法 1 : 向量中断(硬件)
办 法 2 : 中 断 查 询 ( 软 / 硬 件 结
合)
中断源的识别中断源的识别
- 88- 目录 上页 下页 束结
中断查询接口
A0 ~ A15
锁
存
器
INTR
三态
缓冲器
译码
8001H
D0 ~ D7
中断 A
中断 B
中断 C
中断 H
…
…
-IOR
- 89- 目录 上页 下页 束结
6.4.3 中断优先权(续 1 )
问题 2 :有多个中断同时请求
,
CPU 如何应对?
办法 1 :链式优先权排队电
路
办法 2 :优先权编码电路
中断优先级排
队
中断优先级排
队
- 90- 目录 上页 下页 束结
链式中断优先权排队电路
A2
A1
C2
C1
D2
D1
B2
B1
中断源 A
触发器
中断源 B
触发器
中断源 C
触发器
中断矢量 D中断矢量 C
中断矢量 B中断矢量 A
中断源 D
触发器
缓冲器缓冲器缓冲器缓冲器
-INTA
高优先级
- 91- 目录 上页 下页 束结
中断优先权编码电路
比较器失效信号
(先前无中断请求时有效
)
比较器
8:3
优先权
编码器
优先权
寄存器
D0 ~ D7
2
1 A < B
中断请求 0
中断请求 1
中断请求 2
A0
A1
A2INTR
B0
B1
B2
…
有中断请求
- 92- 目录 上页 下页 束结
6.4.3 中断优先权(续 2 )
问题 3 :中断处理过程中,
又有中断提出请求,怎么办?
办法 1 :链式优先权排队电
路
办法 2 :优先权编码电路
中断嵌套中断嵌套
- 93- 目录 上页 下页 束结
I/O 接口的典型结构
1. 接口电路的内部结构
2. 接口电路的外部特性
3. 接口芯片的分类
4. 接口芯片的可编程性
1. 接口电路的内部结构
2. 接口电路的外部特性
3. 接口芯片的分类
4. 接口芯片的可编程性
- 94- 目录 上页 下页 束结
1. 接口电路的内部结构
 CPU 与外设主要有数据、状态和控制信息
需要相互交换,于是从应用角度看内部:
⑴ 数据寄存器
保存外设给 CPU 和 CPU 发往外设的数据
⑵ 状态寄存器
保存外设或接口电路的状态
⑶ 控制寄存器
保存 CPU 给外设或接口电路的命令
理解端口理解端口
- 95- 目录 上页 下页 束结
2. 接口电路的外部特性
 面向 CPU 一侧的信号:
用于与 CPU 连接
主要是数据、地址和控制信号
 面向外设一侧的信号:
用于与外设连接
提供的信号五花八门
功能定义、时序及有效电平等差异较大
- 96- 目录 上页 下页 束结
3. 接口芯片的分类
 接口电路核心部分往往是一块或数块大规
模集成电路芯片(接口芯片):
 通用接口芯片
支持通用的数据输入输出和控制的接口芯片
 面向外设的专用接口芯片
针对某种外设设计、与该种外设接口
 面向微机系统的专用接口芯片
与 CPU 和系统配套使用,以增强其总体功能
- 97- 目录 上页 下页 束结
4. 接口电路的可编程性
 许多接口电路具有多种功能和工作方式
,可以通过编程的方法选定其中一种
 接口需要进行物理连接,还需要编写接
口软件
 接口软件有两类:
初始化程序段——设定芯片工作方式等
数据交换程序段——管理、控制、驱动外设,
负责外设和系统间信息交换
- 98- 目录 上页 下页 束结
IBM PC/AT 主机板的 I/O 译码电路
接口芯片内部译码A0 ~ A4
DMA 控制器 1
中断控制器 1
定时计数器
并行接口电路
DMA 页面寄存器
中断控制器 2
DMA 控制器 2
协处理器
A5
A6
A7
A8
A9
ALS138 译码器
HLDA
MASTER
A
B
C
E1
-E2
-E3
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
- 99- 目录 上页 下页 束结
IBM PC/XT 主机板的 I/O 译码电路
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
A5
A6
A7
A8
A9
AEN
-IOW
A
B
C
-G2B
-G2A
G1
74LS13874LS138
-DMA CS ( 8237 )
-INTR CS ( 8259 )
-T/C CS ( 8253 )
-PPI CS ( 8255 )
-WRTDMAPG
(写 DMA 页面寄存器)
-WRTNMIREG
(写 NMI 屏蔽寄存器)
- 100- 目录 上页 下页 束结
用门电路实现 I/O 地址译码
A9
A8
A7
A6
A5
A2
A4
A3
AEN
A1
A0
74LS03
I/O 地址 3E7H
- 101- 目录 上页 下页 束结
6.4 DMA 传送方式
 希望克服程序控制传送的不足:
外设→ CPU→ 存储器
外设← CPU← 存储器
 直接存储器存取 DMA :不经 CPU ,不用指令
外设→存储器( DMA 写)
外设←存储器( DMA 读)
扩展:外设↔ 外设
 CPU 出让系统总线(输出高阻),由 DMA 控
制器( DMAC )接管系统总线
- 102- 目录 上页 下页 束结
6.4.1 DMA 传送的工作过程
⑴ CPU 对 DMA 控制器进行初始化设置
⑵ 外设、 DMAC 、 CPU , 3 者通过应答信号
建立联系: CPU 将总线暂交 DMAC 控制,事
后再将控制权返还。
⑶ DMA 传送
DMA 读:存储器 → 外设
DMA 写:存储器 ← 外设
⑷ DMAC 的功能:
对存储器寻址地址动加 1/ 减 1
计数器减 1
判断传送是否完成
送流程传
- 103- 目录 上页 下页 束结
DMA 传送( 以 DMA 写为例)
-MEMW
-IOR
数据总
线
地址总
线
输
入
设
备
存
储
器
D
M
A
C
C
P
U
②
③④
①
HOLD
HLDA
- 104- 目录 上页 下页 束结
DMA 传送流程
HLDA
发存储器地址
传送数据
传送结束?
DMA 结束
修改地址指针
- 105- 目录 上页 下页 束结
传送方式的比较
 无条件传送:慢速外设需与 CPU 保持同
步
 查询传送: 简单实用,效率较低
 中断传送:外设主动,可与 CPU 并行工
作,但每次传送需要大量额外时间开销
 DMA 传送: DMAC 控制,外设直接和存
储器进行数据传送,适合大量、快速数
据传送
- 106- 目录 上页 下页 束结
6.4.2 DMA 控制器 8237
 每个 8237A 芯片有 4 个 DMA 通道,
就是有 4 个 DMA 控制器
 每个 DMA 通道具有不同的优先权
 每个 DMA 通道可以分别允许和禁止
 每个 DMA 通道有 4 种工作方式
 一次传送的最大长度可达 64KB
 多个 8237A 芯片可以级连,扩展通道
数
- 107- 目录 上页 下页 束结
1. DMA 控制器的功能
 ① 编程设定 DMA 的传输模式及其所访问内存的地址区
域。
 ② 屏蔽或接受外围设备的 DMA 请求( DREQ ),当有
多个设备同时请求时,还要进行优先级排队,首先接受
最高级的请求。
 ③ 向 CPU 转达 DMA 请求, DMA 控制器要向 CPU 发
出总线请求信号 HOLD( 高电平有效 ) ,请求 CPU 放弃
总线的控制。
 ④ 接收 CPU 的总线响应信号 (HLDA) ,接管总线控制
权,实现对总线的控制。
 ⑤ 向相应外围设备转达 DMA 允许信号 DACK 。于是在
DMA 控制器的管理下,实现外围设备和存储器之间的
数据直接传送。
 ⑥ 在传送过程中进行地址修改和字节计数。在传送完
要求的字节数后,向 CPU 发出 DMA 结束信号 (EOP) ,
撤消总线请求 (HRQ) ,将总线控制权交还给 CPU 。
- 108- 目录 上页 下页 束结
2. 可编程 DMA 控制器 Intel8237DMAC
的主要性能和内部结构
 内部结构和外部引脚都相对比较复杂
 应用观点,内部主要由两类寄存器组
成
通道寄存器
控制和状态寄存器
首先分类展开外部引脚
- 109- 目录 上页 下页 束结
3. 8237 的
外部引脚
- 110- 目录 上页 下页 束结
(1) 请求与响应信号
 DREQ0 ~ DREQ3 : DMA 通道请求。当外
设需要请求 DMA 服务时,将 DREQ 信号置
成有效电平,并要保持到产生响应信号。
 HRQ :总线请求。 8237A 输出有效的 HRQ
高电平,向 CPU 申请使用系统总线。
 HLDA :总线响应。 8237A 接受来自 CPU
的响应信号 HLDA ,取得了总线的控制权
。
 DACK0 ~ DACK3 : DMA 通道响
应。 8237A 使请求服务的通道产生相应的
DMA 响应信号。
3. 8237 的外部引脚
- 111- 目录 上页 下页 束结
(2) DMA 传送控制信号
 A0 ~ A7 :地址线。输出低 8 位存储器地址。
 DB0 ~ DB7 :数据线。输出高 8 位存储器地
址;存贮器与存贮器的传送期间,用于数据传
送。
 ADSTB :地址选通。 DMA 传送开始时,输出
高有效,把在 DB0 ~ DB7 上输出的高 8 位地
址锁存在外部锁存器中。
 AEN :地址允许。输出高有效,将锁存的高 8
位地址送入系统总线,与芯片此时输出的低 8
位地址组成 16 位存储器地址。
- 112- 目录 上页 下页 束结
(2) DMA 传送控制信号(续)
 MEMR* :存储器读。有效将数据从存储器
读出
 MEMW* :存储器写。有效将数据写入存储
器
 IOR* : I/O 读。有效将数据从外设读出
 IOW* : I/O 。有效将数据写入外设
 READY :准备好。 DMA 传送的 S3 下降沿
检测到为低时,插入等待状态 Sw ,直到
READY 为高才进入第 4 个时钟周期 S4 。
 EOP* :过程结束。 DMA 传送过程结束,输
出一个低有效脉冲。外部输入低脉冲信号,
则终结 DMA 传送。
- 113- 目录 上页 下页 束结
(3) 处理器接口信号
 DB0 ~ DB7 :数据线。用于 8237A 与微处
理器进行数据交换。
 A0 ~ A3 :地址线。用以选择芯片内部寄
存器。
 CS* :片选。低有效时,微处理器与 8237A
通过数据线通信,主要完成对 8237A 的编
程。
 IOR* : I/O 读。读取 8237A 内部寄存器。
 IOW* : I/O 写。写入 8237A 内部寄存器。
 CLK :时钟。控制芯片内部操作和数据传
输。
 RESET :复位。使 8237A 处于初始状态。
- 114- 目录 上页 下页 束结
4. 8237 DMAC 的工作方式
 DMA 传送方式
· 单字节传送方式 · 数据块传送方式
· 请求传送方式 · 级连方式
 DMA 传送类型
· DMA 读 · DMA 写 · DMA 检验
 存储器到存储器的传送
工作模式(传送方式)和操作类型。
- 115- 目录 上页 下页 束结
① . DMA 传送-单字节方式
 每次 DMA 传送时仅传送一个字节
 传送一个字节之后,字节数寄存器减 1 ,
地址寄存器加 1 或减 1 , HRQ 变为无效
 8237A 释放系统总线,将控制权还给 CPU
 若传送后使字节数从 0 减到 FFFFH ,则终
结 DMA 传送或重新初始化
 特点:
一次传送一个字节,效率略低
DMA 传送之间 CPU 有机会重新获取总线控制权
⑴ 工作模式 : ( 每个通道有 4 种工作
模式 )
- 116- 目录 上页 下页 束结
② 数据块传送方式
 由 DREQ 启动就连续地传送数据,直到
字节数寄存器从 0 减到 FFFFH 终止计数
,或由外部输入有效信号终结 DMA 传送
 DREQ 只需维持有效到 DACK 有效
 特点:
一次请求传送一个数据块,效率高
整个 DMA 传送期间 CPU 长时间无法控制总线
(无法响应其他 DMA 请求、无法处理中断
等)
- 117- 目录 上页 下页 束结
③ 请求传送方式
 DREQ 信号有效就连续传送数据
 DREQ 信号无效, DMA 传送被暂时中止,
8237A 释放总线, CPU 可继续操作
 DMA 通道的地址和字节数的中间值仍被保
持
 DREQ 信号再次有效, DMA 传送就继续进
行
 如果字节数寄存器从 0 减到 FFFFH ,或者
由外部送来一个有效的信号,将终止计数
 特点:
DMA 操作可由外设利用 DREQ 信号控制传送的过
程
- 118- 目录 上页 下页 束结
④ 级联方式
 用于通过多个 8237A 级连以扩展通道
 第二级的 HRQ 和 HLDA 信号连到第
一级某个通道的 DREQ 和 DACK 上
 第二级芯片的优先权等级与所连通道
的优先权相对应
 第一级只起优先权网络的作用,实际
的操作由第二级芯片完成
 还可由第二级扩展到第三级等
- 119- 目录 上页 下页 束结
⑵ 操作类型
 DMA 读——把数据由存储器传送到外设
由 MEMR* 有效从存储器读出数据,由 IOW* 有
效把这一数据写入外设
 DMA 写——把外设输入的数据写入存储器
由 IOR* 有效从外设输入数据,由 MEMW* 有效
把这一数据写入存储器。
 DMA 检验——空操作
8237A 不进行任何检验
外设可以进行 DMA 校验
存储器和 I/O 控制线保持无效,不进行传送
 存储器→存储器传送
- 120- 目录 上页 下页 束结
存储器→存储器传送
 固定使用通道 0 和通道 1
 通道 0 的地址寄存器存源区地址
 通道 1 的地址寄存器存目的区地址,通道 1
的字节数寄存器存传送的字节数
 传送由设置通道 0 的软件请求启动
 每传送一字节需用 8 个时钟周期
前 4 个时钟周期用通道 0 地址寄存器的地址从源
区读数据送入 8237A 的临时寄存器
后 4 个时钟周期用通道 1 地址寄存器的地址把临
时寄存器中的数据写入目的区
- 121- 目录 上页 下页 束结
5. 8237 的控制字和编程
 8237A 共有 10 种内部寄存器,对它们
的操作有时需要配合 3 个软件命令
 8237A 的“软件命令”
不需要通过数据总线写入控制字
直接由地址和控制信号译码实现
全部都用地址 A0 ~ A3 区分
- 122- 目录 上页 下页 束结
(1) 当前地址寄存器
 保持 DMA 传送的当前地址值
 每次传送后该寄存器的值自动加 1 或减 1
 这个寄存器的值可由 CPU 写入和读出
基地址寄存器
存放初始值
㈠ 内部寄存器
- 123- 目录 上页 下页 束结
(2) 当前字节数寄存器
 保持 DMA 传送的剩余字节数
 每次传送后,该寄存器的值减 1
 这个寄存器的值可由 CPU 写入和读出
 该寄存器的值减至 0 ,再减 1 (从 0 减到
FFFFH )时,终止计数
传送 N 个字节,初始值为 N - 1
传送 N 个字节,初始值为 N - 1
基字节数寄存器
存放初始值
- 124- 目录 上页 下页 束结
⑶ 基地址寄存器和基字节计数寄
存器
 每个通道均有一个 16 位的基地址寄存器和一个
16 位的基字节计数寄存器。
 它们用来存放所对应的地址寄存器和字节计数
器的初始值。
 在编程时,这两个寄存器由 CPU 以连续两字节
方式与对应的当前寄存器同时写入,但它们的
内容不能读出。
 在自动预置方式时,基本寄存器的内容被用来
恢复当前寄存器的初始值。
- 125- 目录 上页 下页 束结
(4) 命令寄存器
 存放 8237A 的命令字
 设置 8237A 芯片的操作方式
 影响每个 DMA 通道
 复位时使命令寄存器清零
 设置 D2 = 1 才使 8237A 可以作为 DMA 控
制器
请看命令字的格式
- 126- 目录 上页 下页 束结
命令字格式
D7 D6 D5 D4 D3 D2 D1 D0
0 DACK 低有效
1 DACK 高有效
0 DREQ 高有效
1 DREQ 低有效
0 滞后写
1 扩展写
× 若 D3 = 1
0 固定优先权
1 循环优先权
0 正常时序
1 压缩时序
× 若 D0 = 1
0 允许 DMAC 工作
1 禁止 DMAC 工作
0 允 许 通 道 0 地 址
改变
1 禁 止 通 道 0 地 址
改变
× 若 D0 = 0
0 禁止存储器之间传
送
1 允许存储器之间传
送
- 127- 目录 上页 下页 束结
(5) 方式寄存器
 存放相应通道的方式控制字
 选择某个 DMA 通道的工作方式
 其中用最低 2 位选择哪个 DMA 通道
请看方式字的格式
- 128- 目录 上页 下页 束结
方式字格式
D7 D6 D5 D4 D3 D2 D1 D0
00 请求模式
01 单 字 节 模
式
10 数 据 块 模
式
11 级联模式
0 地址增量(加
1 )
1 地址减量(减
1 )
0 禁 止 自 动 初 始
化
1 允 许 自 动 初 始
化
00 DMA 校验
01 DMA 写
10 DMA 读
11 非法
×× 若 D7D6 =
11
00 通道 0
01 通道 1
10 通道 2
11 通道 3
- 129- 目录 上页 下页 束结
(6) 请求寄存器
 存放软件 DMA 请求状态
 除硬件 DMA 请求外,当工作在数据
块传送方式时也可以通过软件发出
DMA 请求
 若是存贮器到存贮器传送,则必须由
软件请求启动通道 0
请看请求字的格式
- 130- 目录 上页 下页 束结
请求字格式
D7 D6 D5 D4 D3 D2 D1 D0
任意
0 复位
1 置位 00 通 道
0
01 通道
1
10 通道
2
11 通道
- 131- 目录 上页 下页 束结
(7) 屏蔽寄存器
 控制外设硬件 DMA 请求是否被响应(为 0
允许),各个通道互相独立。 3 种方法:
单通道屏蔽字只对一个 DMA 通道屏蔽位进行设置
主屏蔽字对 4 个 DMA 通道屏蔽位同时进行设置
清屏蔽寄存器命令使 4 个屏蔽位都清零(允许)
 复位使 4 个通道全置于屏蔽状态
 当一个通道的 DMA 过程结束,如果不是工
作在自动初始化方式,则这一通道的屏蔽位
置位,必须再次编程为允许,才能进行下次
DMA 传送
请看屏蔽字的格式
- 132- 目录 上页 下页 束结
单通道屏蔽字格式
D7 D6 D5 D4 D3 D2 D1 D0
任意
0 清 屏 蔽
位
1 置 屏 蔽
位
00 通 道
0
01 通道
1
10 通道
2
11 通道
- 133- 目录 上页 下页 束结
主屏蔽字格式
D7 D6 D5 D4 D3 D2 D1 D0
任意
Di = 0 清通道 I 屏
蔽位 Di = 1 置通道
I 屏蔽位
- 134- 目录 上页 下页 束结
(8) 状态寄存器
 可由 CPU 读取
 低 4 位反映读命令这个瞬间每个通道
是否产生 TC (为 1 ,表示该通道传
送结束)
 高 4 位反映每个通道的 DMA 请求情
况(为 1 ,表示该通道有请求)
 状态位在复位或被读出后,均被清零
- 135- 目录 上页 下页 束结
(9) 暂存寄存器
 在存储器到存储器的传送方式下,临
时寄存器保存从源存储单元读出的数
据,该数据又被写入到目的存储单元
 传送完成,临时寄存器只会保留最后
一个字节,可由 CPU 读出
 复位使临时寄存器内容为零
- 136- 目录 上页 下页 束结
补充 : 读写通道寄存器
 CPU 与 8237A 之间通过 8 位数据总线
交换信息, 8237A 的通道寄存器均为
16 位
 需要两次读写操作才能实现 CPU 与
8237A 之间的一个完整数据的交换
 8237A 内含一个高 / 低触发器,用来
控制读写通道寄存器的高、低字节
- 137- 目录 上页 下页 束结
补充 : 高 / 低触发器
 该触发器为 0 ,控制读写低字节
 该触发器为 1 ,控制读写高字节
 软、硬件复位后,触发器为 0
 每次读写通道寄存器,自动改变触发
器状态。如果对 16 位寄存器的操作
用两次连续读写进行,就不必清除这
个触发器
 清除高 / 低触发器软件命令( A3
A2
A1
A0
= 1100 )将使高 / 低触发器清零
- 138- 目录 上页 下页 束结
(10) 软件命令
 清除高 / 低触发器软件命令
A3
A2
A1
A0
= 1100 ,使高 / 低触发器清零
 主清除命令
A3
A2
A1
A0
= 1101 ,使高 / 低触发器清零
还使命令、状态、请求、临时寄存器清零
使屏蔽寄存器置为全 1 (禁止 DMA 请求)
主清除命令与硬件的 RESET 信号具有相同的功能
 清屏蔽寄存器命令
A3
A2
A1
A0
= 1110 ,使 4 个屏蔽位都清零(允许
DMA 请求)
- 139- 目录 上页 下页 束结
㈡ 内部寄存器的寻址
 对 8237 内部寄存器的寻址和执行与控制器有关
的软件命令,都由芯片选择信号, I/O 读、 I/O
写和 A3 ~ A0 地址线的不同状态编码来完成。
= 0 表示访问该 8237DMAC 芯片; A3 = 0 则表
示访问某个地址寄存器或字节计数器; A3=1 则
表示访问控制寄存器和状态寄存器。
 或正在发出一条软件命令。
 在和 A3 都为 0 时, CPU 访问某个地址寄存器
或字节计数器,并由 A2 ~ A1 编码状态给出通
道号,而 A0=0 表示访问当前地址寄存器, A0
= 1 表示访问当前字节计数器。而用为低电平
或为低电平表示是读操作还是写操作。
 对当前地址寄存器进行写入的同时,也写入基
本地址寄存器;对当前字节计数器进行写入的
同时,也写入基本字节计数器。
CS
- 140- 目录 上页 下页 束结
㈢ 8237 的编程步骤
① 输出主清除命令;
② 写入基与现行地址寄存器;
③ 写入基与现行字节数址寄存器;
④ 写入模式寄存器;
⑤ 写入屏蔽寄存器;
⑥ 写入命令寄存器;
⑦ 写入请求寄存器;
若有软件请求,就写入到指定通道,就可以开始 DMA
传送过程;若无软件请求,则在完成了① -⑦ 的编程后,由
通道的 DREQ 启动 DMA 传送过程。
例:若要利用通道 0 ,由外设 ( 磁盘 ) 输入 32KB 的一个数据块,
传送至内存 8000H 开始的区域 ( 增量传送 ) ,采用块连续传送的方
式,传送完不自动初始化,外设的 DREQ 和 DACK 都为高电平有
效。
要编程首先要确定端口地址。地址的低 4 位用以区分 8237
的内部寄存器,高 4 位地址 A7 ~ A4 经译码后,连至选片端
CS ,假定选中时高 4 位为 5 。
① 模式控制字 D7 D6 D5 D4 D3 D2 D1 D0
1 0 0 0 0 1 0 0
② 屏蔽字 D7 D6 D5 D4 D3 D2 D1 D0
0 0 0 0 0 0 0 0
③ 命令字 D7 D6 D5 D4 D3 D2 D1 D0
1 0 1 0 0 0 0 0
- 142- 目录 上页 下页 束结
DMA 通道 0 的刷新 程编
OUT 5DH , AL ;输出主清除命令
MOV AL , 00H
OUT 50H , AL ;输出基和现行地址
的低 8 位
MOV AL , 80H
OUT 50H , AL ;输出基和现行地址
的高 8 位
MOV AL , 00H
OUT 51H , AL
MOV AL , 80H
OUT 51H , AL ;给基和现行字节数
赋值
MOV AL , 84H
OUT 5BH , AL ;输出模式字
MOV AL , 00H
OUT 5AH , AL ;输出屏蔽字
MOV AL , 0AOHIBM PC/XT
- 143- 目录 上页 下页 束结
6. Intel 8237 的应用举例
㈠ 8088 访问 8237 的寻址 ( 自学 )
㈡ 8237 的初始化编程
在进行 DMA 传输之前, CPU 要对 8237
进行编程。 DMA 传输要涉及到 RAM 地址、
数据块长、操作方式和传输类型,因此,在
每次 DMA 传输之前,除自动预置外,都必须
对 8237 进行一次初始化编程。若数据块超过
64KB 界限时,还必须将页面地址写入页面寄
存器。
㈢ 利用 8237 的 CHl 实现 DMA 数据传送 ( 自
学 )
- 144- 目录 上页 下页 束结
6.5 例题解析
略
第 6 章教学要求
1. 了解 8237A 引脚特点和工作时序
2. 掌握 8237A 的各种工作方式
3. 理解 8237A 内部寄存器的作用和编
程
4. 了解 8237A 在 IBM PC 系列机上的应
用情况

More Related Content

What's hot

Arduino 習作工坊 - Lesson 3 電音之夜
Arduino 習作工坊 -  Lesson 3 電音之夜Arduino 習作工坊 -  Lesson 3 電音之夜
Arduino 習作工坊 - Lesson 3 電音之夜CAVEDU Education
 
HC 05藍芽模組連線
HC 05藍芽模組連線HC 05藍芽模組連線
HC 05藍芽模組連線Chen-Hung Hu
 
Robotis Servo 與 RoBoard 之連接介面
Robotis Servo 與 RoBoard 之連接介面Robotis Servo 與 RoBoard 之連接介面
Robotis Servo 與 RoBoard 之連接介面roboard
 
S3 cev40getting startv2.1 cn
S3 cev40getting startv2.1 cnS3 cev40getting startv2.1 cn
S3 cev40getting startv2.1 cnVidur Garg
 
RoBoard 與 Lego NXT Sensors 之連接
RoBoard 與 Lego NXT Sensors 之連接RoBoard 與 Lego NXT Sensors 之連接
RoBoard 與 Lego NXT Sensors 之連接roboard
 
[嵌入式系統] 嵌入式系統進階
[嵌入式系統] 嵌入式系統進階[嵌入式系統] 嵌入式系統進階
[嵌入式系統] 嵌入式系統進階Simen Li
 
[嵌入式系統] MCS-51 實驗 - 使用 IAR (1)
[嵌入式系統] MCS-51 實驗 - 使用 IAR (1)[嵌入式系統] MCS-51 實驗 - 使用 IAR (1)
[嵌入式系統] MCS-51 實驗 - 使用 IAR (1)Simen Li
 
嵌入式inux應用專題文件-智慧家庭系統
嵌入式inux應用專題文件-智慧家庭系統嵌入式inux應用專題文件-智慧家庭系統
嵌入式inux應用專題文件-智慧家庭系統艾鍗科技
 
2018 VLSI/CAD Symposium Tutorial (Aug. 7, 20:00-21:00 Room 3F-VII)
2018 VLSI/CAD Symposium Tutorial (Aug. 7, 20:00-21:00 Room 3F-VII)2018 VLSI/CAD Symposium Tutorial (Aug. 7, 20:00-21:00 Room 3F-VII)
2018 VLSI/CAD Symposium Tutorial (Aug. 7, 20:00-21:00 Room 3F-VII)Simen Li
 
Arduino 習作工坊#2 - 動力之夜150114
Arduino 習作工坊#2 - 動力之夜150114Arduino 習作工坊#2 - 動力之夜150114
Arduino 習作工坊#2 - 動力之夜150114CAVEDU Education
 
20120613 - Hardware knowledge which the software engineer must understand
20120613 - Hardware knowledge which the software engineer must understand20120613 - Hardware knowledge which the software engineer must understand
20120613 - Hardware knowledge which the software engineer must understandJethro Yeh
 
Arduino 習作工坊 - Lesson 4 通訊之夜
Arduino 習作工坊 -  Lesson 4 通訊之夜Arduino 習作工坊 -  Lesson 4 通訊之夜
Arduino 習作工坊 - Lesson 4 通訊之夜CAVEDU Education
 

What's hot (20)

Arduino 習作工坊 - Lesson 3 電音之夜
Arduino 習作工坊 -  Lesson 3 電音之夜Arduino 習作工坊 -  Lesson 3 電音之夜
Arduino 習作工坊 - Lesson 3 電音之夜
 
Arduino藍牙傳輸應用
Arduino藍牙傳輸應用Arduino藍牙傳輸應用
Arduino藍牙傳輸應用
 
Arduino程式快速入門
Arduino程式快速入門Arduino程式快速入門
Arduino程式快速入門
 
HC 05藍芽模組連線
HC 05藍芽模組連線HC 05藍芽模組連線
HC 05藍芽模組連線
 
Robotis Servo 與 RoBoard 之連接介面
Robotis Servo 與 RoBoard 之連接介面Robotis Servo 與 RoBoard 之連接介面
Robotis Servo 與 RoBoard 之連接介面
 
Arduino導論
Arduino導論Arduino導論
Arduino導論
 
S3 cev40getting startv2.1 cn
S3 cev40getting startv2.1 cnS3 cev40getting startv2.1 cn
S3 cev40getting startv2.1 cn
 
Plc4
Plc4Plc4
Plc4
 
Arduino程式快速入門
Arduino程式快速入門Arduino程式快速入門
Arduino程式快速入門
 
RoBoard 與 Lego NXT Sensors 之連接
RoBoard 與 Lego NXT Sensors 之連接RoBoard 與 Lego NXT Sensors 之連接
RoBoard 與 Lego NXT Sensors 之連接
 
[嵌入式系統] 嵌入式系統進階
[嵌入式系統] 嵌入式系統進階[嵌入式系統] 嵌入式系統進階
[嵌入式系統] 嵌入式系統進階
 
[嵌入式系統] MCS-51 實驗 - 使用 IAR (1)
[嵌入式系統] MCS-51 實驗 - 使用 IAR (1)[嵌入式系統] MCS-51 實驗 - 使用 IAR (1)
[嵌入式系統] MCS-51 實驗 - 使用 IAR (1)
 
Arduino AMA中級認證術科實作 all
Arduino AMA中級認證術科實作 allArduino AMA中級認證術科實作 all
Arduino AMA中級認證術科實作 all
 
嵌入式inux應用專題文件-智慧家庭系統
嵌入式inux應用專題文件-智慧家庭系統嵌入式inux應用專題文件-智慧家庭系統
嵌入式inux應用專題文件-智慧家庭系統
 
nodeMCU IOT教學03 - NodeMCU導論
nodeMCU IOT教學03 - NodeMCU導論nodeMCU IOT教學03 - NodeMCU導論
nodeMCU IOT教學03 - NodeMCU導論
 
2018 VLSI/CAD Symposium Tutorial (Aug. 7, 20:00-21:00 Room 3F-VII)
2018 VLSI/CAD Symposium Tutorial (Aug. 7, 20:00-21:00 Room 3F-VII)2018 VLSI/CAD Symposium Tutorial (Aug. 7, 20:00-21:00 Room 3F-VII)
2018 VLSI/CAD Symposium Tutorial (Aug. 7, 20:00-21:00 Room 3F-VII)
 
Arduino 習作工坊#2 - 動力之夜150114
Arduino 習作工坊#2 - 動力之夜150114Arduino 習作工坊#2 - 動力之夜150114
Arduino 習作工坊#2 - 動力之夜150114
 
Arduino簡介
Arduino簡介Arduino簡介
Arduino簡介
 
20120613 - Hardware knowledge which the software engineer must understand
20120613 - Hardware knowledge which the software engineer must understand20120613 - Hardware knowledge which the software engineer must understand
20120613 - Hardware knowledge which the software engineer must understand
 
Arduino 習作工坊 - Lesson 4 通訊之夜
Arduino 習作工坊 -  Lesson 4 通訊之夜Arduino 習作工坊 -  Lesson 4 通訊之夜
Arduino 習作工坊 - Lesson 4 通訊之夜
 

Viewers also liked

Sigma holiday gift guide
Sigma holiday gift guideSigma holiday gift guide
Sigma holiday gift guideLily
 
Werken aantrekkelijke modellen in reclame voor vrouwen
Werken aantrekkelijke modellen in reclame voor vrouwenWerken aantrekkelijke modellen in reclame voor vrouwen
Werken aantrekkelijke modellen in reclame voor vrouwenSanneOpdeBeeck
 
英文【Xu hao chen xiaobo】find your_own_ios_kernel_bug
英文【Xu hao chen xiaobo】find your_own_ios_kernel_bug英文【Xu hao chen xiaobo】find your_own_ios_kernel_bug
英文【Xu hao chen xiaobo】find your_own_ios_kernel_bugWang Hao Lee
 
Samuel calidad-del-servicio-de-energia
Samuel calidad-del-servicio-de-energiaSamuel calidad-del-servicio-de-energia
Samuel calidad-del-servicio-de-energiaAlexander Diaz
 
iOS 6 Exploitation 280 days later
iOS 6 Exploitation 280 days lateriOS 6 Exploitation 280 days later
iOS 6 Exploitation 280 days laterWang Hao Lee
 
#FIRMday 15th nov 2013 tom chesterton, tonic agency how being useful will m...
#FIRMday 15th nov 2013 tom chesterton, tonic agency   how being useful will m...#FIRMday 15th nov 2013 tom chesterton, tonic agency   how being useful will m...
#FIRMday 15th nov 2013 tom chesterton, tonic agency how being useful will m...Gary Franklin
 
Deep C Programming
Deep C ProgrammingDeep C Programming
Deep C ProgrammingWang Hao Lee
 

Viewers also liked (14)

صهيب
صهيبصهيب
صهيب
 
Allah
AllahAllah
Allah
 
Tesis89
Tesis89Tesis89
Tesis89
 
Sigma holiday gift guide
Sigma holiday gift guideSigma holiday gift guide
Sigma holiday gift guide
 
Werken aantrekkelijke modellen in reclame voor vrouwen
Werken aantrekkelijke modellen in reclame voor vrouwenWerken aantrekkelijke modellen in reclame voor vrouwen
Werken aantrekkelijke modellen in reclame voor vrouwen
 
英文【Xu hao chen xiaobo】find your_own_ios_kernel_bug
英文【Xu hao chen xiaobo】find your_own_ios_kernel_bug英文【Xu hao chen xiaobo】find your_own_ios_kernel_bug
英文【Xu hao chen xiaobo】find your_own_ios_kernel_bug
 
Blogger
BloggerBlogger
Blogger
 
Samuel calidad-del-servicio-de-energia
Samuel calidad-del-servicio-de-energiaSamuel calidad-del-servicio-de-energia
Samuel calidad-del-servicio-de-energia
 
iOS 6 Exploitation 280 days later
iOS 6 Exploitation 280 days lateriOS 6 Exploitation 280 days later
iOS 6 Exploitation 280 days later
 
Historia laburra
Historia laburraHistoria laburra
Historia laburra
 
Allah
AllahAllah
Allah
 
#FIRMday 15th nov 2013 tom chesterton, tonic agency how being useful will m...
#FIRMday 15th nov 2013 tom chesterton, tonic agency   how being useful will m...#FIRMday 15th nov 2013 tom chesterton, tonic agency   how being useful will m...
#FIRMday 15th nov 2013 tom chesterton, tonic agency how being useful will m...
 
Deep C Programming
Deep C ProgrammingDeep C Programming
Deep C Programming
 
Commercial paper
Commercial paperCommercial paper
Commercial paper
 

Similar to 第6章 输入输出技术

Deployment instruction tg4100 f-ig_cn
Deployment instruction tg4100 f-ig_cnDeployment instruction tg4100 f-ig_cn
Deployment instruction tg4100 f-ig_cnahnlabchina
 
接口芯片
接口芯片接口芯片
接口芯片jugn
 
第三章Ti msp430平台介紹 v3
第三章Ti msp430平台介紹 v3第三章Ti msp430平台介紹 v3
第三章Ti msp430平台介紹 v3冠宇 陳
 
本章分为三节,主要介绍:
本章分为三节,主要介绍:本章分为三节,主要介绍:
本章分为三节,主要介绍:ayoub lmaimouni
 
Sy03091说明书
Sy03091说明书Sy03091说明书
Sy03091说明书guest8f3690
 
单片机I/O口的使用
单片机I/O口的使用单片机I/O口的使用
单片机I/O口的使用ayoub lmaimouni
 
数字电路复习
数字电路复习数字电路复习
数字电路复习zhaowmm
 
03 计算机的逻辑部件02
03 计算机的逻辑部件0203 计算机的逻辑部件02
03 计算机的逻辑部件02Huaijin Chen
 
3.檔案內容簡介
3.檔案內容簡介3.檔案內容簡介
3.檔案內容簡介Hong Da Lin
 
系統程式 -- 第 11 章
系統程式 -- 第 11 章系統程式 -- 第 11 章
系統程式 -- 第 11 章鍾誠 陳鍾誠
 
Deployment instruction tg3100 ig-cn
Deployment instruction tg3100 ig-cnDeployment instruction tg3100 ig-cn
Deployment instruction tg3100 ig-cnahnlabchina
 
Deployment instruction tg1100 ig-cn
Deployment instruction tg1100 ig-cnDeployment instruction tg1100 ig-cn
Deployment instruction tg1100 ig-cnahnlabchina
 
IEC104规约介绍
IEC104规约介绍IEC104规约介绍
IEC104规约介绍Chen Ray
 
第14讲 交换机基本操作
第14讲 交换机基本操作第14讲 交换机基本操作
第14讲 交换机基本操作F.l. Yu
 

Similar to 第6章 输入输出技术 (20)

Deployment instruction tg4100 f-ig_cn
Deployment instruction tg4100 f-ig_cnDeployment instruction tg4100 f-ig_cn
Deployment instruction tg4100 f-ig_cn
 
接口芯片
接口芯片接口芯片
接口芯片
 
第三章Ti msp430平台介紹 v3
第三章Ti msp430平台介紹 v3第三章Ti msp430平台介紹 v3
第三章Ti msp430平台介紹 v3
 
20 cpu04
20 cpu0420 cpu04
20 cpu04
 
S3c2410a 16adc
S3c2410a 16adcS3c2410a 16adc
S3c2410a 16adc
 
18 cpu02
18 cpu0218 cpu02
18 cpu02
 
19 cpu03
19 cpu0319 cpu03
19 cpu03
 
本章分为三节,主要介绍:
本章分为三节,主要介绍:本章分为三节,主要介绍:
本章分为三节,主要介绍:
 
Sy03091说明书
Sy03091说明书Sy03091说明书
Sy03091说明书
 
最终版
最终版最终版
最终版
 
单片机I/O口的使用
单片机I/O口的使用单片机I/O口的使用
单片机I/O口的使用
 
数字电路复习
数字电路复习数字电路复习
数字电路复习
 
03 计算机的逻辑部件02
03 计算机的逻辑部件0203 计算机的逻辑部件02
03 计算机的逻辑部件02
 
3.檔案內容簡介
3.檔案內容簡介3.檔案內容簡介
3.檔案內容簡介
 
系統程式 -- 第 11 章
系統程式 -- 第 11 章系統程式 -- 第 11 章
系統程式 -- 第 11 章
 
Deployment instruction tg3100 ig-cn
Deployment instruction tg3100 ig-cnDeployment instruction tg3100 ig-cn
Deployment instruction tg3100 ig-cn
 
Arduino overview
Arduino overviewArduino overview
Arduino overview
 
Deployment instruction tg1100 ig-cn
Deployment instruction tg1100 ig-cnDeployment instruction tg1100 ig-cn
Deployment instruction tg1100 ig-cn
 
IEC104规约介绍
IEC104规约介绍IEC104规约介绍
IEC104规约介绍
 
第14讲 交换机基本操作
第14讲 交换机基本操作第14讲 交换机基本操作
第14讲 交换机基本操作
 

第6章 输入输出技术

  • 1. 第 6 章 入 出技输 输 术 6.3 中断方式 6.4 直接存 器存取贮 6.5 例 解析题 6.2 程序控制方式 6.1 入 出的基本方法输 输
  • 2. - 2- 目录 上页 下页 束结 第 6 章 基本 入 出接口输 输 教学重点 I/O 接口电路的典型结构 无条件传送方式 查询传送方式 中断工作过程
  • 3. - 3- 目录 上页 下页 束结 6.1 输入输出的基本方法 6.1.1 输入输出接口的概念及基本结构  为什么需要 I/O 接口(电路)? 微机的外部设备多种多样 工作原理、驱动方式、信息格式、以及 工作速度方面彼此差别很大 它们不能与 CPU 直接相连 必须经过中间电路再与系统相连 这部分电路被称为 I/O 接口电路 多 外种 设 1. 接口电 路
  • 4. - 4- 目录 上页 下页 束结 6.1.1 输入 / 输出接口概述(续 1 ) 什么是 I/O 接口(电路)?  I/O 接口是位于系统与外设间、用来 协助完成数据传送和控制任务的逻辑 电路  PC 机系统板的可编程接口芯片、 I/O 总线槽的电路板(适配器)都是接口 电路 CPUCPUCPUCPU 接口接口 电路电路 I/OI/O 设备设备
  • 5. - 5- 目录 上页 下页 束结 6.1.1 输入 / 输出接口概述(续 2 ) 什么是微机接口技术?  处理微机系统与外设间联系的技术  注意其软硬结合的特点  根据应用系统的需要,使用和构造相 应的接口电路,编制配套的接口程序 ,支持和连接有关的设备
  • 6. - 6- 目录 上页 下页 束结 2. 接口电路分类  ⑴ 按接口电路的通用性  ⑵ 按数据传送格式  ⑶ 按接口是否可编程  ⑷ 按时序控制方式 用接口 通用接口专 并行接口 串行接口 可 程接口 不可 程接口编 编 同步接口 步接口异
  • 7. - 7- 目录 上页 下页 束结 3. 接口的基本功能 ⑴ 对输入输出数据进行缓冲和锁存 输出接口有锁存环节 输入接口有缓冲环节 ⑵ 对信号的形式和数据的格式进行变 换 微机直接处理:数字量、开关量、脉冲量 ⑶ 对 I/O 端口进行寻址 ⑷ 与 CPU 和 I/O 设备进行联络 ⑸ 中断管理 /DMA 控制功能
  • 8. - 8- 目录 上页 下页 束结 4. 接口电路的基本结构 控制总线 CB 地址总线 AB I/O 接口电路 数据 控制 状态 数据总线 DBCPU 外设 控制寄存器 状态寄存器 数据寄存器
  • 9. - 9- 目录 上页 下页 束结 6.1.2 外设接口的编址方式 接口电路占用的 I/O 端口有两类编排形 式  I/O 端口单独编址 I/O 地址空间独立于存储地址空间 如 8086/8088  I/O 端口与存储器统一编址 它们共享一个地址空间 如 M6800
  • 10. - 10- 目录 上页 下页 束结 1. I/O 端口与存储器统一编址  优点: 不需要专门的 I/O 指令 I/O 数据存取与存储器数 据存取一样灵活  缺点: I/O 端口要占去部分存储 器地址空间 程序不易阅读(不易分清 访存和访问外设) 内存 部分 I/O 部分 存 储 空 间 0 FFFFF
  • 11. - 11- 目录 上页 下页 束结 2. I/O 端口单独编址  优点: I/O 端口的地址空间独立 控制和地址译码电路相对 简单 专门的 I/O 指令使程序清 晰易读  缺点: I/O 指令没有存储器指令丰 富 内存 空间 I/O 空间 FFFFF 0 FFFF 0 80x86 采用 I/O 端口独立编址80x86 采用 I/O 端口独立编址
  • 12. - 12- 目录 上页 下页 束结 补充 : 8088/8086 的输入输出指令  输入指令 IN AL,i8/DX ; 字节输入 IN AX,i8/DX ; 字输入  输出指令 OUT i8/DX,AL ; 字节输出 OUT i8/DX ; 字输出 功能演示 功能演示
  • 13. - 13- 目录 上页 下页 束结 6.1.3 输入输出的基本方法  1. 程序控制方式  2. 中断控制方式  3. 直接存储器存取控制方式  4. 通道方式  5. 外围处理方式
  • 14. - 14- 目录 上页 下页 束结 数据传送方式  程序控制下的数据传送——通过 CPU 执行 程序中的 I/O 指令来完成传送,又分为: 无条件传送 查询传送 中断传送  直接存储器存取( DMA )——传送请求由 外设向 DMA 控制器( DMAC )提出,后 者向 CPU 申请总线,最后 DMAC 利用系统 总线来完成外设和存储器间的数据传送  I/O 处理机—— CPU 委托专门的 I/O 处理机 来管理外设,完成传送和相应的数据处理
  • 15. - 15- 目录 上页 下页 束结 1. 无条件传送方式及其接口  在 CPU 与慢速变化的设备交换数据时,可以认 为它们总是处于“就绪”状态,随时可以进行数 据传送,这就是无条件传送,或称立即传送、 同步传送  适合于简单设备,如 LED 数码管、按键 / 按纽 等  无条件传送的接口和操作均十分简单  这种传送有前提:外设必须随时处于就绪状态送传 流程 送传 流程 接口 例实 接口 例实 6.2. 程序控制方式
  • 16. - 16- 目录 上页 下页 束结 无条件传送:输入示例 IOR 三 态 缓 冲 器 OE I/O 装 置地 址 译 码 器CS D7 ~ D0 A15 ~ A1 A0 0160H MOV DX, 160H IN AL, DX MOV DX, 160H IN AL, DX
  • 17. - 17- 目录 上页 下页 束结 无条件传送:输入实例 MOV DX, 160H IN AL, DX MOV DX, 160H IN AL, DX 74LS244 +5V 10K x 8 G1 G2 数 据 总 线 CS RD
  • 18. - 18- 目录 上页 下页 束结 无条件传送:输出示例 地 址 译 码 器 数 据 锁 存 器 A15 A0 ~ A14 -IOW CS 0160H 输 出 设 备 D7 ~ D0 MOV DX, 160H MOV AL, [BX] OUT DX, AL MOV DX, 160H MOV AL, [BX] OUT DX, AL
  • 19. - 19- 目录 上页 下页 束结 无条件传送:输出实例 MOV DX, 160H MOV AL, [BX] OUT DX, AL MOV DX, 160H MOV AL, [BX] OUT DX, AL +5V 74LS373 300 x 8 LE OE 数 据 总 线 CS WR
  • 20. - 20- 目录 上页 下页 束结 无条件传送:输入输出接口 K7 K1 K0 +5V D0 ~ D7 A0 ~ A15 CLK LS06 反相 驱动器 LS273 8D 锁存器 LS244 三态 缓冲器 8000H 译码 +5V LED0 LED7… … -G -IOW -IOR
  • 21. - 21- 目录 上页 下页 束结 无条件传送:输入输出接口 next: mov dx,8000h ;DX 指向数据端口 in al, dx ; 从输入端口读开关状 态 not al ; 反相 out dx, al ; 送输出端口显示 call delay ; 调子程序延时 jmp next ; 重复 next: mov dx,8000h ;DX 指向数据端口 in al, dx ; 从输入端口读开关状 态 not al ; 反相 out dx, al ; 送输出端口显示 call delay ; 调子程序延时 jmp next ; 重复
  • 22. - 22- 目录 上页 下页 束结 就 ?绪 2. 查询传送方式及其接口  CPU 先了解(查询)外设的工作状态, 在外设就绪(可以交换信息的情况下) 实现数据的输入或输出  对多个外设的情况,则 CPU 按一定顺序 依次查询(轮询)。先查询的外设将优 先进行数据交换  查询传送的特点是:工作可靠,适用面 宽,但传送效率低
  • 23. - 23- 目录 上页 下页 束结 查询传送的两个环节  查询环节 寻址状态口 读取状态寄存器的标志位 若不就绪就继续查询,直至就绪  传送环节 寻址数据口 是输入,通过输入指令从数据口读入数据 是输出,通过输出指令向数据口输出数据 输入状态 就绪? 数据交换 Y N 送流程传 接口 例实
  • 24. - 24- 目录 上页 下页 束结 查询输入接口 -IOR +5V 8D 锁存器 8 位 三态 缓冲器 译码 1 位 三态 缓冲器 A0 ~ A15 8000H 8001H D0 ~ D7 D0 输入 设备 -IOR -STB R QD
  • 25. - 25- 目录 上页 下页 束结 查询输入接口 mov dx,8000h ;DX 指向状态端口 status: in al,dx ; 读状态端口 test al,01h ; 测试标志位 D0 jz status ;D0 = 0 ,未就绪,继续查询 inc dx ;D0 = 1 ,就绪, DX 指向数据 端口 in al,dx ; 从数据端口输入数据 mov dx,8000h ;DX 指向状态端口 status: in al,dx ; 读状态端口 test al,01h ; 测试标志位 D0 jz status ;D0 = 0 ,未就绪,继续查询 inc dx ;D0 = 1 ,就绪, DX 指向数据 端口 in al,dx ; 从数据端口输入数据
  • 26. - 26- 目录 上页 下页 束结 查询输出接口 8D 锁存器 译码 1 位 三态 缓冲器 R Q A0 ~ A15 8000H 8001H D0 ~ D7 D7 D +5V -ACK -IOW -IOR 输出 设备
  • 27. - 27- 目录 上页 下页 束结 查询输出接口 mov dx,8000h ;DX 指向状态端口 status: in al,dx ; 读取状态端口的状态数据 test al,80h ; 测试标志位 D7 jnz status ;D7 = 1 ,未就绪,继续查询 inc dx ;D7 = 0 ,就绪, DX 指向数据 端口 mov al,buf ; 变量 buf 送 AL out dx,al ; 将数据输出给数据端口 mov dx,8000h ;DX 指向状态端口 status: in al,dx ; 读取状态端口的状态数据 test al,80h ; 测试标志位 D7 jnz status ;D7 = 1 ,未就绪,继续查询 inc dx ;D7 = 0 ,就绪, DX 指向数据 端口 mov al,buf ; 变量 buf 送 AL out dx,al ; 将数据输出给数据端口
  • 28. - 28- 目录 上页 下页 束结 6.3 中断传送方式 程序 断点 主程序 中断请求 为 外 设 继 续 执 行 返回断点 送流程传送流程传  CPU 在执行程 序中,被内部或 外部的事件所打 断,转去执行一 段预先安排好的 中断服务程序;  服务结束后,又 返回原来的断点 ,继续执行原来 的程序  CPU 在执行程 序中,被内部或 外部的事件所打 断,转去执行一 段预先安排好的 中断服务程序;  服务结束后,又 返回原来的断点 ,继续执行原来 的程序 提 供 服 务 中断服务程序 入口 6.3.1 中断的基本概念 1. 中断的概 念
  • 29. - 29- 目录 上页 下页 束结 2. 中断控制方式  中断传送是一种效率更高的程序传送方 式  进行传送的中断服务程序是预先设计好 的  中断请求是外设随机向 CPU 提出的  CPU 对请求的检测是有规律的:一般是 在每条指令的最后一个时钟周期采样中 断请求输入引脚  本书主要论述中断在输入和输出方面的 应用  中断还有着非常广泛的应用
  • 30. - 30- 目录 上页 下页 束结 3. 中断源  能够引发中断的事件被称为中断源。通常,中 断源有两类:内部中断源和外部中断源。  由处理机内部产生的中断事件称为内部中断源。 常见的内部中断源有计算溢出、指令的单步运 行、执行特定的中断指令等。  由处理机之外的外围设备产生的中断事件称为 外部中断源。常见的外部中断源有外设的输入 / 输出请求、定时时间到、电源掉电、设备故障 等。
  • 31. - 31- 目录 上页 下页 束结 三态 缓冲器 中断传送与接口(续) D0 ~ D7 +5V 8D 锁存器 8 位 三态 缓冲器 R Q 译码 8001H 中断向量号 D0 ~ D7 INTR D 输入 设备 中断允许 触发器 A0 ~ A15 中断请求 触发器 -IOR -INTA -STB
  • 32. - 32- 目录 上页 下页 束结 4. 中断处理过程 1. 中断请求(外设) 2. 中断响应( CPU ) 3. 关中断( CPU ) 4. 断点保护( CPU ) 5. 中断识别(硬件 / 软 件) 6. 现场保护(用户) 7. 中断服务(用户) 8. 恢复现场(用户) 9. 开中断( CPU/ 用 户) 10. 中断返回(用户) 中断服务是进行数据 交换的实质性环节
  • 33. - 33- 目录 上页 下页 束结 5. 中断系统的功能  ① 能进入中断和退出中断,即 完成上述中断响应和中断返回的 过程 .  ② 能对某些中断进行屏蔽,并 在必要时开放 .  ③ 能进行优先权排队 .  ④ 提供中断嵌套能力 .
  • 34. - 34- 目录 上页 下页 束结 6.3.2 8086 中断系统  8086 的中断系统采用向量中断机制  一共可处理 256 个中断  采用中断向量编号 0 ~ 255 ,对 256 个中断 加以区别  可屏蔽中断需借助专用的中断控制器 Intel 8259A 对系统中的可屏蔽中断资源进行管理 : 扩充系统的可屏蔽中断资源,并管理它们: 实现中断优先权比较 实现中断源的识别
  • 35. - 35- 目录 上页 下页 束结 1. 8086 中断类型 硬件中断 软件中断 ⑴ 硬件中断 硬件中断,又称外部中断,它是由处 理器外部的硬件、外围设备的请求而引起的 中断。 8086 有两条硬件中断请求信号线: NMI (非屏蔽中断)和 INTR (可屏蔽中 断)。
  • 36. - 36- 目录 上页 下页 束结 8088 的中断类型 中断逻辑 INTO 指令 单步 中断 除法 错误 INT N 指令 CPU NMI 8259A 中断 控制器 IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7 外 设 中 断 源 -INTA 可屏蔽中断申 请 INTR 不可屏蔽中断申 请 可屏蔽中断 源 不可屏蔽中断 源 内部中断
  • 37. - 37- 目录 上页 下页 束结 ⑵ 软件中断 ( 内部中断 )  内部中断——内部机制产生 除法错中断( 0 号)——除运算结果溢出时产生 指令中断( n 号)——执行 int n 指令后产生(操作码 CDH ) 断点中断( 3 号)——执行 int 3 指令(单字节指令操作码 CCH )用于在调试中设置断点,程序遇断点则中断 溢出中断( 4 号)——执行 into 指令,且前面运算有溢出 ( OF=1 )时产生 单步中断( 1 号)—— TF 标志置 1 后,每执行一条子指 令将发生一次  外部中断——外部引脚触发 非屏蔽中断(外设提供向量号)——触发 INTR 引脚产生 可屏蔽中断( 2 号)—— 触发 NMI 引脚产生  内部中断——内部机制产生 除法错中断( 0 号)——除运算结果溢出时产生 指令中断( n 号)——执行 int n 指令后产生(操作码 CDH ) 断点中断( 3 号)——执行 int 3 指令(单字节指令操作码 CCH )用于在调试中设置断点,程序遇断点则中断 溢出中断( 4 号)——执行 into 指令,且前面运算有溢出 ( OF=1 )时产生 单步中断( 1 号)—— TF 标志置 1 后,每执行一条子指 令将发生一次  外部中断——外部引脚触发 非屏蔽中断(外设提供向量号)——触发 INTR 引脚产生 可屏蔽中断( 2 号)—— 触发 NMI 引脚产生
  • 38. - 38- 目录 上页 下页 束结 ⑶ 中断优先权  8086 规定中断优先权从高到低的顺序 为: ① 除法错、溢出中断指令 INTO 、中 断指令 INT n 。 ② 非屏蔽中断 NMI 。 ③ 可屏蔽中断 INTR 。 ④ 单步中断。
  • 39. - 39- 目录 上页 下页 束结 2. 8088 的中断向量表  中断向量:指示中断服务程序的入口地址, 该地址包括:偏移地址 IP 、段地址 CS (共 32 位)  每个中断向量的低字是偏移地址、高字是段 地址,需占用 4 个字节(低对低,高对高) 。  8088 微处理器从物理地址 000H 开始到 3FFH ( 1KB ),依次安排各个中断向量, 向量号从 0 到 255 。  256 个中断响亮所占用的 1KB 区域,称中断 向量表  中断向量:指示中断服务程序的入口地址, 该地址包括:偏移地址 IP 、段地址 CS (共 32 位)  每个中断向量的低字是偏移地址、高字是段 地址,需占用 4 个字节(低对低,高对高) 。  8088 微处理器从物理地址 000H 开始到 3FFH ( 1KB ),依次安排各个中断向量, 向量号从 0 到 255 。  256 个中断响亮所占用的 1KB 区域,称中断 向量表 • 几个概念:向量号 N/ 中断向 量 / 中断服务程序的入口地址 • 中断向量的存放首址= N×4 • 几个概念:向量号 N/ 中断向 量 / 中断服务程序的入口地址 • 中断向量的存放首址= N×4 4B 4B 中 断 向 量 表 1KB 3FFH 0H 0 号中断向 量 IP CS
  • 40. - 40- 目录 上页 下页 束结  内部中断是由于 8086 内部执行程序出现特殊 情况而引起的中断 除法错中断: 向量号为 0 指令中断( int n ): 向量号为 n 断点中断( int 3 ): 向量号为 3 溢出中断( into ) : 向量号为 4 单步中断: 向量号为 1  内部中断是由于 8086 内部执行程序出现特殊 情况而引起的中断 除法错中断: 向量号为 0 指令中断( int n ): 向量号为 n 断点中断( int 3 ): 向量号为 3 溢出中断( into ) : 向量号为 4 单步中断: 向量号为 1 内部中断的中断向量号已由 Intel 公司确 定 内部中断的中断向量号已由 Intel 公司确 定
  • 41. - 41- 目录 上页 下页 束结  外部中断是由于 8086 外部通过 CPU 引脚提出 中断请求而引起的中断 非屏蔽中断( NMI ): 向量号为 2 外部通过非屏蔽中断 NMI 请求,必须响应 非屏蔽中断主要用于处理系统的意外或故障(如奇偶校 验或协处理器运算错误等) 可屏蔽中断( INTR ): 向量号由中断控制器提供 外部通过可屏蔽中断 INTR 请求,由标志位 IF 控制是 否响应;响应时将产生有效的 – INTA 信号 可屏蔽中断主要用于外设中断请求(请求交换数据等服 务)  外部中断是由于 8086 外部通过 CPU 引脚提出 中断请求而引起的中断 非屏蔽中断( NMI ): 向量号为 2 外部通过非屏蔽中断 NMI 请求,必须响应 非屏蔽中断主要用于处理系统的意外或故障(如奇偶校 验或协处理器运算错误等) 可屏蔽中断( INTR ): 向量号由中断控制器提供 外部通过可屏蔽中断 INTR 请求,由标志位 IF 控制是 否响应;响应时将产生有效的 – INTA 信号 可屏蔽中断主要用于外设中断请求(请求交换数据等服 务) 标志位 IF 控制可屏蔽中断的响应标志位 IF 控制可屏蔽中断的响应
  • 42. - 42- 目录 上页 下页 束结 中断标志 IF 的状态  IF = 0 :可屏蔽中断不会被响应(禁止中断,关中 断,中断屏蔽) 系统复位,使 IF = 0 任何一个中断被响应,使 IF = 0 执行指令 CLI ,使 IF = 0  IF = 1 :可屏蔽中断会被响应(允许中断,开中断 ,中断开放) 执行指令 STI ,使 IF = 1  执行指令 IRET 后 IF 将恢复为中断前的状态  IF = 0 :可屏蔽中断不会被响应(禁止中断,关中 断,中断屏蔽) 系统复位,使 IF = 0 任何一个中断被响应,使 IF = 0 执行指令 CLI ,使 IF = 0  IF = 1 :可屏蔽中断会被响应(允许中断,开中断 ,中断开放) 执行指令 STI ,使 IF = 1  执行指令 IRET 后 IF 将恢复为中断前的状态 明确 IF 标志的状态是关键明确 IF 标志的状态是关键
  • 43. - 43- 目录 上页 下页 束结 3. 8086 中断处理过程 ⑴ 可屏蔽中断的中断过程  中断源通过中断控制器 8259 向 CPU 发出中断请求信号  CPU 在每一个指令周期的最后一个时钟周期采样 INTR 信 号线  当 CPU 响应可屏蔽级的中断请求时,首先通过信号线向 8259 连续发出两个负脉冲的中断响应信号。  CPU 暂停执行当前程序,而转去执行相应的中断处理程 序  CPU 执行中断服务程序  返回断点,继续执行被打断的程序  中断源通过中断控制器 8259 向 CPU 发出中断请求信号  CPU 在每一个指令周期的最后一个时钟周期采样 INTR 信 号线  当 CPU 响应可屏蔽级的中断请求时,首先通过信号线向 8259 连续发出两个负脉冲的中断响应信号。  CPU 暂停执行当前程序,而转去执行相应的中断处理程 序  CPU 执行中断服务程序  返回断点,继续执行被打断的程序
  • 44. - 44- 目录 上页 下页 束结 ⑵ 非屏蔽中断和软件中断的执行 过程  查询中断的先后顺序决定了各中断源的优先级 别 软件中断 除法错中断 指令中断 溢出中断 非屏蔽中断 可屏蔽中断 单步中断  查询中断的先后顺序决定了各中断源的优先级 别 软件中断 除法错中断 指令中断 溢出中断 非屏蔽中断 可屏蔽中断 单步中断 高 低
  • 45. - 45- 目录 上页 下页 束结 8086 的中断响应过程 NMI N 软件中断 INTR TF=1 中断响应周期 读中断向量号 下条指令 现行指令 IF = 1 N NN N Y Y Y Y Y 执行中断服 务
  • 46. - 46- 目录 上页 下页 束结 8086 的中断响应过程(续) Y还有 NMI TEMP = 1 标志寄存器入栈 TEMP = TF , IF = TF = 0 CS : IP 入栈 获取中断向量 执行服务程序 弹出 CS : IP 弹出标志寄存器 返回被中断程序 ( 1 ) ( 2 ) ( 3 ) ( 4 ) ( 5 ) N N Y ( 6 ) 单步中 断
  • 47. - 47- 目录 上页 下页 束结 8086 的中断响应过程(续)  8088 各种中断源的优先权,实际上 是指被识别的先后顺序  多种中断同时请求时,最先响应的 则可能是单步中断或 NMI 中断  8088 各种中断源的优先权,实际上 是指被识别的先后顺序  多种中断同时请求时,最先响应的 则可能是单步中断或 NMI 中断
  • 48. - 48- 目录 上页 下页 束结 6.3.3 8259 中断控制器  Intel 8259A 是可编程中断控制器 PIC  可配合 CPU ( I8080/85 、 I8086/88/286/386 等)管理可屏蔽中断  8259A 的基本功能 1 片 8259A 可以管理 8 级中断,经级联最多可扩展至 64 级 每一级中断都可单独被屏蔽或允许 在中断响应周期,可提供相应的调用指令(配合 I8080/85 )或中断向量号(配合 I8086/88/286/386 ) 8259A 设计有多种工作方式,通过初始化编程进行设 置  Intel 8259A 是可编程中断控制器 PIC  可配合 CPU ( I8080/85 、 I8086/88/286/386 等)管理可屏蔽中断  8259A 的基本功能 1 片 8259A 可以管理 8 级中断,经级联最多可扩展至 64 级 每一级中断都可单独被屏蔽或允许 在中断响应周期,可提供相应的调用指令(配合 I8080/85 )或中断向量号(配合 I8086/88/286/386 ) 8259A 设计有多种工作方式,通过初始化编程进行设 置
  • 49. - 49- 目录 上页 下页 束结 1. 8259A 的内部结构和引脚 D7~D0 -INTA INT 中 断 请 求 寄 存 器 中断屏蔽寄存器 数据 总线 缓冲器 IR0 IR7 读 / 写 控制 逻辑 级联 缓冲器 比较器 -RD -WR A0 -CS CAS0 CSA1 CAS2 -SP/-EN 优 先 权 判 别 电 路 中 断 服 务 寄 存 器 控制逻辑
  • 50. - 50- 目录 上页 下页 束结 ⑴ 8259 的内部结构  中断请求寄存器 IRR 保存 8 条外界中断请求信号 IR0 ~ IR7 的请求状态 Di 位为 1 表示 IRi 引脚有中断请求;为 0 表示无请求  中断服务寄存器 ISR 保存正在被 8259A 服务着的中断状态 Di 位为 1 表示 IRi 中断正在服务中;为 0 表示没有被 服务  中断屏蔽寄存器 IMR 保存对中断请求信号 IR 的屏蔽状态 Di 位为 1 表示 IRi 中断被屏蔽(禁止);为 0 表示允 许  中断请求寄存器 IRR 保存 8 条外界中断请求信号 IR0 ~ IR7 的请求状态 Di 位为 1 表示 IRi 引脚有中断请求;为 0 表示无请求  中断服务寄存器 ISR 保存正在被 8259A 服务着的中断状态 Di 位为 1 表示 IRi 中断正在服务中;为 0 表示没有被 服务  中断屏蔽寄存器 IMR 保存对中断请求信号 IR 的屏蔽状态 Di 位为 1 表示 IRi 中断被屏蔽(禁止);为 0 表示允 许
  • 51. - 51- 目录 上页 下页 束结  优先权判别器 PR 优先权判别器( PR )用来识别各中断请求的优先级别  读 / 写控制电路 读 / 写控制电路接收来自 CPU 的读 / 写控制命令和片 选控制信息  数据总线缓冲器 这是一个 8 位的双向三态缓冲器,使 8259 和 CPU 数 据总线 D7 ~ D0 直接挂接,完成命令和状态信息的传送。  优先权判别器 PR 优先权判别器( PR )用来识别各中断请求的优先级别  读 / 写控制电路 读 / 写控制电路接收来自 CPU 的读 / 写控制命令和片 选控制信息  数据总线缓冲器 这是一个 8 位的双向三态缓冲器,使 8259 和 CPU 数 据总线 D7 ~ D0 直接挂接,完成命令和状态信息的传送。
  • 52. - 52- 目录 上页 下页 束结  控制电路 它是 8259 内部的控制器,根据 CPU 对 8259 编 程设定的工作方式产生内部控制信号,向 CPU 发出 中断请求信号 INT ,请求 CPU 响应,同时产生与当 前中断请求服务有关的控制信号,并在接收到来自 CPU 的中断响应信号后,将中断类型号送到数据总线。  级联缓冲 / 比较器 该功能部件用来实现多个 8259 的级联连接及 数据缓冲方式。  控制电路 它是 8259 内部的控制器,根据 CPU 对 8259 编 程设定的工作方式产生内部控制信号,向 CPU 发出 中断请求信号 INT ,请求 CPU 响应,同时产生与当 前中断请求服务有关的控制信号,并在接收到来自 CPU 的中断响应信号后,将中断类型号送到数据总线。  级联缓冲 / 比较器 该功能部件用来实现多个 8259 的级联连接及 数据缓冲方式。
  • 53. - 54- 目录 上页 下页 束结 中断级连  8259A 可以级连, 1 个主片最多可以级连 8 个从 片  级连时,主片的级连线 CAS0 ~ CAS2 连至每个 从片的 CAS0 ~ CAS2 ,输出被选中的从片编号 ,  每个从片的中断请求信号 INT ,连至主 8259A 的一个中断请求输入端 IRx ;主片的 INT 线连 至 CPU 的中断请求输入端 INTR  在非缓冲方式下,引脚 -SP/-EN ,通过接地指 定该片充当从片( -SP = 0 );反之若接高电 平则该片充当主片( -SP = 1 )。  8259A 可以级连, 1 个主片最多可以级连 8 个从 片  级连时,主片的级连线 CAS0 ~ CAS2 连至每个 从片的 CAS0 ~ CAS2 ,输出被选中的从片编号 ,  每个从片的中断请求信号 INT ,连至主 8259A 的一个中断请求输入端 IRx ;主片的 INT 线连 至 CPU 的中断请求输入端 INTR  在非缓冲方式下,引脚 -SP/-EN ,通过接地指 定该片充当从片( -SP = 0 );反之若接高电 平则该片充当主片( -SP = 1 )。
  • 54. - 55- 目录 上页 下页 束结 ⑵ 8259 的引脚功能  8259 芯 片 有 28 条 引 脚 , 双列直插式封 装 , 如 图 6.10 所示。  8259 芯 片 有 28 条 引 脚 , 双列直插式封 装 , 如 图 6.10 所示。 图 6.10 8259 芯片引脚定义
  • 55. - 56- 目录 上页 下页 束结 2. 8259A 的中断过程 CAS0 ~ CAS2 D0 ~ D7 -SP/-EN IR0 ~ IR7 CPU 响应周期 8259A 工作波形 INT 第 1 个总线周 期 T1 T2 T3 T4 ALE CLK 第 2 个总线周 期 T1 T2 T3 T4 第 1 个 -INTA 前 保 持 高 电 平 -INTA -LOCK 中断向量 主片输出 级联信号 从片接收
  • 56. - 57- 目录 上页 下页 束结 3. 8259A 的工作方式 普通全嵌套方式 特殊全嵌套方式 自动循环方式 特殊循环方式 优先权固定方式 优先权循环方式  设置优先权方式 普通中断结束方式 特殊中断结束方式 自动中断结束方式 非自动中断结束方 式  结束中断方式  中断屏蔽方式 普通屏蔽方式 特殊屏蔽方式  中断触发方式 边沿触发方式 电平触发方式  数据线连接方式 缓冲方式 非缓冲方式  与 CPU 配合方式 与 8080/8085 CPU 配 合与 8086/8088 CPU 配 合  级连方式 级连 不级连
  • 57. - 58- 目录 上页 下页 束结 ( 1 )中断结束处理方式 什 么 是 8259A 的 中 断 结 束 ? 8259A 利用中断服务寄存器 ISR 判断: 某位为 1 ,表示正在进行中断服务 ; 该位为 0 ,就是该中断结束服务。 这里说明如何使 ISR 某位为 0 ,不 反映 CPU 的工作状态。
  • 58. - 59- 目录 上页 下页 束结 ( 1 )中断结束处理方式(续) 自动中断结束方式 普通中断结束方式 配合全嵌套优先权方式使用 当 CPU 用输出指令往 8259A 发出普通 中断结束 EOI 命令时, 8259A 就会把所有正 在服务的中断中优先权最高的 ISR 位复位。 特殊中断结束方式 配合循环优先权方式使用 CPU 在程序中向 8259A 发送一条特殊中断 结束命令,这个命令中指出了要清除哪个 ISR 位。
  • 59. - 60- 目录 上页 下页 束结 ( 2 ) 缓冲方式  缓冲方式 8259A 的数据线需加缓冲器予以驱动 8259A 把 SP*/EN* 引脚作为输出端,输出 允许信号,用以锁存或开启缓冲器  非缓冲方式 SP*/EN* 引脚为输入端 若 8259A 级连,由其确定是主片或从片
  • 60. - 61- 目录 上页 下页 束结 ( 3 )嵌套方式  普通全嵌套方式 8259A 的中断优先权顺序固定不变,从高到低依次为 IR0 、 IR1 、 IR2 、…… IR7 中断请求后, 8259A 对当前请求中断中优先权最高 的中断 IRi 予以响应,将其向量号送上数据总线, 对应 ISR 的 Di 位置位,至到中断结束( ISR 的 Di 位复位) 在 ISR 的 Di 位置位期间,禁止再发生同级和低级优 先权的中断,但允许高级优先权中断的嵌套  特殊全嵌套方式  优先权自动循环方式  优先权特殊循环方式
  • 61. - 62- 目录 上页 下页 束结 ( 4 ) 中断屏蔽方式  普通屏蔽方式 将 IMR 的 Di 位置 1 ,则对应的中断 IRi 被 屏蔽,该中断请求不能从 8259A 送到 CPU 如果 IMR 的 Di 位置 0 ,则允许 IRi 中断产 生  特殊屏蔽方式 将 IMR 的 Di 位置 1 ,对应的中断 IRi 被屏 蔽的同时,使 ISR 的 Di 位置 0
  • 62. - 63- 目录 上页 下页 束结 ⑸ 优先级的控制  ① 固定优先级 所谓固定优先级,即是指 8259 的 8 个中断源中, IR0 优先级最高 , IR1 优先级次之,依次降低,直到 IR7 优先级最低,这个顺序固定不 变。  ② 循环优先级 8259 将中断源 IR0 ~ IR7 按下标序号顺序构成一个环,有两种规定 方式: ● 自动优先循环级。 该方式规定:刚被服务过的中断源,其优先级别被改为最低级,而 将最高优先级赋给原来比它低一级的中断源,其它中断源的优先顺序依 中断源顺序环确定。例如: CPU 对 IR3 的中断服务刚结束时, IR3 的 优先级别变为最低,这时 8259 的 8 个中断源优先顺序由高到低为 IR4 , IR5 , IR6 , IR7 , IR0 , IR1 , IR2 , IR3 。 ● 指定优先循环级。 该方式规定:在 OCW2 中指定的中断源,其优先级别被设为最低 级,其它中断源的优先顺序依中断源顺序环确定。例如: CPU 在对 IR3 的中断服务过程中,通过指令在 OCW2 中指定 IR5 具有最低优先级 ,则 IR3 中断服务结束时, 2859A 的 8 个中断源优先顺序由高到低为 IR6 , IR7 , IR0 , IR1 , IR2 , IR3 , IR4 , IR5 。
  • 63. - 64- 目录 上页 下页 束结 优先权方式  普通全嵌套方式 8259A 的中断优先权顺序固定不变,从高到低依次为 : IR0 、 IR1 、 IR2 、…… IR7 中断请求后, 8259A 对当前请求中断中优先权最高的中断 IRi 予以 响应,将其向量号送上数据总线,对应 ISR 的 Di 位置位,至到 中断结束( ISR 的 Di 位复位) 在 ISR 的 Di 位置位期间,禁止再发生同级和低级优先权的中断, 但允许高级优先权中断的嵌套  特殊全嵌套方式——允许同级中断嵌套(用于级连主片)  优先权自动循环方式——最高优先权自动转移到相邻的低优先 级中断源  优先权特殊循环方式——最高优先权转移到由指令指定的中断 源
  • 64. - 65- 目录 上页 下页 束结 ( 6 ) 中断触发方式  边沿触发方式 8259A 将中断请求输入端出现 的上升沿作为中断请求信号  电平触发方式 中断请求端出现的高电平是有 效的中断请求信号
  • 65. - 66- 目录 上页 下页 束结 ( 7 ) 中断级连  一个系统中, 8259A 可以级连,有一个主 8259A ,若干个(最多 8 个)从 8259A  级连时,主 8259A 的三条级连线 CAS0 ~ CAS2 作为输出线,连至每个从 8259A 的 CAS0 ~ CAS2  每个从 8259A 的中断请求信号 INT ,连至主 8259A 的一个中断请求输入端 IR  主 8259A 的 INT 线连至 CPU 的中断请求输入 端  SP*/EN* 在非缓冲方式下,规定该 8259A 是主 片( SP* = 1 )还是从片( SP* = 0 )
  • 66. - 67- 目录 上页 下页 束结 级连方式  不级连——只用 1 片,如 PC/XT  级连——使用 2~9 片,如 PC/AT ( 2 片) -INTA INTR IR0 IR7 IR7 IR0 CAS0~CAS2=010 INT INT D0~D7
  • 67. - 68- 目录 上页 下页 束结 4. 8259A 的编程 初始化编程 8259A 开始工作前, 用户必须对 8259A 进行初始化编程。通过 写入初始化命令字 ICW 对 8259A 进行初始化。 工作方式编程 在 8259A 工作期间 可以随时向 8259A 写入操作命令字 OCW ,使之按用户设置的新的工作方式进行工 作,用户还可以通过写操作命令字 OCW 通知 8259A ,下面的操作要读取 8259A 中的状态信 息,以便了解其工作情况。
  • 68. - 69- 目录 上页 下页 束结 ⑴ 8259 的初始化编程  8259 初始化编程的主要任务有:  ① 复位 8259 芯片。  ② 设定中断请求信号 INT 有效的形式,是高电 平有效,还是上升沿有效。  ③ 设定 8259 工作在单片方式还是多片级联方 式。  ④ 设定 8259 管理的中断类型号的基值,即 0 级 IR0 所对应的中断类型号。  ⑤ 设定各中断级的优先次序, IR0 最高, IR7 最低。  ⑥ 设定一次中断处理结束时的结束方式。
  • 69. - 70- 目录 上页 下页 束结 ( 1 )初始化命令字 ICW  初始化命令字 ICW 最多有 4 个  8259A 在开始工作前必须写入  必须按照 ICW1 ~ ICW4 顺序写入  ICW1 和 ICW2 是必须送的  ICW3 和 ICW4 由工作方式决定 流程 D7 D6 D5 D4 D3 D2 D1 D0
  • 70. - 71- 目录 上页 下页 束结 ICW1 × × × 1 LTIM × SNGL IC4 D7 D6 D5 D4 D3 D2 D1 D0 ×—— 表示可以任意 为 1 为 0 都 可 以 ( 建 议 为 0 ) 1—— 只能为 1 ,作为标志 中断触发方式: LTIM = 1 ,电平触发方式 LTIM = 0 ,边沿触发方式 规定单片或级连方式: SNGL = 1 ,单片方式 SNGL = 0 ,级连方式 是否写入 ICW4 IC4 = 1 ,要写入 ICW4 IC4 = 0 ,不写入 ICW4 , 即 ICW4 规定的位全为 0
  • 71. - 72- 目录 上页 下页 束结 ICW2 T7 T6 T5 T4 T3 × × × D7 D6 D5 D4 D3 D2 D1 D0 设置中断向量号 T7 ~ T3 为中断向量号的高 5 位 低 3 位由 8259A 自动确定: IR0 为 000 、 IR1 为 001 、 … …、 IR7 为 111
  • 72. - 73- 目录 上页 下页 束结 ICW3 S7 S6 S5 S4 S3 S2/ ID2 S1/ ID1 S0/ ID0 D7 D6 D5 D4 D3 D2 D1 D0 级连命令字 主片 8259A : Si = 1 对应 IRi 接有从 片;否则 IRi 没有连接从片 从片 8259A : ID0 ~ ID2 编码说明从 片 INT 引脚接到主片哪个 IR 引脚
  • 73. - 74- 目录 上页 下页 束结 ICW4 0 0 0 SFNM BUF M/S AEOI μPM D7 D6 D5 D4 D3 D2 D1 D0 嵌套方式: 特 殊 全 嵌 套 方 式 ( SFNM = 1 ) 普 通 全 嵌 套 方 式 ( SFNM = 0 ) 数据线的缓冲方式: 缓冲方式( BUF = 1 ) 非缓冲方式( BUF = 0 ) 主片 / 从片选择: 主片( M/S=1 ) 从片( M/S=0 ) 中断结束方式: 自动中断结束( AEOI = 1 ) 非自动中断结束( AEOI = 0 ) 微处理器类型: 16 位 80x86 ( PM = 1 ) 8 位 8080/8085 ( PM = 0 )
  • 74. - 75- 目录 上页 下页 束结 8259 芯片的初始化流程 ICW4 ( A0=1 ) SNGL=0 ? ICW1 的 IC4=1 ? 初始化完,准备接受中断请求输入 是 是 否 ICW1 ( A0=0 , D4=1 ) ICW2 ( A0=0 ) ICW3 ( A0=0 ) 否
  • 75. - 76- 目录 上页 下页 束结 初始化主片 8259A mov al,11h ; 写入 ICW1 out 20h,al jmp intr1 intr1: mov al,08h ; 写入 ICW2 out 21h,al jmp intr2 intr2: mov al,04h ; 写入 ICW3 out 21h,al jmp intr3 intr3: mov al,1h ; 写入 ICW4 out 21h,al 中断控制器的初始化程序段
  • 76. - 77- 目录 上页 下页 束结 初始化从片 8259A mov al,11h ; 写入 ICW1 out 0a0h,al jmp intr5 intr5: mov al,70h ; 写入 ICW2 out 0a1h,al jmp intr6 intr6: mov al,02h ; 写入 ICW3 out 0a1h,al jmp intr7 intr7: mov al, 01h ; 写入 ICW4 out 0a1h,al 中断控制器的初始化程序段
  • 77. - 78- 目录 上页 下页 束结 ⑵ 工作方式编程  8259 工作方式编程主要完成的任务是对中断请求的屏 蔽、优先级循环控制、中断结束方式、内部控制寄存 器的查询等。  8259A 工作期间,可以随时接受操作命令字 OCW  OCW 共有 3 个: OCW1 ~ OCW3  写入时没有顺序要求,需要哪个 OCW 就写入那个 OCW D7 D6 D5 D4 D3 D2 D1 D0
  • 78. - 79- 目录 上页 下页 束结 OCW1 M7 M6 M5 M4 M3 M2 M1 M0 D7 D6 D5 D4 D3 D2 D1 D0 屏蔽命令字 内容写入中断屏蔽寄存器 IMR Di = Mi 对 应 IRi , 为 1 禁 止 IRi 中断; 为 0 允许 IRi 中断。各位互相独 立。
  • 79. - 80- 目录 上页 下页 束结 OCW2 R SL EOI 0 0 L2 L1 L0 D7 D6 D5 D4 D3 D2 D1 D0 R 、 SL 和 EOI 配 合 使用 产 生 中 断 结 束 EOI 命 令 和 改 变 优 先 权 顺序 L2 ~ L0 的 3 位 编 码 指定 IR 引脚
  • 80. - 81- 目录 上页 下页 束结 OCW3 0 ESMM SMM 0 1 P RR RIS D7 D6 D5 D4 D3 D2 D1 D0 ESMM 、 SMM 设 置 中 断 屏 蔽 方 式 P 、 RR 和 RIS 规定随后读取的 状态字含义
  • 81. - 82- 目录 上页 下页 束结 读取状态字  CPU 可读出 IRR 、 ISR 、 IMR 和查 询字  A0 为低,由 OCW3 中 RR 和 RIS 位 设定读取 IRR 或 ISR ,由 OCW3 中 P 位设定读取查询字  而 A0 引脚为高电平时读取的都是 IMR  查询字反映 8259A 是否有中断请求
  • 82. - 83- 目录 上页 下页 束结 查询字 I - - - - W2 W1 W0 D7 D6 D5 D4 D3 D2 D1 D0 中 断 位 I 位 为 1 , 有外设请求中断 W2 ~ W0 的 编 码 当前中断请求的 最高优先级
  • 83. - 84- 目录 上页 下页 束结 补充: 命令字和状态字的区别方 法 ⑴ 利用读写信号区别写入的控制寄存器 和读出的状态寄存器 ⑵ 利用地址信号区别不同 I/O 地址的寄 存器 ⑶ 由控制字中的标志位说明是哪个寄存 器 ⑷ 由芯片内顺序控制逻辑按一定顺序识 别不同的寄存器 ⑸ 由前面的控制字决定后续操作的寄存 器 接口电路中常用的方法
  • 84. - 85- 目录 上页 下页 束结 ( 1 )与 CPU 的配合方式  与 8080/8085 CPU 配合—— 中断响应时, -INTA 信号 3 次有效, 8259A 送 CALL XXXXH 指令( 3 个字节)的 机器代码到数据总线 ;  与 8086/8088 CPU 配合——中断响应时, -INTA 信号 2 次有效, 8259A 送相应的中断向量号( 1 个字节)到数 据总线。 8080/ 85 CPU 8259A 8086/ 88 CPU 8259A CALL XXXXH 中断向量号 -INTA INTR -INTA INTR 5. 80X86 微机的中断控制 器
  • 85. - 86- 目录 上页 下页 束结 ( 2 ) 与处理器接口 -CS A0 -RD -WR 功能 0 0 1 0 0 1 1 0 0 0 0 1 0 1 0 1 0 × 1 1 1 × × × 写入 ICW1 、 OCW2 和 OCW3 写入 ICW2 ~ ICW4 和 OCW1 读出 IRR 、 ISR 和查询字 读出 IMR 数据总线高阻状态 数据总线高阻状态
  • 86. - 87- 目录 上页 下页 束结 6.4.3 中断识别和中断优先权处理 问题 1 :系统有多个中断请求 , CPU 如何识别中断源? 办法 1 : 向量中断(硬件) 办 法 2 : 中 断 查 询 ( 软 / 硬 件 结 合) 中断源的识别中断源的识别
  • 87. - 88- 目录 上页 下页 束结 中断查询接口 A0 ~ A15 锁 存 器 INTR 三态 缓冲器 译码 8001H D0 ~ D7 中断 A 中断 B 中断 C 中断 H … … -IOR
  • 88. - 89- 目录 上页 下页 束结 6.4.3 中断优先权(续 1 ) 问题 2 :有多个中断同时请求 , CPU 如何应对? 办法 1 :链式优先权排队电 路 办法 2 :优先权编码电路 中断优先级排 队 中断优先级排 队
  • 89. - 90- 目录 上页 下页 束结 链式中断优先权排队电路 A2 A1 C2 C1 D2 D1 B2 B1 中断源 A 触发器 中断源 B 触发器 中断源 C 触发器 中断矢量 D中断矢量 C 中断矢量 B中断矢量 A 中断源 D 触发器 缓冲器缓冲器缓冲器缓冲器 -INTA 高优先级
  • 90. - 91- 目录 上页 下页 束结 中断优先权编码电路 比较器失效信号 (先前无中断请求时有效 ) 比较器 8:3 优先权 编码器 优先权 寄存器 D0 ~ D7 2 1 A < B 中断请求 0 中断请求 1 中断请求 2 A0 A1 A2INTR B0 B1 B2 … 有中断请求
  • 91. - 92- 目录 上页 下页 束结 6.4.3 中断优先权(续 2 ) 问题 3 :中断处理过程中, 又有中断提出请求,怎么办? 办法 1 :链式优先权排队电 路 办法 2 :优先权编码电路 中断嵌套中断嵌套
  • 92. - 93- 目录 上页 下页 束结 I/O 接口的典型结构 1. 接口电路的内部结构 2. 接口电路的外部特性 3. 接口芯片的分类 4. 接口芯片的可编程性 1. 接口电路的内部结构 2. 接口电路的外部特性 3. 接口芯片的分类 4. 接口芯片的可编程性
  • 93. - 94- 目录 上页 下页 束结 1. 接口电路的内部结构  CPU 与外设主要有数据、状态和控制信息 需要相互交换,于是从应用角度看内部: ⑴ 数据寄存器 保存外设给 CPU 和 CPU 发往外设的数据 ⑵ 状态寄存器 保存外设或接口电路的状态 ⑶ 控制寄存器 保存 CPU 给外设或接口电路的命令 理解端口理解端口
  • 94. - 95- 目录 上页 下页 束结 2. 接口电路的外部特性  面向 CPU 一侧的信号: 用于与 CPU 连接 主要是数据、地址和控制信号  面向外设一侧的信号: 用于与外设连接 提供的信号五花八门 功能定义、时序及有效电平等差异较大
  • 95. - 96- 目录 上页 下页 束结 3. 接口芯片的分类  接口电路核心部分往往是一块或数块大规 模集成电路芯片(接口芯片):  通用接口芯片 支持通用的数据输入输出和控制的接口芯片  面向外设的专用接口芯片 针对某种外设设计、与该种外设接口  面向微机系统的专用接口芯片 与 CPU 和系统配套使用,以增强其总体功能
  • 96. - 97- 目录 上页 下页 束结 4. 接口电路的可编程性  许多接口电路具有多种功能和工作方式 ,可以通过编程的方法选定其中一种  接口需要进行物理连接,还需要编写接 口软件  接口软件有两类: 初始化程序段——设定芯片工作方式等 数据交换程序段——管理、控制、驱动外设, 负责外设和系统间信息交换
  • 97. - 98- 目录 上页 下页 束结 IBM PC/AT 主机板的 I/O 译码电路 接口芯片内部译码A0 ~ A4 DMA 控制器 1 中断控制器 1 定时计数器 并行接口电路 DMA 页面寄存器 中断控制器 2 DMA 控制器 2 协处理器 A5 A6 A7 A8 A9 ALS138 译码器 HLDA MASTER A B C E1 -E2 -E3 Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
  • 98. - 99- 目录 上页 下页 束结 IBM PC/XT 主机板的 I/O 译码电路 Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 A5 A6 A7 A8 A9 AEN -IOW A B C -G2B -G2A G1 74LS13874LS138 -DMA CS ( 8237 ) -INTR CS ( 8259 ) -T/C CS ( 8253 ) -PPI CS ( 8255 ) -WRTDMAPG (写 DMA 页面寄存器) -WRTNMIREG (写 NMI 屏蔽寄存器)
  • 99. - 100- 目录 上页 下页 束结 用门电路实现 I/O 地址译码 A9 A8 A7 A6 A5 A2 A4 A3 AEN A1 A0 74LS03 I/O 地址 3E7H
  • 100. - 101- 目录 上页 下页 束结 6.4 DMA 传送方式  希望克服程序控制传送的不足: 外设→ CPU→ 存储器 外设← CPU← 存储器  直接存储器存取 DMA :不经 CPU ,不用指令 外设→存储器( DMA 写) 外设←存储器( DMA 读) 扩展:外设↔ 外设  CPU 出让系统总线(输出高阻),由 DMA 控 制器( DMAC )接管系统总线
  • 101. - 102- 目录 上页 下页 束结 6.4.1 DMA 传送的工作过程 ⑴ CPU 对 DMA 控制器进行初始化设置 ⑵ 外设、 DMAC 、 CPU , 3 者通过应答信号 建立联系: CPU 将总线暂交 DMAC 控制,事 后再将控制权返还。 ⑶ DMA 传送 DMA 读:存储器 → 外设 DMA 写:存储器 ← 外设 ⑷ DMAC 的功能: 对存储器寻址地址动加 1/ 减 1 计数器减 1 判断传送是否完成 送流程传
  • 102. - 103- 目录 上页 下页 束结 DMA 传送( 以 DMA 写为例) -MEMW -IOR 数据总 线 地址总 线 输 入 设 备 存 储 器 D M A C C P U ② ③④ ① HOLD HLDA
  • 103. - 104- 目录 上页 下页 束结 DMA 传送流程 HLDA 发存储器地址 传送数据 传送结束? DMA 结束 修改地址指针
  • 104. - 105- 目录 上页 下页 束结 传送方式的比较  无条件传送:慢速外设需与 CPU 保持同 步  查询传送: 简单实用,效率较低  中断传送:外设主动,可与 CPU 并行工 作,但每次传送需要大量额外时间开销  DMA 传送: DMAC 控制,外设直接和存 储器进行数据传送,适合大量、快速数 据传送
  • 105. - 106- 目录 上页 下页 束结 6.4.2 DMA 控制器 8237  每个 8237A 芯片有 4 个 DMA 通道, 就是有 4 个 DMA 控制器  每个 DMA 通道具有不同的优先权  每个 DMA 通道可以分别允许和禁止  每个 DMA 通道有 4 种工作方式  一次传送的最大长度可达 64KB  多个 8237A 芯片可以级连,扩展通道 数
  • 106. - 107- 目录 上页 下页 束结 1. DMA 控制器的功能  ① 编程设定 DMA 的传输模式及其所访问内存的地址区 域。  ② 屏蔽或接受外围设备的 DMA 请求( DREQ ),当有 多个设备同时请求时,还要进行优先级排队,首先接受 最高级的请求。  ③ 向 CPU 转达 DMA 请求, DMA 控制器要向 CPU 发 出总线请求信号 HOLD( 高电平有效 ) ,请求 CPU 放弃 总线的控制。  ④ 接收 CPU 的总线响应信号 (HLDA) ,接管总线控制 权,实现对总线的控制。  ⑤ 向相应外围设备转达 DMA 允许信号 DACK 。于是在 DMA 控制器的管理下,实现外围设备和存储器之间的 数据直接传送。  ⑥ 在传送过程中进行地址修改和字节计数。在传送完 要求的字节数后,向 CPU 发出 DMA 结束信号 (EOP) , 撤消总线请求 (HRQ) ,将总线控制权交还给 CPU 。
  • 107. - 108- 目录 上页 下页 束结 2. 可编程 DMA 控制器 Intel8237DMAC 的主要性能和内部结构  内部结构和外部引脚都相对比较复杂  应用观点,内部主要由两类寄存器组 成 通道寄存器 控制和状态寄存器 首先分类展开外部引脚
  • 108. - 109- 目录 上页 下页 束结 3. 8237 的 外部引脚
  • 109. - 110- 目录 上页 下页 束结 (1) 请求与响应信号  DREQ0 ~ DREQ3 : DMA 通道请求。当外 设需要请求 DMA 服务时,将 DREQ 信号置 成有效电平,并要保持到产生响应信号。  HRQ :总线请求。 8237A 输出有效的 HRQ 高电平,向 CPU 申请使用系统总线。  HLDA :总线响应。 8237A 接受来自 CPU 的响应信号 HLDA ,取得了总线的控制权 。  DACK0 ~ DACK3 : DMA 通道响 应。 8237A 使请求服务的通道产生相应的 DMA 响应信号。 3. 8237 的外部引脚
  • 110. - 111- 目录 上页 下页 束结 (2) DMA 传送控制信号  A0 ~ A7 :地址线。输出低 8 位存储器地址。  DB0 ~ DB7 :数据线。输出高 8 位存储器地 址;存贮器与存贮器的传送期间,用于数据传 送。  ADSTB :地址选通。 DMA 传送开始时,输出 高有效,把在 DB0 ~ DB7 上输出的高 8 位地 址锁存在外部锁存器中。  AEN :地址允许。输出高有效,将锁存的高 8 位地址送入系统总线,与芯片此时输出的低 8 位地址组成 16 位存储器地址。
  • 111. - 112- 目录 上页 下页 束结 (2) DMA 传送控制信号(续)  MEMR* :存储器读。有效将数据从存储器 读出  MEMW* :存储器写。有效将数据写入存储 器  IOR* : I/O 读。有效将数据从外设读出  IOW* : I/O 。有效将数据写入外设  READY :准备好。 DMA 传送的 S3 下降沿 检测到为低时,插入等待状态 Sw ,直到 READY 为高才进入第 4 个时钟周期 S4 。  EOP* :过程结束。 DMA 传送过程结束,输 出一个低有效脉冲。外部输入低脉冲信号, 则终结 DMA 传送。
  • 112. - 113- 目录 上页 下页 束结 (3) 处理器接口信号  DB0 ~ DB7 :数据线。用于 8237A 与微处 理器进行数据交换。  A0 ~ A3 :地址线。用以选择芯片内部寄 存器。  CS* :片选。低有效时,微处理器与 8237A 通过数据线通信,主要完成对 8237A 的编 程。  IOR* : I/O 读。读取 8237A 内部寄存器。  IOW* : I/O 写。写入 8237A 内部寄存器。  CLK :时钟。控制芯片内部操作和数据传 输。  RESET :复位。使 8237A 处于初始状态。
  • 113. - 114- 目录 上页 下页 束结 4. 8237 DMAC 的工作方式  DMA 传送方式 · 单字节传送方式 · 数据块传送方式 · 请求传送方式 · 级连方式  DMA 传送类型 · DMA 读 · DMA 写 · DMA 检验  存储器到存储器的传送 工作模式(传送方式)和操作类型。
  • 114. - 115- 目录 上页 下页 束结 ① . DMA 传送-单字节方式  每次 DMA 传送时仅传送一个字节  传送一个字节之后,字节数寄存器减 1 , 地址寄存器加 1 或减 1 , HRQ 变为无效  8237A 释放系统总线,将控制权还给 CPU  若传送后使字节数从 0 减到 FFFFH ,则终 结 DMA 传送或重新初始化  特点: 一次传送一个字节,效率略低 DMA 传送之间 CPU 有机会重新获取总线控制权 ⑴ 工作模式 : ( 每个通道有 4 种工作 模式 )
  • 115. - 116- 目录 上页 下页 束结 ② 数据块传送方式  由 DREQ 启动就连续地传送数据,直到 字节数寄存器从 0 减到 FFFFH 终止计数 ,或由外部输入有效信号终结 DMA 传送  DREQ 只需维持有效到 DACK 有效  特点: 一次请求传送一个数据块,效率高 整个 DMA 传送期间 CPU 长时间无法控制总线 (无法响应其他 DMA 请求、无法处理中断 等)
  • 116. - 117- 目录 上页 下页 束结 ③ 请求传送方式  DREQ 信号有效就连续传送数据  DREQ 信号无效, DMA 传送被暂时中止, 8237A 释放总线, CPU 可继续操作  DMA 通道的地址和字节数的中间值仍被保 持  DREQ 信号再次有效, DMA 传送就继续进 行  如果字节数寄存器从 0 减到 FFFFH ,或者 由外部送来一个有效的信号,将终止计数  特点: DMA 操作可由外设利用 DREQ 信号控制传送的过 程
  • 117. - 118- 目录 上页 下页 束结 ④ 级联方式  用于通过多个 8237A 级连以扩展通道  第二级的 HRQ 和 HLDA 信号连到第 一级某个通道的 DREQ 和 DACK 上  第二级芯片的优先权等级与所连通道 的优先权相对应  第一级只起优先权网络的作用,实际 的操作由第二级芯片完成  还可由第二级扩展到第三级等
  • 118. - 119- 目录 上页 下页 束结 ⑵ 操作类型  DMA 读——把数据由存储器传送到外设 由 MEMR* 有效从存储器读出数据,由 IOW* 有 效把这一数据写入外设  DMA 写——把外设输入的数据写入存储器 由 IOR* 有效从外设输入数据,由 MEMW* 有效 把这一数据写入存储器。  DMA 检验——空操作 8237A 不进行任何检验 外设可以进行 DMA 校验 存储器和 I/O 控制线保持无效,不进行传送  存储器→存储器传送
  • 119. - 120- 目录 上页 下页 束结 存储器→存储器传送  固定使用通道 0 和通道 1  通道 0 的地址寄存器存源区地址  通道 1 的地址寄存器存目的区地址,通道 1 的字节数寄存器存传送的字节数  传送由设置通道 0 的软件请求启动  每传送一字节需用 8 个时钟周期 前 4 个时钟周期用通道 0 地址寄存器的地址从源 区读数据送入 8237A 的临时寄存器 后 4 个时钟周期用通道 1 地址寄存器的地址把临 时寄存器中的数据写入目的区
  • 120. - 121- 目录 上页 下页 束结 5. 8237 的控制字和编程  8237A 共有 10 种内部寄存器,对它们 的操作有时需要配合 3 个软件命令  8237A 的“软件命令” 不需要通过数据总线写入控制字 直接由地址和控制信号译码实现 全部都用地址 A0 ~ A3 区分
  • 121. - 122- 目录 上页 下页 束结 (1) 当前地址寄存器  保持 DMA 传送的当前地址值  每次传送后该寄存器的值自动加 1 或减 1  这个寄存器的值可由 CPU 写入和读出 基地址寄存器 存放初始值 ㈠ 内部寄存器
  • 122. - 123- 目录 上页 下页 束结 (2) 当前字节数寄存器  保持 DMA 传送的剩余字节数  每次传送后,该寄存器的值减 1  这个寄存器的值可由 CPU 写入和读出  该寄存器的值减至 0 ,再减 1 (从 0 减到 FFFFH )时,终止计数 传送 N 个字节,初始值为 N - 1 传送 N 个字节,初始值为 N - 1 基字节数寄存器 存放初始值
  • 123. - 124- 目录 上页 下页 束结 ⑶ 基地址寄存器和基字节计数寄 存器  每个通道均有一个 16 位的基地址寄存器和一个 16 位的基字节计数寄存器。  它们用来存放所对应的地址寄存器和字节计数 器的初始值。  在编程时,这两个寄存器由 CPU 以连续两字节 方式与对应的当前寄存器同时写入,但它们的 内容不能读出。  在自动预置方式时,基本寄存器的内容被用来 恢复当前寄存器的初始值。
  • 124. - 125- 目录 上页 下页 束结 (4) 命令寄存器  存放 8237A 的命令字  设置 8237A 芯片的操作方式  影响每个 DMA 通道  复位时使命令寄存器清零  设置 D2 = 1 才使 8237A 可以作为 DMA 控 制器 请看命令字的格式
  • 125. - 126- 目录 上页 下页 束结 命令字格式 D7 D6 D5 D4 D3 D2 D1 D0 0 DACK 低有效 1 DACK 高有效 0 DREQ 高有效 1 DREQ 低有效 0 滞后写 1 扩展写 × 若 D3 = 1 0 固定优先权 1 循环优先权 0 正常时序 1 压缩时序 × 若 D0 = 1 0 允许 DMAC 工作 1 禁止 DMAC 工作 0 允 许 通 道 0 地 址 改变 1 禁 止 通 道 0 地 址 改变 × 若 D0 = 0 0 禁止存储器之间传 送 1 允许存储器之间传 送
  • 126. - 127- 目录 上页 下页 束结 (5) 方式寄存器  存放相应通道的方式控制字  选择某个 DMA 通道的工作方式  其中用最低 2 位选择哪个 DMA 通道 请看方式字的格式
  • 127. - 128- 目录 上页 下页 束结 方式字格式 D7 D6 D5 D4 D3 D2 D1 D0 00 请求模式 01 单 字 节 模 式 10 数 据 块 模 式 11 级联模式 0 地址增量(加 1 ) 1 地址减量(减 1 ) 0 禁 止 自 动 初 始 化 1 允 许 自 动 初 始 化 00 DMA 校验 01 DMA 写 10 DMA 读 11 非法 ×× 若 D7D6 = 11 00 通道 0 01 通道 1 10 通道 2 11 通道 3
  • 128. - 129- 目录 上页 下页 束结 (6) 请求寄存器  存放软件 DMA 请求状态  除硬件 DMA 请求外,当工作在数据 块传送方式时也可以通过软件发出 DMA 请求  若是存贮器到存贮器传送,则必须由 软件请求启动通道 0 请看请求字的格式
  • 129. - 130- 目录 上页 下页 束结 请求字格式 D7 D6 D5 D4 D3 D2 D1 D0 任意 0 复位 1 置位 00 通 道 0 01 通道 1 10 通道 2 11 通道
  • 130. - 131- 目录 上页 下页 束结 (7) 屏蔽寄存器  控制外设硬件 DMA 请求是否被响应(为 0 允许),各个通道互相独立。 3 种方法: 单通道屏蔽字只对一个 DMA 通道屏蔽位进行设置 主屏蔽字对 4 个 DMA 通道屏蔽位同时进行设置 清屏蔽寄存器命令使 4 个屏蔽位都清零(允许)  复位使 4 个通道全置于屏蔽状态  当一个通道的 DMA 过程结束,如果不是工 作在自动初始化方式,则这一通道的屏蔽位 置位,必须再次编程为允许,才能进行下次 DMA 传送 请看屏蔽字的格式
  • 131. - 132- 目录 上页 下页 束结 单通道屏蔽字格式 D7 D6 D5 D4 D3 D2 D1 D0 任意 0 清 屏 蔽 位 1 置 屏 蔽 位 00 通 道 0 01 通道 1 10 通道 2 11 通道
  • 132. - 133- 目录 上页 下页 束结 主屏蔽字格式 D7 D6 D5 D4 D3 D2 D1 D0 任意 Di = 0 清通道 I 屏 蔽位 Di = 1 置通道 I 屏蔽位
  • 133. - 134- 目录 上页 下页 束结 (8) 状态寄存器  可由 CPU 读取  低 4 位反映读命令这个瞬间每个通道 是否产生 TC (为 1 ,表示该通道传 送结束)  高 4 位反映每个通道的 DMA 请求情 况(为 1 ,表示该通道有请求)  状态位在复位或被读出后,均被清零
  • 134. - 135- 目录 上页 下页 束结 (9) 暂存寄存器  在存储器到存储器的传送方式下,临 时寄存器保存从源存储单元读出的数 据,该数据又被写入到目的存储单元  传送完成,临时寄存器只会保留最后 一个字节,可由 CPU 读出  复位使临时寄存器内容为零
  • 135. - 136- 目录 上页 下页 束结 补充 : 读写通道寄存器  CPU 与 8237A 之间通过 8 位数据总线 交换信息, 8237A 的通道寄存器均为 16 位  需要两次读写操作才能实现 CPU 与 8237A 之间的一个完整数据的交换  8237A 内含一个高 / 低触发器,用来 控制读写通道寄存器的高、低字节
  • 136. - 137- 目录 上页 下页 束结 补充 : 高 / 低触发器  该触发器为 0 ,控制读写低字节  该触发器为 1 ,控制读写高字节  软、硬件复位后,触发器为 0  每次读写通道寄存器,自动改变触发 器状态。如果对 16 位寄存器的操作 用两次连续读写进行,就不必清除这 个触发器  清除高 / 低触发器软件命令( A3 A2 A1 A0 = 1100 )将使高 / 低触发器清零
  • 137. - 138- 目录 上页 下页 束结 (10) 软件命令  清除高 / 低触发器软件命令 A3 A2 A1 A0 = 1100 ,使高 / 低触发器清零  主清除命令 A3 A2 A1 A0 = 1101 ,使高 / 低触发器清零 还使命令、状态、请求、临时寄存器清零 使屏蔽寄存器置为全 1 (禁止 DMA 请求) 主清除命令与硬件的 RESET 信号具有相同的功能  清屏蔽寄存器命令 A3 A2 A1 A0 = 1110 ,使 4 个屏蔽位都清零(允许 DMA 请求)
  • 138. - 139- 目录 上页 下页 束结 ㈡ 内部寄存器的寻址  对 8237 内部寄存器的寻址和执行与控制器有关 的软件命令,都由芯片选择信号, I/O 读、 I/O 写和 A3 ~ A0 地址线的不同状态编码来完成。 = 0 表示访问该 8237DMAC 芯片; A3 = 0 则表 示访问某个地址寄存器或字节计数器; A3=1 则 表示访问控制寄存器和状态寄存器。  或正在发出一条软件命令。  在和 A3 都为 0 时, CPU 访问某个地址寄存器 或字节计数器,并由 A2 ~ A1 编码状态给出通 道号,而 A0=0 表示访问当前地址寄存器, A0 = 1 表示访问当前字节计数器。而用为低电平 或为低电平表示是读操作还是写操作。  对当前地址寄存器进行写入的同时,也写入基 本地址寄存器;对当前字节计数器进行写入的 同时,也写入基本字节计数器。 CS
  • 139. - 140- 目录 上页 下页 束结 ㈢ 8237 的编程步骤 ① 输出主清除命令; ② 写入基与现行地址寄存器; ③ 写入基与现行字节数址寄存器; ④ 写入模式寄存器; ⑤ 写入屏蔽寄存器; ⑥ 写入命令寄存器; ⑦ 写入请求寄存器; 若有软件请求,就写入到指定通道,就可以开始 DMA 传送过程;若无软件请求,则在完成了① -⑦ 的编程后,由 通道的 DREQ 启动 DMA 传送过程。
  • 140. 例:若要利用通道 0 ,由外设 ( 磁盘 ) 输入 32KB 的一个数据块, 传送至内存 8000H 开始的区域 ( 增量传送 ) ,采用块连续传送的方 式,传送完不自动初始化,外设的 DREQ 和 DACK 都为高电平有 效。 要编程首先要确定端口地址。地址的低 4 位用以区分 8237 的内部寄存器,高 4 位地址 A7 ~ A4 经译码后,连至选片端 CS ,假定选中时高 4 位为 5 。 ① 模式控制字 D7 D6 D5 D4 D3 D2 D1 D0 1 0 0 0 0 1 0 0 ② 屏蔽字 D7 D6 D5 D4 D3 D2 D1 D0 0 0 0 0 0 0 0 0 ③ 命令字 D7 D6 D5 D4 D3 D2 D1 D0 1 0 1 0 0 0 0 0
  • 141. - 142- 目录 上页 下页 束结 DMA 通道 0 的刷新 程编 OUT 5DH , AL ;输出主清除命令 MOV AL , 00H OUT 50H , AL ;输出基和现行地址 的低 8 位 MOV AL , 80H OUT 50H , AL ;输出基和现行地址 的高 8 位 MOV AL , 00H OUT 51H , AL MOV AL , 80H OUT 51H , AL ;给基和现行字节数 赋值 MOV AL , 84H OUT 5BH , AL ;输出模式字 MOV AL , 00H OUT 5AH , AL ;输出屏蔽字 MOV AL , 0AOHIBM PC/XT
  • 142. - 143- 目录 上页 下页 束结 6. Intel 8237 的应用举例 ㈠ 8088 访问 8237 的寻址 ( 自学 ) ㈡ 8237 的初始化编程 在进行 DMA 传输之前, CPU 要对 8237 进行编程。 DMA 传输要涉及到 RAM 地址、 数据块长、操作方式和传输类型,因此,在 每次 DMA 传输之前,除自动预置外,都必须 对 8237 进行一次初始化编程。若数据块超过 64KB 界限时,还必须将页面地址写入页面寄 存器。 ㈢ 利用 8237 的 CHl 实现 DMA 数据传送 ( 自 学 )
  • 143. - 144- 目录 上页 下页 束结 6.5 例题解析 略
  • 144. 第 6 章教学要求 1. 了解 8237A 引脚特点和工作时序 2. 掌握 8237A 的各种工作方式 3. 理解 8237A 内部寄存器的作用和编 程 4. 了解 8237A 在 IBM PC 系列机上的应 用情况