资源预览内容
第1页 / 共66页
第2页 / 共66页
第3页 / 共66页
第4页 / 共66页
第5页 / 共66页
第6页 / 共66页
第7页 / 共66页
第8页 / 共66页
第9页 / 共66页
第10页 / 共66页
亲,该文档总共66页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第7章 输入/输出系统, I/O接口:是CPU和外部设备交换信息的“中转站”,I/O接口,存储器,C P U,AB地址总线,DB数据总线,CB控制总线,存储器,I/O设备,微机系统的硬件结构, 以CPU为核心通过3条总线连接存储器、I/O接口,7.1 输入/输出系统概述,一. 概 述 1. 接口电路的作用 CPU数据 输出接口电路 输出设备 CPU 输入接口电路 输入设备数据,接口: 是CPU与外部设备交换信息的中转站,I/O设备与总线之间的连接,输出接口电路,输出设备,输入接口电路,输入设备,系 统 总 线,I/O接口电路,2. 接口电路的功能 应具有数据暂存功能 应有端口地址译码器 (便于使用IN, OUT指令读写数据) 与外设之间有联络功能 有中断管理能力 有数据转换功能(并 串,串 并),3. 关于端口的概念 “端口”是接口电路中, 能与CPU交换信息(使用IN, OUT) 的寄存器。,端口分类: 数据口: 存放CPU向外设输出或外设输入的数据。 控制口: 存放控制信息-控制接口电路、外设的 工作。 状态口: 存放状态信息 反映外设的状态。 注意:接口电路必须具有数据口。,注:每个端口,系统都为它编了一个地址,系统只要给出某个地址,通过译码电路,就能找到相应的I/O接口电路中的端口寄存器。 问 题:系统给出的地址是内存单元地址还是I/O端口寄存器的地址? 解决方案:合理安排I/O端口寄存器的编址方式。,4. 端口的编址方式 存储器映像方式 把端口和存储单元等同看待, 统一编址。 特点: 凡访问存储单元的指令都可访问 I/O端口,端口地址占用存储空间。, I/O端口独立编址 特点: I/O 端口不占用存储空间, CPU要有专用的 I/O 指令。,5. PC系列机的端口编址, PC系列机采用端口独立编址; 从8088 奔腾微处理器, 设计时用A15 A0 低16位地址寻址 I/O 端口; 所以, CPU的端口寻址能力为216=65536个; 基于微处理器的PC系列, 实际使用A9 A0 做I/O地址; 所以, PC系列机 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口,如: IN AL , 61H OUT 61H, AL,2. DX间址的I/O指令 当口地址 n 8位二进制数时, 用DX间址,注意: I/O 指令只能在端口和AL, AX, EAX之间 交换信息, 用DX间址, 但不能使用方括号, 即不能写成: IN AL, 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 的端口寄存器 如: MOV DX, 3F8H IN AL , DX ;从3F8H端口取数 AL,7.2 微机系统与外设交换信息的方式,微机系统与 I/O 端口的信息交换有四种方式: 无条件传送 查询方式 中断方式 DMA方式 采用何种方式与接口的硬件电路有直接关系,1.无条件传送 输入接口:,执行IN指令之前, 外设数据已经准备好。, 输出接口,执行OUT指令时: AL内容 数据线, 口地址 地址线上, IOW=低, 把数据锁存到 锁存器中。,2.查询方式 用查询方式交换信息, 必先了解外设的状态。,查询方式输入接口示意图,查询式输入核心程序 设状态口地址=200H 数据口地址=201H RSCAN : MOV DX , 200H IN AL , DX TEST AL , 80H JZ RSCAN MOV DX , 201H IN AL , DX, 查询式输出接口示意图,查询式数据输出核心程序 设状态口地址=200H=数据口地址 TSCAN: MOV DX, 200H IN AL, DX TEST AL, 1 JNZ TSCAN MOV DX, 200H MOV AL, 某数 OUT DX, AL,3. 中断控制方式,在有多个外设的系统中,多个外设要求CPU为它服务是随机的 若采用查询方式工作,就不能保证系统实时地对外设的请求作出响应 为了提高CPU的效率,使系统有实时性能,导致了中断处理技术的产生,特点: 在外设没有作好数据传送准备时,CPU可执行与传送数据无关的其它指令 当外设作好传送准备后,主动向CPU请求中断 若CPU响应这一请求,则暂停正在运行的程序,转入中断服务程序,完成数据传送 待服务完毕后,自动返回原来运行的程序,4.直接存储器存取(DMA)方式,为什么要有DMA?,什么是DMA?,特点: 用硬件实现在外设与内存间直接进行数据交换,而不通过CPU 数据传送速度的上限就取决于存储器的工作速度 速度快,6.总线仲裁信号 (1)HOLD:总线保持请求(输入) (2)HLDA:总线保持响应(输出),Pentium 处理器的外部引脚,7.3 8254定时器/计数器,计算机中的定时和延时控制、对外部事件或信号的计数,软件方法 固定时间的硬件定时 可编程的硬件定时,计算机系统中采用可编程定时/计数器I8253和I8254,8254内部集成了3个16位的计数器, 每个计数器有6种工作方式,计数初值可设定为二进制或BCD码。最高工作频率10兆。,一.8254内部结构 (24脚),数据总线 缓冲器,读写控制,控制字寄存器,0号 计数器,1号 计数器,2号 计数器,A1,D70,GATE0,OUT0,CLK0,GATE1,OUT1,CLK1,GATE2,OUT2,CLK2,数据总线缓冲器: 完成和系统数据线的配接。 对外有8条数据线D70,8254的内部结构,数据总线 缓冲器,读写控制,控制字寄存器,0号 计数器,1号 计数器,2号 计数器,A1,D70,GATE0,OUT0,CLK0,GATE1,OUT1,CLK1,GATE2,OUT2,CLK2,读写控制模块: 选择芯片内部的控制寄存器和计数器, 在读写命令的控制下对选中的端口进行读写操作。对外有5条引线。,8254的内部结构,8254的内部结构,数据总线 缓冲器,读写控制,控制字寄存器,0号 计数器,1号 计数器,2号 计数器,控制寄存器: 寄存CPU对其初始化编程时写入的控制字,以决定计数器的工作方式和并设置读出命令。,8254的内部结构,数据总线 缓冲器,读写控制,控制字寄存器,0号 计数器,1号 计数器,2号 计数器,计数器: 每个计数器对外有3条线 GATE 控制信号 CLK 计数脉冲输入 OUT 计数器输出,8254的内部结构,二. 8254与系统总线的连接,I/O口地址分2段 A9A2参加译码,译码 输出负脉冲。使CS=0, 选中8254 A1,A0直接与芯片A1,A0 相连,选择片内寄存器 执行IN时从选中的内部 寄存器读 执行OUT时向选中的内 部寄存器写,三.8254内部寄存器/计数器口地址,设8254与系统总线如上图联接: 口地址=40H43H,“选中”8254,则0#2#计 数器口地址=40H42H,控制口地址=43H。 口地址=2FCH2FFH,“选中”8254,则 0#2#计数器口地址=2FCH2FEH,控制口 地址=2FFH。,四.计数器内部结构示意图,初始化编程时: 计数初值 计数初值寄存器 减1计数器,计数器的内部结构,当GATE=1时, CLK的下降沿使计数器减1,当计数值减到0 (或某个值由工作方式确定)时, OUT有输出。,计数器的内部结构,计数初值 = f c l k / f o u t,收到锁存命令后, 当前计数值 计数值锁存器(以便读出检查), 而计数器仍然做减1计数,计数器的内部结构,作用: 选择一个计数器, 确定工作方式, 并规定初 值的写入顺序和计数初值 (一串0, 1代码) 的数制。,五. 8254命令字 / 状态字, D7 D6=00 选择0#计数器, =01 选择1#计数器 =10 选择2#计数器, =11 标志该命令字 是 “读出命令”,1.方式选择命令字, D5 D4=00 标志该命令为 “锁存命令” =01 初值写入时, 只写低8位, 高8位自动 补0;计数值读出时, 只能读低8位 =10 初值写入时, 只写高8位, 低8位自动 补0;计数值读出时, 只能读高8位。 =11 初值写入 / 计数值读出的顺序为先 低8位,后高8位。,8254的命令字和状态字, D0=0, 计数初值为二进制数, D0=1, 初值为BCD码数。,8254的命令字和状态字,2. 锁存命令( D5 D4=00 标志该命令为 “锁存命令”),D7 D6 为锁存对象。 = 0 0,锁存0#当前计数值 = 0 1,锁存1#当前计数值 = 1 0,锁存2#当前计数值,8254的命令字和状态字,3.读出命令,读出命令是多通道的锁存命令, 一条命令可以锁存3个计数器的计数值、计数器状态。,8254的命令字和状态字,4. 状态字,8254的命令字和状态字,CPU对8254的初始化编程,例: 设8254的口地址为40H 43H, 要求2#计数器工作在方式3, 计数初值=4000, 写出2#的初始化程序段。,1. 对8254一个计数器的初始化编程步骤: 向控制寄存器写入方式选择命令字 目的: 选择一个计数器, 并确定其工作方式 和计数值(计数初值)的读 / 写顺序。 向选择的计数器写入计数初值。 注意: 如果方式选择命令字D0=0, 则初值 应是二进制, 否则初值应是BCD码数。,解1: 设初值为二进制, 初值写入顺序为先低8位后高8位。 MOV AL, 10110110B OUT 43H, AL MOV AX, 4000 OUT 42H, AL MOV AL, AH OUT 42H, AL,解2: 设初值为二进制, 写入顺序为仅写高8位。 MOV AL, 10100110B OUT 43H, AL MOV AL, 40 OUT 42H, AL,注意: 解2是错误的, 因为:4000=0FA0H, 其低8位不等于0。,8254的初始化编程,解3: 设初值为BCD码, 写入顺序为先低后高。 MOV AL, 10110111B OUT 43H, AL MOV AL, 0 OUT 42H, AL MOV AL, 40H OUT 42H, AL,解4: 设初值为BCD码, 仅写高8位。 MOV AL, 10100111B OUT 43H, AL MOV AL, 40H OUT 42H, AL,注意: 4000的BCD
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号