《第11章串行通信及接口电路PPT讲稿.ppt》由会员分享,可在线阅读,更多相关《第11章串行通信及接口电路PPT讲稿.ppt(81页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第11章串行通信及接口电路第1页,共81页,编辑于2022年,星期日本章讲述:11.1 串行通信11.2 Intel 8251A可编程通信接口第2页,共81页,编辑于2022年,星期日11.1 串行通信11.1.1 概述CPU与外部的信息交换称为通信(Communication)。基本的通信方式有两种:并行通信数据的各位同时传送;串行通信数据一位一位顺序传送。并行通信与串行通信方式如图11-1所示。第3页,共81页,编辑于2022年,星期日第4页,共81页,编辑于2022年,星期日1.串行通信的优点从图11-1中可以看到,在并行通信中数据有多少位就要有同样数量的传送线,而串行通信只要一条传送线
2、。故串行通信节省传送线,特别是当位数很多和长距离传送时,这个优点就更为突出。例如,微型计算机要将数据传送到远方的终端,或传送到大的计算中心,则常用通信线路(电话线等)进行传送,这时采用串行传送可以大大减少传送线,从而大大地降低成本。但是串行传送的速度慢,若并行传送所需的时间为T,则串行传送的时间至少为NT(其中N为位数)。第5页,共81页,编辑于2022年,星期日2.同步通信与异步通信在串行通信中,有两种最基本的通信方式:(1)非同步(异步)通信ASYNC(Asynchronous Data Communication)它用一个起始位表示字符的开始,用停止位表示字符的结束来构成一帧。如图11-
3、2所示。起始位占1位,字符编码为7位(ASCII码),第8位为奇偶校验位,即加上这一位(第8位)使字符中为“1”的位为奇数(或偶数),停止位可以是1位、1.5位或2位。于是一个字符就由10个或10.5个或11个二进制位构成。第6页,共81页,编辑于2022年,星期日第7页,共81页,编辑于2022年,星期日用这样的方式表示字符,则字符可以一个挨着一个传送。在非同步数据传送中,在CPU与外设之间必须有两项规定:字符格式即前述的字符的编码形式,奇偶校验形式,以及起始位和停止位的规定。例如,用ASCII编码,字符为7位,加一位奇偶校验位,一位起始位,以及一位停止位,共10位。第8页,共81页,编辑于
4、2022年,星期日 数据信号传送速率数据信号传送速率的规定,对于CPU与外界的通信是很重要的。假如数据传送的速率是120字符/秒,而每一字符包含10个数据位,则每秒传送的二进制位数(b/s,常称为bps)为:10120=1200(位/秒)=1200(bps)则每一位的传送时间即为:Td=1/1200=0.833(ms)第9页,共81页,编辑于2022年,星期日 波特率(Baud rate)串行通信的信号常常要通过调制解调器进行传送。在数据源出口与调制器入口之间,或者解调器出口与数据信宿入口之间,用数据信号传输率(bps)来描述数字信号的传输速度;而在调制器出口、通信线路与解调器入口之间,用单位
5、时间内线路状态变化(电信号变化)的数目即波特率来描述传输速度,如图11-3所示。第10页,共81页,编辑于2022年,星期日第11页,共81页,编辑于2022年,星期日当采用“零调制”或“空调制”,即基波传输时,或者在单位时间内仅调制或解调一个信号时,则数字信号传输率(bps)与波特率是一致的。在采用调制解调器的载波传输系统中,两者间的关系为:CBlog2n其中:C数据信号传输速率(bps);B调制速率(baud);n调制信号数或线路状态数,它是2的整数倍。异步通信的传送速度在509600波特之间,常用于计算机到CRT终端和字符打印机之间的通信,直通电报以及无线电通信的数据发送等。第12页,共
6、81页,编辑于2022年,星期日(2)同步传送在异步传送中,每一个字符要用起始位和停止位作为字符开始和结束的标志,占用了时间。所以,在数据块传送时,为了提高速度,就去掉这些标志,采用同步传送,于是在数据块开始处就要用同步字符来指示。如图11-4所示。同步传送的速度高于异步,通常为几十几百千波特(kilobaud)。但它要求有时钟来实现发送端与接收端之间的同步,故而硬件复杂。常应用于:计算机到计算机之间的通信。计算机到CRT/外设之间的通信等。第13页,共81页,编辑于2022年,星期日3.数据传送方向通常串行通信,数据在两个站之间是双向传送的,A站可作为发送端,B站作为接收端;也可以A站作为接
7、收端而B站作为发送端。根据要求又可以分为:(1)半双工(Half Duplex)半双工如图11-5所示。每次只能有一个站发送,即只能是由A站发送到B站,或是由B站发送到A站,不能A站和B站同时发送。(2)完全双工(Full Duplex)完全双工即两个站同时都能发送。如图11-6所示。第14页,共81页,编辑于2022年,星期日第15页,共81页,编辑于2022年,星期日4.信号的调制和解调计算机通信是一种数字信号的通信,如图11-7所示。它要求传送线的频带很宽,而在长距离通信时,通常是利用电话线传送的,电话线不可能有这样宽的频带,其宽带如图11-8所示。所以若有数字信号直接通信,经过传送线,
8、信号就会产生畸变,如图11-9所示。第16页,共81页,编辑于2022年,星期日第17页,共81页,编辑于2022年,星期日所以,要用调制器(Modulator)把数字信号转换为模拟信号;用解调器(Demodulator)检测此模拟信号,再把它转换成数字信号,如图11-10所示。FSK(Frequency Shift Keying)是一种常用的调制方法:它把数字信号的“1”与“0”调制成不同频率(易于鉴别)的模拟信号,其原理如图11-11所示。两个不同频率的模拟信号,分别由电子开关控制,在运算放大器的输入端相加,而电子开关由要传输的数字信号(即数据)控制。当信号为“1”时,控制上面的电子开关导
9、通,送出一串频率较高的模拟信号;当信号为“0”时,控制下面的电子开关导通,送出一串频率较低的模拟信号,于是在运算放大器的输出端,就得到了调制后的信号。第18页,共81页,编辑于2022年,星期日第19页,共81页,编辑于2022年,星期日第20页,共81页,编辑于2022年,星期日5.串行I/O的实现如上所述,串行传送时数据是一位接一位依次顺序传送的,而在计算机中数据是并行传送的。所以当数据由计算机送至数据终端时,先要把并行的数据转换为串行的再传送,而在计算机接收由终端送来的数据时,先要把串行的数据转换为并行的数据才能处理加工,这样的转换可以用软件也可以用硬件实现。(1)要实现CPU的并行数据
10、变成串行数据输出,或串行输入的数据在CPU内部要变成并行的数据,可以由CPU通过软件来实现。第21页,共81页,编辑于2022年,星期日串并转换或者并串转换完全可以由CPU通过软件来实现,外部只要增加简单的电平转换电路就可以了。但是这样一来,CPU就要用相当多的时间来进行串并、并串的转换任务,因此降低了CPU的利用率。为减轻CPU的负担,可以用硬件来实现。(2)硬件UART(Universal Asynchronous Receiver/Transmitter)通用非同步(异步)接收器/发送器硬件UART电路如图11-12所示。第22页,共81页,编辑于2022年,星期日第23页,共81页,编
11、辑于2022年,星期日硬件UART既能发送,由并行串行输出;又能接收,由串行并行输入。它的每一部分都是一个双缓冲器结构。当输入时,由RxD来的串行数据先进入移位寄存器,然后并行输入给缓冲器(变为并行的),由数据总线输入至CPU。在发送时,由CPU来的并行数据由缓冲器接收,然后送至移位寄存器,由TxD一位一位移位输出(变为串行的)。在UART中,还有一些控制和状态信息。在UART工作时,接收器部分始终监视着RxD线,当发现一个起始位时,就开始了一个新的字符的接收过程。第24页,共81页,编辑于2022年,星期日UART是用外部时钟来和接收的数据同步的。外部时钟的周期Tc和数据位的周期Td之间的关
12、系为:Tc=Td/K其中,K=16或64。若K=16,在每一个时钟脉冲的上升沿采样接收数据线,若发现了第一个“0”(即是起始位的开始),以后又连续采样到8个“0”,则确定它是起始位(不是干扰信号),以后每隔16个时钟脉冲采样一次数据线,作为输入数据。如图11-13所示。第25页,共81页,编辑于2022年,星期日第26页,共81页,编辑于2022年,星期日为了检测长距离传送中可能发生的错误,通常增加一个奇偶校验位。UART在发送时,检查每个要传送的字符中的“1”的个数,自动在奇偶校验位上填“1”或“0”,使得“1”的总和(包括奇偶校验位)为偶数即偶校验(在奇校验中则为奇数),如图11-14所示
13、。在接收时,UART检查字符的每一位以及奇偶校验位的“1”的个数是否为偶数,以确定是否发生传送错误,如图11-15所示。第27页,共81页,编辑于2022年,星期日第28页,共81页,编辑于2022年,星期日为了使传送过程更可靠,在UART中还设立了各种出错标志。常用的出错标志有以下三种:奇偶错误(Parity error)在接收时,UART检查接收到的每一个字符“1”的个数,若不符合要求,则置这个标志,发出奇偶校验出错信息。帧错误(Frame error)若接收到的字符格式不符合规定(例如缺少停止位等),则置出错标志,发出帧错误信息。溢出(丢失)错误(Overrun error)第29页,共
14、81页,编辑于2022年,星期日上述的UART是一种双缓冲器结构。例如在接收时,接收的数据先由移位寄存器移位,把串行的变为并行的,然后送到接收数据寄存器,由输入指令输入至CPU中,若数据已变为并行且送至接收数据寄存器中时,UART就可以接收另一个新的字符。但是,若已接收到第二个字符的停止位,且要把第二个字符传送到接收数据寄存器中时,CPU还未取走上一个数据,于是就会出现数据丢失,这样就置溢出错误标志。由此可见,若数据缓冲器的级数越多,则溢出错误的几率就越少。第30页,共81页,编辑于2022年,星期日6.串行通信的校验方法串行通信主要适用于远距离通信,因而噪声和干扰较大,为了保证高效而无差错地
15、传送数据,对传送的数据进行校验就成了串行通信中必不可少的重要环节。常用的校验方法有:奇偶校验,循环冗余校验CRC(Cyclic Redundancy Check)等。(1)奇偶校验奇偶校验这种校验方法主要用于对一个字符的传送过程进行校验。在发送时,在每一个字符的最高位之后(发送总是最低有效位D0先发送)都附加一个奇偶校验位,这个校验位本身有可能是“1”或“0”,加上这个校验位,使所发送的任何字符中的“1”的个数始终为奇数奇校验,或偶数偶校验。第31页,共81页,编辑于2022年,星期日接收时,检查所接收的字符连同这个奇偶校验位,其为“1”的个数是否符合规定,若不符合规定就置出错标志,供CPU查
16、询及处理。根据国际电报电话咨询委员会CCITT(Consultative Committee International Telegraph and Telephone)的建议:在异步操作中使用偶校验,而在同步操作中使用奇校验。奇偶校验位的产生和检验,可用软件或硬件的方法实现。第32页,共81页,编辑于2022年,星期日 软件奇偶校验在8088(8086)中,有判断字符奇偶性的标志以及相应的转移指令。所以,用软件产生奇偶较验位(发送时),或进行奇偶校验(接收时)是比较方便的。若每字符为7位,用偶校验,产生奇偶校验位的程序如下:MOVAL,DATA;取出要发送的数据ANDAL,AL;检查数据本身
17、的奇偶性JPETRANS;若“1”的个数已为偶数则直接发送ORAL,10000000B;否则,置最高位为“1”TRANS:OUT(UART),AL;输出 第33页,共81页,编辑于2022年,星期日进行奇偶校验的程序如下:INAL,UART;输入接收的数据ANDAL,AL;检查“1”的个数的奇偶性JPOERROR;若“1”的个数为奇数,转至出错处理MOVDATA,AL;否则存入内存 第34页,共81页,编辑于2022年,星期日 硬件奇偶校验目前现有单片的专门的奇偶发生器/校验器器件,可对7位或8位字符进行奇偶校验,这是一种中规模TTL集成电路。如SN54/74280 9位奇偶发生器位/校验器(
18、8位数据位加1位校验位)和SN54/74180 8位奇偶发生器/校验器(7位数据位加1位校验位)。但在实际的串行通信中,我们通常采用可编程的串行通信接口芯片如Intel8251A。这些芯片中包含硬件的奇偶校验和产生电路,可用程序选择是否用奇偶校验,或选择是奇校验还是偶校验。第35页,共81页,编辑于2022年,星期日11.1.2 串行接口标准EIA RS-232C接口EIA(Electronics Industries Association)RS(Recommended Standard)-232C是目前最常用的一种串行通信接口。实质上这是一种标准,它是一个25脚的连接器,它的每一个引脚的规
19、定是标准的,对各种信号的电平规定也是标准的,因而便于互相连接。其最基本的最常用的信号规定,如图11-17所示。凡是符合RS-232C标准的计算机或外设,都把它们往外发送的数据线连至25个引脚的连接器的插座的2号引脚,接收的数据线连至3号引脚。显然在插头连线时,一方的接收数据线应连至对方的发送数据线,反之亦然。第36页,共81页,编辑于2022年,星期日第37页,共81页,编辑于2022年,星期日在串行通信中,除了数据线和地线以外,为了保证信息的可靠传送,还有若干条联络控制信息线。请求发送RTS#(Request To Send)通常当一个通信站的发送器已经做好了发送的准备,为了了解接收方是否做
20、好了接收的准备,是否可以开始发送,就向对方输出一个有效的RTS#信号(RTS#信号在转换为TTL电平时为低电平有效,但在RS-232C的标准中另有规定,见下面的介绍),以等待对方的回答。第38页,共81页,编辑于2022年,星期日准许发送CTS#(Clear To Send)通常当接收方做好了接收的准备,在接收到发送方送来的有效的RTS#信号以后,就以有效的CTS#信号作为回答。数据终端准备好DTR#(Data Terminal Ready)通常当某一个站的接收器已做好了接收的准备,为了通知发送器可以发送了,就向发送器送出一个有效的DTR#信号。第39页,共81页,编辑于2022年,星期日数据
21、装置装备好DSR#(Data Set Ready)当发送方接收到接收方送来的有效的DTR#信号,在发送方做好了发送的准备后,就向接收方送出一个有效的DSR#信号作为回答。载波检测CD#(Carried Detect)有的器件把它当作DSR#来使用。总之,为了使设备具有通用性和互换性就制订了标准,凡是遵照RS-232C标准的设备,它们的各种信号线都按规定的标准(即指定的引脚)连接。第40页,共81页,编辑于2022年,星期日其次,标准的另一个重要含义是这些信号的电气性能也是标准的。RS-232C对各种信号的规定如下:(1)在TxD和RxD线上MARK(即表示为1)=-3V-25VSPACE(即表
22、示为0)=+3V+25V例如:是符合标准的。第41页,共81页,编辑于2022年,星期日(2)在RTS#、CTS#、DSR#、DTR#、CD#等线上:ON=+3V+25VOFF=-3V-25V显然,RS-232C规定的信号电平及极性与TTL是不同的,需要经过转换。需要从TTL转换为RS-232C的电平,或从RS-232C转换为TTL的电平。因此,RS-232C本来是一种标准,它规定了为了进行串行通信所需要的信号,规定了它们的引脚号,也规定了它们的电气性能。由于目前大部分微机是TTL电平的,所以需要有转换电路。于是,凡具有RS-232C串行接口的都需要有一个转换电路(接口电路)。第42页,共81
23、页,编辑于2022年,星期日1488和1498就是能实现从TTLRS-232C(发送器)及从RS-232CTTL(接收器)的器件,如图11-18所示。第43页,共81页,编辑于2022年,星期日EIA电缆的任何一脚能够直接接至任何别的脚而不会引起对驱动器和接受器的损坏。对于计算机像对于CRT终端一样,都看成是数据终端设备。计算机和远方以及当地终端(用查询方式交换信号)的连接的示意图见图11-19。当地终端可直接通过RS-232接口连接;而远方的要经过调制后通过电话线传送。在数据终端与调制器之间用RS-232接口。第44页,共81页,编辑于2022年,星期日第45页,共81页,编辑于2022年,
24、星期日11.2 Intel 8251A可编程通信接口 11.2.1 8251的基本功能 Intel 8251具有以下基本功能:(1)可用于同步和异步传送。(2)同步传送:58位/字符,内部或外部同步,可自动插入同步字符。(3)异步传送:58位/字符,时钟速率为通信波特率的1、16或64倍。第46页,共81页,编辑于2022年,星期日(4)可产生中止字符(Break Character);可产生1、1.5或2位的停止位。可检查假启动位,自动检测和处理中止字符。(5)波特率:DC19.2K(异步);DC64K(同步)。(6)完全双工,双缓冲器发送器和接收器。(7)出错检测:具有奇偶、溢出和帧错误等
25、检测电路。第47页,共81页,编辑于2022年,星期日11.2.2 8251的方框图可编程串行通信接口芯片8251的结构,如图11-20所示。整个8251可以分成5个主要部分:接收器、发送器、调制控制、读写控制以及I/O缓冲器。而I/O缓冲器由状态缓冲器、发送数据/命令缓冲器和接收数据缓冲器三部分组成。8251的内部由内部数据总线实现相互之间的通信。第48页,共81页,编辑于2022年,星期日第49页,共81页,编辑于2022年,星期日1.接收器接收器接收在RxD脚上的串行数据,并按规定的格式把它转换为并行数据,存放在接收数据缓冲器中。当8251工作于异步方式且允许接收和准备好接收数据时,它监
26、视RxD线。在无字符传送时,RxD线为高电平(即所谓Mark),当发现RxD线上出现低电平时,则认为它是起始位(即所谓Space),就启动一个内部计数器,当计数到一个数据位宽度的一半(若时钟脉冲频率为波特率的16倍时,则为计数到第8个脉冲)时,又重新采样RxD线,若其仍为低电平,则确认它为起始位,而不是噪声信号。此后,每隔16个脉冲,采样一次RxD线作为输入信号,送至移位寄存器,经过移位,又经过奇偶校验和去掉停止位后,就得到了转换为并行的数据,经过8251 的内部数据总线传送至接收数据缓冲器,同时发出RxRDY信号,告诉CPU字符已经可用。第50页,共81页,编辑于2022年,星期日在同步方式
27、,USART监视RxD线,每出现一个数据位就把它移一位,然后把接收寄存器与含有同步字符(由程序给定)的寄存器相比较,看是否相等,若不相等则USART重复上述过程。当找到同步字符后(若规定为两个同步字符,则必须出现在RxD线上的两个相邻字符与规定的同步字符相同),则置SYNDET信号,表示已找到同步字符。在找到同步字符后,利用时钟采样和移位RxD线上的数据位,并且按规定的位数,把它送至接收数据缓冲器,同时发出RxRDY信号。第51页,共81页,编辑于2022年,星期日2.发送器发送器接收CPU送来的并行数据,加上起始位、奇偶校验位和停止位,然后由TxD脚发送。在异步方式时,发送器加上起始位,检查
28、并根据程序规定的检验要求(奇校验还是偶校验)加上适当的校验位,最后根据程序的规定,加上1位、1.5位或2位停止位。在同步方式,发送器在数据发送前插入一个或两个同步字符(这些都在初始化时由程序给定),而在数据中,除了奇偶校验位外,不再插入别的位。只有在USART工作于同步发送方式,而CPU来不及把新的字符送给它,则USART自动地在TxD线上插入同步字符,因为在同步方式时字符之间是不允许存在间隙的。第52页,共81页,编辑于2022年,星期日不论是在同步或异步工作方式,只有当程序设置了TxEN(Transmitter Enable允许发送)和CTS#(Clear to Send这是对调制器发出的
29、请求发送的响应信号)有效时,才能发送。另外,发送器的另一个功能是能发送中止符(BREAK)。中止符是由在通信线上的连续的Space符组成,它是用来在完全双工通信时中止发送终端的。只要8251的命令寄存器的位3(SBRK)为“1”,则USART就始终发送中止符。第53页,共81页,编辑于2022年,星期日3.I/O控制读/写控制逻辑对CPU输出的控制信号进行译码以实现如表11-1所示的读/写功能。USART是以RD#或WR#信号中的一个为“0”来实现I/O操作的。若两者中无一为“0”,则USART不执行I/O操作;若两者全为“0”,这是一种无确定结果的非法状态。第54页,共81页,编辑于2022
30、年,星期日11.2.3 8251的接口信号 8251是用来作为CPU与外设或调制解调器之间的接口,如图11-21所示。故它的接口信号可以分为两组:一组为与CPU接口的信号;另一组为与外设(或调制解调器)接口的信号。1.与CPU的接口信号 DB7DB08251的外部三态双向数据总线,它可以连到CPU的数据总线。CPU与8251之间的命令、数据以及状态信息都是通过这组数据总线传送的。第55页,共81页,编辑于2022年,星期日第56页,共81页,编辑于2022年,星期日 CLK由这个CLK输入产生8251的内部时序。CLK的频率在同步方式工作时,必须大于接收器和发送器输入时钟频率的30倍;在异步方
31、式工作时,必须大于输入时钟的4.5倍。另外,规定CLK的周期要在0.42s1.35s的范围内。CS#选片信号,它应由CPU的IO/M#及地址信号经译码后供给。C/D#控制/数据端。在CPU读操作时,若此端为高电平,由数据总线读入的是8251的状态信息;低电平时,读入的是数据。在CPU写操作时,此端为高电平,CPU通过数据总线输出的是命令信息;低电平时,输出的是数据。此端通常连到CPU的地址总线的A0。第57页,共81页,编辑于2022年,星期日 TxRDY(Transmitter Ready)发送准备好信号。只有当USART允许发送(即CTS#是低电平和TxEN是高电平),且发送命令/数据缓冲
32、器为空时,此信号有效。它用以通知CPU,8251已准备好接收一个数据。当CPU与8251之间用查询方式(Polling)交换信息时,此信号可作为一个“状态”信号(hand shake);在用中断方式交换信息时,此信号可作为8251的一个中断请求信号。当USART从CPU接收了一个字符时,TxRDY复位。第58页,共81页,编辑于2022年,星期日 TxE(Transmitter Empty)发送器空信号。当它有效(高电平有效)时,表示发送器中的并行到串行转换器空。在同步方式工作时,若CPU来不及输出一个新的字符,则它变高,同时发送器在输出线上插入同步字符,以填补传送空隙。RxRDY(Recei
33、ver Ready)接收器准备好信号。若命令寄存器的RxE(Receiver Enable)位置位时,当8251已经从它的串行输入端接受了一个字符,可以传送到CPU时,此信号有效。在查询方式时,此信号可作为一个“状态”信号;在中断方式时可作为一个中断请求信号。当CPU读了一个字符后,此信号复位。第59页,共81页,编辑于2022年,星期日 SYNDET(Synchronous Detect)同步检测信号。它只用于同步方式。它是作为输入还是输出,取决于初始化程序对8251是工作于内同步或外同步的规定。在RESET时,此信号复位。当工作于内同步方式时,在8251已经检测到所要求的同步字符,此信号为
34、高,输出以指示USART已达到同步。若8251由程序规定为双字符同步时,此信号在第二个同步字符的最后一位的中间变高。当CPU执行一次读状态操作时,SYNDET复位。当在外同步方式工作时,从这个输入端输入的一个正跳沿,使8251在下一个RxC的下降沿开始收集字符。SYNDET输入高电平至少应维持一个RxC周期,直至RxC出现下一个下降沿。第60页,共81页,编辑于2022年,星期日2.与装置的接口信号 DTR#(Data Terminal Ready)数据终端准备好。这是一个通用的输出信号,低电平有效。它能由命令指令的位置“1”变为有效,用以表示CPU准备就绪。DSR#(Data Set Rea
35、dy)数据装置准备好。这是一个通用的输入信号,低电平有效。用以表示调制解调器或外设已准备好。CPU可通过读入状态操作,在状态寄存器的位7检测这个信号。DTR#与DSR#是一组信号,通常用于接收器。第61页,共81页,编辑于2022年,星期日 RTS#(Reguest To Send)读求传送,这是一个输出信号等效于DTR。这个信号用于通知调制器CPU准备好发送。可由命令指令的位5置1来使其有效(低电平有效)。CTS#(Clear To Send)准许传送,这是调制器对USART的RTS信号的响应,当其有效时(低电平)USART发送数据。RxC(Receiver Clock)接收器时钟。这个时钟
36、控制USART接收字符的速度。在同步方式,RxC等于波特率,由调制解调器供给。在异步方式,RxC是波特率的1、16或64倍,由方式控制指令预先选择。USART在RxC的上升沿采样数据。第62页,共81页,编辑于2022年,星期日 RxD#(Receiver Data)接收器数据,字符在这条线上串行地被接收,在USART中转换为并行的字符。高电平表示Mark即“1”。TxC#(Transmitter Clock)发送器时钟,这个时钟控制USART发送字符的速度。时钟速度与波特率之间的关系同RxC#。数据在TxC#的下降沿由USART移位输出。TxD#(Transmitter Data)发送器数据
37、。由CPU送来的并行的字符在这条线上被串行地发送。高电平代表Mark即“1”。第63页,共81页,编辑于2022年,星期日11.2.4 8251的编程8251是一个可编程的多功能通信接口。所以在具体使用时必须对它进行初始化编程,以确定它的具体工作方式。例如:规定工作于同步还是异步方式;传送的波特率;字符格式等。初始化编程必须在系统复位(RESET)以后,在USART工作以前进行,即USART不论工作于任何方式,都必须先经过初始化。初始化编程过程的流程图如图11-22所示。第64页,共81页,编辑于2022年,星期日第65页,共81页,编辑于2022年,星期日1.方式选择指令方式选择指令格式如图
38、11-23所示。指令可以分为四组,每组两位。首先,由D1D0确定是工作于同步方式还是异步方式。当D1D0=00时,则为同步方式;而在D1D000时,则为异步方式,且D1D0的三种组合用以选择输入时钟频率与波特率之间的系数。第66页,共81页,编辑于2022年,星期日第67页,共81页,编辑于2022年,星期日D3D2用以确定字符的位数,D5D4用以确定奇偶校验的性质,它们的规定都是很明确的。D7D6在同步和异步方式时的意义是不同的,异步时用以规定停止位的位数;同步时用以确定是内同步还是外同步,以及同步字符的个数。在同步方式时,紧跟在方式指令后面的是由程序输入的同步字符。它是用与方式指令类似的方
39、法由CPU输给USART的。第68页,共81页,编辑于2022年,星期日2.命令指令在输入同步字符后,或在异步方式时,在方式选择指令后应由CPU输给命令指令,其格式如图11-24所示。方式选择指令是规定8251的工作方式,而命令指令直接使8251处于规定的工作状态,以准备接收或发送数据。第69页,共81页,编辑于2022年,星期日第70页,共81页,编辑于2022年,星期日3.状态寄存器8251上还有状态寄存器,CPU可通过I/O读操作把8251的状态字读入CPU,用以控制CPU与8251 之间的数据交换。读状态字时,C/D#端为“1”。状态字的格式如图11-25所示。状态寄存器的TxRDY,
40、只要数据缓冲器一空就置位;而引脚TxRDY只能当条件:数据缓冲器空CTS#TxEN成立时,才置位。第71页,共81页,编辑于2022年,星期日第72页,共81页,编辑于2022年,星期日11.2.5 8251应用举例我们以两台微型计算机之间进行双机串行通信的硬件连接和软件编程来说明,8251在实际中是如何应用的。1.要求在A、B两台微机之间进行串行通信,A机发送,B机接收。要求把A机上开发的应用程序(其长度为2DH)传送到B机中去。采用异步方式,字符长度为8位,2个停止位,波特率因子为64,无校验,波特率为4800。CPU与8251之间采用查询方式交换数据。端口地址分配是:命令/状态口为309
41、H,数据口为308H。第73页,共81页,编辑于2022年,星期日2.分析由于是近距离传输,可以不用MODEM,而直接互连。同时采用查询方式,故接收/发送程序中只需要检查发送/接收的准备好状态位是否置位,在准备好时就发送或者接收一个字节。3.设计(1)硬件连接根据以上分析把两台微机都当作DTE。它们之间只需TxD、RxD和SG(信号地)三根线连接就能通信。采用8251A作为接口的主芯片再配置少量的附加电路,如波特率发生器、RS-232C与TTL电平转换电路、地址译码器电路等就可构成一个串行通信接口。如图11-26所示。第74页,共81页,编辑于2022年,星期日第75页,共81页,编辑于202
42、2年,星期日(2)软件编程接收程序和发送程序分开编写,每个程序段中包括8251A初始化、命令字、状态查询和输入输出几部分。发送程序(略去堆栈STACK和数据DATA段)CSEGSEGMENTASSUMECS:CSEGTRAPROCFARSTART:MOVDX,309H;控制口地址MOVAL,00HOUTDX,ALMOVAL,40H;内部复位OUTDX,ALNOP第76页,共81页,编辑于2022年,星期日MOVAL,0CFH;方式字(异步、2个停止位、字符长度OUTDX,AL;为8位,无校验,波特率因子为64)MOVAL,37H;命令字(RTS#、RR、RxE、DTR#和TxEN均置“1”)O
43、UTDX,ALMOVCX,2DH;传送字节数MOVSI,300H;发送区首地址L1:MOVDX,309H;状态口地址INAL,DX;输入状态TEST AL,38H;检查三个出错标志位JNZERR;有错,转出错处理ANDAL,01HJZL1;发送未准备好,则等待第77页,共81页,编辑于2022年,星期日MOV DX,308H;数据口地址MOV AL,SI;取发送数据OUTDX,AL;输出INCSIDEC CXJNZL1;未发送完,循环ERR:(略)MOV AX,4C00HINT21H;发送完则返回DOSTRAENDPCSEGENDSEND START 第78页,共81页,编辑于2022年,星期
44、日 接收程序(略去堆栈STACK和数据DATA段)CSEGSEGMENTASSUMECS:BECRECPROCFARBEGIN:MOVDX,309HMOVAL,0AAH;空操作OUTDX,ALMOVAL,50H;内部复位OUTDX,ALNOPMOVAL,0CFH;方式控制字OUTDX,ALMOVAL,14H;命令字(ER、RxE置位)OUTDX,AL第79页,共81页,编辑于2022年,星期日MOVCX,2DH;置字节数MOVDI,400H;接收区首地址L2:MOVDX,309H;状态口地址INAL,DX;输入状态TESTAL,38H;有错误吗JNZERR;有错,转至出错处理程序ANDAL,02H;接收准备好吗JZL2;未准备好则等待MOVDX,308H;数据口地址INAL,DX;输入数据MOVDI,AL;存入接收缓冲区INCDI第80页,共81页,编辑于2022年,星期日DECCXLOOPL2;未接收完,循环ERR:(略)MOVAX,4C00HINT21H;接收完则返回DOSRECENDPCSEGENDSENDBEGIN第81页,共81页,编辑于2022年,星期日