第八章常用数字接口电路.ppt

上传人:本田雅阁 文档编号:2981152 上传时间:2019-06-17 格式:PPT 页数:117 大小:1.46MB
返回 下载 相关 举报
第八章常用数字接口电路.ppt_第1页
第1页 / 共117页
第八章常用数字接口电路.ppt_第2页
第2页 / 共117页
第八章常用数字接口电路.ppt_第3页
第3页 / 共117页
第八章常用数字接口电路.ppt_第4页
第4页 / 共117页
第八章常用数字接口电路.ppt_第5页
第5页 / 共117页
点击查看更多>>
资源描述

《第八章常用数字接口电路.ppt》由会员分享,可在线阅读,更多相关《第八章常用数字接口电路.ppt(117页珍藏版)》请在三一文库上搜索。

1、主要内容:,7.1 接口电路概述 7.2 可编程定时/计数器8253 7.3 并行接口8255 7.4 可编程串行通信接口8250,第7章 常用数字接口电路,目的:,掌握两种可编程接口芯片的应用 了解串行通信的一般概念,7.1 接口电路概述,CPU与外设之间信息交换的通道 信息缓冲、信息变换、电平转换、联络控制 分类: 8086系统中最常用的数字接口电路芯片: 8253、8255、8250,7.2 可编程定时/计数器8253,掌握: 引线功能及计数启动方法 6种工作方式及其输出波形 应用: 芯片与系统的连接 芯片的初始化编程,定时器和计数器,它们都是由数字电路中的计数电路构成 定时器由数字电路

2、中的计数电路构成,通过记录高精度晶振脉冲信号的个数,输出准确的时间间隔 计数电路如果记录外设提供的具有一定随机性的脉冲信号时,它主要反映脉冲的个数(进而获知外设的某种状态),常又称为计数器,定时/计数器的用途,可以实现定时与计数两个功能,可用于 系统时钟 DRAM刷新定时 定时采样 实时控制 脉冲的计数 。,定时功能的实现方法,软件延时 利用微处理器执行一个延时程序段实现 不用硬件,但占用CPU时间、定时精度不高,随系统时钟频率改变 不可编程的硬件定时 采用分频器、单稳电路或简易定时电路控制定时时间 定时电路简单、定时时间可以在一定范围改变 可编程的硬件定时 软件硬件相结合、用可编程定时器芯片

3、构成一个方便灵活的定时电路 具有多种工作方式、能够输出多种控制信号,8253是一种硬件定时/计数器芯片,一、基本功能及内部结构,3个16位的定时/计数器(通道) 每个计数器均可按二进制或二十进制计数 计数器速率可达2MHz 可编程6种不同的工作方式 所有输入和输出都与TTL电平兼容,外部引线,DB,D7-D0,8253,A1,A0,WR,RD,CS,通道2,通道1,通道0,CLK0 GATE0 OUT0,CLK1 GATE1 OUT1,CLK1 GATE1 OUT1,A1 A0,IOW IOR 片选信号,连接系统端的主要引线: D7D0 CS RD WR A1,A0 用于选择四个编址部件之一,

4、A1 A0 选 择 0 0 计数通道0 0 1 计数通道1 1 0 计数通道2 1 1 控制寄存器,计数通道的主要引线(每通道均相同): CLKn 时钟脉冲输入,计数器的计时基准。 GATEn 门控信号输入,控制计数器的启停。 OUTn 计数器输出信号,不同工作方式下 产生不同波形。 (n=02),8253的内部结构,编程结构程序员的观点,计数器(3个)包括 控制寄存器 存放控制命令字(只写) 占用4个地址 3个计数器,1个控制寄存器,16位初值寄存器 16位计数寄存器,(减法计数器),定时/计数的工作过程,1. 设置8253的工作方式 2. 设置计数初值到初值寄存器 3. 第一个CLK信号使

5、初值寄存器的内容置入 计数寄存器 4. 以后每来一个CLK信号,计数寄存器减1 5. 减到0时,OUT端输出一特殊波形的信号 注:以上计数过程中还受到GATE信号的控制,二、计数启动方式,软件启动过程 硬件启动过程,GATE端保持为高电平 写入计数初值后的第2个 CLK脉冲的下降沿开始计数,GATE端有一个上升沿 对应CLK脉冲的下降沿开始计数,程序指令启动软件启动 外部电路信号启动硬件启动,三、工作方式,方式0计数结束中断 方式1可重复触发的单稳态触发器 方式2频率发生器 方式3方波发生器 方式4软件触发选通 方式5硬件触发选通,方式0 方式1,软件启动,不自动重复计数。 装入初值后OUT端

6、变低电平, 计数结束OUT输出高电平。,硬件启动,不自动重复计数。 装入初值后OUT端变高电平,计数开始OUT端变为低电平,计数结束后又变高。,(计数结束中断),(单稳态触发器),方式2 方式3,软、硬件启动,自动重复计数。 装入初值后OUT端变高电平,计数到最后一个CLK时OUT输出负脉冲,并连续重复此过程。,软、硬件启动,自动重复计数。 装入初值后OUT端变高电平, 然后OUT连续输出对称方波:,(频率发生器),(方波发生器),前 N/2或(N+1)/2 个CLK,OUT为高,后N/2或(N-1)/2 个CLK, OUT为低。,方式4 方式5,软件启动,不自动重复计数。 装入初值后输出端变

7、高电平, 计数结束输出一个CLK宽度的负脉冲,硬件启动,不自动重复计数。 OUT端波形与方式4相同,(软件触发选通),(硬件触发选通),方式0:计数结束中断, 设 定 工 作 方 式, 设 定 计 数 初 值, 计 数 值 送 入 计 数 器, 计 数 过 程, 计 数 结 束,方式1:可编程单稳脉冲, 设 定 工 作 方 式, 设 定 计 数 初 值, 硬 件 启 动, 计 数 值 送 入 计 数 器, 计 数 过 程, 计 数 结 束,方式2:频率发生器(分频器),方式3:方波发生器,方式4:软件触发选通信号,方式5:硬件触发选通信号,各种工作方式的输出波形,各种工作方式特点,方式0(计数

8、结束中断) 计数过程中,GATE端应保持高电平。 每写入一次初值计数一个周期,然后停止计数。 OUT端输出是一个约(N+1)TCLK宽度的负脉冲。 计数过程中可随时修改初值重新开始计数。 方式1(单稳态触发器) 门控信号GATE端的跳变触发计数,可重复触发。 若下一次GATE上升沿提前到达,则OUT端负脉冲拉宽为两次计数过程之和。 计数过程中写入新初值不影响本次计数。,方式2(频率发生器) GATE为计数的控制信号:GATE变低计数停止,再变高时的下一个CLK下降沿,从初值开始重新计数。 每个计数周期结束时(减到1时),OUT端输出一个TCLK宽度的负脉冲。 计数过程自动重复进行。 计数过程中

9、修改初值不影响本轮计数过程。 方式3(方波发生器) OUT输出方波,前半周期为高,后半周期为低。 计数过程中修改初值不影响本半轮计数过程。 其余的与方式2 类似。,方式4(软件触发选通) 计数过程中,GATE端应保持高电平。 每写入一次初值,计数一个周期,然后停止计数。 每个计数周期结束时(减到0时),OUT端输出一个TCLK宽度的负脉冲。 计数过程中修改初值不影响本轮计数过程。 方式5(硬件触发选通) 写入初值时,GATE端应保持低电平。 GATE每出现一次正脉冲,计数一个周期,然后停止计数。 每个计数周期结束时(减到0时),OUT端输出一个TCLK宽度的负脉冲。 计数过程中修改初值不影响本

10、轮计数过程。,四、控制字,用于确定各计数器的工作方式。 8253必须先初始化才能正常工作。 每个计数器都必须初始化一次。 CPU通过OUT指令把控制字写入控制寄存器。,控制字,00 计数器0 01 计数器1 10 计数器2 11 非法,00 计数器锁存命令 01 只读写低字节 10 只读写高字节 11 先读写低字节 后读写高字节,000 方式0 001 方式1 010 方式2 011 方式3 100 方式4 101 方式5,0 二进制 1 十进制,控制字写入控制字I/O地址(A1A011),五、8253的应用,与系统的连接 设置工作方式 置计数初值,编程,与系统的连接示意图,CLK,GATE,

11、OUT,D0D7,WR,RD,A1,A0,CS,DB,IOW,IOR,A1,A0,译码器,高位地址 A15-A2,8253,8253占用4个接口地址: 计数器0 计数器1 计数器2 控制寄存器,(决定8253的基地址),共三组,初始化程序流程,写控制字,写计数值低8位,写计数值高8位,*,非必须,写入顺序: 可按计数器分别写入控制字和初值。 也可先写所有计数器控制字,再写入它们的初值,写入计数值,选择二进制时 计数值范围:0000HFFFFH 0000H是最大值,代表65536 选择十进制(BCD码) 计数值范围:00009999 0000代表最大值10000,计数值写入计数器各自的I/O地址

12、,读取计数值,对8位数据线,读取16位计数值需分两次 计数在不断进行,应该将当前计数值先行锁存,然后读取: 向控制字I/O地址:给8253写入锁存命令 从计数器I/O地址:读取锁存的计数值,读取计数值,要注意读写格式和计数数制,8253应用举例,采用8253作定时/计数器,其接口地址为0120H0123H。 要求计数器0每10ms输出一个CLK脉冲宽的负脉冲;用计数器1产生10KHz的连续方波信号,计数器2在定时5ms后产生输出高电平。输入8253的时钟频率为2MH。 要求:画线路连接图,并编写初始化程序。,确定计数初值: CNT0: 10ms/0.5us = 20000 CNT1: 2MHz

13、/10KHz = 200 CNT2: 5ms/0.5us = 10000 确定控制字: CNT0:方式2,16位计数值 0011 0100B(34H) CNT1:方式3,低8位计数值 0101 0110B(56H) CNT2:方式0,16位计数值 1011 0000B(B0H),计算计数初值: 输入时钟频率为2MHz, 其周期为: 1/2000000=0.5us(5微秒),CLK0,GATE0,OUT1,D0D7,WR,RD,A1,A0,CS,DB,IOW,IOR,A1,A0,译码器,8253,CLK2,GATE1,GATE2,+5V,CLK1,2MHz,OUT0,OUT2,?,线路连接图:,

14、初始化程序,CNT0: MOV DX, 0123H MOV AL, 34H OUT DX, AL MOV DX, 0120H MOV AX, 20000 OUT DX, AL MOV AL, AH OUT DX, AL,CNT1: MOV DX,0123H MOV AL,56H OUT DX,AL MOV DX,0121H MOV AX,200 OUT DX,AL,CNT2: MOV DX,0123H MOV AL,0B0H OUT DX,AL MOV DX,0122H MOV AX,10000 OUT DX,AL MOV AL,AH OUT DX,AL,*如何读出当前计数值,第1种方法在计数

15、过程中读计数值 先锁存当前计数值,再用两条输入指令将16位计数值读出。 第2种方法停止计数器再读 用GATE信号使计数器停止,再规定RL1和RL0的读写格式,然后读出。,*扩展定时/计数范围,当定时长度不够时,可把2个或3个计数通道串联起来使用,甚至可把多个8253串联起来使用。 例如:CLK频率为1MHz,要求在OUT1端产生频率1Hz的脉冲。 这时可将计数器0、1串联,工作方式都均为方式3,计数初值均为1000。连接方法见下页。,扩展定时/计数范围,8253,OUT1,GATE1,CLK1,OUT0,GATE0,CLK0,+5V,+5V,1MHz,1KHz,1Hz,8253小结,包含3个1

16、6位计数器通道 4个编址部件:CNT0/1/2和控制寄存器 每个计数器通道工作前必须初始化: 控制字和计数初值 6种工作方式 每种工作方式:启动方式、输出波形、是否可重复计数等各不相同,8253的I/O地址,0 1 0 0 0,0 1 0 0 1,0 1 0 1 0,0 1 0 1 1,0 0 1 0 0,0 0 1 0 1,0 0 1 1 0,功 能,对计数器0设置计数初值,A1,A0,对计数器1设置计数初值,对计数器2设置计数初值,设置控制字,从计数器0读出计数值,从计数器1读出计数值,从计数器2读出计数值,7.3 并行接口8255,特点: 含3个独立的8位并行输入/输出端口,各端口均具有

17、数据的控制和锁存能力 可通过编程设置各端口的工作方式和数据传送方向(入/出/双向)。,一、引线,共40个引脚,连接系统端的主要引线: D0D7 CS RD WR A0,A1 RESET复位信号,接系统总线的RESET,A1 A0 选择 0 0 端口A 0 1 端口B 1 0 端口C 1 1 控制寄存器,连接外设端的引脚: PA0PA7 PB0PB7 PC0PC7,分别对应A、B、C三个8位输入/输出端口,三个端口可通过编程分别指定为输入或输出口。其中,C口即可用作独立的输入/输出口,也可用作A、B口的控制信号输出或状态信号输入。,二、结构,A组 B组,端口A 端口C的高4位,端口B 端口C的低

18、4位,8255与系统的连接示意图,D0D7,WR,RD,A1,A0,CS,DB,IOW,IOR,A1,A0,译码器,8255,A口,B口,C口,D0D7,外 设,A15A2,系统总线,三、8255工作方式,基本输入/输出方式(方式0) 选通工作方式(方式1) 双向传送方式(方式2)(仅A口),某端口工作于哪一种方式,可通过软件编程来指定。即向8255写入方式控制字来决定其工作方式,见下页。,方式控制字及位控字,可以利用软件编程确定8255的3个端口工作于何种方式下; 8255的C端口可以按位操作。当其工作于方式0下且作为输出口时,对于那些作为输出的位需要设置初始状态(1/0)。,方式控制字与位

19、控字格式,控制字确定3个端口的工作方式 位控字确定C口某一位的初始状态, 或用于设置INTE位(方式1,2)。,工作方式0,8255相当于三个独立的8位简单接口。 各端口既可设置为输入口,也可设置为输出口,但不能同时实现输入及输出。 C端口即可以是一个8位的简单接口,也可以分为两个独立的4位端口。 设置为输出口时有锁存能力,设置为输入口时无锁存能力。,方式0的应用:,用于连接简单外设。 适用于: 无条件输入输出方式。 查询输入输出方式:把A、B口作为8位数据的输入或输出口,C口的高/低4位分别定义为A、B口的控制位和状态位。,工作方式1,利用一组选通控制信号控制A端口和B端口的数据输入输出。

20、A、B口作输入或输出口,C口的部分位固定用作A、B口的选通控制信号。 A口、B口在作为输入和输出时的选通信号不同。,输入,输出,C口的信号功能(方式1输入),STB#选通信号。它将外设数据送入8255的输入锁存器。 IBF输入锁存器满。通知外设不能送下一个数据。此信号由STB的前沿产生。CPU用IN指令取走数据后,此信号被清除。 INTR中断请求。STB#的后沿产生,用于中断CPU,让CPU读走输入锁存器中的数据。 INTE中断允许位,是否允许发出INTR请求。INTE =1和IBF为高电平时,允许发出INTR请求。,C口的信号功能(方式1输出),OBF#通知外设取走数据。 ACK#外设响应信

21、号,表示已从数据端口取走数据。此信号使OBF变高。 INTRACK#上升沿产生,通知CPU输出下一个数据(通常接到8259)。 INTE中断允许位,INTE=1和OBF#为高电平时,允许产生INTR信号。,注意:,INTE的状态可利用C口的位控方式来设置: 输入: A口的INTE:写入PC4 B口的INTE:写入PC2 输出: A口的INTE:写入PC6 B口的INTE:写入PC2 例:方式1输入允许A口中断,则应按如下方法设置INTEA。 MOV DX,控制寄存器地址 MOV AL,0xxx1001B ;1=允许中断,0=禁止中断 OUT DX,AL,方式1的应用:,主要用于中断控制方式下的

22、输入输出。 C口除部分位用作选通信号外,其余位可工作在方式0下,作为输入或输出线。 特别是A、B均为方式1时仅使用C口的6条线,余下二条线可作为单独的输入输出线,用程序指定其数据传送方向。,工作方式2,双向方式既是输入口,又是输出口。 利用C口的5条线提供传输联络信号。 类似于A口方式1下输入和输出的组合。 只有A口可工作在方式2下。 INTE1为PC.bit6,INTE2为PC.bit4。,方式2的应用:,可用于中断控制输入输出方式。 当A口工作于方式2时,B口可工作于方式1(此时C口的剩余位都用作B口选通控制线);B口也可工作于方式0(此时C口的剩余位也只能用作方式0下的输入输出线)。,四

23、、8255芯片的应用,芯片与系统的连接 芯片的初始化 相应的控制程序,8255应用举例1,利用8255实现开关检测和继电器控制电路; 当开关闭合时,使继电器通电动作;开关断开时,继电器不动作; 系统每隔100ms检测一次开关状态,实现相应的继电器控制; 初始状态下继电器不动作。,CS,A0,A1,WR,RD,DB,PA0,PA7,PB0,PB7,+5V,+12V,K,继电器,384H387H,388H38BH,CS,A0,A1,OUT1,CLK1,2MHz,CLK0,OUT0,8259A PIC,WR,RD,DB,8253,8255,中断请求信号,INTR,Q1,R1,R2,D1,题目分析:,

24、使8255的A端口和B端口均工作于方式0; 8253计数器0和计数器1均工作于方式3,利用OUT0的输出作为计数器1的时钟信号,其输出频率为2KHz, OUT1输出频率为10Hz(周期100ms); OUT1作为中断信号,每100ms产生一次中断; CPU响应中断后检测开关状态,控制继电器的动作; 8253两个计数器的计数初值分别为: CNT0:2MHz/2KHz =1000 (16位) CNT1:100ms/0.5ms=200 (8位),8255的初始化,MOV DX,387H MOV AL,82H ;1 00 0 0 0 1 0 OUT DX,AL XOR AL,AL ;A口输出全0 MO

25、V DX,384H OUT DX,AL,8253的初始化,设置工作方式: MOV DX,38BH MOV AL,36H OUT DX,AL MOV AL,56H OUT DX,AL 36H = 00 11 011 0 CNT0 16位 方式3,置计数初值: MOV DX,388H MOV AX,1000 OUT DX,AL MOV AL,AH OUT DX,AL MOV DX,389H MOV AL,200 OUT DX,AL,8255的控制程序(中断处理),(中断初始化程序略) 8253中断服务程序中的8255控制程序段如下: MOV DX,385H ;PB口地址 IN AL,DX ;读PB

26、0状态 NOT AL ;变反 MOV DX,384H ;输出到继电器 OUT DX,AL ,7.4 可编程串行通信接口,了解: 串行通信的一般概念 工作方式、同步方式、数据格式、物理标准 串行通信的接口标准 EIA RS-232C 可编程串行异步通信接口8250(UART) 连接、编程、应用 UART: Universal Asynchronous Receiver Transmitter,7.4.1串行通信基本概念,串行通信: 每个时间单位仅传送一位信息; 每个字符(字节)的各位依次传送; 字符之间的间隔不定。 优点: 传输线少,成本低,传输距离远,1.串行通信工作方式,单工通信只能由一方发

27、送,例:广播 半双工通信某一时刻只能由一方发送,例:对讲机 全双工通信双方可同时传输,例:电话,单工/双工操作,发送器,接收器,发送器/接收器,发送器/接收器,发送器/接收器,发送器/接收器,单工方式:,半双工方式:,全双工方式:,A站,B站,电话网络模拟信号,计算机数字信号。 远距离通信时需要通过普通电话网络传输 数字信号:频带宽 电话网络:频带窄 要使数字信号在电话网络上传输,需要进行信号变换把数字信号承载到模拟信号上传输,这个模拟信号称为载波信号。 调制把数字信号承载到载波信号上 解调从载波信号中恢复出数字信号 调制解调器:实现调制与解调的设备,2. 调制与解调,三种调制方式,根据载波

28、Acos(t + )的三个参数:幅度、频率、相位,产生常用的三种调制技术: 幅移键控法 Amplitude-Shift Keying (ASK) 频移键控法 Frequency-Shift Keying (FSK) 相移键控法 Phase-Shift Keying (PSK) ASK (又称为调幅) 用载波信号的不同幅度代表1和0 FSK (又称为调频) 用载波信号的不同频率代表1和0 PSK (又称为调相) 用载波信号的相位变化代表1和0(有变化为1,无变化为0),0,0,1,1,0,1,0,0,0,1,0,调幅,调频,调相,数字信号,数字数据,三种调制方式的调制波形图,串行通信主要用于远距

29、离数据传输。 问题:干扰、衰减,信号畸变 解决方法:差错控制技术检测、纠正 常用的数据校验方法: 奇偶校验: 以字符为单位进行校验 发送方使发送的每个字节中1的个数为奇数或偶数;接收方检查收到的每个字节中1的个数是否符合双方的事先约定。 奇偶校验可以检查出一个字节中发生的单个错误。 奇偶校验不能自动纠错,发现错误后需“重传”。,3. 数据校验,循环冗余校验CRC (循环冗余码/多项式编码) 以数据块(帧, Frame)为单位进行校验 编码思想:将数据块构成的位串看成是系数为0或1的多项式 如110001,可表示成多项式 x5 + x4 + 1 数据块构成的多项式除以另一个多项式G(x),得到的

30、余数多项式R(x)就称为CRC码(或称为校验和),而G(x)则称为生成多项式。 CRC校验的检错方式: 收发双方约定一个生成多项式G(x),发送方在帧的末尾加上校验和,使带有校验和的帧的多项式能被G(x)整除;接收方收到后,用G(x)去除它,若余数为0,则传输正确,否则传输有错。,数据校验,CRC校验和计算方法 若G(x)为r阶,原帧为m位,其多项式为M(x),则在原帧后面添加r个0,帧成为m+r位,相应多项式2rM(x) 按模2除法用2rM(x)除以G(x):商Q(x),余R(x) 即 2rM(x) = G(x)Q(x)+R(x) 按模2加法把2rM(x)与余数R(x)相加,结果就是要传送的

31、带校验和的帧的多项式T(x) T(x) = 2rM(x) + R(x) 实际上,T(x) = 2rM(x) + R(x) = G(x)Q(x) + R(x) + R(x)= G(x)Q(x) (模2运算) 所以,若接收的T(x)正确,则它肯定能被G(x)除尽。,数据校验,数据校验,CRC校验码的检错能力: 可检出所有奇数个错 可检出所有单位/双位错 可检出所有G(x)长度的突发错 常用的生成多项式: CRC12 = x12+x11+x3+x2+1 CRC16 = x16+x15+x2+1 CRC32 =x32+x26+x23+x22+x16+x11+x10 +x8+x7+x5+x4+x2+x+

32、1,4.同步通信与异步通信,所有串行通信都需要一个时钟信号来作为数据的定时参考。发送器和接收器用时钟来决定何时发送和读取每一个数据位。 根据传输时采用的是统一时钟还是本地局部时钟,分为同步传输和异步传输两种。 同步传输用一个时钟脉冲确定一个数据位, 异步传输用多个时钟脉冲确定一个数据位(如16个) 同步传输以数据块(当作“位流”看待)为单位传输,异步传输以字符为单位传输,但都称为帧(Frame),同步通信的时钟定时方法,数据(62H),0,1,1,0,0,0,1,0,同步传输先发送高位(MSB),发送方在时钟信号的下降沿发送字节,接收方在时钟信号的上升沿接收字节,时钟 (发送时钟与接收时钟完全

33、同步),LSB,MSB,异步通信的时钟定时方法,数据 (62H),0,0,0,0,1,1,停止位,异步传输先发送低位(LSB),发送方利用发送时钟来决定发送每个位的时刻,接收方检测起始位的下降沿,并用它来同步接收时钟,然后利用接收时钟从每一位的中间接收该位,1,起始位,LSB,MSB,0,奇偶 校验位,0,0/1,1 1,接收/发送 时钟,异步通信时数据位的检测,发送/接收时钟周期:Tc,数据位间隔:Td Tc = Td / K, 其中K称为波特率因子(16,32,64),异步通信的一般格式,每个字符由起始位、数据位、校验位、停止位构成。 起始位和停止位用于字符的同步。,7.4.2 串行通信的

34、接口标准,机械特性:连接器的尺寸、引脚分布 信号特性:信号电平、通信速率 功能特性:引脚功能、控制时序 最常见的串行通信标准是RS-232C。,RS-232C标准,外形为25针或9针的D型连接器 通信速率:波特率Baud(符号数/s) 100、300、600、1200、2400、4800 9600、19.2K、33.6K、56K 信号电平: 逻辑“1”:-3V-15V 逻辑“0”:+3V+15V TTL电平与RS232电平转换: TTLRS232: MC1488 RS232TTL: MC1489,主要引脚的功能,信号时序(接收),设备握手 DTR:PCM(保持,表示PC已可以工作) DSR:P

35、CM(保持,表示M已可以工作) 监视载波信号 DCD:PCM载波(表示数据链已建立) 接收数据 RD: PCM数据调制信号 结束通信 DCD消失、PC撤除DTR、Modem撤除DSR,信号时序(发送),设备握手 DTR:PCM(保持) DSR:PCM(保持) 请求发送 RTS:PCM(保持),M载波,在对方产生DCD CTS:PCM(保持) 发送数据 TD:PCM数据调制信号 结束通信 PC撤除RTS/DTR Modem撤除CTS/DSR,停止发送载波,RS-232C接口连接方式,一种简化的连接方式(Null Modem) 适用于双机直连,TD RD RTS CTS DCD GND DTR D

36、SR RI,TD RD RTS CTS DCD GND DTR DSR RI,7.4.3 可编程串行通信接口8250,主要内容: 1)8250的引脚及功能 2)与系统的连接 3)内部结构与内部寄存器 4)8250的编程,1. 8250 的引脚及功能,面向系统的引脚: D0D7 双向数据线。与系统数据总线DB相连接,用以传送数据、控制信息和状态信息。 CS0,CS1,CS2 片选信号,当它们同时有效时,该8250芯片被选中。 CSOUT 片选输出信号。当8250的CS0、CS1和CS2同时有效时,CSOUT为高电平。 MR 主复位信号。,A0A2 8250内部寄存器的选择信号。不同的编码对应于不

37、同的寄存器。 ADS 地址选通信号。有效时可将CS0,CS1,CS2及A0-A2锁存于8250内部。不需要锁存时,ADS可直接接地。 DISTR 读选通信号。通常与系统总线的IOR信号相连接。 DOSTR 写选通信号。通常与系统总线的IOW信号相连接。 INTR 中断请求信号。当允许8250中断时,接收出错、接收数据寄存器满、发送数据寄存器空以及MODEM的状态均能够产生有效的INTR信号。,面向通信设备的引脚信号 SIN, SOUT: 串行输入/输出端 CTS, RTS, DTR, DSR:(同RS232标准中的信号) RLSD: 即RS232C标准中的DCD信号 RI:(同RS232标准中

38、的信号) OUT1, OUT2: 可由用户编程确定其状态的输出端 BAUDOUT: 波特率信号输出(频率=fCLK/分频值) XTAL1, XTAL2: 接外部晶振,作为基准时钟fCLK RCLK: 接收时钟输入(可直接与BAUDOUT相连),4.3,8250与8088系统的连接,系 统 总 线,D7-D0 DISTR DOSTR INTR MR A0 A1 A2 ADS DISTR DOSTR CS2 CS1 CS0,+5V,CS,D7-D0,# IOR,# IOW,INTR,RESET,A0,A1,A2,电平转换 /驱动器 1488 1489,到RS232接口,XTAL1 XTAL2 BA

39、UDOUT RCLK,SOUT SIN RTS DTR DSR DCD CTS RI,8250,XTAL,2. 8250的内部寄存器,共10个可编程(寻址)的寄存器 线路控制寄存器(LCR) BASE+3 线路状态寄存器(LSR) BASE+5 发送保持寄存器(THR) BASE+0(写) 接收缓冲寄存器(RBR) BASE+0(读) 除数锁存器低8位(DLL)BASE+0(DL=1) 除数锁存器高8位(DLH)BASE+1(DL=1) 中断允许寄存器(IER) BASE+1 中断识别寄存器(IIR) BASE+2 Modem控制寄存器(MCR)BASE+4 Modem状态寄存器(MSR)BA

40、SE+6,除数锁存器(DLL,DLH)BASE+0,1 用来保存分频系数,以获得所需的波特率。 波特率可以简单地看成每秒传送多少二进制位 PC机中基准时钟频率fCLK=1.8432MHz,波特率因子K=16。所以,对于指定的波特率B 除数值=1843200/(B16)=115200/B 例如,通信速率为9600波特时,除数值=12。 注意:写除数前,必须把LCR的最高位(DL位)置1,线路控制寄存器(LCR)BASE+3 决定传输时的数据帧格式(通信双方必须一致),DL位: 0正常操作 1写除数寄存器,0正常操作 1SOUT强制为1 (Break符号),xx0无校验 001奇校验 011偶校验

41、 101恒为1 111恒为0,01位停止位 12位停止位,107位数据位 118位数据位,线路状态寄存器(LSR)BASE+5 反映传输时的通信线状态,发送移位寄存器空,发送保持寄存器空,检测到Break,接收缓冲寄存器满,溢出错,奇偶错,格式错(停止位个数不符),发送保持寄存器(THR)BASE+0 要发送的数据写入此寄存器。当发送移位寄存器TSR空时,THR中的内容移入TSR被发送出去。 只有THR空时,CPU才能写入下一个要发送的数据 接收缓冲寄存器(RBR)BASE+0 RSR收到一个完整的数据后,就将其送入RBR中。CPU可从RBR中读取收到的数据。 RBR只能缓冲一个数据,当CPU

42、未能及时取走上一个数据,下一个数据又送入RBR时,会产生溢出错,中断允许寄存器(IER)BASE+1 决定哪类中断可以产生(也可禁止所有中断产生),1允许RBR满中断,1允许THR空中断,1允许线路状态中断 (溢出错、奇偶错、格式错、Break),1允许Modem状态中断,中断识别寄存器(IIR)BASE+2 用于识别产生中断的原因,0无中断 1有中断,00Modem状态中断(优先级最低) 01THR空中断 10RBR满中断 11线路状态中断,Modem控制寄存器(MCR)BASE+4 产生RTS、DTR信号 产生OUT1、OUT2信号 设置循环自检状态,DTR,RTS,OUT1,OUT2,L

43、OOP,Modem状态寄存器(MSR)BASE+6 反映RS232接口的状态,CTS,DSR,RI,RLSD,CTS,RLSD,RI,DSR,反映4个引脚的当前状态(反相值),反映了自上次读MSR后这4个引脚是否发生了变化 (1发生了变化),8250发送数据的工作过程,1)CPU(数据)8250的THR ; 2)TSR移空时,THR TSR,LSR中“数据发送保持寄存器空” 状态位置位 ; 3)TSR根据LCR中规定的格式从低到高逐位发送数据 ; 4)LSR中“数据发送保持寄存器空” 状态位可用来产生中断,也可查询该状态位,以实现数据的连续发送。,TSR,THR,串行数据输出,并行数据,LSR

44、,INT,LCR,数据,状态,1),2),3),2),4),4),1)SIN引脚上的串行数据逐位进入RSR; 2)RSR根据LSR中规定的数据位数确定是否收到了一个完整的数据,收到后将数据RBR; 3)RBR收到RSR的数据后,将LSR寄存器中“接收缓冲寄存器满”的状态位置位; 4)LSR中“接收缓冲寄存器满”状态位可用来产生中断,也可查询该状态位,以实现数据的连续接收。,RSR,RBR,串行数据输入,并行数据,LSR,INT,LCR,数据,状态,1),2),3),4),3. 8250 的初始化流程,初始化程序程序 流程图见右图,使LCR的最高位1,写除数寄存器,写LCR寄存器,同时 使LCR

45、的最高位0,写MCR寄存器,写IER寄存器,用BIOS功能初始化8250,PC机有两个串行接口: COM1(基地址3F8H), COM2(基地址2F8H) BIOS通过中断14H提供串行通信功能 功能0:初始化串行接口 功能1:发送一个字符 功能2:接收一个字符 功能3:读串行接口状态 INT14H仅提供了查询方式的通信服务 要使用中断方式进行发送和接收必须自行编程,用BIOS功能初始化8250,功能0(初始化)的入口参数为: AH=0 AL=初始化参数 DX=串口编号(0=COM1, 1=COM2) 初始化参数定义如下:,波特率 1001200 1012400 1104800 1119600

46、,奇偶校验 x0无校验 01奇校验 11偶校验,数据位数 005位 016位 107位 118位,停止位 01位 12位,MOV AH, 0 MOV AL, 初始化参数 MOV DX, 0 INT 14H,8250的数据发送程序(查询),LEA SI, DATA_BUFFER MOV CX, DATA_BYTES L1: MOV DX, BASE+5 ;LSR地址 IN AL, DX TEST AL, 00100000B;THR空? JZ L1 LODSB MOV DX, BASE+0 ;THR地址 OUT DX, AL LOOP L1 ,THR空?,输出一个字节,输出完?,N,Y,Y,N,8250的数据接收程序(查询),LEA DI, DATA_BUFFER MOV CX, DATA_BYTES L1: MOV DX, BASE+5 ; LSR地址 IN AL, DX TEST AL, 00011110B ; 有错误? JNZ ERROR TEST AL, 00000001B ; 收到数据? JZ L1 MOV DX, BASE+0 ; RBR地址 IN AL, DX STOSB LOOP L1 ,有错误?,读入数据,收到数据?,N,Y,Y,N,错误处理,接收完?,N,Y,用BIOS功能发送/接收数据,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1