南京邮电大学微机原理第7章及习题
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
状态口选中
接数据线D0位
查询式数据输出核心程序 设状态口地址=200H=数据口地址
TSCAN: MOV IN TEST JNZ MOV MOV OUT
DX, 200H AL, DX AL, 1 TSCAN DX, 200H AL, 某数 DX, AL
3. 中断控制方式
• 在有多个外设的系统中,多个外设要求CPU为它服务 是随机的
计数值锁存器(16位)
内部数据线
OUT
计数器的内部结构
当GATE=1时, CLK的下降沿使计数器减1,当计数值减到 0 (或某个值—由工作方式确定)时, OUT有输出。
内部数据线 计数初值寄存器(16位)
GATE CLK
减1计数器(16位)
锁存命令
OUT
计数值锁存器(16位)
内部数据线
计数器的内部结构
CP D
器
地址译码器
D7
D0
IOW
执行OUT指令时: AL内容 → 数据线, 口地址 → 地址线上, IOW=低, 把数据锁存到 锁存器中。
2.查询方式 用查询方式交换信息, 必先了解外设的状态。
查询方式输入流程
查询方式输出流程
从状态口读取 状态信息
N 数据准备好?
Y 执行IN指令, 取出数据
从状态口读取 状态信息
1.方式控制字
D7
来自百度文库
D6 D5
D4 D3 D2 D1 D0
计数器选择 读写方式选择 工作方式选择 数制选择
作用: 选择一个计数器, 确定工作方式, 并规定初 值的写入顺序和计数初值 的数制。(一串0, 1代码)
D7 D6=00 选择0#计数器, =01 选择1#计数器 =10 选择2#计数器, =11 标志该命令字 是 “读出命令”
OUT) 的寄存器。
端口分类: 数据口: 存放CPU向外设输出或外设输入的数据。 控制口: 存放控制信息--控制接口电路、外设的
工作。 状态口: 存放状态信息 反映外设的状态。
注意:接口电路必须具有数据口。
注:每个端口,系统都为它编了一个地址,系统只要给出 某个地址,通过译码电路,就能找到相应的I/O接口电路中 的端口寄存器。
系
输出接口电路
输出设备
统
总
线
输入接口电路
输入设备
I/O接口电路
2. 接口电路的功能 应具有数据暂存功能 应有端口地址译码器 (便于使用IN, OUT指令读写数据) 与外设之间有联络功能 有中断管理能力 有数据转换功能(并 → 串,串 → 并)
3. 关于端口的概念 “端口”是接口电路中, 能与CPU交换信息(使用IN,
读写 控制
控制字 寄存器
0号 计数器
1号 计数器
2号 计数器
GATE0 CLK0 OUT0
GATE1 CLK1 OUT1
GATE2 CLK2 OUT2
8254的内部结构
D7~0
RD WR
A1 A0 CS
数据总线 缓冲器
读写 控制
控制字 寄存器
0号 计数器
1号 计数器
2号 计数器
GATE0 CLK0 OUT0
的端口寄存器 如: MOV DX, 3F8H
IN AL , DX ;从3F8H端口取数 → AL
注意: 1、I/O 指令只能在端口和AL, AX, EAX之间 交换信息, 2、用DX间址, 但不能使用方括号, 即不能写成:
IN AL, [DX]。
7.2 微机系统与外设交换信息的方式
微机系统与 I/O 端口的信息交换有四种方式:
0 0111 1 XXXX 0 1 1 XX
操作
计 数 初 值 写 入 计 数 器 #0 计数初值写入计数器# 1 计 数 初 值 写 入 计 数 器 #2 向控制字寄存器写控制字
读计数器# 0 当前计数值 读 计 数 器 #1当 前 计 数 值 读计数器# 2 当前计数值
无操作 禁止 无操作
8254的内部结构
GATE2 CLK2 OUT2
读写控制模块: 选择芯片内部的控制寄存器和计数器, 在读写 命令的控制下对选中的端口进行读写操作。对外有5条引线。
8254的内部结构
表7.1 8254内部寄存器读/写操作
CS RD WR A1 A0
0 1000 0 1001 0 1010 0 1011
0 0100 0 0101 0 0110
二.计数器内部结构示意图
内部数据线 计数初值寄存器(16位)
GATE CLK
减1计数器(16位)
锁存命令
OUT
计数值锁存器(16位)
内部数据线
计数器的内部结构
初始化编程时: 计数初值 → 计数初值寄存器 → 减1计数器
内部数据线 计数初值寄存器(16位)
GATE CLK
减1计数器(16位)
锁存命令
GATE1 CLK1 OUT1
GATE2 CLK2 OUT2
数据总线缓冲器: 完成和系统数据线的配接。 对外有8条数据线D7~0
8254的内部结构
D7~0
RD WR
A1 A0 CS
数据总线 缓冲器
读写 控制
控制字 寄存器
0号 计数器
1号 计数器
2号 计数器
GATE0 CLK0 OUT0
GATE1 CLK1 OUT1
问 题:系统给出的地址是内存单元地址还是I/O端口寄存 器的地址?
解决方案:合理安排I/O端口寄存器的编址方式。
4. 端口的编址方式 端口和存储单元统一编址 把端口和存储单元等同看待, 统一编址。 特点: 凡访问存储单元的指令都可访问 I/O端口,端口地址占用存储空间。
I/O端口独立编址 特点: I/O 端口不占用存储空间,
收到锁存命令后, 当前计数值 → 计数值锁存器(以便读出 检查), 而计数器仍然做减1计数
内部数据线 计数初值寄存器(16位)
GATE CLK
减1计数器(16位)
锁存命令
OUT
计数值锁存器(16位)
内部数据线
计数初值 = f c l k / f o u t
8254的内部结构
三. 8254引脚(图11.1)
CPU要有专用的 I/O 指令。
5. PC系列机的端口编址
PC系列机采用端口独立编址; 从8088 ~ 奔腾微处理器, 设计时用A15 ~ A0 低16位地址寻址 I/O 端口; 所以, CPU的端口寻址能力为216=65536个; 基于微处理器的PC系列, 实际使用A9 ~ A0 做I/O地址; 所以, PC系列机 I/O 端口地址最多为
软件方法 固定时间的硬件定时 可编程的硬件定时
计算机系统中采用可编程定时/计数器I8253和I8254
8254内部集成了3个16位的计数器, 每个计数器有6种工作方式, 计数初值可设定为二进制或BCD码。最高工作频率10兆。
一.8254内部结构 (24脚)
D7~0
RD WR
A1 A0 CS
数据总线 缓冲器
如: IN AL , 61H OUT 61H, AL
2. DX间址的I/O指令 当口地址 n > 8位二进制数时, 用DX间址
IN AL , DX ; DX的端口内容 → AL OUT DX , AL ; AL →DX的端口寄存器 IN AX , DX ; DX → AL, DX+1 → AH OUT DX , AX ; AL → DX, AH → DX+1
N 外设空闲否?
Y 执行OUT指令, 输出一个数据
查询方式输入接口示意图
数据口选中
IOR
锁
数据 存
输
器
入
(8)
设 备 输入选
通信号 R
三态 缓冲 器
(8)
+5V D Q
状态标志
CPU 数据线
接 数 据 线 D7 位
地址译码器 地址总线
地址译码器
IOR
查询式输入核心程序 设状态口地址=200H
数据口地址=201H
无条件传送
查询方式
中断方式
DMA方式
采用何种方式与接口的硬件电路有直接关系
1.无条件传送
输入接口:
八
8个
外设
三
态
门
数据线
…
入 出
地址译码器
IOR
入
出 控=0,出=入
入
出
控=1,出为高阻 控
控
执行IN指令之前, 外设数据已经准备好。
控
控=1,出=入 控=0,出为高阻
输出接口
8
外设
数据线
锁 存
Q …...
CS
I/O口地址分2段 A9~A2参加译码,译码 输出负脉冲。使CS=0, 选中8254 A1,A0直接与芯片A1,A0 相连,选择片内寄存器 执行IN时从选中的内部 寄存器读 执行OUT时向选中的内 部寄存器写
四.8254内部寄存器/计数器口地址
在CS=0前提下 A1 A0
选中
00
0#计数器
01
D7~0
RD WR
A1 A0 CS
数据总线 缓冲器
读写 控制
控制字 寄存器
0号 计数器
1号 计数器
2号 计数器
GATE0 CLK0 OUT0
GATE1 CLK1 OUT1
GATE2 CLK2 OUT2
8254与系统总线的对接
A9
A2 AEN
D7~D0
IOR IOW
A1 A0
口地址 译码器
8254
D7~D0 RD WR A1 A0
RSCAN : MOV IN TEST JZ MOV IN
DX , 200H AL , DX AL , 80H RSCAN DX , 201H AL , DX
查询式输出接口示意图
数据 锁
数据总线
存
输 出
器 数据口选中 (8)
设 状态标志
备
Q
IOW
地址译码器 地址总线
D +5V
IOR
ACK
R
“0”为空闲
D7~0
RD WR
A1 A0 CS
数据总线 缓冲器
读写 控制
控制字 寄存器
0号 计数器
1号 计数器
2号 计数器
计数器: 每个计数器对外有3条线 GATE ~ 控制信号 CLK ~ 计数脉冲输入 OUT ~ 计数器输出
GATE0 CLK0 OUT0
GATE1 CLK1 OUT1
GATE2 CLK2 OUT2
• 若采用查询方式工作,就不能保证系统实时地对外 设的请求作出响应
• 为了提高CPU的效率,使系统有实时性能,促使了中 断处理技术的产生
特点:
• 在外设没有作好数据传送准备时,CPU可执行与传送数据 无关的其它指令 • 当外设作好传送准备后,主动向CPU•请求中断 • 若CPU响应这一请求,则暂停正在运行的程序,转入中断 服务程序,完成数据传送 • 待服务完毕后,自动返回原来运行的程序
8254的控制字和状态字
锁存命令( D5 D4=00 标志该命令为 “锁存命令”)
D7
D6 D5 D4 D3
4.直接存储器存取(DMA)方式
为什么要有DMA?
什么是DMA?
定义: 用硬件实现在外设与内存间直接进行数据交换,而不通
过CPU间接交换 优点: • 数据传送速度的上限就取决于存储器的工作速度 • 速度快 缺点: 硬件电路比较复杂
8.3 8254定时器/计数器
计算机中的定时和延时控制、对外部事件或信号的计数
第七章 输入/输出系统
❖ 概述 ❖ 微机系统与I/O设备的信息交换 ❖ 可编程定时器/计数器8254
7.1 输入/输出系统概述
一. 概 述
1. 接口电路的作用 CPU数据 → 输出接口电路 → 输出设备 CPU ← 输入接口电路 ← 输入设备数据
接口: 是CPU与外部设备交换信息的中转站
I/O设备与总线之间的连接
210=1024个。 这1024个口地址, 系统本身(主板上, 以及常 规 I/O接口)已经占用了一部分。 端口地址( I/O 空间)没有分段的概念。
二. 最常用的 I/O 指令
1.直接寻址 I/O 指令
设n为8位端口地址 IN AL , n ; 口地址为n的端口中取数→ AL OUT n , AL ; AL内容 →口地址为n的端口寄存器 IN AX , n ; (n) → AL, (n+1) → AH OUT n , AX ; AL → n口, AH → n+1口
8254的控制字和状态字
D7
D6 D5
D4 D3 D2 D1 D0
计数器选择 读写方式选择 工作方式选择 数制选择
D5 D4=00 标志该命令为 “锁存命令” =01 初值写入时, 只写低8位, 高8位自动 补0;计数值读出时, 只能读低8位 =10 初值写入时, 只写高8位, 低8位自动 补0;计数值读出时, 只能读高8位。 =11 初值写入 / 计数值读出的顺序为先 低8位,后高8位。
1#计数器
10
2#计数器
11
控制寄存器
设8254与系统总线如上图联接: 口地址=40H~43H,“选中”8254,则0#~2#计 数器口地址=40H~42H,控制口地址=43H。 口地址=2FCH~2FFH,“选中”8254,则 0#~2#计数器口地址=2FCH~2FEH,控制口 地址=2FFH。
五. 8254控制字 / 状态字
D7~0
RD WR
A1 A0 CS
数据总线 缓冲器
读写 控制
控制字 寄存器
0号 计数器
1号 计数器
2号 计数器
GATE0 CLK0 OUT0
GATE1 CLK1 OUT1
GATE2 CLK2 OUT2
控制字寄存器: 寄存CPU对其初始化编程时写入的控制字, 以决定计数器的工作方式和并设置读出命令。
8254的内部结构