收藏 分享(赏)

微机原理-第5版(周荷琴)-第九章 (2).pptx

上传人:rav7596 文档编号:5376917 上传时间:2019-02-25 格式:PPTX 页数:38 大小:486.08KB
下载 相关 举报
微机原理-第5版(周荷琴)-第九章 (2).pptx_第1页
第1页 / 共38页
微机原理-第5版(周荷琴)-第九章 (2).pptx_第2页
第2页 / 共38页
微机原理-第5版(周荷琴)-第九章 (2).pptx_第3页
第3页 / 共38页
微机原理-第5版(周荷琴)-第九章 (2).pptx_第4页
第4页 / 共38页
微机原理-第5版(周荷琴)-第九章 (2).pptx_第5页
第5页 / 共38页
点击查看更多>>
资源描述

1、微型计算机原理与接口技术 第5版第9章 串行通信和可编程 接口芯片8251A,9.2 可编程串行通信 接口芯片8251A,8251A是通用同步/异步数据收发器(USART),是常用的可编程通信接口器件,用于全双工通信并具有同步或异步工作方式。 同步方式:数据58位,波特率DC64K位/秒,可选择内同步或外同步。 异步方式:数据58位, 波特率DC19.2K位/秒,波特率系数(时钟速率/传输速率)1、16和64,停止位1、1.5或2位,能检查假启动位,可自动产生、检测和处理中止符等。 两种方式,均有检测奇偶校验错、溢出错和帧错误的功能。,9.2.1 8251A的内部结构和外部引脚 9.2.2 8

2、251A的编程 9.2.3 8251A应用举例,9.2.1 8251A的内部结构和外部引脚,内部主要部件: 数据总线缓冲器 接收缓冲器和接收控制电路 发送缓冲器和发送控制电路 读写控制电路 调制解调控制电路从图中也可看到各部件相应的引脚信号,1. 数据总线缓冲器,它是8251A与系统数据总线间的接口,内部包含: 状态缓冲器存放8251A的状态信息; 接收数据缓冲器存放8251A接收的数据; 发送数据/命令缓冲器存放写入8251A的数据或命令 (控制)字。D7D0数据线与系统数据总线相连,用来传送在8251A和CPU间传送的数据信息、编程命令和状态信息。,2. 接收缓冲器和接收控制电路,接收缓冲

3、器由接收移位寄存器、串/并变换电路和同步字符寄存器等构成。 在时钟脉冲控制下,逐个接收从RxD引脚上输入的串行数据,并送入移位寄存器,待接收到1个字符数据后,通过串/并变换电路,将数据变成并行数据,通过内部总线送到接收数据缓冲器中。 接收数据的速率取决于送到接收时钟端的时钟频率。 在异步方式下,接收时钟的频率可以是波特率的1倍、16倍或64倍,或波特率系数为1、16或64。,接收数据过程,CPU发出允许接收数据命令后,接收缓冲器就一直监视着RxD脚上的信号电平,一旦检测到启动信号,就启动接收控制器中的内部计数器,对时钟频率进行计数。 采集来的数据送到输入移位寄存器中,进行移位和奇偶校验,删除起

4、始位、停止位,得到并行数据后,送入接收数据缓冲器。 使RxRDY引脚输出高电平,通知CPU,8251A已从外部接收一个字符,等待送到CPU去。芯片内部状态寄存器中的RxRDY位也被置成高电平。,同步传送方式,内同步方式:把接收到的数据与同步字符寄存器的内容比较。如两者相同,则将SYNDET引脚置为高电平,表示已实现同步。 若采用双同步字符方式,则需搜索到两个同步字符后,才认为已实现同步。 外同步方式:由外部电路来检测同步字符。外部检测到同步字符后,就从SYNDET输入一个高电平,通知8251A,已检测到同步字符,可脱离对同步字符的搜索。 实现同步之后,接收器才能接收同步数据。,接收端有关的信号

5、,1)RxD(Receiver Data) 接收数据 外部串行数据从RxD脚逐位移入接收移位寄存器中,经串并变换变成并行数据后,进入接收数据缓冲器,等待输入到CPU去。 2)RxRDY(Receiver Ready) 接收数据准备好 高电平时,表示接收数据缓冲器中已收到一个字符数据,可将其输入到CPU去。 若用中断方式传送数据,此信号可作中断请求信号,由中断服务程序用IN指令读入数据;查询方式时为状态信号,查到高电平时,由IN指令读取数据。 每当CPU读走一个字符后,RxRDY就复位为低电平,接收到一个新字符后,又变为高电平。,接收端有关的信号,3)SYNDET/BRKDET 同步检测/断点检

6、测 同步方式下为同步检测SYNDET,系统复位时为0。 内同步方式,SYNDET为输出。检测到同步字符后,输出变高,执行一次读状态操作后,自动复位。 外同步方式,它为输入,由低变高时, 在下个 的上升沿开始接收字符,达到同步后回复到低电平。 异步方式下为断点检测BRKDET,输出。 从RxD端连续收到两个全0字符后,输出高电平,表示当前线路上无数据可读。 只有当RxD端收到一个“1”信号或8251A复位时,此信号才复位成低电平。 BRKDET可作为状态位,由CPU读出。,接收端有关的信号,4) (Receiver Clock) 接收时钟,外部输入 决定8251A接收数据的速率。 同步方式下,

7、端输入的时钟频率应等于接收数据的波特率。 异步方式下,它的频率可以是波特率的1倍、16倍或64倍。 接收时钟应与对方的发送时钟相同。,3. 发送缓冲器和控制电路,发送数据时,用OUT指令把数据送到发数据缓冲器,经移位寄存器进行并-串变换后,从TxD引脚串行发送出去。 异步方式,发送控制器为发送数据加上起始位、奇偶校验位和停止位,从TxD上发送出去。发送速率可以是发送波特率的1倍、16倍或64倍。 同步方式,发送前先送出1个或2个同步字符,再逐位输出串行数据。同步发送时,字符间不允许留空隙,若发送过程中停止发送,将不断自动插入同步字符。数据传输率等于TxC的时钟频率。,与发送端有关的信号,1)T

8、xD(Transmitter Data) 发送数据 把CPU送来的并行数据转换成串行格式后,逐位从TxD脚发送出去。 2)TxRDY(Transmitter Ready)发送器准备好 当允许8251A发送数据,而且发送数据/命令缓冲器空时,TxRDY=1,表示已准备好从CPU接收数据。 中断传送方式,TxRDY有效时请求中断,由中断服务程序用OUT指令从CPU输出一个数据到8251A。 查询方式,TxRDY为状态信号,CPU检测到该信号为高时,向8251A输出一个数据,随后TxRDY变回低电平。,与发送端有关的信号,3)TxE(Transmitter Empty) 发送器空 TxE=1时,指示

9、发送器中的并-串转换器空,已无数据可向外部发送。 异步方式下,由TxD 引脚向外部输出空闲位。 同步方式下,由TxD引脚向外部输出同步字符。 8251A从CPU接收到一个数据后,TxE变成低电平。 4) (Transmitter Clock) 发送器时钟 确定8251A的发送速率。 同步方式, 输入时钟频率等于发送数据的波特率。 异步方式,发送时钟是波特率的1 、16或64倍。,4. 读/写控制电路,CPU送到控制电路的信号: RESET:高电平时复位,等待初始化编程、 、 :读、写和片选信号 CLK:时钟信号,产生8251A内部定时信号:控制口/数据口选择信号:1选择控制口,0选择数据口,9

10、.2.1 8251A的内部结构和外部引脚 9.2.2 8251A的编程 9.2.3 8251A应用举例,9.2.2 8251A的编程,使用时应对8251A进行初始化编程 为可靠复位,应先向控制口连续写入3个0,再写入1个复位字,然后写入方式字及命令字。 方式字用来确定工作方式,如规定同步/异步方式、传送的波特率、字符长度、奇偶校验等。 命令字控制它按规定的方式工作。如允许/禁止收发数据,启动搜索同步字符,迫使内部复位等。 对控制口进行一次写入操作后,要有写恢复时间,即延迟一点时间后才能再写入下个控制字。 用IN指令可随时读出状态字,了解工作状态。,1. 8251A的编程流程图,向控制口写入复位

11、命令字。 写入方式字确定工作方式。 同步方式,方式字后需写入1或2个同步字符,随后写入命令字。 异步方式,写入方式字后,接着写入命令字。 若要改变数据传送方式,须写入复位命令字,再重新写入新的方式字和命令字。 工作中,可用IN指令读状态字,检查是否有错等。 没出错,可不断传送数据,直至数据全部传送完为止。,2. 方式字、命令字和状态字的格式,1)方式字 异步方式下: B2B1确定波特率系数 收发时钟频率 =收发波特率 波特率系数 例:收发时钟频率9600 波特率系数16,则 收发波特率为: 9600/16=600 其它见图,2)命令字,各位的意义见图 IR=1使8251A内部复位。例:复位字=

12、0100 0000B=40H RxE =1,允许接收数据;TxEN =1,允许发送数据; ER=1,使各错误标志位清0; 例:允许接收发送数据、清错误标志, 命令字=0001 0101B,3)状态字,TxRDY=1 发送数据缓冲器空,准备好接收数据。 PE=1 奇偶校验错。 OE=1 溢出错。 FE=1 帧错误,仅用于异步方式。 DSR=1,MODEM已准备好数据。 其余位的意义与引脚功能相同。,3. 8251A初始化编程举例,1)异步方式初始化程序 例9.1 若要求8251A工作于异步方式,波特率系数为16,具有7个数据位,1个停止位,有偶校验,控制口地址为3F2H。假设REVTIME是写恢

13、复时间的延时宏指令,类似于一个子程序。试编写对8251A进行初始化的程序。 程序如下: MOV DX,3F2H ;控制口MOV AL,00HOUT DX,AL ;向控制口写入“0”REVTIME ;延时,等待写操作完成,OUT DX,AL ;向控制口写入第2个“0”REVTIME ;延时OUT DX,AL ;向控制口写入第3个“0”REVTIME ;延时 MOV AL,40H ;复位字OUT DX,AL ;写入复位字REVTIME ;延时MOV AL,01111010B ;方式字: 波特率系数16, 7个数据位, 1个停止位, 偶校验OUT DX,AL ;写入方式字REVTIME ;延时MOV

14、 AL,00010101B ;命令字:允许接收发送数据,清错误标志OUT DX,AL ;写入命令字,2)同步方式初始化程序 例9.2 设8251A的控制口地址为3F2H,写恢复延时程序仍用宏指令REVTIME,要求8251A工作于同步方式,采用双同步字符、奇校验、数据位为7位,试编写8251A写入复位字以后的初始化程序。, ;先向控制口写入3个0,再送复位字40HMOV DX, 3F2H ;控制口MOV AL,00011000B ;方式字: 双同步, 内同步, 奇校验, 7个数据位OUT DX,AL ;送方式字REVTIME ;延时MOV AL,16H ;16H为同步字符OUT DX,AL ;

15、送入第一个同步字符REVTIMEOUT DX,AL ;送入第二个同步字符REVTIMEMOV AL,10010101B ;命令字: 启动搜索同步字符, 错误标志复位, 允许收发OUT DX,AL,9.2.1 8251A的内部结构和外部引脚 9.2.2 8251A的编程 9.2.3 8251A应用举例,9.2.3 8251A应用举例,1. 8251A与CPU及外设的连接 用8251A构成的串行口,可与CRT显示器、鼠标等串口外设相连,工作于异步方式,采用RS-232C串行接口标准通信,不用MODEM信号。连线示意如图9.15:,图9.15,1)8251A与CPU之间的连线、 、CLK和RESET

16、信号, 可直接与CPU的相应引脚相连。 数据线D7D0与CPU的低8位数据总线D7D0相连。与系统地址总线A1相连。 地址总线的其余位参与I/O译码,形成片选信号,与8251A的 相连。 TxRDY、TxE、RxRDY和BRKDET都是输出信号,是CPU与8251A间的收发联络信号。 查询方式下,它们被用作状态信号; 中断方式下,TxRDY和RxRDY可作为向CPU请求发送或接收数据的中断请求信号。,2) 8251A与外设之间的连线 RxD接收外设送来的串行数据,TxD向外设发送串行数据,都是TTL电平。 采用RS-232C串行接口通信时,需用专门的电平变换电路如MAX 233实现电平转换:

17、发送数据时,将TTL电平的TxD信号, 转换为RS-232C电平后发送出去; 接收数据时,把接收来的RS-232C电平的RxD信号, 转换为8251A能接受的TTL电平。 发送时钟输入端 和接收时钟输入端 可以连在一起,由波特率产生器提供相同的时钟脉冲信号。,3)端口地址译码电路 与8位CPU连接,不用考虑奇偶地址问题接地址线A0:A0=0选中数据口,A0=1选控制口。比如:数据口为F0H,控制口为F1H。 与16位CPU连接,要考虑奇偶地址问题 若使用低8位数据总线,端口地址总是偶地址,A0参与I/O地址译码,A0=0才选中8251A。应将A1与 端相连,A1=1选中控制口,A1=0选中数据

18、口。 若使用高8位数据总线,则端口地址要求总是奇地址。 对于图9.15电路,使用的是低8位数据总线: A7A6A5A4=1111,即G1=1, I/O操作时 ,即 A1=1选控制口,A1=0选数据口 A3A2A0译码形成端口地址:F0H数据口,F2H控制口,2. 双机通信接口电路设计*,用RS-232C串口进行较近距离通信时,只用3根连线。 例如,两台8086微机A和B,采用8251A等构成RS-232C串行接口实现通信,硬件电路如图9.16(图中仅画出A机):,图9.16,*供选用,1)硬件电路设计分析 8251A的信号均为TTL电平,TxD上的数据要用MAX233转换成RS-232C电平后

19、,才能发送。 RxD收到的信号是RS-232C电平,要经MAX233转换成TTL电平后,才能输入8251A。 25芯接插件的2-3脚TxD和RxD要交叉相连。计算机A的发送端(2脚)要与计算机 B的接收端(3脚)相连。 设两台机器间采用查询方法、异步传送、半双工通信,在A机上编写通信程序,A机数据/控制口地址=1F0H/ 1F2H。 发送数据:计算机A查询TxRDY=1?是,发送缓冲器已空,可送出1个字节。 接收数据:计算机A查看RxRDY=1? 是,接收数据准备好,可输入1个字节。,2)通信程序,设: 发送数据缓冲区始址 BUFF_T,个数 COUNT_T;接收数据缓冲区始址 BUFF_R,

20、个数 COUNT_R。 发送一批数据的初始化和控制数据传送程序 ;向控制口先写3个0,再写入40H使系统复位 BEG_T:MOV DX,1F2H ;控制口MOV AL,7AH ;方式字:异步方式,7个数据位;1个停止位,偶校验、波特率系数为16OUT DX,AL ;写入方式字MOV CX,02H ;延时 D1:LOOP D1MOV AL,11H ;命令字:清错误标志,允许发送OUT DX,AL ;写入命令字 MOV CX,02H ;延时 D2:LOOP D2,LEA DI,BUFF_T ;发送缓冲区始址MOV CX,COUNT_T ;发送数据个数 NEXT_T:IN AL,DX ;读入状态TE

21、ST AL,01H ;TxRDY有效吗?JZ NEXT_T ;否,等待MOV DX,1F0H ;是,数据口地址送DXMOV AL,DI ;从缓冲区取1个数据OUT DX,AL ;向8251A输出1个数据INC DI ;修改缓冲区指针MOV DX,1F2HLOOP NEXT_T ;没送完,继续 ;发送完,接收数据初始化和数据传送程序 ;系统复位 BEG_R:MOV DX,1F2H ;控制口MOV AL,7AH ;方式字,同发送部分OUT DX,AL ;送出方式字MOV CX,02H ;延时 D3:LOOP D3MOV AL,14H ;命令字:清错误标志,允许接收OUT DX,AL ;写命令字MO

22、V CX,02H ;延时 D4:LOOP D4,LEA DI,BUFF_R ;接收数据缓冲区始址MOV CX,COUNT_R ;接收数据个数 NEXT_R:IN AL,DX ;读入状态字TEST AL,02H ;RxRDY有效?JZ NEXT-R ;否,循环等待TEST AL,38H ;是,查是否有错JNZ ERROR ;有错,转出错处理MOV DX,1F0H ;无错IN AL,DX ;读入1个数据MOV DI,AL ;输入数据缓冲区INC DI ;修改缓冲区指针MOV DX, 1F2HLOOP NEXT_R ;未传送完, 继续 ;完成 ERROR: ;出错处理,几点说明,计算机B上也需编写类似的初始化程序和数据收发程序。 两台计算机通信时,波特率必须一致。 计算机还可与CRT终端、单片机开发系统、其它有串行口的外设通信。 发送时钟:可用8253定时器/计数器对主时钟分频后获得,也可由波特率产生器提供。 数据传送可采用全双工方式,双方能同时收发数据。,

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

当前位置:首页 > 网络科技 > 计算机原理

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报