微型计算机输入输出接口

上传人:san****019 文档编号:21206867 上传时间:2021-04-25 格式:PPT 页数:74 大小:1.22MB
返回 下载 相关 举报
微型计算机输入输出接口_第1页
第1页 / 共74页
微型计算机输入输出接口_第2页
第2页 / 共74页
微型计算机输入输出接口_第3页
第3页 / 共74页
点击查看更多>>
资源描述
第 5章 微 型 计 算 机 输 入 输 出 接 口 5.1 输 入 输 出 接 口 5.2 输 入 输 出 数 据 传 输 的 控 制 方 式 5.3 开 关 量 输 入 输 出 接 口 5.1 输 入 输 出 接 口 5.1.1 外 部 设 备 及 其 信 号 5.1.2 I/O接 口 的 功 能5.1.3 I/O端 口 的 编 址 方 法 5.1.4 简 单 I/O接 口 的 组 成 5.1.1 外 部 设 备 及 其 信 号 1. 外 部 设 备 ( Peripheral Device)按 照 与 CPU数 据 传 输 的 方 向 划 分 :( 1) 输 入 设 备 键 盘 、 鼠 标 、 光 笔 输 入 图 形 信 息 的 扫 描 仪 、 数 码 相 机 检 测 现 场 信 息 的 数 字 化 测 试 仪 表 模 拟 量 采 集 和 模 拟 量 数 字 量 转 换 装 置 等 ( 2) 输 出 设 备 显 示 器 、 打 印 机 绘 图 仪 现 场 控 制 的 数 字 量 模 拟 量 转 换 装 置 和 执 行 元 件( 3) 复 合 输 入 输 出 设 备外 存 储 设 备 是 典 型 的 复 合 输 入 输 出 设 备 : 磁 带 机 ( Tape Driver) 软 磁 盘 驱 动 器 ( Floppy Driver) 硬 磁 盘 驱 动 器 ( Hard Disk Driver) 光 盘 驱 动 器 ( Compact Disk Driver)许 多 光 盘 只 能 读 出 信 息 , 称 为 CDROM ( Compact DiskRead Only Memory) , 只 读 光 盘 只 能 用 作 输 入 设 备 。 2. 外 部 设 备 的 信 号( 1) 数 据 信 号按 照 信 号 的 物 理 形 态 , 可 分 为 以 下 几 种 ; 数 字 量 : 以 二 进 制 形 式 表 述 的 数 据 、 图 形 或 文 字 信 息 。 模 拟 量 : 现 场 的 物 理 量 通 过 传 感 器 件 , 转 换 为 大 小 与之 对 应 的 电 压 或 电 流 信 号 。 这 些 量 呈 连 续 变 化 的 形 态 ,称 为 模 拟 量 ( Analog) 。 开 关 量 : 开 关 量 是 只 有 二 种 状 态 ( 0, 1) 的 量 , 如 开关 的 接 通 ( ON) 与 断 开 ( OFF) , 电 机 的 启 停 等 脉 冲 量 : 计 数 脉 冲 、 定 时 脉 冲 和 控 制 脉 冲 对 于 输 入 设 备 , 数 据 信 号 从 外 设 送 往 CPU对 于 输 出 设 备 , 数 据 信 号 从 CPU发 往 外 部 设 备 。 ( 2) 状 态 信 号 状 态 信 号 表 明 外 部 设 备 当 前 的 工 作 状 态 , 用 来 协 调CPU与 外 部 设 备 之 间 的 操 作 。 典 型 的 状 态 信 号 : READY, BUSY 有 的 设 备 有 指 示 出 错 状 态 的 信 号 , 如 打 印 机 的 纸 尽( Paper Out) , 故 障 ( Fault) 。 不 同 的 外 设 可 以 有 不 同 的 状 态 信 号 。 状 态 信 号 总 是 从 外 部 设 备 发 往 CPU。 ( 3) 控 制 信 号 控 制 信 号 是 CPU向 外 设 发 出 的 命 令 , 它 指 定 设 备 的 工作 方 式 , 启 动 或 停 止 设 备 控 制 信 号 的 格 式 因 设 备 而 异 控 制 信 号 从 CPU发 往 外 部 设 备 数 据 信 号 、 状 态 信 号 、 控 制 信 号 都 是 以 “ 数 据 ”的 形 式 , 通 过 数 据 总 线 在 CPU和 外 部 设 备 之 间 进行 传 输 的 。 5.1.2 I/O接 口 的 功 能接 口 : 计 算 机 一 个 部 件 与 另 一 个 部 件 之 间 的 连 接 界 面 。功 能 :1. 设 备 选 择 功 能 CPU通 过 地 址 代 码 来 标 识 和 选 择 不 同 的 外 部 设 备 接 口 对 系 统 总 线 上 传 输 的 外 设 地 址 进 行 译 码 , 在 检 测到 本 设 备 地 址 代 码 时 , 产 生 相 应 的 “ 选 中 ” 信 号2. 信 息 传 输 功 能设 备 被 “ 选 中 ” 时 : 从 CPU/数 据 总 线 接 收 数 据 或 控 制 信 息 外 部 设 备 的 数 据 或 状 态 信 息 发 往 数 据 总 线 /CPU 3. 数 据 格 式 转 换 功 能外 设 使 用 的 数 据 格 式 与 CPU数 据 格 式 不 同 时 , 接 口 要 进行 二 种 数 据 格 式 之 间 的 相 互 转 换 。4. 联 络 功 能 从 系 统 总 线 或 外 设 接 收 一 个 数 据 后 , 发 出 “ 数 据 到 ”联 络 信 号 , 通 知 外 设 或 CPU取 走 数 据 数 据 传 输 完 成 , 向 对 方 发 出 信 号 , 准 备 进 行 下 次 传 输5. 中 断 管 理 功 能 向 CPU申 请 中 断 ; 向 CPU发 中 断 类 型 号 ; 中 断 优 先 权 的 管 理 ; 在 以 8086为 CPU的 系 统 中 , 这 些 功 能 大 部 份 可 以 由 专门 的 中 断 控 制 器 实 现 。 6. 复 位 功 能 接 口 在 接 收 系 统 的 复 位 信 号 后 , 将 接 口 电 路 及 其 所连 接 的 外 部 设 备 置 成 初 始 状 态 。7. 可 编 程 功 能 有 些 接 口 具 有 可 编 程 特 性 , 可 以 用 指 令 来 设 定 接 口的 工 作 方 式 、 工 作 参 数 和 信 号 的 极 性 。 8. 错 误 检 测 功 能 ( 1) 物 理 信 道 上 的 传 输 错 误 信 号 在 线 路 上 传 输 时 , 如 果 遇 到 干 扰 信 号 , 可 能 发 生传 输 错 误 。 检 测 传 输 错 误 的 常 见 方 法 是 奇 偶 检 验 。( 2) 数 据 传 输 中 的 覆 盖 错 误 输 入 设 备 完 成 一 次 输 入 操 作 后 , 把 所 获 得 的 数 据 暂 存在 接 口 内 如 果 在 该 设 备 完 成 下 一 次 输 入 操 作 之 后 , CPU还 没 有从 接 口 取 走 数 据 , 那 么 , 在 新 的 数 据 送 入 接 口 后 , 上一 次 的 数 据 被 覆 盖 , 从 而 导 致 数 据 的 丢 失 输 出 操 作 中 也 可 能 产 生 类 似 的 错 误 覆 盖 错 误 导 致 数 据 的 丢 失 , 易 发 生 在 高 速 数 据 传 输 的场 合 5.1.3 I/O端 口 的 编 址 方 法有 两 种 不 同 的 I/O端 口 编 址 方 式 :1. I/O端 口 与 内 存 统 一 编 址 把 内 存 的 一 部 分 地 址 分 配 给 I/O端 口 , 一 个 8位 端 口 占用 一 个 内 存 单 元 地 址 , 也 称 为 存 储 器 映 射 编 址 方 式 优 点 : 访 问 内 存 单 元 和 I/O端 口 使 用 相 同 的 指 令 , 使 用 方 便 降 低 CPU电 路 的 复 杂 性 缺 点 : 减 少 了 内 存 可 用 范 围 难 以 区 分 访 问 内 存 和 I/O的 指 令 , 降 低 了 程 序 的 可 读 性和 可 维 护 性 2. I/O端 口 与 内 存 独 立 编 址 内 存 储 器 和 I/O端 口 各 自 有 自 己 独 立 的 地 址 空 间 访 问 I/O端 口 需 要 专 门 的 I/O指 令 8086/8088 CPU采 用 这 种 方 式 访 问 内 存 储 器 使 用 20根 地 址 线 A0A19 使 M/IO#=1 内 存 地 址 范 围 为 00000 0FFFFFH共 1MB 访 问 I/O端 口 使 用 低 16根 地 址 线 A 0A15 使 M/IO#= 0 I/O端 口 地 址 范 围 为 0000 0FFFFH共 64K 3 IBM PC 微 型 计 算 机 I/O端 口 地 址 分 配 在 PC系 列 微 机 中 , 仅 使 用 A0 A9共 10条 地 址 线 定 义I/O端 口 ( 设 A11A15= 0) , 寻 址 范 围 为 0 3FFH 前 256个 端 口 地 址 供 主 板 上 寻 址 I/O接 口 芯 片 使 用 , 后768个 供 扩 展 槽 接 口 卡 使 用 用 户 设 计 I/O接 口 电 路 的 时 候 , 应 使 用 系 统 未 占 用 的 端口 地 址 区 域 为 避 免 所 选 择 的 地 址 与 其 他 扩 展 卡 冲 突 , 最 好 将 其 设计 成 地 址 可 选 的 型 式 IBM-PC微 机 系 统 板 各 I/O接 口 器 件 端 口 地 址 见 表 5-1。 5.1.4 简 单 I/O接 口 的 组 成 1. 端 口 端 口 : 接 口 内 的 寄 存 器 , 用 来 暂 存 CPU和 外 设 之 间 传 输的 数 据 、 状 态 和 命 令 。 端 口 地 址 : 每 一 个 端 口 有 一 个 独 立 的 地 址 。 外 部 设 备 地 址 : 设 备 接 口 内 各 端 口 的 地 址 , 一 台 外 部 设 备可 以 拥 有 几 个 通 常 是 相 邻 的 端 口 地 址 。 端 口 种 类 : 数 据 端 口 、 命 令 端 口 ( 控 制 端 口 ) 和 状 态 端 口 。 如 果 外 部 设 备 的 信 息 ( 数 据 /状 态 ) 已 经 锁 存 , 端 口 也 可以 由 三 态 缓 冲 电 路 组 成 。 2. 地 址 译 码 电 路 地 址 译 码 是 接 口 的 基 本 功 能 之 一 。 一 个 接 口 上 的 几 个 端 口 地 址 通 常 是 连 续 排 列 的 ,可 以 把 16位 地 址 码 分 解 为 二 个 部 分 : 高 位 地 址 码 用 作 对 接 口 的 选 择 ; 低 位 地 址 码 用 来 选 择 接 口 内 不 同 的 端 口 。 例 如 : 某 接 口 占 有 地 址 330H333H: 高 8位 地 址 为 11001100B时 , 本 接 口 被 选 中 ; 低 2位 地 址 为 00, 01, 10, 11时 , 选 择 接 口 内 的 不 同 端 口 。 图 5-1 端 口 的 地 址 译 码 电 路 和 跳 线 器 为 了 避 免 地 址 冲 突 , 许 多 接 口 电 路 允 许 用 “ 跳 线 器( JUMPER) ”改 变 端 口 地 址 。 上 页 图 3-1( b) 将 异 或 门 的 输 出 代 替 图 3-1( a) 中 的 A8, A9引 脚 : 二 个 跳 线 引 脚 均 接 地 时 , 上 面 译 码 电 路 仍 然 产 生330H333H的 端 口 译 码 信 号 ; 当 二 个 跳 线 引 脚 均 接 “ 1” 时 , 上 面 译 码 电 路 会 产 生030H033H的 端 口 译 码 信 号 同 理 还 可 以 产 生 130H133H, 230H233H的 译 码 信 号 。 8086工 作 于 最 大 模 式 时 , 上 面 的 M/IO#、 WR#、 RD#信号 由 8288总 线 控 制 器 发 出 的 IORC#、 IOWC#代 替 。 由 于 读 、 写 操 作 不 会 同 时 进 行 , 一 个 输 入 端 口 和 另 一 个 输出 端 口 可 以 使 用 同 一 个 地 址 编 码 。 例 如 , 可 安 排 数 据 输 入 端 口 、 数 据 输 出 端 口 使 用 同 一 个 地址 330H, 命 令 端 口 和 状 态 端 口 共 同 使 用 地 址 331H。 需 要 注 意 的 是 , 数 据 输 入 端 口 和 数 据 输 出 端 口 虽 然 使 用 相同 的 地 址 , 但 却 是 二 个 各 自 独 立 的 不 同 的 端 口 。 3. 数 据 锁 存 器 与 缓 冲 器数 据 (状 态 )输 入 端 口 : 必 须 通 过 三 态 缓 冲 器 与 系 统 总 线 相 连 , 保 证 数 据 总 线能 够 正 常 地 进 行 数 据 传 送 。 输 入 设 备 在 完 成 一 次 输 入 操 作 后 , 在 输 出 数 据 的 同 时 ,产 生 数 据 选 通 信 号 , 把 数 据 打 入 八 位 锁 存 器 74LS273 锁 存 器 的 输 出 信 号 通 过 三 态 八 位 缓 冲 器 74LS244连 接到 系 统 数 据 总 线 。 数 据 端 口 读 信 号 由 地 址 译 码 电 路 产 生 。 高 电 平 ( 无 效 ) : 缓 冲 器 输 出 端 呈 高 阻 态 。 低 电 平 ( 有 效 , 端 口 被 选 中 ) : 已 锁 存 的 数 据 通 过74LS244送 往 系 统 数 据 总 线 , 被 CPU所 接 收 。 图 5-3 输 入 设 备 接 口 的 数 据 锁 存 和 缓 冲 电 路 数 据 ( 命 令 ) 输 出 端 口 : CPU送 往 外 设 的 数 据 或 命 令 , 应 由 接 口 进 行 锁 存 ,以 便 使 外 设 有 充 分 的 时 间 接 收 和 处 理 。 八 位 输 出 锁 存 电 路 例 ( 图 5-4) 。 图 5-4 输 出 锁 存 电 路 简 单 的 输 入 输 出 接 口 ( 图 5-5) 把 地 址 译 码 、 数 据 锁 存 与 缓 冲 、 状 态 寄 存 器 、 命 令 寄存 器 各 个 电 路 组 合 起 来 , 构 成 简 单 输 入 输 出 接 口 接 口 连 接 的 信 号 : 与 系 统 总 线 连 接 : 地 址 总 线 A0 A15 数 据 总 线 D0D7 控 制 总 线 M/IO#、 RD# 、 WR# ( 最 小 模 式 时 ) 或IOWC#、 IORC#( 最 大 模 式 时 ) 相 连 接 与 外 部 设 备 相 连 : 数 据 、 状 态 、 命 令 。 图 5-5 简 单 接 口 的 组 成 5.2 输 入 输 出 数 据 传 输 的 控 制 方 式 5.2.1 程 序 方 式 5.2.2 中 断 方 式5.2.3 直 接 存 储 器 存 取 (DMA)方 式 5.2.1 程 序 方 式 在 程 序 控 制 下 进 行 信 息 传 送 分 为 无 条 件 传 送 和 条 件 传 送 二 种1 无 条 件 传 送 方 式 对 于 简 单 的 外 部 设 备 的 I O操 作 可 以 随 时 进 行 ; 例 如 , 开 关 、 发 光 二 极 管 这 些 简 单 设 备 的 输 入 信 号 一 般 不 需 要 锁 存 , 可 以 通 过 三态 缓 冲 器 与 系 统 数 据 总 线 直 接 相 连 。 简 单 输 出 设 备 的 信 号 一 般 需 要 由 锁 存 器 锁 存 图 5-6 无 条 件 输 入 输 出 传 送 接 口 2. 条 件 传 送 方 式 条 件 传 送 也 称 为 查 询 式 传 送 、 异 步 传 送 ; 接 口 电 路 除 了 有 传 送 数 据 的 端 口 以 外 , 还 应 有 储 存 和传 送 状 态 的 端 口 。 对 于 输 入 过 程 : 外 设 将 数 据 准 备 好 , “ 准 备 好 ( READY) ”标 志 位 置 1; CPU将 数 据 取 走 , READY=0 对 于 输 出 过 程 : 外 设 接 收 到 数 据 , 将 “ 忙 ( BUSY) ”标 志 位 置 1 数 据 输 出 完 成 , 将 “ BUSY”清 零 。 一 个 数 据 的 “ 条 件 传 送 ” 过 程 : CPU从 接 口 中 读 取 状 态 字 ; CPU检 测 状 态 字 的 对 应 位 是 否 满 足 “ 就 绪 ” 条 件 , 如果 不 满 足 , 则 回 到 前 一 步 重 新 读 取 状 态 字 ; 如 状 态 字 表 明 外 设 已 处 于 “ 就 绪 ” 状 态 , 则 传 送 数 据 。 图 5-9 查 询 式 输 入 流 程 查 询 方 式 输 入 接 口 电 路 ( 图 5-7) 接 口 内 有 两 个 端 口 : 数 据 端 口 ( 8位 , 输 入 ) 状 态 端 口 ( 1位 , 输 入 , 连 接 在 D7上 , =1表 示 有 数 据 ) 选 通 信 号 有 二 个 作 用 : 将 外 设 的 数 据 送 到 接 口 的 锁 存 器 中 ; 使 接 口 中 的 D触 发 器 置 “ l”( READY=1) 数 据 信 息 和 状 态 信 息 从 不 同 端 口 经 过 数 据 总 线 送到 CPU。 图 5-7 查 询 式 输 入 接 口 电 路 汇 编 语 言 程 序 : AGAIN: IN AL, STAT_PORT; 读 状 态 端 口 , D7=1表 示 “ 数 据 就 绪 ” TEST AL, 80H ; 测 试 “ 数 据 就 绪 ” 位 JZ AGAIN ; 未 就 绪 , 继 续 读 状 态 端 口 IN AL, DATA_PORT ; 已 就 绪 , 从 数 据 端 口 读 取 数 据 C语 言 程 序 :do stat = inportb( stat_port ); while (stat /* 数 据 未 准 备 好 反 复 读 状 态 */data = inportb( data_port ); /* 数 据 已 准 备 好 则 读 取 数 据 */ 查 询 方 式 输 出 接 口 电 路 (图 5-8) 接 口 内 有 两 个 端 口 : 数 据 端 口 ( 8位 , 输 出 ) 状 态 端 口 ( 1位 , 输 入 , 连 接 在 D7上 , =1表 示 正 在输 出 , “ BUSY”) CPU读 取 接 口 中 的 状 态 : 外 设 忙 ( BUSY =1) , CPU等 待 外 设 空 闲 ( BUSY =0) , 向 外 设 输 出 数 据 图 5-8 查 询 式 输 出 接 口 电 路 “ 数 据 端 口 写 ” 信 号 作 用 : 把 数 据 打 入 “ 锁 存 器 ” ; 将 “ 状 态 触 发 器 ” 置 1 D触 发 器 的 作 用 : 为 外 设 提 供 一 个 联 络 信 号 STB, 告 诉 外 设 现 在 接 口中 已 有 数 据 可 供 提 取 ; 用 作 该 设 备 的 状 态 标 志 ( “ 忙 ” , BUSY) 。 汇 编 语 言 程 序 :ONE: IN AL, STATUS_PORT ; 读 状 态 端 口TEST AL, 80H ; 测 试 “ 忙 ” 位 JNZ ONE ; 忙 , 再 读 状 态 端 口 MOV AL, DATA ; 不 忙 , 取 来 数 据OUT DATA_PORT, AL ; 送 入 数 据 端 口C语 言 程 序 :do stat = inportb( status_port ); while ( stat /*设 备 “ 忙 ” :反 复 读 状 态*/outportb( data_port, data ); /*设 备 空 闲 :输 出 数 据 */ 查 询 式 输 入 输 出 的 程 序 设 计 例某 字 符 输 入 设 备 以 查 询 方 式 工 作 : 数 据 输 入 端 口 : 0054H, 状 态 端 口 : 0056H。 状 态 寄 存 器 : D0=1, 数 据 准 备 好 , 可 以 输 入 ; 状 态 寄 存 器 : D1=1, 输 入 设 备 发 生 故 障要 求 : 从 该 设 备 上 输 入 80个 字 符 , 配 上 水 平 和 垂 直 校 验 码( 偶 校 验 ) , 向 串 行 口 输 出 。 如 果 设 备 出 错 , 显 示 错 误 信 息 后 停 止 。 汇 编 语 言 程 序 : .dataBuffer DB 81 dup( ? ) Message DB Device Fault !, 0DH, 0AH, $ .codeStart: MOV AX, data ; 对 DS初 始 化 MOV DS, AX LEA SI, Buffer ; 设 置 SI为 缓 冲 区 指 针 MOV CX, 80 ; 设 置 CX为 计 数 器 MOV DL, 0 ; DL置 垂 直 校 验 码 初 值 Next: IN AL, 56H ; 读 入 状 态 TEST AL, 02H ; 测 状 态 寄 存 器 D1 JNZ ERROR ; 设 备 故 障 , 转 ERROR TEST AL, 01H ; 测 状 态 寄 存 器 D0JZ Next ; 未 准 备 好 , 则 等 待 , 再 测 IN AL, 54H ; 准 备 好 , 输 入 字 符AND AL, 7FH ; 清 最 高 位 , 进 行 校 验JPE Store ; 已 经 是 偶 数 个 1, 则 转 Store OR AL, 80H ; 奇 数 个 1, 将 最 高 位 置 为 1Store: XOR DL, AL ; 产 生 垂 直 校 验 码MOV SI, AL ; 将 字 符 送 缓 冲 区 INC SI ; 修 改 地 址 指 针LOOP Next ; 80个 字 符 未 输 入 完 成 , 继 续 MOV SI, DL ; 输 入 完 成 , 保 存 垂 直 校 验 码Tranfer:LEA SI, Buffer ; 准 备 发 送 ,SI中 置 字 符 串 首 址 MOV CX, 81 ; 发 送 字 符 数One: MOV AH, 04H ; 设 置 串 口 输 出 功 能 号MOV DL, SI ; 取 出 一 个 字 符INT 21H ; 从 串 口 输 出 INC SI ; 修 改 指 针 LOOP One ; 输 出 下 一 个 字 符JMP Done Error:MOV AH, 09H ; 设 备 故 障 , 输 出 出 错 信 息LEA DX, Message INT 21HDone: MOV AH, 4CHINT 21H ; 返 回 DOSEND Start 说 明 : 程 序 由 二 段 循 环 程 序 组 成 : 第 一 段 程 序 从 设 备 输 入 80个 字 符 , 同 时 产 生 它 的 水 平 /垂 直 校 验 码 存 入 缓 冲 区 ; 第 二 段 程 序 将 缓 冲 区 内 容 通 过 串 口 输 出 。 测 试 状 态 位 要 注 意 先 后 次 序 :由 于 设 备 故 障 将 导 致 该 设 备 不 能 正 常 输 入 , 使 完 成 标志 ( D0) 恒 为 零 。 所 以 , 在 设 备 发 生 故 障 时 先 判 是 否完 成 可 能 导 致 程 序 死 循 环 。 产 生 水 平 校 验 码 : 从 设 备 读 入 数 据 , 清 除 最 高 位 ,根 据 剩 余 七 位 的 奇 偶 特 性 决 定 最 高 位 置 1或 不 变( 保 持 为 0) 。 产 生 垂 直 校 验 码 : 将 80个 字 节 半 加 ( 异 或 ) 得 到 。 多 个 设 备 循 环 查 询 方 法 举 例 : 三 个 设 备 , 它 们 状 态 端 口 地 址 分 别 为 STATl、 STAT2、STAT3, 三 个 状 态 端 口 均 使 用 第 5位 作 为 准 备 好 标 志 。 TREE: MOV FLAG, 0INPUT: IN AL, STAT l TEST AL, 20H JZ DEV2 CALL PROC l DEV2: IN AL, STAT2 TEST AL, 20H JZ DEV3 CALL PROC2DEV3; IN AL, STAT3 TEST AL, 20H JZ NOINPUT CALL PROC3NOINPUT: CMP FLAG, 07H JNE INPUT 说 明 : PROCl、 PROC2、 PROC3是 三 个 设 备 输 入 数 据 并 进行 处 理 的 子 程 序 。 FLAG存 放 三 个 设 备 输 入 完 成 的 标 志 , D0, D1, D2分 别代 表 一 个 设 备 的 输 入 完 成 情 况 ( =0表 示 未 完 成 , =1表示 完 成 ) 。 上 例 仅 适 用 于 三 个 设 备 工 作 速 度 都 比 较 慢 的 情 况 ; 如 果 其 中 一 个 设 备 工 作 速 度 很 快 , 而 其 他 设 备 的 输 入输 出 处 理 程 序 运 行 时 间 又 较 长 , 可 能 发 生 “ 覆 盖 错误 ” 。 在 这 种 情 况 下 , 应 优 先 执 行 工 作 速 度 较 快 的 外 设 的 I O过 程 , 然 后 再 执 行 其 他 设 备 的 I O过 程 。 5.2.2 中 断 方 式程 序 查 询 方 式 的 特 点 : 程 序 查 询 方 式 解 决 了 CPU与 外 设 工 作 的 协 调 问 题 , 但是 却 大 大 降 低 了 CPU的 使 用 效 率 ; 在 程 序 查 询 方 式 中 , CPU处 于 主 动 地 位 , 外 设 处 于 消极 等 待 查 询 的 被 动 地 位 ; 设 备 较 多 时 , 查 询 方 式 的 数 据 传 送 很 难 使 每 一 个 外 设都 能 工 作 在 最 佳 状 态 。 程 序 中 断 方 式 特 点 : 赋 予 系 统 中 的 外 设 某 种 主 动 申 请 、 配 合 CPU工 作 的“ 权 利 ” 。 外 设 把 数 据 准 备 好 时 , 主 动 向 CPU发 出 一 个 请 求 信 号 。 CPU接 收 到 请 求 信 号 后 , 暂 停 当 前 的 工 作 , 进 行 该 设备 的 数 据 传 送 操 作 。 赋 予 外 设 “ 主 动 权 ” 之 后 , CPU可 以 不 必 反 复 查 询该 设 备 的 状 态 , 而 是 正 常 地 处 理 系 统 任 务 ; CPU与 外 设 处 于 某 种 “ 并 行 工 作 ” 的 状 态 , 从 而 提 高CPU的 工 作 效 率 。 中 断 方 式 举 例 : 某 外 设 在 1秒 内 传 送 100个 字 节 。 若 用 程 序 查 询 的 方 式 传 送 , 则 CPU为 传 送 100个 字 节 所化 费 的 时 间 等 于 1秒 。 用 中 断 控 制 方 式 传 送 , CPU为 执 行 一 个 字 节 的 传 送 需要 进 入 一 次 中 断 服 务 程 序 。 设 CPU执 行 一 次 中 断 服 务 程 序 需 要 100s; 传 递 100个 字 节 CPU所 使 用 的 时 间 为 100s 100=10ms; CPU处 理 中 断 开 销 为 1 , 99 的 时 间 可 执 行 其 他 任 务 ; 中 断 方 式 的 数 据 传 送 仍 在 程 序 的 控 制 下 执 行 , 称 为 程序 中 断 方 式 ; 适 应 于 中 、 慢 速 的 外 部 设 备 数 据 传 送 。 3.2.3 直 接 存 储 器 存 取 (DMA)方 式程 序 中 断 方 式 , 程 序 查 询 方 式 的 缺 点 : 中 断 方 式 : 每 传 送 一 次 数 据 , CPU必 须 执 行 一 次 中 断 服 务 程 序 ; 对 于 高 速 数 据 传 输 , 容 易 产 生 “覆 盖 错 误 ” 。 程 序 查 询 方 式 : 响 应 速 度 比 中 断 方 式 要 快 一 些 , 完 成 一 次 数 据 传 输 仍然 需 要 执 行 七 、 八 条 以 上 的 指 令 。 CPU的 工 作 速 度 不 高 时 仍 有 可 能 跟 不 上 外 设 数 据 传 输的 需 要 。 直 接 存 储 器 传 送( Direct Memory AccessDMA) 将 外 设 的 数 据 不 经 过 CPU直 接 送 入 内 存 储 器 ; 或 者 , 从 内 存 储 器 不 经 过 CPU直 接 送 往 外 部 设 备 ; 一 次 DMA传 送 只 需 要 执 行 一 个 DMA周 期 ( 相 当 于 一个 总 线 读 写 周 期 ) ; 能 够 满 足 高 速 外 设 数 据 传 输 的 需 要 ; 需 要 一 个 专 门 的 器 件 来 协 调 外 设 接 口 和 内 存 储 器 的 数据 传 输 , 称 为 DMA控 制 器 ( DMAC) 图 5-10 DMA数 据 传 送 示 意 图 5.3 开 关 量 输 入 输 出 接 口 5.3.1 开 关 量 输 入 接 口 5.3.2 开 关 量 输 出 接 口 5.3.1 开 关 量 输 入 接 口 1 基 本 的 开 关 量 输 入 接 口 开 关 形 态 : 单 刀 单 掷 开 关 /单 刀 双 掷 开 关 /按 钮 开 关 量 通 过 三 态 缓 冲 器 与 系 统 数 据 总 线 连 接 常 用 的 三 态 缓 冲 器 : 74LS244( 输 入 输 出 同 相 ) /74LS240( 输 入 输 出 反 相 ) 一 条 输 入 指 令 可 以 同 时 读 入 8位 或 16位 开 关 量 。 图 5-11 基 本 开 关 量 输 入 接 口 2 矩 阵 式 开 关 量 输 入 接 口开 关 数 量 多 时 , 可 以 排 列 成 矩 阵 , 例 如 : 图 5-12( 键 盘 ) 数 据 输 出 端 口 连 接 8根 “ 行 线 ” (Row, R0R7); 数 据 输 入 端 口 连 接 8根 “ 列 线 ” (Column, C0C7);电 路 特 点 : 没 有 键 按 下 时 , 列 线 端 口 输 入 为 全 “ 1” ; 行 线 端 口 输 出 全 “ 1” 时 , 不 论 有 无 键 按 下 , 列 线 端 口 输入 仍 然 为 全 “ 1” ; 某 一 行 线 输 出 “ 0” 时 , 如 果 该 行 上 有 一 个 键 按 下 , 则 输入 端 口 输 入 代 码 为 7个 “ 1” , 1个 “ 0” , 0的 位 置 与 被 按下 键 的 位 置 相 对 应 。 图 5-12 键 盘 (矩 阵 式 开 关 量 输 入 )接 口 键 盘 扫 描 与 编 码 : 对 8根 行 线 逐 行 扫 描 , 识 别 按 键 的 所 在 行 、 列 , 从 而获 得 该 键 的 代 码 ; 一 个 键 的 编 码 可 以 用 它 的 二 字 节 “ 行 列 码 ” 表 示 。 例如 , ( R3, C2) 的 二 字 节 “ 行 列 码 ” 为 F7FBH: F7H=11110111 : 按 键 在 R3行 上 ; FBH=11111011 : 按 键 在 C2列 上 ; 用 “ 行 列 码 ” 查 表 , 可 以 得 到 这 个 键 的 代 码 。 键 的 编 码 也 可 以 用 一 字 节 “ 扫 描 码 ” 表 示 。 上 例 中 按键 的 一 字 节 “ 扫 描 码 ” 为 32H: 高 4位 0011: 键 所 在 的 行 ; 低 4位 0010: 键 所 在 的 列 ; 键 刚 按 下 时 , 会 产 生 “ 抖 动 ” 。 键 盘 扫 描 程 序 : 没 有 键 被 按 下 , 返 回 1; 有 键 按 下 时 返 回 按 键 的 二 字 节 “ 行 列 码 ” ( 行 码 为 高 8位 , 列 码 为 低 8位 ) ; RPORT, CPORT 定 义 为 行 、 列 端 口 的 地 址 。 unsigned int kbinput( ) unsigned int row, row0, column, code, k=0; outportb( RPORT, 0); /*各 行 输 出 全 0,测 试 有 无 键 按 下 */ if (inportb(CPORT) /* 没 有 键 按 下 , 返 回 全 “ 1” */ delay(20); /* 延 时 20ms, 消 除 抖 动 */ if (inportb(CPORT) /* 再 次 测 试 , 确 认 有 键 被 按 下 */ row0 = row = 0 xff7f; column = 0 xff; k=0; /* 置 行 码 初 值 :从 最 高 位 对 应 行 开 始 逐 行 扫 描 */ while( k 1) ; k+; /* 形 成 下 一 个 行 码 */ if (column = = 0 xff ) return( 0 xffff ); /* 未 找 到 按 键 所 在 行 , 返 回 全 “ 1” */ code = (row0 /* 由 行 码 、 列 码 组 合 得 到 “ 行 列 码 ” */ return (code ); 5.3.2 开 关 量 输 出 接 口1 基 本 的 开 关 量 输 出 接 口常 见 的 开 关 量 输 出 : LED发 光 二 极 管 LED指 示 灯 用 于 指 示 室 内 仪 表 状 态 小 功 率 LED可 以 由 逻 辑 电 路 直 接 驱 动 : 输 出 0: LED发 光 输 出 1: LED熄 灭 执 行 元 件 驱 动 线 圈 器 件 型 号 高 电 平 输 出 电 流 低 电 平 吸 收 电 流74LS00,04,10,20,30(逻 辑 门 ) 400A 8m A74LS01,03,05,12,22(OC门 ) 100A 8m A7407(OC驱 动 器 ) 250A 40m A(Voh=30V)74LS244(总 线 驱 动 器 ) 15m A 24m A74LS273(D触 发 器 ) 400A 8m A74LS373(三 态 输 出 锁 存 器 ) 2.6m A 24m A表 5-3 部 分 逻 辑 电 路 输 出 端 电 流 Di +5V +12V+5VDiDi (a)小 功 率 LED用 逻 辑 门 驱 动 ( b) 外 接 功 率 放 大 三 极 管 驱 动 +15VD i Di +15V (c)用 集 电 极 开 路 驱 动 器 ( OC门 )驱 动 大 功 率 LED驱 动 或 执 行 元 件 驱 动 线 圈 的 驱 动 : 普 通 逻 辑 电 路 输 出 , 外 接 功 率 放 大 三 极 管 驱 动 ; 集 电 极 开 路 驱 动 器 ( OC驱 动 器 ) , 输 出 端 通 过 上 拉 电 阻 接 高 压 。 2 LED七 段 数 码 显 示 管 接 口 a bcdef g dp (a) LED显 示 管 外形 与 二 极 管 编 码 abcdefgdp (b) 共 阳 极 LED显 示 管 abcdefgdp (c) 共 阴 极 LED显 示 管 74LS244 74LS273 74LS273位 码 端 口 写 段 码 端 口 写 D7D0 7407 8G图 5-15 多 位 LED数 码 显 示 接 口 多 位 LED显 示 器 驱 动 : 设 置 位 码 , 熄 灭 所 有 数 码 管 ; 将 一 个 数 码 管 的 字 形 代 码 ( 段 码 ) 送 入 段 码 端 口 ; 设 置 位 码 , 点 亮 一 个 数 码 管 适 当 延 时 后 , 重 复 以 上 过 程 多 位 不 同 的 数 字 同 时 显 示 在 不 同 的 数 码 管 上 。 送 段 码 之 前 熄 灭 所 有 数 码 管 可 以 消 除 “ 段 码 ” 和“ 位 码 ” 不 同 步 产 生 的 闪 烁 。 多 位 LED数 码 显 示 程 序 : 需 要 输 出 的 数 字 分 别 是 1,2,3,4,5,6,7,8 段 码 和 位 码 的 端 口 地 址 分 别 是 segport 和 bitport ; 数 据 段 和 堆 栈 段 dataSegtab db 40h, 4fh, 24h, 30h, 19h db 12h, 02h, 78h, 00h, 10hbuffer db 1, 2, 3, 4, 5, 6, 7, 8 segcode db ?bitcode db ? stack 100h codeleddisp proc farpush ds ; 保 护 各 寄 存 器 内 容push axpush bxpush cxpush simov ax, data ; 装 载 dsmov ds, axlea bx, segtab ; bx 置 为 七 段 码 表 首 址mov bitcode, 80h ; 位 码 初 始 值 为 80H(从 左 边 开 始 )mov si, 0 ; si用 作 输 出 缓 冲 区 指 针 , 初 值 0mov cx, 8 ; cx 用 作 循 环 计 数 器 , 初 值 8 one: mov al, 0out bitport, al ; 送 位 码 0, 熄 灭 各 LED mov al, buffersi ; 取 出 一 个 待 输 出 数 字xlat ; 转 换 成 七 段 码out segport, al ; 向 段 码 端 口 输 出mov al, bitcodeout bitport, al ; 输 出 位 码 , 点 亮 一 个 LEDror bitcode, 1 ; 修 改 位 码 , 得 到 下 一 个 位 码inc si ; 修 改 输 出 缓 冲 区 指 针call delay ; 延 时loop one ; 循 环 , 点 亮 下 一 个 LED pop sipop cx ; 恢 复 各 寄 存 器pop bxpop axpop dsret ; 返 回 主 程 序leddisp endpend 习 题 51. 接 口 电 路 与 外 部 设 备 之 间 传 送 的 信 号 有 哪 几 种 ? 传输 方 向 怎 样 ?2. 接 口 电 路 有 哪 些 功 能 ? 哪 些 功 能 是 必 需 的 ?3. I/O端 口 的 编 址 有 哪 几 种 方 法 ? 各 有 什 么 利 弊 ?80X86系 列 CPU采 用 哪 种 方 法 ?4. 按 照 传 输 信 号 的 种 类 , I/O端 口 有 几 种 ? 它 们 信 号 的传 输 方 向 怎 样 ?5. I/O端 口 译 码 电 路 的 作 用 是 什 么 ? 在 最 小 模 式 和 最 大模 式 下 分 别 有 哪 些 输 入 信 号 ?6. 外 部 设 备 数 据 传 送 有 哪 几 种 控 制 方 式 ? 从 外 部 设 备的 角 度 , 比 较 不 同 方 式 对 外 部 设 备 的 响 应 速 度 。 7. 叙 述 一 次 查 询 式 输 出 过 程 中 , 接 口 内 各 电 路 、 信 号 的状 态 变 化 过 程 。8. 比 较 程 序 中 断 方 式 和 查 询 方 式 的 区 别 , 根 据 比 较 , 指出 中 断 工 作 方 式 的 优 缺 点 。9. 比 较 DMA方 式 和 程 序 中 断 方 式 的 区 别 , 根 据 比 较 , 指出 DMA工 作 方 式 的 优 缺 点 。10. 某 输 入 设 备 数 据 端 口 、 状 态 端 口 、 控 制 端 口 地 址 分 别为 70H, 71H, 72H。 状 态 端 口 D5=1表 示 输 入 完 成 , 控制 端 口 D7=1表 示 启 动 设 备 输 入 ( 输 入 完 成 后 由 设 备清 除 该 位 ) 。 从 该 设 备 输 入 100个 字 节 数 据 , 存 入 以BUFFER为 首 地 址 的 缓 冲 区 。 如 果 启 动 该 设 备 1秒 后仍 未 完 成 一 次 输 入 , 则 视 为 超 时 错 , 显 示 出 错 信 息 后返 回 。 分 别 用 8086汇 编 语 言 和 C语 言 编 写 完 成 上 述 功能 的 I/O程 序 。 11. 某 输 出 设 备 数 据 端 口 、 状 态 端 口 地 址 分 别 为 220H, 221H。 状 态 端 口 D0=1表 示 输 出 完 成 。 将 数 据 段 中 以STRING为 首 地 址 的 20个 字 符 ( 用 七 位 ASCII代 码 存储 ) 添 加 水 平 和 垂 直 校 验 发 送 到 该 外 部 设 备 。 用 8086汇 编 语 言 编 写 完 成 上 述 功 能 的 I/O程 序 。12. 试 画 出 矩 阵 式 键 盘 查 询 的 程 序 流 程 图 。13. 试 画 出 公 用 端 口 多 位 LED输 出 的 程 序 流 程 图 。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!