《微机原理与应用》总结.ppt_第1页
《微机原理与应用》总结.ppt_第2页
《微机原理与应用》总结.ppt_第3页
《微机原理与应用》总结.ppt_第4页
《微机原理与应用》总结.ppt_第5页
已阅读5页,还剩275页未读 继续免费阅读

下载本文档

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

文档简介

微机原理与接口技术 辅助教学电子课件易凡 第五章中断系统 5 1中断的基本概念 中断中断系统中断系统应具备的基本功能 中断系统应具备的基本功能 对于硬设备的中断请求 要具备屏蔽和开放功能 使得程序员能灵活控制 能实现 中断判优 即中断源排队 当有多个中断源提出请求时 高级别的中断请求能被优先响应 能实现中断嵌套 即高级别的中断源能够中断低级别的中断服务程序 系统响应中断后 能自动转入中断处理中断处理结束 能自动返回 5 28086中断系统 8086系统的中断分类 软件中断 硬件中断 通过处理器的NMI 非屏蔽中断 引脚进入 NMI被响应时 自动产生2号类型中断 非屏蔽中断 可屏蔽中断 中断请求信号通过CPU的INTR引脚进入 中断响应信号从INTA引脚发出 IF 1时 CPU响应中断 IF 0 中断请求被屏蔽通常可屏蔽中断源经过中断控制器8259A管理再向CPU发INTR请求 可屏蔽中断 中断标志IF的状态 指令CLI使IF 0关中断 禁止中断 中断屏蔽统复位 使IF 0任何一个中断被响应 使IF 0指令STI使IF 1开中断 允许中断 中断开放执行 IF 1执行指令IRET恢复原IF状态 中断处理过程 中断请求过程中断源向处理器发出请求中断信号 中断信号将被锁存 一直保持 直到处理器响应中断后 中断请求信号才被能清除 中断过程 处理器在执行每条指令的最后一个时钟周期检测中断请求信号若发现中断请求信号有效 在允许中断的条件下 处理器响应中断 中断响应过程 处理器会自动完成3项任务 关闭中断 以禁止其它中断请求 断点 IP和CS 和标志寄存器内容入栈保护 获得中断服务程序入口地址 转中断服务程序 中断处理过程 保护现场相关工作寄存器的内容压栈保护 开中断若要响应高级别的中断 则需要打开中断 执行中断服务程序关中断使得不被中断 可顺利恢复现场 恢复现场将压栈保护的内容顺序出栈给相关寄存器中断返回中断服务子程序的最后是一条中断返回指令IRET 执行后IRET后处理器自动从堆栈中弹出IP CS和FLAGS的内容 返回主程序继续执行 8086各种中断源的优先权 实际上是指被识别出来的先后 多种中断同时请求时 最先响应的则可能是单步中断或NMI中断 中断响应过程 中断向量 中断服务子程序所在段的段基址 2个字节 中断服务子程序入口的偏移地址 2个字节 中断向量中断服务子程序的入口地址亦称中断向量它由两部分组成 中断向量表 一种类型的中断向量为4个字节 256种中断的中断向量总共占用1K字节 在8086系统中 所有的中断向量按类型顺序存放于内存的最低地址 00000H 003FFH 的1K单元中 存放中断向量的这1K单元称为中断向量表 中断向量在中断向量表中的位置 地址 N 4 N 4 3 N 4字单元存放偏移地址N 4 2的字单元存放段基址 设置中断向量的方法 直接指令装入例5 3设置类型N的中断向量 其中断服务程序名为 INTHAND 例5 3设置中断向量 其中断服务程序名为 INTHANDMOVAX 0MOVES AX settobaseofinterruptvectorMOVBX N 4 offsetoftypeNinterruptMOVAX OFFSETINTHANDMOVES WORDPTR BX AX setaddrofMOVAX SEGINTHAND INTHANDMOVES WORDPTR BX 2 AXINTHAND interruptprocessingroutine IRET 用DOS系统功能调用 INT21H 设置中断向量 25H功能 设置中断向量预置 AH 25HAL 中断类型号 N DS DX 中断向量执行 INT21H 35H功能 取中断向量预置 AH 35HAL 中断类型号 N 执行 INT21H返回 ES BX 中断向量 例5 5实际中断程序结构 实际应用中 为了运行某个应用程序 通常采用替代原来的中断服务程序的办法 为此 应先保存原中断向量的内容 然后接管中断向量使其指向编制的新中断服务程序 最后 在应用程序终止退出前 从变量中获取原中断向量恢复到中断向量表中 具体程序如下 堆栈段STACKSEGMENTSTACK STACK DW128DUP 0 STACKENDS 数据段DATASEGMENT DATA INT SEGDW 定义变量 以保存中断向量段址INT OFFDW 定义变量 以保存中断向量偏移量DATAENDS 代码段CODESEGMENT CODE ASSUMECS CODE DS DATA SS STACKSTART MOVAX DATA 建立数据段址MOVDS AXMOVAL N N为指定中断号 MOVAH 35H 获取中断向量INT21HMOVINT SEG ES 保存中断向量段址MOVINT OFF BX 保存中断向量偏移量CLIMOVAL N N为指定中断号MOVAH 25H 设置中断向量MOVDX SEGINT PRMOVDS DX DS指向新中断向量段址MOVDX OFFSETINT PR DX指向新中断INT21H 向量偏移量 MOVAX DATAMOVDS AX 恢复数据段寻址STI 开中断 主程序主体 略 CLI 恢复中断向量前关中断MOVAL N N为指定中断号MOVAH 25H 恢复原中断向量MOVDX INT OFF DX指向原中断向量偏移量MOVBX INT SEGMOVDS BX DS指向原中断向量段址INT21H STI 开中断MOVAX 4C00H 主程序终止退出INT21H 返回DOS中断子程序INT PRPROCFAR 新中断服务程序STI 入口处开中断PUSH 保存用到的寄存器 PUSH 中断服务程序主体 略 POP 恢复入口寄存器 POP MOVAL 020H 发中断结束命令 EOI OUT020H ALIRET 中断返回INT PRENDP 中断程序结束CODEENDS 主程序结束ENDSTART 5 3中断控制器8259A 8259A的内部结构 IRR 中断请求寄存器 8位 保存8个 IR0 IR7 外部中断请求信号Di 1 表示IRi引脚有中断请求Di 0 表示IRi引脚无中断请求 I R 中断屏蔽寄存器 8位 保存对中断请求信号IRi的屏蔽状态 Di 1 则IRi引入的中断被屏蔽 关闭 Di 0 则IRi引入的中断被开放 当IR7 IR0端有多个中断请求同时发生时 由PR判定其最高优先权 在INTA脉冲期间将它置入中断服务寄存器ISR的相应位 PR 优先权判别器 8位 ISR 中断服务寄存器 8位 保存正在被8259A服务着的中断状态 Di 1 表示IRi中断正在服务中 Di 0 表示没有被服务 28259A的控制字及编程使用 初始化命令字ICW 有4个初始化命令字ICW8259A在开始工作前必须写入必须按照ICW1 ICW4顺序写入ICW1和ICW2是必须写ICW3和ICW4由工作方式决定是否写 操作命令字OCW 8259A工作期间 可以随时接受操作命令字OCWOCW共有3个 OCW1 OCW3OCW的写入时没有顺序要求 第七章输入 输出接口 什么是I O接口 电路 为什么需要I O接口接口电路的基本功能 一 I O接口基本概念 接口电路的功能 1 数据缓冲与锁存 2 联络功能 3 能提供有关电器特性的适配 电平转换 4 信号与信息格式的转换 格式转换 5 设备选择 端口地址译码 6 中断管理功能 7 能提供时序控制等 数据缓冲与锁存 输出接口有锁存环节 输入接口有缓冲环节实际的电路常用 输出锁存缓冲环节 输入锁存缓冲环节 用于解决高速主机与低速外设处理数据速度差异的矛盾 二 I O地址的译码 全译码部分译码线选方式译码芯片的使用译码方式与地址范围 IBMPC AT主机板的I O译码电路 IBMPC XT主机板的I O译码电路 逻辑门电路进行I O地址译码 三 输入 输出控制方式 1 无条件传送方式2 查询方式传输过程联络信号 CPU从I O端口读取状态字 CPU检测状态字 判断是否满足 准备就绪 条件 若不满足 则再读状态字 若满足 就绪 则传送数据 演示 查询方式传送信息过程有三个环节组成 查询式输入过程 当数据准备好后 输入设备发送选通信号 其作用是把数据存入数据锁存器 并使得三态缓冲器的READY位置 1 CPU读状态口 当查询到READY位为 1 就表示输入数据已准备就绪 CPU读数据口 取走数据 并使三态缓冲器的READY位清 0 为输入下一个数据作准备 查询式输入流程图与程序 SCAN INAL 状态口地址TESTAL 80HJZSCANINAL 数据口地址 查询式输出过程 CPU读取状态字 若查询到 BUSY 为0 表示输出设备处于空闲态 CPU执行输出指令 发出选通信号 把数据送入输出锁存器 并使 BUSY 置1 BUSY 为1 表示输出为忙状态 告知输出设备来提取数据 告之CPU不能输出新的数据 输出设备取得数据后 发确认信号ACK 将 BUSY 位清0 表示输出设备空闲为CPU输出下一数据作准备 查询式输出的流程图 查询式输出的程序段 SCAN INAL 状态口地址 读状态信息TESTAL 01H 检测BUSY标志JNZSCAN 忙 继续查状态MOVAL 数据OUT数据口地址 AL 空 输出数据 3 中断控制传送方式 外设的输入数据已准备好或接收数据锁存器为空时 主动发出中断请求信号 CPU响应中断 转而去执行为外设服务的中断程序 完成数据的输入或输出服务完毕后 返回到断点 继续原来的程序 演示 中断控制传送过程 当输入设备输入一个数据时 发送选通信号 把数据存入锁存器 将D触发器置1 发出中断请求信号 CPU响应中断后 发回中断响应信号INTA 使D触发器复位 并由外设将中断向量送到数据总线上 CPU取得中断向量转而执行中断服务程序 输入数据 中断处理完毕 CPU返回被中断的程序继续执行 中断控制方式的优缺点 传送的适时性强 CPU效率较高CPU内部必须要增加中断控制线路CPU的中断响应过程要花时间该传送方式适于传送少量数据的中慢速外设的场合 4直接存储器存取 DMA 方式 DMA directmemoryaccess CPU不介入传送控制 用专用硬件DMA控制器直接控制数据的传送 DMA方式的优缺点优点 传送速度快 缺点 要有专门的硬件电路 电路复杂 DMA传送方式 希望克服程序控制传送的不足 外设 CPU 存储器外设 CPU 存储器直接存储器存取DMA 外设 存储器外设 存储器CPU释放总线 由DMA控制器管理 演示 DMA传送的工作过程 CPU对DMA控制器进行初始化设置 外设 DMAC和CPU三者通过应答信号建立联系 CPU将总线交给DMAC控制 DMA传送DMA读存储器 存储器 外设DMA写存储器 存储器 外设 自动增减地址和计数 判断传送完成否 DMA传送流程 传送方式的比较 无条件传送 慢速 外设需与CPU保持同步查询传送 简单实用 效率较低中断传送 外设主动 可与CPU并行工作 但每次传送需要大量额外时间开销DMA传送 DMAC控制 外设直接和存储器进行数据传送 适合大量 快速数据传送 第六章半导体存储器及其接口 一 半导体存储器概述 除采用磁 光原理的辅存外 其它存储器主要都是采用半导体存储器本章介绍采用半导体存储器及其组成主存的方法 二 半导体存储器的分类 按制造工艺双极型 速度快 集成度低 功耗大MOS型 速度慢 集成度高 功耗低按使用属性随机存取存储器RAM 可读可写 断电丢失只读存储器ROM 正常只读 断电不丢失 图6 1半导体存储器的分类 读写存储器RAM 只读存储器ROM 掩膜ROM 信息制作在芯片中 不可更改PROM 允许一次编程 此后不可更改EPROM 用紫外光擦除 擦除后可编程 并允许用户多次擦除和编程EEPROM E2PROM 采用加电方法在线进行擦除和编程 也可多次擦写FlashMemory 闪存 能够快速擦写的EEPROM 但只能按块 Block 擦除 三 半导体存储器与CPU的连接 这是本章的重点内容SRAM EPROM与CPU的连接译码方法同样适合I O端口 存储芯片与CPU的连接 存储芯片的数据线存储芯片的地址线存储芯片的片选端存储芯片的读写控制线 1 存储芯片数据线的处理 若芯片的数据线正好8根 一次可从芯片中访问到8位数据全部数据线与系统的8位数据总线相连若芯片的数据线不足8根 一次不能从一个芯片中访问到8位数据利用多个芯片扩充数据位这个扩充方式简称 位扩充 演示 位扩充 多个位扩充的存储芯片的数据线连接于系统数据总线的不同位数其它连接都一样这些芯片应被看作是一个整体常被称为 芯片组 2 存储芯片地址线的连接 芯片的地址线通常应全部与系统的低位地址总线相连寻址时 这部分地址的译码是在存储芯片内完成的 我们称为 片内译码 片内译码 A9 A0 存储芯片 3 存储芯片片选端的译码 存储系统常需利用多个存储芯片扩充容量也就是扩充了存储器地址范围进行 地址扩充 需要利用存储芯片的片选端对多个存储芯片 组 进行寻址这个寻址方法 主要通过将存储芯片的片选端与系统的高位地址线相关联来实现这种扩充简称为 地址扩充 或 字扩充 演示 地址扩充 字扩充 片选端常有效 A19 A15A14 A0 全0 全1 令芯片 组 的片选端常有效不与系统的高位地址线发生联系芯片 组 总处在被选中的状态虽简单易行 但无法再进行地址扩充 会出现 地址重复 地址重复 一个存储单元具有多个存储地址的现象原因 有些高位地址线没有用 可任意使用地址 出现地址重复时 常选取其中既好用 又不冲突的一个 可用地址 例如 00000H 07FFFH选取的原则 高位地址全为0的地址 高位地址译码才更好 译码和译码器 译码 将某个特定的 编码输入 翻译为唯一 有效输出 的过程译码电路可以使用门电路组合逻辑译码电路更多的是采用集成译码器常用的2 4译码器 74LS139常用的3 8译码器 74LS138常用的4 16译码器 74LS154 全译码 所有的系统地址线均参与对存储单元的译码寻址包括低位地址线对芯片内各存储单元的译码寻址 片内译码 高位地址线对存储芯片的译码寻址 片选译码 采用全译码 每个存储单元的地址都是唯一的 不存在地址重复译码电路可能比较复杂 连线也较多 全译码示例 部分译码 只有部分 高位 地址线参与对存储芯片的译码每个存储单元将对应多个地址 地址重复 需要选取一个可用地址可简化译码电路的设计但系统的部分地址空间将被浪费 部分译码示例 线选译码 只用少数几根高位地址线进行芯片的译码 且每根负责选中一个芯片 组 虽构成简单 但地址空间严重浪费必然会出现地址重复一个存储地址会对应多个存储单元多个存储单元共用的存储地址不应使用 线选译码示例 切记 A14A13 00的情况不能出现00000H 01FFFH的地址不可使用 4 存储芯片的读写控制 芯片OE 与系统的读命令线相连当芯片被选中 且读命令有效时 存储芯片将开放并驱动数据到总线芯片WE 与系统的写命令线相连当芯片被选中 且写命令有效时 允许总线数据写入存储芯片 存储芯片的位扩充 存储芯片的字扩充 门电路译码 译码器74LS138 功能 连接 74LS138连接示例 74LS138功能表 第八章计数 定时接口 1 定时器和计数器 定时器由数字电路中的计数电路构成 通过记录高精度晶振脉冲信号的个数 输出准确的时间间隔计数电路如果记录外设提供的具有一定随机性的脉冲信号时 它主要反映脉冲的个数 进而获知外设的某种状态 常又称为计数器 定时功能的实现方法 软件延时 利用微处理器执行一个延时程序段实现不可编程的硬件定时 采用分频器 单稳电路或简易定时电路控制定时时间可编程的硬件定时 软件硬件相结合 用可编程定时器芯片构成一个方便灵活的定时电路 8253 8254定时计数器 3个独立的16位计数器通道每个计数器有6种工作方式按二进制或十进制 BCD码 计数 8254是8253的改进型 计数器的工作原理 程序员向初值寄存器写入计数值 初值寄存器中的初值送入减1计数器 减1计数器被启动开始减1计数 每一个CLKi脉冲使计数器减1 当计数值减到零时 OUTi端产生输出信号 脉冲或电平 GATEi信号可控制允许或禁止减1计数当前计数值被锁存至输出锁存器中 可被读出CLKi信号可以是周期性信号 也可以是随机脉冲信号计数初值N的计算公式 N fclk fout Tout Tclk 8254的工作方式 8254有6种工作方式 区别在于 输出波形不同 启动计数器的触发方式不同 GATE信号对计数过程的影响不同 计数初值的重装的方式不同 方式0 计数结束输出正跃变信号 工作特点 写入控制字后 OUT端输出低电平 写入初值后 OUT端保持低电平 计数器开始对CLK脉冲进行减1计数 当计数值减至0时 OUT端输出变为高电平 它可用作中断请求信号 方式0不具备 初值自动重装功能 仅当写入新的初值才能触发计数 在计数过程中 若写入新的计数初值 则初值写入后将按新的初值重新开始减1计数 GATE的作用GATE 1时 允许计数 GATE 0时 停止计数 方式1 单脉冲发生器 工作特点 写入控制字后 OUT输出高电平 写入初值后 OUT保持高电平 GATE的上升沿启动计数器 开始对CLK脉冲进行减1计数 启动后 OUT变为低电平 当计数值减到0时 OUT输出高电平 从而在OUT端输出一个负脉冲 幅脉冲宽度 计数初值 CLK的脉冲周期 GATE的作用 方式1无 初值自动重装 功能 仅GATE的上升沿能启动计数器计数只要GATE信号出现了正脉冲 计数初值将重新装入计数器 并启动计数器按新的初值重新减1计数在计数过程中装入了新的计数初值 计数过程不受影响 仅当GATE再次出现0 1的正跃变 计数器才按新的计数初值做减1计数 方式2 分频器 工作特点 写入控制字后 OUT输出高电平 写入初值后 计数器启动减1计数 当计数器减到1时 OUT输出低电平 维持一个CLK周期 OUT又变为高 计数初值自动重新装入 计数器开始重新计数 OUT输出周期负脉冲信号 脉冲周期 Tout 初值 Tclk脉冲宽度 1 Tclk 在计数过程中 GATE变低 暂停计数 GATE的上升沿使计数器恢复初值 并从初值开始计数 在计数过程中 当GATE为高电平 若写入初值 不影响计数 当计数器减到1后 计数器才装入新的初值 按新初值减1计数 GATE的作用 方式3 方波发生器 方式3具有自动重新装入初值的功能当初值为偶数时 从OUT输出1 1的方波 Tout N Tclk脉冲宽度 N 2 Tclk当初值为奇数时 OUT输出周期脉冲波形 Tout N Tclk正脉冲宽度 Tclk N 1 2负脉冲宽度 Tclk N 1 2 方式4 软件触发的单脉冲发生器 工作特点 写入控制字后 OUT输出高电平 写入初值后 开始减1计数 减到0时 OUT变低方式4无初值自动重装功能 OUT输出一负脉冲 脉冲宽度 1 TclkGATE 1 允许计数 GATE 0 停止计数 计数过程中 若改变初值 则按新的初值重新开始计数 方式5 硬件触发的单脉冲发生器 工作特点 写入控制字后 OUT输出高电平 写入初值后 仅当GATE端出现0到1的跃变时 启动计数减1计数 当计数至减到0时 OUT输出一个CLK周期的负脉冲 GATE的作用 在计数过程中 若GATE端出现0 1的跃变 初值重新装入计数器 并重新减1计数 在计数过程中 若改变计数初值 仅当GATE的上升沿触发 则立即按新的初值重新开始计数 8254的控制字与编程 1 8254的方式控制字 状态字方式控制字格式 D7D6 SC1SC0 计数器选择D7D6 00选择0号计数器 D7D6 01选择1号计数器 D7D6 10选择2号计数器 D7D6 11读出控制字标志之一 D5D4 RL1RL0 读 写方式选择D5D4 00 锁存计数器当前计数值以便读出 D5D4 01 只读 写低8位计数初值 高8位置0 D5D4 10 只读 写高8位计数初值 低8位置0 D5D4 11 16位操作 先读 写低8位计数值 后读 写高8位计数值 D3D2D1 M2M1M0 工作方式选择D3D2D1 000方式0 D3D2D1 011方式3D3D2D1 001方式1 D3D2D1 100方式4D3D2D1 010方式2 D3D2D1 101方式5D0 BCD 计数数制选择D0 0二进制计数 初值范围 0000H FFFFH 0000H代表65536D0 1十进制计数 BCD码 初值范围 0000H 9999H 0000H代表10000 例8 1选择2号计数器 工作在方式2 计数初值为533H 二进制计数 程序段为 TIMEREQU040H 0号计数器端口地址MOVAL 10110100B 2号计数器方式控制字OUTTIMER 3 AL 写入控制字寄存器MOVAX 533H 计数初值OUTTIMER 2 AL 先送低位字节到2号计数器MOVAL AH 取高位字节OUTTIMER 2 AL 再送高位字节到2号计数器 读出控制字格式 D7D6 11 D0 0 读出控制字的特征 D5 0锁存计数值 以便CPU读取 D4 0将状态信息锁存入状态寄存器 D3 D2 D1计数器选择Di 1 计数器i被选中 i 0 1 2 在锁存计数值 状态信息期间 不影响计数 当CPU读取某一计数器的计数值 状态信息时 该计数器自动解锁 但其它计数器不受影响 状态字 格式 D5 D0 意义与方式控制字的对应位意义相同D7 OUT引脚输出的电平状态D7 1OUT引脚为高电平D7 0OUT引脚为低电平D6 表示读出的计数值是否有效 D6 0表示初值已装入 可以读取计数值 D6 1初值尚未装入 读出值无效 8254的读出操作 8254的读出操作有3种办法 使GATE 0 停止计数 然后对相应的计数器端口进行两次读操作 若是16位读 依次读出锁存计数值的低8位和高8位 在计数过程中 先向控制寄存器写一个D7D6 计数器编号 D5D4 00的控制字 锁存当前的计数 再对相应的计数器端口进行读操作 在计数过程中 先向控制寄存器端口写入读出命令 D7D6 11 D0 0 如果读出命令仅锁存计数器的状态信息 D5D4 10 则只对相应计数器端口进行1次读操作 即可读出状态信息 如果读出命令仅锁存计数器的当前计数值 D5D4 01 则对相应计数器端口进行2次读操作 依次读出锁存计数值的低8位和高8位 如果读出命令同时锁存计数器的当前计数值和状态信息 D5D4 00 则对相应计数器端口进行3次读操作 第一次读出状态信息 第二次读出计数值的低8位 第三次读出计数值的高8位 例8 2设8254端口地址为40H 43H 要读取计数器2的当前16位计数值 编程如下 用锁存方式读计数值MOVAL 84H 84H 计数器2的锁存命令OUT43H AL 43H 控制寄存器的端口地址INAL 42H 读低8位 42H 计数器2的口地址MOVCL AL 存入CL中INAL 42H 对同一个端口读高8位MOVCH AL 存入CH中 用读出命令字方式读计数值MOVAL 0E8H 0E8H 计数器2的读命令OUT43H AL 43H 控制寄存器口地址INAL 42H 读低8位MOVCL AL 存入CL中INAL 42H 读高8位MOVCH AL 存入CH中 若需要读出计数器2的状态和当前计数值MOVAL 0C8H 0C8H 计数器2的读命令OUT43H AL 写入控制寄存器INAL 42H 读计数器2的状态信息MOVBL AL 存入BL中INAL 42H 读低8位MOVCL AL 存入CL中INAL 42H 读高8位MOVCH AL 存入CH中 计数器0 定时中断 计数器0 方式3 计数值 65536 输出频率为1 19318MHz 65536 18 206Hz的方波门控为常启状态 这个方波信号不断产生OUT0端接8259A的IRQ0 用作中断请求信号 每秒产生18 206次中断请求 或说每隔55ms 54 925493ms 申请一次中断DOS系统利用计数器0的这个特点 通过08号中断服务程序实现了日时钟计时功能 定时中断 moval 36h 计数器0为方式3 采用二进制计数 先低后高写入计数值out43h al 写入方式控制字moval 0 计数值为0out40h al 写入低字节计数值out40h al 写入高字节计数值 8253初始化 计数器1 定时刷新 需要重复不断提出刷新请求 门控总为高 选择方式2或3 2ms内刷新128次 即15 6 s刷新一次 计数初值为18 定时刷新 moval 54h 计数器1为方式2 采用二进制计数 只写低8位计数值out43h al 写入方式控制字moval 18 计数初值为18out41h al 写入计数值 8253初始化 日时钟 延时开始movah 0int1ahadddx 90 加5秒 5 18 90 movbx dx 期望值送bxrepeat int1ah 再读日时钟cmpbx dx 与期望值比较jnerepeat 不等 则循环 相等 延时结束 可编程硬件延时 实时时钟 延时开始movcx 0movdx 1952 延时1 952ms 2 976 smovah 86hint15h 功能调用返回时 定时时间到 可编程硬件延时 例8 3 初始化程序段 movdx 203h 设置方式控制字moval 10houtdx almovdx 200h 设置计数初值moval 64h 计数初值为100outdx al 例8 2 输出 明确向哪个端口输出什么数据输入 清楚从哪个端口输入什么数据 例8 4 初始化计数器0 moval 14hout76h almoval cnt0out70h al 例8 3 初始化计数器1 moval 52hout76h almoval cnt1out72h al 例8 3 初始化计数器2 moval 96hout76h almoval cnt2out74h al 例8 3 例频率计数器设计 用8254计数外来信号频率fIN fCLK 1MHz 用T C1产生基准时钟间隔 采用方式1 T C0采用方式0对外来信号计数 OUT1控制GATE0来停止计数 思路 T C1产生10ms的基准时间间隔 然后通过OUT1控制T C0计数用fIN N M 1 10ms 1000Hz公式来计算 其中N是T C0的初始值 M是计数基准时间到时的T C0当前计数值 T C0设定为方式0 CLK0接收外部待测信号T C1设定为方式1 OUT1接到GATE0端控制计数 T C在0方式时经过一个CLK后才将初值写到CE中 所以实际计数值应该在T C0的当前值基础上加1 为了辅助控制 我们用8255A口初始化为输出 其中位1为TRG 用来控制计数器1的GATE1 8255B口初始化为输入 其中位0接到OUT1脚 通过对该位的不断查询 来确定10ms是否结束 结束后 根据T C0的计数数值进行计算 fIN N M 1 t 65536 AX 1 10 1000Hz 注意 10ms时M应大于0 程序段如下MOVAL 0OUTPIO0 AL TRG 0MOVAL 01110010B T C1OUT43H ALMOVAH 2710H 间隔为10ms 2710H 10000 OUT41H ALMOVAL AHOUT41H ALMOVAL 00110000B T C0OUT43H AL MOVAL 00H 初值为65536OUT40H ALOUT40H ALMOVAL 2OUTPIO0 AL TRG 1 开始计数S1 INAL PIO1 循环读EOCJZS1 等到EOC 1才退出循环INAL 40HMOVAH ALINAL 40HXCHGAH AL AX为当前计数值 第九章并行I O接口 并行通信方式多位数据信息在多根传输线上同时被传输串行通信方式多位数据信息在一根传输线上按时间先后逐位顺序传送 1 通信方式 2 并行接口的特点 计算机的并行通信通常以8位 16位 32位为传输单位并行传送的信息不要求固定的格式并行方式速度快 传输效率高 但费用高 适用于信息传输率要求高 而传输距离短的场合微机系统中最基本的信息交换方法 可编程并行接口芯片8255A INTEL8255A是可编程并行接口芯片8255A采用40脚双列直插封装 单一 5V电源 全部输入输出与TTL电平兼容8255A有3个独立的输入输出端口 每个端口都可以通过编程来设定工作方式 1 8255A的内部结构 结构主要分四大部分 数据总线缓冲器 双向三态8位缓冲器 可直接与系统数据总线相连 读 写控制逻辑 完成内部端口选择和读写控制 I O端口 A口 B口 C口 它们都可编程设定为输入 输出 具有锁存功能 A组和B组控制模块 8255A有三个8位I O端口 即A口 B口 C口 他们分成A B两组进行控制 A组控制模块A口 PA7 PA0 和C口的高4位 PC7 PC4 B组控制模块B口 PB7 PB0 和C口的低4位 PC3 PC0 2 8255A的编程使用 方式选择控制字 C口按位清0 置1控制字 1 置10 置0 特征位0有效 例9 1要求设定8255A的A口为方式1 输入 C口高4位为输出 B口指定为0方式 输出 C口低4位为输入 写出初始化程序段 8255A的端口地址300H 301H 302H 303H 程序段 MOVDX 303H 303H 8255A的控制口地址MOVAL 0B1H 0B1H 工作方式控制字OUTDX AL 送到控制口 例9 2要求把C口的PC2引脚置 1 高电平 程序段为 MOVDX 303H 8255A控制口地址MOVAL 05H 使PC2 1控制字OUTDX AL 送控制口 C口的按位置位 复位控制字虽然是对C口进行操作 但控制字必须写入控制口 3 8255A的工作方式 无条件输入 输出 无联络信号引脚 A口 B口和C口可分别设置成输入或输出不能提供中断信号虽然0方式下不能自动生成联络信号 但可以通过传送数据作为应答信号 用查询方式传送信号 1 方式0 基本输入 输出方式 例9 3某系统用8255A配置一并行打印机接口 CPU用方式0实现查询方式传送 将存放在200H单元开始的256个字符 ASCII码 送打印机打印 打印机接口电路8255A的引脚分配PA口输出 输出打印数据 工作于方式0 PC7输出 它产生一个负脉冲 作为数据选通信号STB 将数据送入打印机缓冲器 PC2输入 接收打印机的忙信号 BUSY 工作过程 CPU查询BUSY 若BUSY 1 忙 继续查 当BUSY 0 空闲 CPU输出数据到接口 CPU发出数据选通信号STB 将数据送入打印机缓冲器 打印机接收到数据后 发出忙信号 BUSY 1 并处理数据数据处理完 撤销忙信号 BUSY 0 发响应信号ACK 打印机信号与时序 MOVDX 303H 303H 8255A命令口地址MOVAL 10000001B 工作方式字 0方式 A口输出 C口高4位输出 C口低4位输入OUTDX AL 送入控制口MOVAL 00001111B PC7位为高 STB 1OUTDX AL 送入控制口MOVSI 200H 打印字符的内存首地址MOVCX 0FFH 打印字符个数 FFH 255 驱动程序 L MOVDX 302H 302H C口地址INAL DX 查BUSY 0 PC2 0 ANDAL 04HJNZL 忙 PC2 1 继续查询MOVDX 300H 300H A口地址MOVAL SI 从内存取数OUTDX AL 向A口输出一个数据MOVDX 303H 303H 8255命令口MOVAL 00001110B 置STB 为低 PC7 0 OUTDX AL 形成负脉冲的下降沿NOP 负脉冲宽度 延时 NOPMOVAL 00001111B 置STB 为高 PC7 1 OUTDX AL 形成负脉冲的下上升沿INCSI 修改指针DECCX 修改计数JNZL 未传完 继续HLT 已完 暂停 2 方式1 选通输入 输出方式 选通型输入 输出 设置了联络信号线和中断请求信号 A口 B口为数据口 C口作为联络口 各联络信号之间有固定时序关系 可用查询方式或中断方式传送数据 方式1输入的引脚定义 A口 中断请求信号请求CPU接收数据 输入缓冲器满信号表示A口已经接收数据 数据选通信号表示外设已经准备好数据 A组工作在方式1输入的引脚定义 PA7 PA0 输入数据线 PC4 输入 作选通信号线STBA PC5 输出 作输入缓冲器满信号IBFA PC3 输出 作中断请求信号线INTRA PC7 PC6 空闲 可定义为输入或输出 方式1输入的引脚定义 B口 数据选通信号表示外设已经准备好数据 输入缓冲器满信号表示A口已经接收数据 中断请求信号请求CPU接收数据 方式1需借用端口C用做联络信号同时还具有中断请求和屏蔽功能 B组工作在方式1输入的引脚定义 PB7 PB0 输入数据线 PC2 输入 作选通信号线STBB PC1 输出 作输入缓冲器满信号IBFB PC0 输出 作中断请求信号线INTRB STB Strobe 选通信号 低电平有效 输入 它将外设数据送入8255A的输入缓冲器中锁存 IBF InputBufferFull 输入缓冲器满信号 高电平有效 输出 IBF 1 通知外设暂缓输入下一数据 当CPU查询IBF 1时 才能从A口或B口读取输入的数据 方式1输入联络信号 STB 和IBF是外设和8255A间的一对应答联络信号 为的是可靠地输入数据 INTR InterruptRequest 中断请求信号 高电平有效 输出 当允许中断 INTE 1 且8255A接收到数据 IBF 1 后 发出中断请求INTE InterruptEnable 中断控制逻辑INTE 1 开中断 INTE 0 关中断 INTE受C口复位 置位字控制 当PC4 1时 INTEA 1 A口允许中断 当PC2 1时 INTEB 1 B口允许中断 方式1的输出的引脚定义 A口 外设响应信号表示外设已经接收到数据 输出缓冲器满信号表示CPU已经输出了数据 中断请求信号请求CPU再次输出数据 A组工作在方式1输出的引脚定义 PA7 PA0 输出数据线 PC7 输出 输出缓冲器满信号OBFA PC6 输入 外设应答信号ACKA PC3 输出 作中断请求信号线INTRA PC5 PC4 空闲 可定义为输入或输出 方式1的输出的引脚定义 B口 外设响应信号表示外设已经接收到数据 输出缓冲器满信号表示CPU已经输出了数据 中断请求信号请求CPU再次输出数据 B组工作在方式1输出的引脚定义 PB7 PB0 输出数据线 PC1 输出 输出缓冲器满信号OBFB PC2 输入 外设应答信号ACKB PC0 输出 作中断请求信号线INTRB OBF OutputBufferFull 输出缓冲器满信号 输出 低电平有效 它有效表示输出缓冲内有数据 通知外设取走数据ACK Acknowledge 外设应答信号 输入 低电平有效 当ACK有效时 表示数据已被外设取走 并清OBF 使之为高 方式1输出的联络信号 OBF 和ACK 是外设和8255A间的一对应答联络信号 为的是可靠地输出数据 INTR中断请求信号 当满足INTE 1 且OBF为高电平条件时 发中断请求 INTE中断控制逻辑 受C口的置0 置1命令字控制 PC6 1时 INTEA 1 A口允许中断PC2 1时 INTEB 1 B口允许中断 方式1的状态字 8255A状态字为查询方式提供了状态标志位 IBF OBF INTR的状况 8255A不能直接提供中断矢量 在采用中断方式时 CPU可通过读状态字来确定中断源 方式1输入的状态字格式 方式1输出的状态字格式 注意 状态字通过读C口获得 状态字的各位与其C口引脚定义不完全一样 查询状态字时 一般查询INTR是否置位 也可查询IBF和OBF位 例9 4采用8255A配置打印机接口 设置8255A为方式1 用查询方式传送数据 用8255A方式1与打印机的连接 编程如下 8255A方式1与打印机接口的时序配合 8255A的初始化 movdx 0fffehmoval 0a0houtdx almoval 0ch 使INTEA PC6 为0 禁止中断outdx al movcx counter 打印字节数送CXmovbx offsetbuffer 取字符串首地址callprints 调用打印子程序 打印子程序 输出 printsprocpushax 保护寄存器pushdxprint1 moval bx 取一个数据movdx 0fff8houtdx al 从端口A输出 打印子程序 查询 movdx 0fffchprint2 inal dxtestal 80h 检测 PC7 为1否 jzprint2 为0 说明打印机没有响应 继续检测 打印子程序 返回 incbx 为1 说明打印机已接受数据loopprint1 准备取下一个数据输出popdx 打印结束 恢复寄存器popaxret 返回printsendp 要求 甲 乙两机之间传送1K字节数据 甲发 乙收 甲机的8255A采用方式1工作 乙机一侧的8255A采用0方式工作 两机的CPU与接口之间都采用查询方式交换数据 硬件连接 甲机8255A是方式1 A口输出 作发送数据用 PC7和PC6固定作联络线OBF和ACK 例9 4双机并行接口设计 乙机的8255A为方式0接收 定义A口输入 接收数据 选PC4输入 接收OBF信号 PC0输出 用作发送ACK信号 编程甲机发送程序 MOVDX 303H 303H 8255A命令口地址MOVAL 10100000B A口方式1 输出OUTDX AL MOVAL 00001101B 置中断允许INTEA 1OUTDX AL PC6 1MOVAX 030H 030H 发送数据内存首址MOVES AXMOVBX 00HMOVCX 3FFH 发送字节数1KMOVAL ES BX 取第一个数MOVDX 300H 300H A口地址OUTDX AL 向A口写一个数 INCBX 修改指针 指向下一单元DECCX 字节数减1L MOVDX 302H 302H 8255A的C口 状态口 INAL DX 查发送请求INTRA 1 ANDAL 08H PC3 1 JZL 若无中断请求 继续查询MOVDX 300H 300H A口地址MOVAL ES BX 从内存取数OUTDX AL 从A口输出数据 INCBX 修改指针DECCX 计数器减1JNZL 未传送完 继续MOVAX 4C00H 传送完 退出INT21H 返回DOS 乙机接收程序 MOVDX 303H 303H 命令口MOVAL 10011000B 方式0 C口高4位输入OUTDX AL C口低4位输出MOVAL 00000001B 置ACK 1 PC0 1 OUTDX ALMOVAX 040H 接收数据内存区首址MOVES AXMOVBX 00H MOVCX 3FFH 接收字节数L1 MOVDX 302H C口地址INAL DX 查甲机的OBF 0 PC4 0 ANDAL 10H 取PC4位值JNZL1 无数据来 等待MOVDX 300H A口地址INAL DX 从A口读入一个数MOVES BX AL 存入内存 MOVDX 303H 303H 命令口MOVAL 0 使PC0 0OUTDX AL 产生ACK信号下降沿NOP 延时 NOP 形成一定宽度负脉冲MOVAL 01H 使PC0置1 OUTDX AL 形成ACK的上升沿 INCBXDECCXJNZL1 未接收完 继续MOVAX 4C00H 完毕 返回DOSINT21H 例假设有一个4 4的矩阵键盘通过并行接口芯片8255与微机相连 8255的A口作为输出口 与键盘的行线相连 B口为输入口 与键盘列线相连 设8255A口地址为60H B口地址为61H 控制寄存器地址为63H 请编写键盘扫描程序 程序如下 moval 82hout63h albegin moval 0 检查是否有键按下out60h alwait inal 61handal 0fhcmpal 0fhjzwait 无键按下 继续等待 sm movdl 4 行数送dlmoval 0feh 扫描码 0行为0movch 0 键号初值为0srow out60h al 扫描一行rclal 1 修改扫描行movah al 保存下次要扫描的扫描码inal 61h 读列线状态andal 0fhcmpal 0fh 是否有列线为0jnzscol 有列线为0转到scol addch 4 否则键号 4moval ah 取回行扫描码decdl 行数减1jnzsrow 继续扫描行jmpbeginscol rcral 1 带进位位右移jncproce 该列为0 转处理程序incch 否则键号 1 jmpscol 继续查找proce 第十章串行通信与接口 10 1串行通信基础 串行通信 将数据分解成二进制位用一条信号线 逐位顺序传送的方式串行通信的优势 用于通信的线路少 因而在远距离通信时可以极大地降低成本串行通信适合于远距离数据传送 也常用于速度要求不高的近距离数据传送PC系列机上有两个串行异步通信接口 键盘 鼠标器与主机间采用串行数据传送 1 传输制式 单工方式 Simplex 只允许数据按照一个固定的方向传送 半双工方式 Half Duplex 收发双方均具备接收和发送数据能力 由于只有一条通道 不能同时在两个方向上传送数据 全双工方式 FullDuplex 收发双方均具备接收和发送数据能力 并可以同时进行双向传输 全双工 半双工 单工 示例 比特率 信息传输速率 每秒传送的二进制数位数 比特数 单位为bps bitpersecond 波特率 码元传输率 每秒传送的码元 符号 数单位为 波特 Baud 即每秒传送1个码元 符号 称传输率是1波特 2 传输速率 波特率与比特率的差异若每个码元所含的信息量为1比特 Bit 则波特率等于比特率 否则二者不等例如 在四相调制系统中 每次调制取4种相位差值 它代表2位二进制信息位 此时 比特率 2波特率标准波特率系列为 110 300 600 1200 1800 2400 4800 9600 19200 3 串行通信协议 通信协议 收发双方共同遵守的基本通信规程 Protocol 通信协议主要内容 同步方式传输控制步骤差错检验方式数据编码数据传输速率通信版文的格式控制字符的定义等 串行异步通信 串行通信时的数据 控制和状态信息都使用同一根信号线传送收发双方必须遵守共同的通信协议 通信规程 才能解决传送速率 信息格式 位同步 字符同步 数据校验等问题串行异步通信以字符为单位进行传输 其通信协议是起止式异步通信协议 起止式异步通信协议格式 起始位 每一帧字符的开始 1位 逻辑0数据位 紧接着起始位 数据位个数为5 8位 数据从最低位开始发送奇偶校验位 数据位发送完毕后 发送1位奇偶校验位 也可以不发校验位停止位 一帧字符的最后发停止位 它可以是1位 1 5位或2位的逻辑1信号空闲位 在每一帧字符之间可以有不等位数的逻辑1信号 表示没有传送 起止式异步通信协议 起始位

温馨提示

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

评论

0/150

提交评论