《串并行接口技术》PPT课件.ppt

上传人:sh****n 文档编号:8635817 上传时间:2020-03-30 格式:PPT 页数:149 大小:3.68MB
返回 下载 相关 举报
《串并行接口技术》PPT课件.ppt_第1页
第1页 / 共149页
《串并行接口技术》PPT课件.ppt_第2页
第2页 / 共149页
《串并行接口技术》PPT课件.ppt_第3页
第3页 / 共149页
点击查看更多>>
资源描述
7 1定时 计数技术 一 概述二 可编程计数器 定时器8253 8254三 Intel8253 8254的应用 一 概述 1 定时与计数控制系统与计算机中 常常需要有定时信号 以实现定时或延时控制 如定时中断 动态存储器的定时刷新等 此外 还需要有计数功能 以实现对外部事件的计数 当外部事件发生的次数达到规定值后 向计算机发出中断请求 进而实现相应的控制或处理 定时的本质就是计数 当计数信号是周期信号时 计数就可以用于定时 如以秒为单位计数 则计数60次就是1分 计满60分就是1小时 计满24小时就是1天 2 实现定时和计数的三种方法软件方法 采用软件定时 让计算机执行一个专门的指令序列 由执行指令序列中每条指令所花费的时间构成一个固定的时间间隔 从而达到定时或延时的目的 不可编程的硬件定时 采用电子器件构成定时或延时电路 通过调整电路中定时元件的数值 可实现调整定时或延时的数值和范围 可编程的硬件定时 在微机系统中采用软硬件结合的方法 即采用可编程定时的电路器件实现定时 如 Intel8253 8254 ZilogCTC MC6840等 8253 5 5MHz 和8254 2 10MHz 的引脚和功能都是兼容的 二 可编程计数器 定时器8253 PIT 1 8253 PIT的主要功能Intel8253 PIT是具有3个16位计数器通道的可编程计数器 定时器芯片 主要功能如下 1 具有3个独立的16位计数通道 2 每个计数通道都可按2进制或BCD进制计数 3 8253 PIT每个计数通道的计数速率最高可达2MHz 8253 5 5MHz 8254 2 10MHz 4 每个通道有6种工作方式 可由程序设置改变 5 全部输入输出都与TTL电平兼容 2 8253的结构框图 如图7 1所示8253由与CPU接口 内部控制电路以及三个计数器通道组成 图7 1Intel8253结构框图 1 数据总线缓冲器 CPU用输入输出指令对8253进行读写操作时的所有信息都通过该缓冲器传送 2 读 写逻辑 这是8253内部操作的控制电路 它从系统控制总线上接收输入信号 然后转换成8253内部操作的各种控制信号 3 控制字寄存器 通过该寄存器CPU可以设置三个计数器通道的工作方式 4 计数器0 1 2 这是3个独立的计数 定时通道 是16位的可设置计数初值的减法计数器 如图7 2所示 是每个计数通道的结构 内有计数初值寄存器CR 计数执行部件CE和输出锁存器OL及控制字寄存器 其中CE作减法计数 计数器1 计数器2 计数器0 3 8253的引脚 8253与CPU接口的引脚 除了没有复位信号RESET引脚外 其他与8255相同 如图7 3所示 a 是引脚图 b 是8253的功能结构 1 CLKCLK为时钟输入引脚 用以输入计数执行部件CE 减法计数器 的计数脉冲信号 2 OUT它是通道输出信号引脚 从功能上来说也可称为 计数到零 定时时间到 输出引脚 8253的基本功能就是对外部输入到CLK引脚的脉冲进行减法计数 3 GATE它是门控输入信号引脚 当GATE为低电平时禁止计数器工作 通常GATE为高电平或有上升沿跳变时计数器才能工作 4 8253的工作方式 8253有6种工作方式 每个通道均可以通过编程选择工作方式 计数启动方式 软件启动 GATE端为高电平 置入计数初值后的第2个CLK脉冲的下降沿就开始计数硬件启动 GATE端要求有一个上升沿跳变 对应CLK脉冲的下降沿开始计数工作方式 方式0 计数到零产生中断请求 软件启动 方式1 硬件可重复触发的单稳态触发器 硬件启动 3 方式2 分频器 软 硬件启动 4 方式3 方波发生器 用得最多的方式 软 硬件启动 5 方式4 软件触发选通 软件启动 6 方式5 硬件触发选通 硬件启动 1 方式0计数到零产生中断请求 如图7 4所示 CPU写入控制字CW 在WR的上升沿 OUT输出变低或保持低 初值由CR到CE CPU将计数初值N写入计数初值寄存器CR 图中初值为4 在WR上升沿之后的第一个CLK脉冲的下降沿将CR的内容送入计数执行部件CE 当GATE 1时 在CR内容送入CE后的每一个CLK脉冲下降沿使CE减1计数 在计数过程中OUT一直保持低直到计数为零 计数器减到0时 OUT由低跳到高电平 此输出信号可作为中断请求 在方式0中 当GATA 0时 技术暂停 当GATA变高后就接着计数 如图7 5所示 在计数过程中也可改变计数初值 在写入新的计数初值后 计数器将立即按新的计数值重新开始计数 即改变计数初值是立即有效的 参见图7 6 2 方式1硬件可重复触发的单稳态触发器 若设置初值为N 则输出为N个CLK周期宽度的负脉冲 计数到零时 可再次由GATE上升沿触发 输出同样宽度的负脉冲 而不必重新写入初值 即可重复触发如图7 7所示 在计数过程中 输出负脉冲期间 可由GATE上升沿再触发 如图7 8所示 在计数过程中 CPU可改变初值 这时计数过程不受影响 计数到0后输出变高 当再次触发时 计数器才开始按新的计数初值计数 即改变计数初值是下次有效的 3 方式2分频器 不用重新设置计数初值 通道能连续工作 如果初值为N 则每输入N个CLK脉冲 输出一个负脉冲 负脉冲的宽度为1个CLK周期 重复周期为N倍的CLK周期 计数过程中可由GATE信号控制 当GATE信号变低时 立即暂停现行计数 当GATE信号变高后 从计数初值开始重新计数 如图7 9所示 如果在计数过程中 CPU重新写入计数初值 则对于正在进行的计数无影响 而是从下一个计数操作周期开始按新的计数值改变输出脉冲的频率 如图7 10 图7 9方式2中门控信号GATA的作用 图7 10方式2计数过程中改变初值 4 方式3方波发生器 注意初值N为偶数或奇数时 输出信号的差别 N为偶数时 输出对称方波 周期为N个CLK宽度 N为奇数时 输出有N 1 2个CLK周期的高电平和N 1 2个CLK周期的低电平 图7 11方式3时序图 在计数过程中 GATE信号变低则暂停现行计数过程 直到GATE变高 将从计数初值开始重新计数 如果要求改变输出方波的频率 则CPU可在任何时候重新写入初值 并从下一个计数操作周期开始改变输出方波频率 5 方式4软件触发选通 若初值为N 则写入初值后的N 1个CLK脉冲才输出一个负脉冲 负脉冲的宽度为一个CLK周期 如图7 12 当GATE 1时 允许计数 GATE 0时 禁止计数 在计数过程中改变初值 则按新的初值重新计数 即改变初值是立即有效的 图7 12方式4时序图 6 方式5硬件触发选通方式 初值为N 则在门控GATE上升沿触发后 经过N 1个CLK脉冲 才输出一个CLK周期的负脉冲 如图7 13 图7 13方式5时序图 若在计数过程中再次出现门控GATE触发信号 则将从初值开始重新计数 但OUT输出的高电平不受影响 如图7 14 若在计数过程中改变初值 只要在计数到0之前不出现新的门控触发信号 则原计数过程不受影响 等计数到0并出现新的门控触发信号后 再按新的计数初值计数 若在写入了新的计数初值后 在未计数到0之前有门控触发信号出现 则立即按新的计数初值重新开始计数 图7 14方式5中门控信号GATA的作用 7 六种工作方式总结 时钟周期和输出周期的区别 输出波形在时钟下降沿产生电平变化 计数值N与输出波形的关系 门控信号GATE的作用 方式2 分频器 方式4 软件触发选通 和方式5 硬件触发选通 它们的输出波形相同 都是宽度为1个CLK周期的负脉冲 区别是 方式2是自动重复工作的 而方式4需要由软件 设置计数初值 触发启动 方式5需要由硬件 门控GATE信号 触发启动 方式5 硬件触发选通 与方式1 硬件触发单稳 触发信号相同 但输出波形不同 方式1输出为宽度是N个CLK周期的负脉冲 计数过程中输出为低 而方式5输出为宽度是1个CLK周期的负脉冲 计数过程中输出为高 6种工作方式中 只有方式0 写入控制字后输出为低 其余5种方式 都是写入控制字后输出为高 6种工作方式中的任何一种方式 只有在写入计数值后才能开始计数 方式0 2 3 4都是写入计数初值后 计数过程就开始了 而方式1和方式5在写入计数初值后 需由外部GATE信号的触发启动 才能开始计数过程 6种工作方式中 只有方式2 分频器 和方式3 方波发生器 为自动重复工作方式 其他4种方式都是一次性计数 要继续工作需要重新启动 图7 15是8253六种工作方式下的输出波形图 图7 158253六种工作方式下的输出波形图 5 8253的初始化编程 1 内部寄存器寻址一片8253占用四个连续的端口地址 分别对应于三个计数初值寄存器端口和一个控制寄存器端口 3个通道共用一个控制端口 用控制字的D7和D6两位来表示作用于哪个通道 8253内部寄存器的寻址如下表所示 表7 1 8253内部寄存器的寻址 2 8253的控制字 如图7 16所示 图7 168253 8254方式控制字格式 3 初始化编程顺序对于每个计数通道进行初始化时 必须先写入控制字 然后写入计数初值 这是因为计数初值的写入格式是由控制字的D5和D4两位编码决定的 写入计数初值时 必须按控制字规定的格式写入 例1 若用8253的计数通道1 工作在方式0 按8位二进制计数 初值为128 试编写初始化程序 设口地址为48H 4BH 解 控制字为01010000 50H 8位计数初值为80Hmoval 50H 设置通道1控制字out4BH almoval 80H 写通道1计数初值 只写低out49H al 8位 例2 若用8253通道1 工作在方式1 按二 十进制计数 计数初值为2010 口地址同上 试编写初始化程序 解 通道控制字为01110011 73H计数初值高8位为20 低8位为10 注意 实际编程时要写20H和10H moval 73H 写通道1控制字out4BH almoval 10H 写通道1计数初值低8位out49H almoval 20H 写通道1计数初值高8位out49H al当执行完上述程序后 8253通道1工作于方式1 经GATE上升沿触发后 输出产生一宽度为2010个CLK周期的负脉冲 6 计数值和状态的读回 1 8253的计数值的读回由CPU访问每个通道的输出锁存器OL 即可实现读出每个通道的计数值 如果是8位计数只需读一次 如果是16位计数 则要读两次 先读低8位 后读高8位 由于通道计数器在不停的计数过程中 而锁存器的值是跟随计数器的值变化的 为使读得的数正确 有下面两种方法 1 读之前先暂停计数此法是利用GATE信号使计数器暂停计数 或由外部逻辑暂时封锁CLK的输入 然后进行读出 这要求硬件和软件配合 设8253口地址为48H 4BH 要读通道0的计数值 可编程如下 moval 30H 写控制字00110000out4BH alinal 48H 读计数通道0的低8位movbl al 存于寄存器BLinal 48H 读计数通道0的高8位movbh al 存于寄存器BH注意在读之前 应先写控制字 其中控制字的D5D4 11 2 读之前先送计数值锁存命令锁存命令由控制字的D5D4位决定 D5D4 00是锁存命令 锁存哪一个寄存器由控制字的D7D6位决定 此时控制字的低4位可设定为全0 设8253的口地址为E8H EBH 现要求读计数通道1的16位计数值 并假设在读之前已设置控制字为先读 写低8位 再读 写高8位 则可编程如下 moval 40H 锁存命令为40Hout0EBH al 写入通道1控制字寄存器inal 0E9H 读低8位movbl al 存于BLinal 0E9H 读高8位movbh al 存于BH这种方法 必须先执行一次锁存操作 但省去了需要硬件的配合 2 8254的计数值和状态读回多了专门的读回命令字 可以将3个计数器的计数值和状态都进行锁存 并且向CPU返回一个状态字读回命令写入控制端口 而状态字和计数值都通过相应的计数器端口读出 图7 178254的读回命令 图7 188254的状态字 例6 1用8253的计数器0 工作在方式1下 按十进制计数 初值为3040 若该8253的端口地址为388 38BH 请写出初始化程序段 教材P253 例6 2在8253中 读取计数器1的16位计数值 存入CX中 设地址同例6 1 请写出程序段 教材P254 例6 3在8254中 利用读回命令 读回计数器1的16位计数值和状态字 计数值存入CX 状态字存入BL 设地址同例6 1 请写出程序段 教材P254 三 8253 8254的应用实例 图7 198253在PC机中的连接 例1 如图7 19 在IBMPC系列计算机中 用8253的3个计数器进行时钟计时 DRAM刷新定时和控制扬声器发声声调 8253的端口地址分别为40H 41H 42H和43H 输入时钟都为1 193MHz 1 计数器0产生基本时钟MOVAL 36H 计数器0的控制字为00110110OUT43H ALMOVAL 0OUT40H AL 计数器0的初值为0000OUT40H AL由上面初始化程序可见 计数器0工作在方式3下 产生方波 初值为0 也就是最大的65536 则其方波的输出频率为1 193MHz 65536 18 2 DOS系统利用定时器0 通过08号中断服务程序 实现时钟计时功能 2 计数器1控制DRAM刷新在PCXT机中 要求在2ms内对DRAM进行128次刷新 也就是刷新的间隔为2ms 128 15 6us 计数器1输出间隔15us的负脉冲 我们来看计数器1的初始化程序 MOVAL 54H 计数器1的控制字为01010100OUT43H ALMOVAL 18 计数器0的初值为18OUT41H AL由上面初始化程序可见 计数器1工作在方式2 分频器 下 只读写低位 初值为18 由此可知 计数器1的输出频率为 1 193MHz 18 66 278KHz 负脉冲的时间间隔为1 66 278KHz 15us 计数器2控制扬声器利用计数器2的输出 控制扬声器的发声音调 作为机器的报警信号或者伴音信号 例2 8253用作脉冲发生器如图7 20所示 产生重复周期为5 s 脉冲宽度为1 s的输出脉冲 设时钟CLK的频率为2MHz 图7 208253用作脉冲发生器 CLK OUT10 5 s1 sOUT05 s 例2的波形图 解 设想用计数器1作分频器 工作于方式2 以决定脉冲信号的周期 计数器0作单稳 工作于方式1 用于决定脉冲的宽度 计数器1的输出接至计数器0的GATE0 用作单稳的触发信号 由于CLK的周期T 0 5 s 所以计数器1的初值设为10 即10分频 输出OUT1是周期为5 s的 脉冲宽度为0 5 s信号 计数器0的计数初值设定为2 使其输出信号负脉冲的宽度为1 s 再经反相后即为所要求的脉冲信号 设8253的端口地址为80H 86H 偶地址 具体编程如下 moval 00010011B 设置控制字 计数器0为方式1 out86H al 只写低8位 BCD计数moval 2 设置计数器0的计数初值为2out80H almoval 01010101B 计数器1为方式2 只写低8位 out86H al BCD计数moval 10H 设置计数器1的计数初值为10Hout82H al 例3 用8253实现日时钟8253工作在方式3下 其输出是一个周期准确的方波 可以作为定时单位 如CLK0 1 1931816MHz 初值为最大值65536 则计数器0输出的方波频率为 f0 1 1931816MHz 65536 18 2Hz 周期为T0 54 945ms1天 24 60 60 1000ms 54 945ms 1572482 计时单位 0017FE82H 即计满1572482个计时单位 就是1天 同理计满65520是1个小时 计满1092就是1分钟 计满18 2就是1秒钟 具体做法是8253的OUT0输出连到8259的IR0上 8253输出的方波每隔54 945ms申请一次中断 在中断服务程序中做双字变量的加1操作 当低字计到65536时 向高字进位 直至高字计到0017H 低字计到FE82H 就计到24小时 然后清零 开始第二天的计时 其硬件连接如图7 21所示 图中在内存开辟了两个字单元 低字TIMER LO 40H 6CH 和高字TIMER HI 40H 6EH 图7 21时钟运行原理示意图 例4 波特率时钟发生器 要求输入时钟CLK 1 19318MHz 波特率因子F 16 输出波特率分为8挡 110 150 300 600 1200 4800 9600 利用人机对话选择 按ESC键退出 每传输一个二进制位所需要的时钟个数 叫做波特率因子 因此发送时钟TXC 波特率B 波特率因子F 而8253的输出OUT CLK TC 它用做串行通信的发送 接收时钟 即TXC OUT 这里TC为8253的定时常数 即初值 则TC CLK B F 例如B 1200b s F 16 则TC 1 19318 106次 秒 1200位 秒 16次 位 62硬件如图7 22所示 软件编程框图如图7 23所示 具体程序从略 7 2串行通信基础 1 串行通信与并行通信 通信的两种基本方式 a 串行通信 b 并行通信 一 串行通信的基本概念 2 串行通信中的数据传送模式单工 半双工 全双工的数据传送模式 3 波特率 波特率 Baudrate 表示串行数据传送速度 它表示每秒钟传送的二进制位数 单位为bit s bps 每一位的传输时间Td就是波特率的倒数例 若设备每秒传送120帧信息 字符 每帧信息包含 1个起始位 7个数据位 1个奇偶校验位 1个停止位 这是其传送的波特率为多少 解 10位 帧 120帧 秒 1200位 秒 1200波特国际上规定了一个标准波特率系列 即110 300 600 1200 1800 2400 4800 9600和19200波特 串行接口的打印机通常采用110波特 也有采用150波特和300波特 当使用调制解调器在公共电话线上进行远程数据通信时常使用1200波特 线路质量好的城市和地区可达2400波特 4 串行通信中的异步传送与同步传送 异步通信方式ASYNC AsynchronousDataCommunication 1 异步通信的数据 链路控制是面向字符的 即传送的每一组数据构成一个字符 异步通信是字符内的同步 字符间的异步 2 异步通信规程规定 数据流中传送的每个字符必须由起始位 1位低电平 开始 而以停止位结束 1位或 称为一帧 起始位和停止位称为帧位 3 异步传送格式 如下图 1 起始位 是连续一位的低电平 逻辑0 2 数据位 在起始位之后 即发送数据位 数据位通常有4种配置情况 即5 6 7 8位 从低向高传送 3 奇偶校验位 异步通信采用一位奇偶校验位检测错误停止位 表示一个字符发送结束 a 无空闲位 b 有空闲位 例1 试画出用异步协议传送字符 E 的波形图 要求加偶校验位和一位停止位 解 字符 E 的ASCII码为45H 即1000101 其传送的波形图如图8 18所示 同步通信方式 1 在同步通信中 要求发送端在正是发送数据之前 先发送一个同步字符去通知接收端 接收端在收到同步字符后 便开始按照双方约定的格式和速率接收数据 2 同步传送时 由于同步字符的不同 可有不同信息格式 一般分为 1 单同步 只有一个同步字符2 双同步 有两个同步字符3 外同步 没有同步字符 靠外部时钟同步 3 同步通讯格式包括同步字符 数据 CRC校验 1 同步字符 一种同步标志 指示传送数据的开始 同步字符的选择依据是 其位模式要与传送的数据字符有着明显的差别2 数据 指连续传送的信息 每个字符可选择为5 6 7 8位 传送的内容可以是数据信息 也可以是命令信息 3 CRC校验 循环荣誉校验 用于数据传送的检错 不同在于 奇偶校验对一个字符校验 适于异步通信 而CRC对数据块进行校验 适用于同步通信 异步通信与同步通信的主要区别 1 时钟要求同步通信 发送与接受时钟频率精确相等异步通信 发送与接受时钟频率基本相等即可 2 控制信息同步通信 要求对整个数据块附加帧信息 用于高速数据链路异步通信 要求对每个数据字符均附加帧信息 用于低速设备 低速传送 3 校验方式同步通信 采用16位循环荣誉校验码 可靠性高异步通信 采用1位奇偶校验 可靠性相对较低 5 信号的调制和解调 如果要利用电话信道进行远距离传输的话 直接采用数字信号是不能实现的 因为电话信道主要用以传输人的话音信息 在此频带范围以外的直流成分和其它频率分量将因不能通过电话信道传输数字信号 必须采取一些措施 把数字信号转换成适于传输的模拟信号 而在接收端再将模拟信号转换成数字信号 前一种转换称为调制 后一种转换称为解调 完成调制 解调功能的设备叫做调制解调器 Modem 调制解调器的类型比较多 但基本可分为两类 异步调制解调器和同步调制解调器 异步调制解调器适用于异步通信方式 它不提供同步时钟信号 常用的调制方法是频移键控 FSK FrequencyShiftKeying 或称为两态调频 频移键控的基本原理是把 0 和 的两种数字信号分别调制成两个不同频率的音频信号 频移键控调制原理 RS 232C接口环境 二 串行总线标准 RS 232C 1 接口特性 BD 25连接器机械图 RS 232C连接器引脚功能定义 续表 RS 232C常用引脚 2 电气信号特性 RS 232C采用负逻辑电平 规定 1 MARK 传号 逻辑1 控制线的断开状态规定为 3V 15V 2 SPACK 空号 逻辑0 及控制线的接通状态规定为 3V 15V 3 噪声容限为 3 5 V 4 当输入恰好为 3V时 分别确定为空号和传号 当输入端开路时 终端定为传号 RS 232C总线接收器和发送器的连接方法 RS 232发送器 接收器 全双工通信转换电路 典型全双工通信转换电路 串行接口的基本结构 三 串行接口的基本结构与功能 1 输出缓冲寄存器 它接收CPU从数据总线送来的并行数据 并加以保存 2 输出移位寄存器 它接收从输出缓冲寄存器送出的并行数据 以发送时钟的速率把数据逐位移出 3 输入移位寄存器 它以接收时钟的速率把出现在串行数据输入线上的数据逐位移入 当数据装满后 并行送往输入缓冲寄存器中 4 输入缓冲寄存器 它从输入移位寄存器并行接收数据 然后由CPU取走 5 控制寄存器 它接收由CPU送入的控制字 由控制字的内容决定通信时的数据格式以及传输方式等 6 状态寄存器 其中存放着各种状态标志信息 在通信过程中 当符合某种状态时 接口中的状态检测逻辑将状态寄存器的相应位置 让CPU查询 发送数据的过程是 CPU把要输出的数据写入输出缓冲寄存器 然后由接口电路中的发送控制逻辑根据预先写入控制字的内容对数据格式化 对于异步传输方式 即加上起始位 奇偶校验位和停止位等成帧信息 格式化后的数据由输出移位寄存器按选定的传输速率逐位移出 由串行数据输出线输出 接收数据的过程是 串行口允许接收后 接收控制电路不断监视串行数据输入线上的电平 一旦出现持续一个位周期的低电平 则开始采样有效数据位 并逐位移入移位寄存器中 采样重复进行 直至采样规定的停止位为止 然后再将有效数据并行送入输入缓冲寄存器 并由接口电路中的差错检测逻辑对输入数据进行校验 再根据校验结果置状态寄存器相应标志位 如果传送数据正确 则由CPU读取数据 在异步通信时 发送接收端都要用发送 接收时钟来决定每一信息位对应的时间宽度 发送 接收时钟 统称为外部时钟 的频率可以是位传输率的16倍 32倍和64倍 这个倍数称为波特率因子 7 3串行通信芯片8251A 一 8251A的结构 基本功能及工作原理 8251A的结构框图与引脚图 8251A可用于串行的异步或同步两种通信方式 主要性能如下 1 可用于同步和异步传送 2 同步传送 5 8 位 字符 可选择内部或外部同步 可自动插入同步字符 3 异步传送 5 8 位 字符 时钟速率为通信波特率的1 16或64倍 可产生中止字符 BreakCharacter 可产生1 1 5或2位的停止位 可检查假启动位 自动检测和处理中止字符 4 波特率 DC 19 2bit s 异步 DC 64bit s 同步 5 全双工 双缓冲发送和接收器 6 出错检测 具有奇偶 溢出和帧错误等检测电路 7 全部输入输出与TTL电平兼容 单一的 5V电源 单一的TTL电平 28脚双列直插式封装 8 与Intel8080 8085 8086 8088CPU接口兼容 1 接收器 包括接收缓冲器 串并转换逻辑和接收控制电路三个部分复位后寻找启动位 消除假启动干扰 对接收到的信息进行奇偶校验 检测停止位 2 发送器 包括发送缓冲器 并串转换逻辑和发送控制电路三个部分 将并行数据加上相应的控制位 变成串行数据 从引脚发送出去具体作用如下 在异步方式下 为数据加上起始位 校验位和停止位 在同步方式下 插入同步字符 在数据中插入校验位 3 数据总线缓冲器 它用来与CPU的数据总线D0 D7相连 其中含有3个缓冲器 状态字缓冲器 它用来存放8251A内部的工作状态 供CPU查询 测试之用 接收数据缓冲器 用来存放接收器已经装配完毕的字符 准备CPU来读取 发送数据 命令缓冲器 用来寄存CPU送入8251A的数据或命令 4 读 写控制逻辑电路 用以实现对CPU输出的控制信号译码 以控制实现如下表所示的读 写功能 8251读 写控制功能表 8251A与CPU及外设的连接 二 8251A与CPU及外设的连接 1 8251A与CPU之间的接口信号 8251A与CPU间的接口信号分为4种类型 数据信号D0 D7 8251A的8条双向数据总线D0 D7与CPU的数据总线对应相连 读 写和控制信号 RD 为读数据信号 低电平有效 当CPU要从8251A中的读取数据或状态字时产生此低电平有效信号以通知8251A WR 为写数据信号 低电平有效 当CPU要向8251A写入数据或命令字时产生此信号告之8251A 控制 数据端C D 在CPU向8251A送数据信息时为低电平 在送控制字或读取状态字时此端为高电平 TxE TransmitterEmpty 发送器空信号 当它有效 高电平 时 表示发送器中的并行缓冲器空 在同步方式时 若CPU来不及输出一个新字符 则TxE变为高电平 同时发送器在输出线上插入同步字符 以填补传输空隙 RxRDY ReceiverReady 接收器准备好信号 当它高电平有效时 表明8251A已经从串行输入线接收了一个字符 正等待CPU将此数据取走 所以 在中断方式时 RxRDY可作为向CPU申请中断的请求信号 在查询方式时 RxRDY的状态位从CPU查询之用 SYNDET SynchronousDetect 同步检测信号 仅用于同步方式 SYNDET引脚既可以作为输入 也可以作为输出 这取决于初始化程序对8251A设置的是内同步方式还是外同步方式 8251A被复位 RESET 时 SYNDET变为低电平 内同步方式时 SYNDET作为输出端 当8251A已经检测到所要求的同步字符后 此信号变高电平 以指出8251A已达到同步 在外同步方式时 SYNDET作为输入端用 当外设 调制解调器 完成对同步字符检测后 向此输入端送入一个正跳变信号 使8251A在下一个RxC的下降沿开始装配字符 此时要求SYNDET的高电平至少应维持一个RxC周期 直到下一个RxC的下降沿的出现 2 8251A与外部设备 调制解调器 之间的接口信号 DTR DataTerminalReady 数据终端准备好 输出 低电平有效 这是当CPU对8251A输出命令字使控制寄存器D1位置 从而使DTR变为低电平 以通知外设 CPU当前已准备就绪 RTS RequestToSend 请求发送 输出 低电平有效 此信号等效于DTR CPU通过将控制寄存器的D5置 可使RTS低电平有效 用于通知外设 调制解调器 CPU已准备好发送 TxD TransmitterData 发送器发送数据传输线 DSR DataSetReady 数据装置准备好 输入 低电平有效 这是由外设 或调制解调器 送入8251A的信号 用以表示调制解调器或外设的数据已准备好 当DSR端出现低电平时会在8251A的状态寄存器的D7位反映出来 CPU可通过对状态寄存器进行读取操作 可查询D7位即DSR状态 CTS CleartoSend 清除发送 输入 低电平有效 这是由外设 或调制解调器 送往8251A的低电平有效信号 它是对RTS 的响应信号 CTS有效 表示允许8251A发送数据 RxD ReceiverData 接收器接收数据的传输线 RxC ReceiverClock 接收器接收时钟输入端 低电平有效 它控制8251A接收字符的速度 接收器在RxC的上升沿采样数据 在同步方式时 它由外设 或调制解调器 提供 RxC的频率等于波特率 在异步方式时 RxC由专门的时钟发生器提供 其频率是波特率 数据速率 的1 16或64倍 可由初始化时方式选择字设定 实际上 RxC和TxC往往连在一起 用同一个时钟源 TxC TransmitterClock 发送器发送数据速率时钟输入端 TxC的频率与波特率之间的关系同RxC 数据在TxC的下降沿由发送器移位输出 工作方式选择字格式 三 8251A初始化编程举例 8251A控制命令格式 8251A的初始化编程流程图 1 异步方式下的初始化编程举例 例如 设定8251A为异步工作方式 波特率因子 发送 接收数据的时钟速率 为64 每字符有7个数据位 为偶校验 有2位停止位 全双工模式 根据上述通信方式 其方式选择字为11111011B FBH 使接收及发送启动 并使错误标志复位 故控制命令字为00010101B 15H 设8251A的控制端口的地址号为52H C D 端口为高电平 数据端口的地址号为50H C D 端为低电平 则初始化程序如下 MOVAL 0FBH 送方式选择字 OUT52H AL MOVAL 15H 送控制命令字 OUT52H AL 2 同步方式下的初始化编程举例 设8251A设定为同步工作方式 2个同步字符 采用内同步 SYNDET为输出引脚 偶校验 每个字符7个数据位 2个同步字符 它们可以相同 也可不同 本例设两个相同同步字符为23H 使接收器和发送器启动 使状态寄存器中的3个出错标志位复位 通知调制解调器CPU现已准备好进行数据传输 初始化编程如下 MOVAL 38H 设置工作方式 双同步字符偶校验 每字符7个数据位 OUT52H AL MOVAL 23H 连续输出两个同步字符23H OUT52H AL OUT52H AL MOVAL 97H 送位控制命令字OUT52H AL 3 利用状态字进行编程的举例教材P270例6 6 MOVAL 0FAHOUT42H AL 设置模式字 异步模式 波特率因子为16 7个数据位 2个停止位 偶校验MOVAL 35HOUT42H AL 设置控制字 并启动 MOVDI 0 变址寄存器初始化MOVCX 80 共收取80个字符BEGIN INAL 42HTESTAL 02HJZBEGIN 读状态字并测试 INAL 40H 读取字符MOVDX OFFSETBUFFERMOV DX DI AL 传输字符INCDI 修改缓冲区指针INAL 42H 读取状态字TESTAL 38H 测试有无错误 JNZERRORLOOPBEGIN 如没有错 则接收下1个字符JMPEXIT 如满8个字符 则结束ERROR CALLERR OUT 调用出错处理程序EXIT 4 8251A应用举例 8251A作为键盘 显示器接口 1 传送单个字符到CRT的程序 STOCRT MOVAL 5AH 送方式选择字 异步方式 波特率因子为16 每字符7位OUT0DAH AL 数据位 奇校验1位停止位 MOVAL 37H 送控制命令字 启动接收器 发送器 使错误标志位复位 使DTR和RTS输出为低电平 OUT0DAH AL STATE INAL 0DAH 从状态口读状态字 TESTAL 01H 检测TxRDY 1 如不是则等待 JZSTATE 继续检测 MOVAL 4AH 将字符 J ASCIIdcg4AH送到AL OUT0D8H AL 向数据口 D8H 送字符代码 JMPSTATE 重复地输出字符J到CRT 2 8251A接收由键盘输入的一个字符并送往CRT显示 MOVAL 5AH 置方式选择字 OUT0DAH AL MOVAL 37H 置控制命令字 OUT0DAH AL STATE1 INAL 0DAH 检测接收准备好 RxRDY 1 TESTAL 02H 如不是则等待 继续检测 JZSTATE1 INAL 0D8H 从8251A数据口接收一个字符 MOVBL AL 将这个字符暂存于BL寄存器 7 4并行数据通信接口技术 通用接口可分为并行接口和串行接口两大类 并行传送是把一个字节或多个字节用多条信号线同时进行传输 即并行接口是按字节传送的 串行接口和CPU之间按并行传送 而和外设之间是一个二进制位一个二进制位的传送 即串行接口是按位传送的 如下图所示 1 并行接口的基本组成 两个或两个以上的具有缓冲能力的数据寄存器 可供CPU访问的控制及状态寄存器 片选和内部控制逻辑电路 与外设进行数据交换的控制和联络信号线 与CPU用中断方式传送数据的相关中断控制 一 并行接口的组成及其与CPU和外设的连接 2 与CPU的连接与CPU的连接主要是双向数据总线 读 写控制线 复位信号 中断请求以及状态信号和地址译码产生的片选信号 3 与外设的连接与输入设备的连接 并行输入数据线 数据传输应答信号 输入准备好和输入回答信号 与输出设备的连接 并行输出数据线 数据传输应答信号 输出准备好和输出回答信号 1 数据输入 外设将数据传送到并行接口 同时给出 输入数据准备好 信号 接口把数据接收到输入缓冲寄存器 给出 输入回答 信号 高电平 到外设 若采用中断方式 则接口向CPU发中断请求信号 并使状态寄存器中的 输入缓冲器满 位置1 也可以用查询方式 二 并行接口的数据输入输出过程 CPU响应接口的中断请求 或查询相应的状态位 在中断服务程序中执行IN指令读取接口中的数据 接口给外设的 输入回答 信号变成低 通知外设可输入新的数据 此后转到 开始下一个数据的输入过程 2 数据输出 CPU执行OUT指令把数据写到接口 中断或查询都可以 接口向外设发出 输出准备好 信号 通知外设可以把数据取走 外设取走数据后 向接口发 输出回答 信号 接口向CPU发出新的中断请求 并使状态寄存器中的 输出缓冲器空 位置1 要求CPU输出新的数据 转到 开始下一输出过程 三 可编程并行通信接口芯片8255A 8255是Intel公司为其80系列微处理器生产的8位通用可编程并行输入输出接口芯片 它具有很强的功能 在使用中可利用软件编程来指定它将要完成的功能 因此 8255获得了广泛的应用 1 8255A的内部结构三部分 外设接口部分内部逻辑部分CPU接口部分 8255的内部结构框图 1 数据总线缓冲器这是一个8位双向三态数据缓冲器 是8255A与CPU之间的数据接口 是它们之间互相交换信息的必经之路 2 并行输入输出端口A 端口B 端口C端口A具有一个8位数据输入锁存器和一个数据输出锁存器 缓冲器 端口B具有一个8位数据输入缓冲器和一个数据输出锁存器 缓冲器 端口C具有一个8位数据输入缓冲器和一个数据输出锁存器 缓冲器 一般作为控制或状态信息端口 3 A组控制电路和B组控制电路控制端口A与端口C的高4位 PC7 PC4 控制端口B与端口C的低4位 PC3 PC0 它们各有一个控制单元接收来自读写控制部件的命令和CPU通过数据总线送来的控制字 并根据控制字来定义各端口的工作方式 以及可以根据CPU的命令字对通道C的每一位置位或复位 4 读写控制部件该部件用于接收CPU的控制命令 根据这些命令向片内各功能部件发出操作命令 共有6个信号 CS是片选信号 通常由高位地址译码产生 RD和WR是CPU来的读写信号 RESET是复位信号 复位后 清除所有寄存器内容 并将各端口置成输入方式 A1 A0为地址信号 用于选择8255内部的端口 这6个信号的组合所完成的操作如下表所示 8255A的操作 2 引线及功能 共有40条引线 电源与地线2条 与外设相连的有24条 与CPU相连的有14条 D0 D7 双向数据信号线 RD 读信号线 WR 写信号线 CS 片选信号线 A0 A1 口地址选择信号线 00 A端口 01 B端口 10 C端口 11 控制口 RESET 复位输入信号 复位时三个端口自动置为输入口PA0 PA7 A口的8条输入输出信号线 PB0 PB7 B口的8条输入输出信号线 PC0 PC7 C口的8条输入输出信号线 8255有三种工作方式 方式0 基本输入输出方式方式1 选通输入输出方式方式2 双向传送方式三种工作方式均可由用户编程来选定 即由编程送入控制口内的不同控制字来选定 3 8255A的三种工作方式8255有3种工作方式 这些工作方式可用软件编程来指定 这里我们首先对每一种工作方式进行说明 1 工作方式0 基本输入输出方式 此方式下无固定的联络信号 A口 B口 C口的高4位和低4位可以分别设置成输入或输出 此方式适用于无条件地传送数据 如读一组开关状态 控制一组指示灯 CPU可随时速如开关状态 随时可把一组数据送到指示灯显示 而无需 选通 和 状态 信号 不必等待中断请求信号 在这种方式下 每一个端口都可由程序设计为输入或输出 方式0 基本的输入或输出工作方式方式0的基本功能 1 具有两个8位口 A B口 两个4位口 C口的上半部分和下办部分 2 任一端口都可以作为输入输出3 输出是锁存的 输入是不锁存的4 由于方式控制字中D4 D0四位均可规定各口的输入或输出 所以在方式0时 所有端口的输入 输出可以有16种不同的组合5 此方式无中断功能 在作查询方式工作时 可将C口的某些位作为传送控制和状态信息 A口和B口作为数据口 2 工作方式1 字节选通I O方式 在这种方式下 A口或B口仍作为数据的输入 输出口 同时规定C口的某些位作控制或状态信息 起应答联络和中断请求的作用 C口剩下的线作为I O线使用 方式1 选通的输入输出方式方式1的主要功能 一个或两个选通的8位数据端口每个端口含有三条控制线 是固定制定的 不能用程序改变 提供中断逻辑 任一个端口都可以作为输入或输出 若只有一个端口工作于方式1 余下的13位可以工作在方式0若两个端口都工作于方式1 端口C还剩下两位 这两位可以由程序指定作为输入或输出 也具有置位 复位功能 a 方式1输入A口工作于方式1输入 固定用PC5 PC3作联络信号线 B口工作于方式1输入 固定用PC2 PC0作联络信号线 各端口的功能如下图 所用到的控制信号的定义如下 STB为低电平有效的输入选通信号 由外设提供的输入信号 当它有效时 把输入装置来的数据送入输入锁存器 IBF为高电平有效的输入缓冲器满信号 通知外设送来的数据已被接收 由STB信号的前沿产生 当CPU用输入指令读走数据后 此信号被清除 INTR为中断请求信号 高电平有效 CPU响应中断请求后在服务程序中读走数据时 由RD信号将其清除 INTE为中断允许状态 可事先用位控方式写入 b 方式1输出A口工作于方式1输出 所用的联络信号线为PC7 PC6 PC3 B口工作于方式1输出 所用的联络信号线为PC2 PC0 如下图 各信号作用如下 OBF为输出缓冲器满信号 低电平有效 ACK为外设响应信号 低电平有效 INTR为中断请求信号 高电平有效 INTE为中断允许状态 3 工作方式2 双向输入输出方式 为双向I O方式 即同一端口的I O线可以作为输入也可以作为输出 只有A口工作于方式2 此时C口有5条线被固定为A口和外设之间的联络信号线 C口余下的3条线可以作为B口方式1下的联络线 也可以和B口一起成为方式0的I O线 工作方式2 双向输入输出方式 方式2的主要功能 方式2只适用于A口一个8位的双向总线端口 用于数据传送 一个5位的控制端口C 用于A口的控制和状态 输入和输出是锁存的当A口工作在方式2时 C口PC3 PC7五位用作双向工作口以及中断控制 其控制信号含义与方式1中相应控制信号意义相同 注意 由于A口的输入锁存器和输出锁存器是互相独立的 故当CPU向A口输出数据时 外部设备也可同时向A口输入数据 反之亦然 方式2下的信号定义 INTRA 中断请求信号 高电平有效 INTE1 A口内部输出中断允许触发器 可由软件通过对PC6置位或复位来允许或禁止 INTE2 A口内部输入中断允许触发器 可由软件通过对PC4置位或复位来允许或禁止 其他信号意义与方式1时相同 A口方式2实际上是A口在方式1下输入输出的组合 所需的5根联络线和方式1是一样的 只是中断请求只需要一根线 4 8255A编程 1 8255A的控制字控制位的作用如右图 当D7 1 是方式控制字的特征位 用输出指令将方式控制字写入8255A后 被控制寄存器中 当D7 0 允许CPU用输出指令单独对C口某一位写1或0注意 位控字是通过向8255A的控制寄存器写入的 不是直接对C口写入 C口的按位操作控制字格式 教材P279例6 7假设某8255A的芯片端口地址为FF80H FF83H A端口工作在方式0 输出 B端口工作于方式1 输入 请写出初始化程序段 解 根据方式控制字的格式 控制字应该是 1000 11 在本例中C端口高位没有用 C端口PC2 PC0用来配合B端口工作 而PC3没有用 程序段如下 MOVDX 0FF83HMOVAL 86H 没有用到的几位都写0OUTDX AL 教材P280例6 88255A的端口地址同例6 7 要求对端口C的PC2置1 解 根据端口C置0 置1控制字格式 控制字应该是00000101MOVDX 0FF83HMOVAL 05H 没有用到的几位都写0OUTDX AL 2 8255A的状态字8255A的状态字为查询方式提供了状态标志位 8255A工作于方式1或方式2时的状态字可通过读端口C得到 状态字为查询方式提供了状态标志位 如输入缓冲器满信号IBF 输出缓冲器满信号OBF等 方式1输入状态字格式 A组B组方式1输出状态字格式 A组B组 C口A组状态B组状态A组方式2输入输出B组方式0B组方式1输入时输出时 5 8255与8088连接示意图 8255与8088系统总线连接方法 6 8255A的应用实例 1 在PC XT上的应用教材P280 2 8255A作为开关和LED的接口教材P280 3 8255A作为并行打印机的接口教材P282
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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


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

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


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