微机原理与接口技术第8章.ppt_第1页
微机原理与接口技术第8章.ppt_第2页
微机原理与接口技术第8章.ppt_第3页
微机原理与接口技术第8章.ppt_第4页
微机原理与接口技术第8章.ppt_第5页
已阅读5页,还剩91页未读 继续免费阅读

下载本文档

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

文档简介

第8章输入 输出系统 8 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位端口地址INAL n 口地址为n的端口中取数 ALOUTn AL AL内容 口地址为n的端口寄存器INAX n n AL n 1 AHOUTn AX AL n口 AH n 1口 如 INAL 61HOUT61H AL 2 DX间址的I O指令当口地址n 8位二进制数时 用DX间址 注意 I O指令只能在端口和AL AX EAX之间交换信息 用DX间址 但不能使用方括号 即不能写成 INAL DX INAL DX DX 的端口内容 ALOUTDX AL AL DX 的端口寄存器INAX DX DX AL DX 1 AHOUTDX AX AL DX AH DX 1 的端口寄存器如 MOVDX 3F8HINAL DX 从3F8H端口取数 AL 8 2微机系统与外设交换信息的方式 微机系统与I O端口的信息交换有四种方式 无条件传送查询方式中断方式DMA方式采用何种方式与接口的硬件电路有直接关系 1 无条件传送 输入接口 执行IN指令之前 外设数据已经准备好 输出接口 执行OUT指令时 AL内容 数据线 口地址 地址线上 IOW 低 把数据锁存到锁存器中 2 查询方式用查询方式交换信息 必先了解外设的状态 查询方式输入接口示意图 查询式输入核心程序设状态口地址 200H数据口地址 201HRSCAN MOVDX 200HINAL DXTESTAL 80HJZRSCANMOVDX 201HINAL DX 查询式输出接口示意图 查询式数据输出核心程序设状态口地址 200H 数据口地址TSCAN MOVDX 200HINAL DXTESTAL 1JNZTSCANMOVDX 200HMOVAL 某数OUTDX AL 3 中断控制方式 在有多个外设的系统中 多个外设要求CPU为它服务是随机的若采用查询方式工作 就不能保证系统实时地对外设的请求作出响应为了提高CPU的效率 使系统有实时性能 导致了中断处理技术的产生 特点 在外设没有作好数据传送准备时 CPU可执行与传送数据无关的其它指令当外设作好传送准备后 主动向CPU 请求中断若CPU响应这一请求 则暂停正在运行的程序 转入中断服务程序 完成数据传送待服务完毕后 自动返回原来运行的程序 4 直接存储器存取 DMA 方式 为什么要有DMA 什么是DMA 特点 用硬件实现在外设与内存间直接进行数据交换 而不通过CPU数据传送速度的上限就取决于存储器的工作速度速度快 8 38254定时器 计数器 计算机中的定时和延时控制 对外部事件或信号的计数 软件方法固定时间的硬件定时可编程的硬件定时 计算机系统中采用可编程定时 计数器I8253和I8254 8254内部集成了3个16位的计数器 每个计数器有6种工作方式 计数初值可设定为二进制或BCD码 最高工作频率10兆 一 8254内部结构 24脚 数据总线缓冲器 读写控制 控制字寄存器 0号计数器 1号计数器 2号计数器 A1 D7 0 GATE0 OUT0 CLK0 GATE1 OUT1 CLK1 GATE2 OUT2 CLK2 数据总线缓冲器 完成和系统数据线的配接 对外有8条数据线D7 0 8254的内部结构 数据总线缓冲器 读写控制 控制字寄存器 0号计数器 1号计数器 2号计数器 A1 D7 0 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段A9 A2参加译码 译码输出负脉冲 使CS 0 选中8254A1 A0直接与芯片A1 A0相连 选择片内寄存器 执行IN时从选中的内部寄存器读执行OUT时向选中的内部寄存器写 三 8254内部寄存器 计数器口地址 设8254与系统总线如上图联接 口地址 40H 43H 选中 8254 则0 2 计数器口地址 40H 42H 控制口地址 43H 口地址 2FCH 2FFH 选中 8254 则0 2 计数器口地址 2FCH 2FEH 控制口地址 2FFH 四 计数器内部结构示意图 初始化编程时 计数初值 计数初值寄存器 减1计数器 计数器的内部结构 当GATA 1时 CLK的下降沿使计数器减1 当计数值减到0 或某个值 由工作方式确定 时 OUT有输出 计数器的内部结构 计数初值 fclk fout 收到锁存命令后 当前计数值 计数值锁存器 以便读出检查 而计数器仍然做减1计数 计数器的内部结构 作用 选择一个计数器 确定工作方式 并规定初值的写入顺序和计数初值 一串0 1代码 的数制 五 8254命令字 状态字 D7D6 00选择0 计数器 01选择1 计数器 10选择2 计数器 11标志该命令字是 读出命令 1 方式选择命令字 D5D4 00标志该命令为 锁存命令 01初值写入时 只写低8位 高8位自动补0 计数值读出时 只能读低8位 10初值写入时 只写高8位 低8位自动补0 计数值读出时 只能读高8位 11初值写入 计数值读出的顺序为先低8位 后高8位 8254的命令字和状态字 D0 0 计数初值为二进制数 D0 1 初值为BCD码数 8254的命令字和状态字 2 锁存命令 D5D4 00标志该命令为 锁存命令 D7D6为锁存对象 00 锁存0 当前计数值 01 锁存1 当前计数值 10 锁存2 当前计数值 8254的命令字和状态字 3 读出命令 读出命令是多通道的锁存命令 一条命令可以锁存3个计数器的计数值 计数器状态 8254的命令字和状态字 4 状态字 8254的命令字和状态字 CPU对8254的初始化编程 例 设8254的口地址为40H 43H 要求2 计数器工作在方式3 计数初值 4000 写出2 的初始化程序段 1 对8254一个计数器的初始化编程步骤 向控制寄存器写入方式选择命令字目的 选择一个计数器 并确定其工作方式和计数值 计数初值 的读 写顺序 向选择的计数器写入计数初值 注意 如果方式选择命令字D0 0 则初值应是二进制 否则初值应是BCD码数 解1 设初值为二进制 初值写入顺序为先低8位后高8位 MOVAL 10110110BOUT43H ALMOVAX 4000OUT42H ALMOVAL AHOUT42H AL 解2 设初值为二进制 写入顺序为仅写高8位 MOVAL 10100110BOUT43H ALMOVAL 40OUT42H AL 注意 解2是错误的 因为 4000 0FA0H 其低8位不等于0 8254的初始化编程 解3 设初值为BCD码 写入顺序为先低后高 MOVAL 10110111BOUT43H ALMOVAL 0OUT42H ALMOVAL 40HOUT42H AL 解4 设初值为BCD码 仅写高8位 MOVAL 10100111BOUT43H ALMOVAL 40HOUT42H AL 注意 4000的BCD码数应写成4000H 解3 解4是正确的 8254的初始化编程 2 当计数初值 9999时 初值 选为二进制或BCD码都可以 当计数初值 9999时 初值 只能选二进制 3 程序中如何表示BCD码数 设初值 1234 10则MOVAX 1234H是正确的写成MOVAX 1234是错误的 4 方式选择命令 锁存命令 读出命令必须写入控制口 8254的初始化编程 6 关于读出命令读出命令也是锁存命令 如果在锁存计数值的同时 也锁存状态 那么在随后对计数器读出时 先读出的是状态字 后读的是计数值 5 关于锁存命令当程序员要了解计数器的当前计数值时 先向控制口写入锁存命令 然后从选择的计数器端口读取当前计数值 8254的初始化编程 六 8254工作方式 有6种工作方式 均在CLK下降沿计数一次 有2种启动方式 软件启动 硬件启动 软件启动 GATA 1 初值写入后 开始计数 硬件启动 初值写入后 不计数 当GATE从0 1后开始计数 方式0 计数结束OUT引脚输出正跃变信号 软件启动 计数值减到0 OUT从0 1 8254的工作方式 方式1 可重触发的 硬件启动的单脉冲发生器 8254的工作方式 硬件启动 由外部门控信号启动计数 初值写入后不计数 当GATE从0 1时 OUT从1 0 之后每个CLK下降沿计数值减1 计数值减到0时 OUT从0 1 所以 输出负脉冲的宽度 N TCLK 计数过程中 GATE再次从0 1 初值自动重装 从而使OUT输出的负脉冲加宽 即有可重触发的性能 8254的工作方式 方式2 分频器 脉冲发生器 软件启动 减1计数 减到1时OUT从1 0 下一CLK初值自动重装 所以 OUT为周期性波形 输出负脉冲的宽度为一个TCLK 周期 N TCLK 8254的工作方式 方式3 方波发生器 软件启动 减2计数 有初值自动重装功能 N 偶数时 计数值减到0时初值重装 输出1 1连续波形 8254的工作方式 N 奇数时 装入的及重新装入的初值均为写入的初值 1 输出正脉冲期间 减到 2时重新装初值 输出负脉冲期间 减到0时重新装初值 输出正脉冲宽度 TCLK N 1 2 输出负脉冲宽度 TCLK N 1 2 8254的工作方式 方式4 软件启动 单脉冲发生器 软件启动 减1计数 减到0有输出 无初值自动重装功能 8254的工作方式 方式5 硬件启动 单脉冲发生器 硬件启动 减1计数 减到0有输出 CLK 3210 1 OUT 8254的工作方式 6种工作方式的比较 8254的工作方式 8254的工作方式 七 8254在PC机中的应用1 电路 3个计数器的时钟端都为1 193182MHZ GATE0 GATE1固定接 5v GATE2 OUT2输出受8255的PB0 PB1控制 2 系统8254口地址为40H 43H 3 系统加电后 由BIOS完成对3个计数器初始化 4 各计数器的使用现状如下 8254的应用 工作在方式3 计数初值 0 OUT0 周期为55ms的方波信号 作用 每隔55ms通过中断系统提出一次日时钟中断请求 0 计数器 8254的应用 工作在方式2 计数初值 18 OUT1 周期为15 1 s的连续脉冲 作用 每隔15 1 s 向DMAC 提出一次 动态存储器刷新请求 1 计数器 8254的应用 工作在方式3 初值 533H 为音响系统提供900HZ方波 2 计数器 8254的应用 用户程序禁止使用1 计数器 用户程序可以使用0 2 计数器 注意 8254的应用 八 系统8254应用举例 编写音乐程序 演唱 友谊地久天长 8254的应用 8254的应用 设计思路 1 开 关扬声器的子程序 8254的应用 2 使2 计数器产生单音频的程序段2 应工作在方式3 计数初值 1 193182兆 频率值 而 1 193182 106 10 1234DEH 所以 在2 写入方式选择命令字之后 执行下列程序段即可 方式选择命令字 控制口 BIOS已经做了 MOVDX 12HMOVAX 34DEHMOVCX 频率值DIVCX 初值 AXOUT42H ALMOVAL AHOUT42H AL 8254的应用 CODESEGMENTUSE16ASSUMECS CODEBEG MOVAL 10110110BOUT43H ALCALLOPENMOVDX 12HMOVAX 34DEHMOVCX 262DIVCXOUT42H ALMOVAL AHOUT42H AL BIOS已经做了 可省 使2 计数器发C大调1 MOVAH 1INT21HCALLCLOSEMOVAH 4CHINT21HOPENPROC RETOPENENDPCLOSEPROC RETCLOSEENDPCODEENDSENDBEG 3 音符频率表一首歌曲由若干音符组成 每一音符对应一个频率 下表给出了各种音符的频率对照表 8254的应用 8254的应用 8254的应用 4 音符的演唱时间 这是编程的关键 有两种处理方法 直接给出每一音符演唱的绝对时间这种方法 程序调试很困难 特别是对于缺少音乐细胞的人 对于不太熟悉的歌曲 很难把握演唱的节奏 给出每一音符演唱的 单位时间 单位时间 N 演唱时间N为调试参数 预先给一个值 试听后再修改 这种方法 大大加快了调试时间 8254的应用 5 怎样确定 单位时间 因为 一首歌曲中 每个音符的演唱时间有一拍 半拍 1 4拍 如果最短的音符为1 8拍 则定义 一拍音符的单位时间为8半拍音符的单位时间为41 4拍音符的单位时间为21 8拍音符的单位时间为1如 8254的应用 根据选定的歌曲 将各音符对应的频率值列成一张频率表 将各音符演唱的单位时间列成一张时间表 频率表的表项和时间表的表项要一一对应 不能错位 8254的应用 6 音乐程序框图 数据段 设置频率表 时间表 8254的应用 486DATASEGMENTUSE16TABFDW 1 262 350 352 350 441 393 350 393 441DW350 352 441 525 589 588 589 525 441DW440 350 393 350 393 441 350 293 294 262DW350 589 525 441 440 350 393 350 393 589DW525 441 440 525 589 700 525 441 440 350DW393 350 393 441 350 294 292 262 350 0TABTDB4 4 6 2 4 4 6 2 4 4DB6 2 4 4 12 1 3 6 2DB4 4 6 2 4 4 6 2 4 4DB12 4 6 2 4 4 6 2 4 4DB6 2 4 4 12 4 6 2 4 4DB6 2 4 4 6 2 4 4 12NEQU150000 微秒DATAENDS 7 程序 8254的应用 CODESEGMENTUSE16ASSUMECS CODE DS DATABEG MOVAX DATAMOVDS AXOPEN INAL 61HORAL 00000011BOUT61H AL 接通扬声器AGA MOVSI OFFSETTABF SI是频率表指针MOVDI OFFSETTABT DI是时间表指针LAST CMPWORDPTR SI 0 唱完一遍 JEAGA 是 转MOVDX 12HMOVAX 34DEHDIVWORDPTR SI 频率转换成计数初值OUT42H AL 低8位送2号计数器MOVAL AHOUT42H AL 高8位送2号计数器 8254的应用 CALLDELAY 延时ADDSI 2 频率表指针加2INCDI 时间表指针加1MOVAH 1INT16H 有键入 JZLAST 否CLOSE INAL 61HANDAL 11111100BOUT61H AL 关闭扬声器MOVAH 4CHINT21H 8254的应用 DELAYPROC 延时子程序MOVEAX 0MOVAL DI IMULEAX EAX N EAX 演唱时间 微秒 MOVDX AXROLEAX 16MOVCX AXMOVAH 86HINT15HRETDELAYENDPCODEENDSENDBEG 8254的应用 九 外扩8254应用举例 例 给定2兆信号发生器 在ISA总线上外扩一片8254 口地址为218 21BH 要求 设计硬件电路 编程产生8KHZ方波和1 6KHZ的连续脉冲 解 思路 使用外扩8254的0 选择方式3 产生8KHZ方波1 选择方式2 产生1 6KHZ连续脉冲方式2 方式3均为软件启动 故GATE0 GATE1接 5V 8254的应用 硬件电路 8254的应用 0 计数初值N0 2兆 8K 250 256 方式3选择命令字 1 计数初值N1 2兆 1 6K 1250方式2选择命令字 75H BCD码 计数器选择读写方式工作方式数制 01110101 先低后高 00010110 计数器选择读写方式工作方式数制 只写低8位 16H 2进制 8254的应用 486CODESEGMENTUSE16ASSUMECS CODEBEG MOVDX 21BHMOVAL 16HOUTDX ALMOVDX 218HMOVAL 250OUTDX ALMOVDX 21BHMOVAL 75HOUTDX AL 8254的应用 MOVDX 219HMOVAX 1250HMOVDX ALMOVAL AHOUTDX ALMOVAH 4CHINT21HCODEENDSENDBEG 8254的应用 例 测试8254计数器方式3的计数过程1 复习8254方式3 方式3 方波发生器 减2计数器 初值 偶数时 计数到0 输出改变极性 重装初值 初值 奇数时 计数过程复杂 实际装入 重装的初值 比编程写入的初值少1 输出为高电平时 减2到 2时 输出改变极性 重装初值 输出为低电平时 减2到0时 输出改变极性 重装初值 8254的应用 2 问题 PC机8254电路已定型 无法测试 所以 外扩一片8254 设计测试电路 8254计数过程是在CLK脉冲控制下自动地快速完成的 怎样使计数过程受程序员控制 3 测试电路及编程思路 在ISA总线上外扩一片8254 并设计口地址译码电路 设8254口地址 218H 21BH 8254的应用 1 计数器是被测计数器 令其工作在方式3 初值 5 奇数 由程序控制产生一个单脉冲给CLK1 每来一个CLK1 1 计数一次 然后锁存计数值 再读出 经

温馨提示

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

评论

0/150

提交评论