微型计算机课件第03章IO接口.ppt_第1页
微型计算机课件第03章IO接口.ppt_第2页
微型计算机课件第03章IO接口.ppt_第3页
微型计算机课件第03章IO接口.ppt_第4页
微型计算机课件第03章IO接口.ppt_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 第3章微型计算机输入输出接口 3 1输入 输出接口3 2输入输出数据传输的控制方式3 3开关量输入输出接口 2 3 1输入 输出接口 3 1 1外部设备及其信号3 1 2I O接口的功能3 1 3I O端口的编址方法3 1 4简单I O接口的组成 3 3 1 1外部设备及其信号外部设备 PeripheralDevice 按照与CPU数据传输的方向划分 1 输入设备键盘 鼠标 光笔输入图形信息的扫描仪 数码相机检测现场信息的数字化测试仪表模拟量采集和模拟量 数字量转换装置等 4 2 输出设备显示器 打印机绘图仪现场控制的数字量 模拟量转换装置和执行元件 3 复合输入 输出设备外存储设备是典型的复合输入 输出设备 磁带机 TapeDriver 软磁盘驱动器 FloppyDriver 硬磁盘驱动器 HardDiskDriver 光盘驱动器 CompactDiskDriver 许多光盘只能读出信息 称为CD ROM CompactDisk ReadOnlyMemory 只读光盘只能用作输入设备 5 2 外部设备的信号 1 数据信号按照信号的物理形态 可分为以下几种 数字量 以二进制形式表述的数据 图形或文字信息 模拟量 现场的物理量通过传感器件 转换为大小与之对应的电压或电流信号 这些量呈连续变化的形态 称为模拟量 Analog 开关量 开关量是只有二种状态 0 1 的量 如开关的接通 ON 与断开 OFF 电机的启停等脉冲量 计数脉冲 定时脉冲和控制脉冲对于输入设备 数据信号从外设送往CPU对于输出设备 数据信号从CPU发往外部设备 6 2 状态信号状态信号表明外部设备当前的工作状态 用来协调CPU与外部设备之间的操作 典型的状态信号 READY BUSY有的设备有指示出错状态的信号 如打印机的纸尽 PaperOut 故障 Fault 不同的外设可以有不同的状态信号 状态信号总是从外部设备发往CPU 7 3 控制信号控制信号是CPU向外设发出的命令 它指定设备的工作方式 启动或停止设备控制信号的格式因设备而异控制信号从CPU发往外部设备数据信号 状态信号 控制信号都是以 数据 的形式 通过数据总线在CPU和外部设备之间进行传输的 8 3 1 2I O接口的功能接口 计算机一个部件与另一个部件之间的连接界面 功能 1 设备选择功能CPU通过地址代码来标识和选择不同的外部设备接口对系统总线上传输的外设地址进行译码 在检测到本设备地址代码时 产生相应的 选中 信号2 信息传输功能设备被 选中 时 从CPU 数据总线接收数据或控制信息外部设备的数据或状态信息发往数据总线 CPU 9 3 数据格式转换功能外设使用的数据格式与CPU数据格式不同时 接口要进行二种数据格式之间的相互转换 联络功能从系统总线或外设接收一个数据后 发出 数据到 联络信号 通知外设或CPU取走数据数据传输完成 向对方发出信号 准备进行下次传输5 中断管理功能向CPU申请中断 向CPU发中断类型号 中断优先权的管理 在以8086为CPU的系统中 这些功能大部份可以由专门的中断控制器实现 10 复位功能接口在接收系统的复位信号后 将接口电路及其所连接的外部设备置成初始状态 7 可编程功能有些接口具有可编程特性 可以用指令来设定接口的工作方式 工作参数和信号的极性 11 错误检测功能 1 物理信道上的传输错误信号在线路上传输时 如果遇到干扰信号 可能发生传输错误 检测传输错误的常见方法是奇偶检验 2 数据传输中的覆盖错误输入设备完成一次输入操作后 把所获得的数据暂存在接口内如果在该设备完成下一次输入操作之后 CPU还没有从接口取走数据 那么 在新的数据送入接口后 上一次的数据被覆盖 从而导致数据的丢失输出操作中也可能产生类似的错误覆盖错误导致数据的丢失 易发生在高速数据传输的场合 12 3 1 3I O端口的编址方法有两种不同的I O端口编址方式 1 I O端口与内存统一编址把内存的一部分地址分配给I O端口 一个8位端口占用一个内存单元地址 也称为存储器映射编址方式优点 访问内存单元和I O端口使用相同的指令 使用方便降低CPU电路的复杂性缺点 减少了内存可用范围难以区分访问内存和I O的指令 降低了程序的可读性和可维护性 13 I O端口与内存独立编址内存储器和I O端口各自有自己独立的地址空间访问I O端口需要专门的I O指令8086 8088CPU采用这种方式访问内存储器使用20根地址线A0 A19使M IO 1内存地址范围为00000 0FFFFFH共1MB访问I O端口使用低16根地址线A0 A15使M IO 0I O端口地址范围为0000 0FFFFH共64K 14 3 IBMPC微型计算机I O端口地址分配在PC系列微机中 仅使用A0 A9共10条地址线定义I O端口 设A11 A15 0 寻址范围为0 3FFH前256个端口地址供主板上寻址I O接口芯片使用 后768个供扩展槽接口卡使用用户设计I O接口电路的时候 应使用系统未占用的端口地址区域为避免所选择的地址与其他扩展卡冲突 最好将其设计成地址可选的型式IBM PC微机系统板各I O接口器件端口地址见表3 1 15 3 1 4简单I O接口的组成端口端口 接口内的寄存器 用来暂存CPU和外设之间传输的数据 状态和命令 端口地址 每一个端口有一个独立的地址 外部设备地址 设备接口内各端口的地址 一台外部设备可以拥有几个通常是相邻的端口地址 端口种类 数据端口 命令端口 控制端口 和状态端口 如果外部设备的信息 数据 状态 已经锁存 端口也可以由三态缓冲电路组成 16 地址译码电路地址译码是接口的基本功能之一 一个接口上的几个端口地址通常是连续排列的 可以把16位地址码分解为二个部分 高位地址码用作对接口的选择 低位地址码用来选择接口内不同的端口 例如 某接口占有地址330H 333H 高8位地址为11001100B时 本接口被选中 低2位地址为00 01 10 11时 选择接口内的不同端口 17 图3 1端口的地址译码电路 18 为了避免地址冲突 许多接口电路允许用 跳线器 JUMPER 改变端口地址 上页图3 1 b 将异或门的输出代替图3 1 a 中的A8 A9引脚 二个跳线引脚均接地时 上面译码电路仍然产生330H 333H的端口译码信号 当二个跳线引脚均接 1 时 上面译码电路会产生030H 033H的端口译码信号同理还可以产生130H 133H 230H 233H的译码信号 8086工作于最大模式时 上面的M IO WR RD 信号由8288总线控制器发出的IORC IOWC 代替 19 由于读 写操作不会同时进行 一个输入端口和另一个输出端口可以使用同一个地址编码 例如 可安排数据输入端口 数据输出端口使用同一个地址330H 命令端口和状态端口共同使用地址331H 需要注意的是 数据输入端口和数据输出端口虽然使用相同的地址 但却是二个各自独立的不同的端口 20 数据锁存器与缓冲器数据 状态 输入端口 必须通过三态缓冲器与系统总线相连 保证数据总线能够正常地进行数据传送 输入设备在完成一次输入操作后 在输出数据的同时 产生数据选通信号 把数据打入八位锁存器74LS273锁存器的输出信号通过三态八位缓冲器74LS244连接到系统数据总线 数据端口读信号由地址译码电路产生 高电平 无效 缓冲器输出端呈高阻态 低电平 有效 端口被选中 已锁存的数据通过74LS244送往系统数据总线 被CPU所接收 21 图3 3输入设备接口的数据锁存和缓冲电路 22 数据 命令 输出端口 CPU送往外设的数据或命令 应由接口进行锁存 以便使外设有充分的时间接收和处理 八位输出锁存电路例 图3 4 23 图3 4输出锁存电路 24 简单的输入 输出接口 图3 5 把地址译码 数据锁存与缓冲 状态寄存器 命令寄存器各个电路组合起来 构成简单输入 输出接口接口连接的信号 与系统总线连接 地址总线A0 A15数据总线D0 D7控制总线M IO RD WR 最小模式时 或IOWC IORC 最大模式时 相连接与外部设备相连 数据 状态 命令 25 图3 5简单接口的组成 26 3 2输入输出数据传输的控制方式 3 2 1程序方式3 2 2中断方式3 2 3直接存储器存取 DMA 方式 27 3 2 1程序方式在程序控制下进行信息传送分为无条件传送和条件传送二种1 无条件传送方式对于简单的外部设备的I O操作可以随时进行 例如 开关 发光二极管这些简单设备的输入信号一般不需要锁存 可以通过三态缓冲器与系统数据总线直接相连 简单输出设备的信号一般需要由锁存器锁存 28 图3 6无条件输入 输出传送接口 29 条件传送方式条件传送也称为查询式传送 异步传送 接口电路除了有传送数据的端口以外 还应有储存和传送状态的端口 对于输入过程 外设将数据准备好 准备好 READY 标志位置1 CPU将数据取走 READY 0对于输出过程 外设接收到数据 将 忙 BUSY 标志位置1数据输出完成 将 BUSY 清零 30 一个数据的 条件传送 过程 CPU从接口中读取状态字 CPU检测状态字的对应位是否满足 就绪 条件 如果不满足 则回到前一步重新读取状态字 如状态字表明外设已处于 就绪 状态 则传送数据 31 图3 9查询式输入流程 32 查询方式输入接口电路 图3 7 接口内有两个端口 数据端口 8位 输入 状态端口 1位 输入 连接在D7上 1表示有数据 选通信号有二个作用 将外设的数据送到接口的锁存器中 使接口中的D触发器置 l READY 1 数据信息和状态信息从不同端口经过数据总线送到CPU 33 图3 7查询式输入接口电路 34 汇编语言程序 AGAIN INAL STAT PORT 读状态端口 D7 1表示 数据就绪 TESTAL 80H 测试 数据就绪 位JZAGAIN 未就绪 继续读状态端口INAL DATA PORT 已就绪 从数据端口读取数据 C语言程序 dostat inportb stat port while stat 数据已准备好则读取数据 35 查询方式输出接口电路 图3 8 接口内有两个端口 数据端口 8位 输出 状态端口 1位 输入 连接在D7上 1表示正在输出 BUSY CPU读取接口中的状态 外设忙 BUSY 1 CPU等待外设空闲 BUSY 0 向外设输出数据 36 图3 8查询式输出接口电路 37 数据端口写 信号作用 把数据打入 锁存器 将 状态触发器 置1D触发器的作用 为外设提供一个联络信号STB 告诉外设现在接口中已有数据可供提取 用作该设备的状态标志 忙 BUSY 38 汇编语言程序 ONE INAL STATUS PORT 读状态端口TESTAL 80H 测试 忙 位JNZONE 忙 再读状态端口MOVAL DATA 不忙 取来数据OUTDATA PORT AL 送入数据端口 C语言程序 dostat inportb status port while stat 设备空闲 输出数据 39 查询式输入 输出的程序设计例某字符输入设备以查询方式工作 数据输入端口 0054H 状态端口 0056H 状态寄存器 D0 1 数据准备好 可以输入 状态寄存器 D1 1 输入设备发生故障要求 从该设备上输入80个字符 配上水平和垂直校验码 偶校验 向串行口输出 如果设备出错 显示错误信息后停止 40 汇编语言程序 dataBufferDB81dup MessageDB DeviceFault 0DH 0AH codeStart MOVAX data 对DS初始化MOVDS AXLEASI Buffer 设置SI为缓冲区指针MOVCX 80 设置CX为计数器MOVDL 0 DL置垂直校验码初值 41 Next INAL 56H 读入状态TESTAL 02H 测状态寄存器D1JNZERROR 设备故障 转ERRORTESTAL 01H 测状态寄存器D0JZNext 未准备好 则等待 再测INAL 54H 准备好 输入字符ANDAL 7FH 清最高位 进行校验JPEStore 已经是偶数个1 则转StoreORAL 80H 奇数个1 将最高位置为1Store XORDL AL 产生垂直校验码MOV SI AL 将字符送缓冲区INCSI 修改地址指针LOOPNext 80个字符未输入完成 继续 42 MOV SI DL 输入完成 保存垂直校验码Tranfer LEASI Buffer 准备发送 SI中置字符串首址MOVCX 81 发送字符数One MOVAH 04H 设置串口输出功能号MOVDL SI 取出一个字符INT21H 从串口输出INCSI 修改指针LOOPOne 输出下一个字符JMPDoneError MOVAH 09H 设备故障 输出出错信息LEADX MessageINT21HDone MOVAH 4CHINT21H 返回DOSENDStart 43 说明 程序由二段循环程序组成 第一段程序从设备输入80个字符 同时产生它的水平 垂直校验码存入缓冲区 第二段程序将缓冲区内容通过串口输出 测试状态位要注意先后次序 由于设备故障将导致该设备不能正常输入 使完成标志 D0 恒为零 所以 在设备发生故障时先判是否完成可能导致程序死循环 产生水平校验码 从设备读入数据 清除最高位 根据剩余七位的奇偶特性决定最高位置1或不变 保持为0 产生垂直校验码 将80个字节半加 异或 得到 44 多个设备循环查询方法举例 三个设备 它们状态端口地址分别为STATl STAT2 STAT3 三个状态端口均使用第5位作为准备好标志 TREE MOVFLAG 3INPUT INAL STATlTESTAL 20HJZDEV2CALLPROCl 45 DEV2 INAL STAT2TESTAL 20HJZDEV3CALLPROC2DEV3 INAL STAT3TESTAL 20HJZNOINPUTCALLPROC3NOINPUT CMPFLAG 0JNEINPUT 46 说明 PROCl PROC2 PROC3是三个设备输入数据并进行处理的子程序 FLAG存放三个设备输入完成的标志 初始值为3 上例仅适用于三个设备工作速度都比较慢的情况 如果其中一个设备工作速度很快 而其他设备的输入输出处理程序运行时间又较长 可能发生 覆盖错误 在这种情况下 应优先执行工作速度较快的外设的I O过程 然后再执行其他设备的I O过程 47 3 2 2中断方式程序查询方式的特点 程序查询方式解决了CPU与外设工作的协调问题 但是却大大降低了CPU的使用效率 在程序查询方式中 CPU处于主动地位 外设处于消极等待查询的被动地位 设备较多时 查询方式的数据传送很难使每一个外设都能工作在最佳状态 48 程序中断方式特点 赋予系统中的外设某种主动申请 配合CPU工作的 权利 外设把数据准备好时 主动向CPU发出一个请求信号 CPU接收到请求信号后 暂停当前的工作 进行该设备的数据传送操作 赋予外设 主动权 之后 CPU可以不必反复查询该设备的状态 而是正常地处理系统任务 CPU与外设处于某种 并行工作 的状态 从而提高CPU的工作效率 49 中断方式举例 某外设在1秒内传送100个字节 若用程序查询的方式传送 则CPU为传送100个字节所化费的时间等于1秒 用中断控制方式传送 CPU为执行一个字节的传送需要进入一次中断服务程序 设CPU执行一次中断服务程序需要100 s 传递100个字节CPU所使用的时间为100 s 100 10ms CPU处理中断开销为1 99 的时间可执行其他任务 中断方式的数据传送仍在程序的控制下执行 称为程序中断方式 适应于中 慢速的外部设备数据传送 50 3 2 3直接存储器存取 DMA 方式程序中断方式 程序查询方式的缺点 中断方式 每传送一次数据 CPU必须执行一次中断服务程序 对于高速数据传输 容易产生 覆盖错误 程序查询方式 响应速度比中断方式要快一些 完成一次数据传输仍然需要执行七 八条以上的指令 CPU的工作速度不高时仍有可能跟不上外设数据传输的需要 51 直接存储器传送 DirectMemoryAccess DMA 将外设的数据不经过CPU直接送入内存储器 或者 从内存储器不经过CPU直接送往外部设备 一次DMA传送只需要执行一个DMA周期 相当于一个总线读 写周期 能够满足高速外设数据传输的需要 需要一个专门的器件来协调外设接口和内存储器的数据传输 称为DMA控制器 DMAC 52 图3 10DMA数据传送示意图 53 3 3开关量输入输出接口 3 3 1开关量输入接口3 3 2开关量输入接口 54 3 3 1开关量输入接口1 基本的开关量输入接口开关形态 单刀单掷开关 单刀双掷开关 按钮开关量通过三态缓冲器与系统数据总线连接常用的三态缓冲器 74LS244 输入输出同相 74LS240 输入输出反相 一条输入指令可以同时读入8位或16位开关量 55 图3 11基本开关量输入接口 56 2 矩阵式开关量输入接口开关数量多时 可以排列成矩阵 例如 图3 13 键盘 数据输出端口连接8根 行线 Row R0 R7 数据输入端口连接8根 列线 Column C0 C7 电路特点 没有键按下时 列线端口输入为全 1 行线端口输出全 1 时 不论有无键按下 列线端口输入仍然为全 1 某一行线输出 0 时 如果该行上有一个键按下 则输入端口输入代码为7个 1 1个 0 0的位置与被按下键的位置相对应 57 图3 12键盘 矩阵式开关量输入 接口 58 键盘扫描与编码 对8根行线逐行扫描 识别按键的所在行 列 从而获得该键的代码 一个键的编码可以用它的二字节 行列码 表示 例如 R3 C2 的二字节 行列码 为F7FBH F7H 11110111 按键在R3行上 FBH 11111011 按键在C2列上 用 行列码 查表 可以得到这个键的代码 键的编码也可以用一字节 扫描码 表示 上例中按键的一字节 扫描码 为32H 高4位0011 键所在的行 低4位0010 键所在的列 键刚按下时 会产生 抖动 59 没有键被按下 返回 1 有键按下时返回按键的二字节 行列码 行码为高8位 列码为低8位 RPORT CPORT定义为行 列端口的地址 键盘扫描程序 unsignedintkbinput unsignedintrow row0 column code k 0 outportb RPORT 0 各行输出全0 测试有无键按下 if inportb CPORT 延时20ms 消除抖动 60 if inportb CPORT 形成下一个行码 61 if column 0 xff return 0 xffff 未找到按键所在行 返回全 1 code row0 62 3 3 2开关量输出接口1 基本的开关量输出接口常见的开关量输出 LED发光二极管LED指示灯用于指示室内仪表状态小功率LED可以由逻辑电路直接驱动 输出0 LED发光输出1 LED熄灭执行元件驱动线圈 63 表3 3部分逻辑电路输出端电流 64 大功率LED驱动或执行元件驱动线圈的驱动 普通逻辑电路输出 外接功率放大三极管驱动 集电极开路驱动器 OC驱动器 输出端通过上拉电阻接高压 65 2 LED七段数码显示管接口 66 图3 15多位LED数码显示接口 67 多位LED显示器驱动 设置位码 熄灭所有数码管 将一个数码管的字形代码 段码 送入段码端口 设置位码 点亮一个数码管适当延时后 重复以上过程多位不同的数字同时显示在不同的数码管上 送段码之前熄灭所有数码管可以消除 段码 和 位码 不同步产生的闪烁 68 多位LED数码显示程序 需要输出的数字分别是1 2 3 4 5 6 7 8段码和位码的端口地址分别是segport和bitport 数据段和堆栈段 dataSegtabdb40h 4fh 24h 30h 19hdb12h 02h 78h 00h 10hbufferdb1 2 3 4 5 6 7 8segcodedb bitcodedb stack100h 69 codeleddispprocfarpushds 保护各寄存器内容pushaxpushbxpushcxpushsimovax data 装载dsmovds axleabx segtab bx置为七段码表首址movbitcode 80h 位码初始值为80H 从左边开始 movsi 0 si用作输出缓冲区指针 初值0movcx 8 cx用作循环计数器 初

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论