1、第第9章章 串行串行I/O接口接口【内容简介【内容简介】主要介绍串行通信的基本概念和串行通信接口的基本组成与工作原理,然后主要介绍串行通信的基本概念和串行通信接口的基本组成与工作原理,然后介绍可编程串行通信接口介绍可编程串行通信接口8251A8251A的结构、特性、引脚及应用;最后,通过具体实的结构、特性、引脚及应用;最后,通过具体实例说明串行通信的实现方法与程序设计。例说明串行通信的实现方法与程序设计。【重点难点【重点难点】重点是串行通信的基本概念、类型、工作方式、可编程串行通信接口重点是串行通信的基本概念、类型、工作方式、可编程串行通信接口8251A8251A的组成原理、功能与初始化程序设
2、计;难点是的组成原理、功能与初始化程序设计;难点是8251A8251A的组成原理、功能与初始化的组成原理、功能与初始化程序设计。程序设计。第第9 9章章 串行串行I/OI/O接口接口 9.1 9.1 串行通信类型与方式串行通信类型与方式9.2 9.2 可编程串行通信接口可编程串行通信接口8251A8251A 9.3 8251A9.3 8251A初始化程序设计与应用举例初始化程序设计与应用举例9.1 9.1 串行通信类型与方式串行通信类型与方式 9.1.1 9.1.1 概述概述 9.1.2 9.1.2 串行通信类型串行通信类型 9.1.3 9.1.3 串行通信方式串行通信方式 9.1.4 RS-
3、232C/4859.1.4 RS-232C/485标准与接口电路标准与接口电路9.1.1 概述概述 1.1.串行通信串行通信 所谓串行通信,是用一条通信所谓串行通信,是用一条通信线路把两台设备连接起来,数据线路把两台设备连接起来,数据一位接一位地顺序传送,其示意一位接一位地顺序传送,其示意如如图图9.19.1所示。特点是传输线少,所示。特点是传输线少,传送距离远,成本低。传送距离远,成本低。2.串行接口电路串行接口电路 是把用于串行通信的电路集成在一起而构成的接口。计算机输入时,是把用于串行通信的电路集成在一起而构成的接口。计算机输入时,需要把外设的串行数据转换成并行数据,输入给计算机;计算机
4、输需要把外设的串行数据转换成并行数据,输入给计算机;计算机输出时需要把并行数据转换成串行数据,输出给外部设备。出时需要把并行数据转换成串行数据,输出给外部设备。图图9.2所示所示是用于串行通信的接口电路,支持同步与异步工作方式,故称为通是用于串行通信的接口电路,支持同步与异步工作方式,故称为通用同步用同步/异步接收器异步接收器/发送器发送器USART 图 9.1 串行通信示意图 设 备 甲 设 备 乙 1001010 地线 由由图图9.29.2可以看出,串行接口一可以看出,串行接口一般包含般包含4 4个寄存器,即控制寄存器、个寄存器,即控制寄存器、状态寄存器、数据输入寄存器及状态寄存器、数据输
5、入寄存器及数据输出寄存器。数据输出寄存器。数据的并数据的并/串转换和串串转换和串/并转换并转换通过移位寄存器来进行。通过移位寄存器来进行。另外,还有总线缓冲器、地址译另外,还有总线缓冲器、地址译码器以及控制逻辑电路。其中控码器以及控制逻辑电路。其中控制寄存器接收制寄存器接收CPUCPU的控制命令,以的控制命令,以确定工作方式;状态寄存器用来确定工作方式;状态寄存器用来存储外部设备及接口的状态信息。存储外部设备及接口的状态信息。数据输入输出寄存器与串行输入数据输入输出寄存器与串行输入/并行输出移位寄存器配合使用,并行输出移位寄存器配合使用,实现数据的输入输出与转换。实现数据的输入输出与转换。数据
6、总线 缓冲器 控制联 络信号 中断请求 读 写 地址 译码 地址总线 串行输入 串行输出 控制 状态寄存器 控制寄存器 数据输入寄存器 串行输入/并行输出 并行输入/串行输出 数据输出寄存器 发送时钟 接收时钟 图9.2 典型串行接口电路框图 CS A0 3.数据输入数据输入 (1)CPU向接口电路发控制命令,设置接口输入工作方式;同时,启向接口电路发控制命令,设置接口输入工作方式;同时,启动外设工作。动外设工作。(2)外设数据通过串行输入端送入串行输入)外设数据通过串行输入端送入串行输入/并行输出移位寄存器,经并行输出移位寄存器,经转换后送入数据输入寄存器。转换后送入数据输入寄存器。(3)向
7、)向CPU发输入请求或由发输入请求或由CPU查询接口状态标志位,然后读取数据。查询接口状态标志位,然后读取数据。4.数据输出数据输出 (1)CPU发控制命令,设置接口输出工作方式;同时,启动外设工作。发控制命令,设置接口输出工作方式;同时,启动外设工作。(2)CPU通过数据总线向接口电路发送数据和写命令,数据暂存在输通过数据总线向接口电路发送数据和写命令,数据暂存在输出寄存器中。出寄存器中。(3)经并行输入)经并行输入/串行输出移位寄存器转换后,数据串行输出。串行输出移位寄存器转换后,数据串行输出。在一般串行接口电路中,控制与状态寄存器共用一个地址;数据输在一般串行接口电路中,控制与状态寄存器
8、共用一个地址;数据输入与数据输出寄存器共用一个地址。入与数据输出寄存器共用一个地址。9.1.2 串行通信类型串行通信类型 串行通信类型有三种,如串行通信类型有三种,如图图9.39.3所示,即单工、半双工和全双工方式。所示,即单工、半双工和全双工方式。1.1.单工方式单工方式 数据按照一个固定的方向传送,不能反向传送。如图数据按照一个固定的方向传送,不能反向传送。如图9.39.3(a a)所示,所示,由设备由设备A A发送给设备发送给设备B B。2.2.半双工方式半双工方式 要求通信两端的设备均具备接收和发送的能力。但是在同一时间,数要求通信两端的设备均具备接收和发送的能力。但是在同一时间,数据
9、只能沿着一个方向传送。若要双向传送,只能交替进行。如图据只能沿着一个方向传送。若要双向传送,只能交替进行。如图9.39.3(b b)所示。所示。3.3.全双工方式全双工方式 通信两端的设备即可以发送数据,也可以接收数据,发送与接收可以通信两端的设备即可以发送数据,也可以接收数据,发送与接收可以同时进行,其过程如同时进行,其过程如图图9.39.3(c c)所示。所示。(c)全双工方式 图 9.3 串行通信工作方式 发送器 接收器(a)单工方式 数据 发送器 发送器 接收器 接收器(b)半双工方式 数据 发送器 发送器 接收器 接收器 数据 A B 9.1.3 串行通信方式串行通信方式 目前,串行
10、通信主要有两种类型:异步通信目前,串行通信主要有两种类型:异步通信ASYNCASYNC和同步通信和同步通信SYNCSYNC方方式。式。1.1.异步通信方式异步通信方式 在异步通信方式中,数据按照在异步通信方式中,数据按照ASCIIASCII码的格式设定,因此也称为字符码的格式设定,因此也称为字符格式,如格式,如图图9.49.4所示。所示。奇 偶 位 图9.4 异步通信的数据格式 停 止 位 D0 D1 D2 D3 D4 DX 1/0 起 始 位 起始位(58)有效数据有效数据5-8位,另有附加位。其中起始位位,另有附加位。其中起始位1位,恒为低电平;奇偶位,恒为低电平;奇偶校验位校验位1位,可
11、选;停止位可以是位,可选;停止位可以是1位、位、1.5位或者位或者2位,高电平。传送位,高电平。传送一个字符必须以起始位开始,停止位结束,称为一帧(一个字符必须以起始位开始,停止位结束,称为一帧(Frame)。)。通信时每秒传送二进制数据的位数(通信时每秒传送二进制数据的位数(bit)称为传输率,也称为波特率)称为传输率,也称为波特率(Band Rate),比如),比如300、600、1200、4800、9600、19200等。等。异步数据传送时,发送设备按照格式约定插入起始位、奇偶校验位和异步数据传送时,发送设备按照格式约定插入起始位、奇偶校验位和停止位。停止位。接收设备不断地检测传输线。在
12、高电平之后检测到(低电平)接收设备不断地检测传输线。在高电平之后检测到(低电平)时,启动内部计数器计数,当计数到一个数据位宽度的一半时,再次时,启动内部计数器计数,当计数到一个数据位宽度的一半时,再次检测传输线,若仍为低电平,则确认检测传输线,若仍为低电平,则确认1个起始位。然后继续计数,采个起始位。然后继续计数,采样,移位接收到的数据和校验位。在收到停止位(高电平)后,组成样,移位接收到的数据和校验位。在收到停止位(高电平)后,组成1帧。帧。若超过数据的位数而仍没有收到停止位时设置若超过数据的位数而仍没有收到停止位时设置“帧错误帧错误”标标志。若校验有错,则设置志。若校验有错,则设置“校验错
13、校验错”标志。计算机异步通信的速率和标志。计算机异步通信的速率和有效数据的位数可由程序设置。有效数据的位数可由程序设置。2.同步通信方式同步通信方式 是用同步字符来标识传送数据的起始与结束,其格式如是用同步字符来标识传送数据的起始与结束,其格式如图图9.5所示。所示。在开始部位设置在开始部位设置12个同步字符作为起始标志,后面是数据;在数据个同步字符作为起始标志,后面是数据;在数据的末尾,设置两个循环冗余校验码(的末尾,设置两个循环冗余校验码(CRC),一方面进行数据校验,),一方面进行数据校验,另一方面表示数据传送结束。另一方面表示数据传送结束。同步字符可以是同步字符可以是1个或个或2个;也
14、可以在起始部位设置个;也可以在起始部位设置1个,在末个,在末尾设置尾设置1个。个。按照同步方式工作时,发送设备自动插入同步字符和校验码。接按照同步方式工作时,发送设备自动插入同步字符和校验码。接收设备搜索到同步字符后开始接收数据。在传输过程中,发送设备和收设备搜索到同步字符后开始接收数据。在传输过程中,发送设备和接收设备保持完全同步。接收设备保持完全同步。.SYN 字符1 SYN 字符2 数据 图 9.5 同步通信数据格式 9.1.4 RS-232C/485标准与接口电路标准与接口电路 1.RS-232C1.RS-232C信号定义信号定义 RS-232CRS-232C是在计算机与数据终端串行通
15、信中普遍采用的一种传输标是在计算机与数据终端串行通信中普遍采用的一种传输标准,有准,有2525条信号线,采用条信号线,采用D D型型2525针连接器,信号定义如针连接器,信号定义如表表9.19.1所示。而所示。而在微型计算机中串行接口在微型计算机中串行接口COM1COM1和和COM2COM2使用的是使用的是D D型型9 9针连接器。其信号针连接器。其信号是对是对RS-232CRS-232C的缩减,符合的缩减,符合RS-232CRS-232C标准。标准。由于由于RS-232CRS-232C数据信号与计算机中的数据表示不一致,因此相互数据信号与计算机中的数据表示不一致,因此相互之间需要电平转换电路
16、;在远程通信时需要配置调制解调器之间需要电平转换电路;在远程通信时需要配置调制解调器(ModemModem)。)。表表9.1 RS-232C9.1 RS-232C标准信号标准信号 引脚引脚功能说明功能说明引脚引脚 功能说明功能说明1 1保护地保护地1414(辅信道)发送数据(辅信道)发送数据2 2(3 3)发送数据发送数据TxDTxD 1515发送信号源发送信号源(DCE)(DCE)定时定时 3 3(2 2)接收数据接收数据RxDRxD 1616(辅信道辅信道)接收数据接收数据 4 4(7 7)请求发送请求发送RTS RTS 1717接收信号源接收信号源(DCE)(DCE)定时定时 5 5(8
17、 8)允许发送允许发送CTS CTS 1818未定义未定义 6 6(6 6)数据装置准备好数据装置准备好DSR DSR 1919(辅信道辅信道)请求发送请求发送RTS RTS 7 7(5 5)信号地信号地(公共回路公共回路)2020(4 4)数据终端准备好数据终端准备好DTR DTR 8 8(1 1)接收信号线检测接收信号线检测 2121信号质量检测信号质量检测 9 9(保留供数传机测试保留供数传机测试)2222(9 9)振铃指示振铃指示RI RI 1010(保留供数传机测试保留供数传机测试)2323数据信号速率数据信号速率(DTE/DCE)(DTE/DCE)选择选择 1111未定义未定义 2
18、424发送信号源发送信号源(DTE)(DTE)定时定时 1212(辅信道辅信道)接收信号线检测接收信号线检测 2525未定义未定义 1313(辅信道辅信道)允许发送允许发送CTS CTS 在使用电话线远距离通信时,发送端要用调制器把数字信号在使用电话线远距离通信时,发送端要用调制器把数字信号附加到载波上接收端则用解调器进行解调,从载波上还原出数附加到载波上接收端则用解调器进行解调,从载波上还原出数字信号,其示意如字信号,其示意如图图9.6所示。所示。计算机RS232CModem计算机RS232CModem数字信号数字信号模拟传输图9.6 RS-232C串行通信TTL图9.7 TTL电平与RS-
19、232C电平转换示意图RS-232C电平MC1488MC1489TTL发送接收 3.RS-4853.RS-485接口电路接口电路 RS-485RS-485标准接口可使用单一标准接口可使用单一+5V+5V(或(或+3V+3V)电源,输入输出电平与)电源,输入输出电平与TTLTTL电路兼容,共模电压最大最小值分别为电路兼容,共模电压最大最小值分别为+12V+12V和和-7V-7V,差分输入范围,差分输入范围为为-7V-7V+12V+12V,接收器的灵敏度为,接收器的灵敏度为200mV200mV,支持半双工和全双工通信,支持半双工和全双工通信.在在RS-232CRS-232C标准中,逻辑标准中,逻辑
20、1 1用负电平(用负电平(-3V-3V-15V-15V)表示,逻辑)表示,逻辑0 0用用(+3V+3V+15V+15V)表示。而在计算机内部采用的是)表示。而在计算机内部采用的是TTLTTL电平,所以常用电平,所以常用MC1488/MC1489MC1488/MC1489进行信号转换,其示意如进行信号转换,其示意如图图9.79.7所示。所示。图图9.8所示是用所示是用MAX481类芯片构成的半双工通信电路。其中每类芯片构成的半双工通信电路。其中每个芯片包含一个非对称转对称的驱动器个芯片包含一个非对称转对称的驱动器D和一个对称转非对称的接收和一个对称转非对称的接收器器R。DI表示数据输入端,表示数
21、据输入端,RO表示数据输出端。特点是传输距离远,表示数据输出端。特点是传输距离远,可靠性高,在传输速率为可靠性高,在传输速率为9600b/s时最大距离为时最大距离为1500m;在传输速率为;在传输速率为100Mb/s时,传输距离可达时,传输距离可达15m。图9.8 RS-485半双工通信电路VCDRDEDIROREVCDRDEDIROREDEDIRO REDRVCDEDIRO REDRVC9.2 可编程串行通信接可编程串行通信接 8251A9.2.1 8251A9.2.1 8251A引脚与内部结构引脚与内部结构9.2.2 8251A9.2.2 8251A控制与状态寄存器控制与状态寄存器9.2.
22、1 8251A9.2.1 8251A引脚与内部结构引脚与内部结构 1.8251A1.8251A外部引脚外部引脚 8251A的引脚如的引脚如图图9.9所示,除地线和所示,除地线和电源线外,可分为四组。电源线外,可分为四组。(1)与)与CPU连接引脚连接引脚 D7D0:数据线,双向,与系统数据:数据线,双向,与系统数据总线连接,传送数据、命令及总线连接,传送数据、命令及8251A状状态字。态字。CS:片选信号,输入,低电平有效。:片选信号,输入,低电平有效。RD:读信号,输入,低电平有效。:读信号,输入,低电平有效。WR:写信号,输入,低电平有效。:写信号,输入,低电平有效。CTS 图9.9 82
23、51A引脚图 1 28 2 27 3 26 4 25 5 24 6 23 7 8251A 22 8 21 9 20 10 19 11 18 12 17 13 16 14 15 TxEMPT D1 TxD TxRDY RxC DTR RTS RESET D0 CLK DSR+5V SYNDET/BRKDE RxRDY D2 D3 RxD GND D4 D5 D6 D7 WR CS RD TxC C/D C/D C/D:控制控制/数据选择,输入,高电平时数据选择,输入,高电平时CPUCPU读读/写写8251A8251A控制控制/状态状态寄存器,低电平时寄存器,低电平时CPUCPU读读/写数据寄存器
24、。写数据寄存器。CS、RD、WR 和和 C/D 信号的作用如信号的作用如表表9.2所示。所示。RESET:复位信号,输入,高电平有效,宽度为:复位信号,输入,高电平有效,宽度为6个时钟周期,复位个时钟周期,复位后后8251A处于空闲等待状态。处于空闲等待状态。CLK:时钟信号,同步方式时其频率:时钟信号,同步方式时其频率数据传输频率的数据传输频率的30倍;异步方式倍;异步方式时,时,传输频率的传输频率的4.5倍。倍。表表9.2 8251A9.2 8251A的控制信号的功能组合的控制信号的功能组合 CSRDWRC/D方向方向功能功能0010CPU8251A 读数据读数据 0100CPU8251A
25、 写数据写数据 0011CPU8251A 读状态读状态 0101CPU8251A 写控制命令写控制命令 011X高阻态高阻态 1XXX高阻态高阻态 (2)与外部设备)与外部设备/调制解调器连接引脚调制解调器连接引脚 DTR:数据终端准备好,输出,低电平有效,通过编程使方式命数据终端准备好,输出,低电平有效,通过编程使方式命令字的令字的D1位置位置1,信号有效。,信号有效。DSR:数据设备准备好,输入,低电平有效,是对数据设备准备好,输入,低电平有效,是对DTR的响应,的响应,表示调制解调器或外设发送准备就绪,通过读入状态字的表示调制解调器或外设发送准备就绪,通过读入状态字的D7位检测该位检测该
26、信号。信号。RTS:请求发送,输出,低电平有效,表示请求发送,输出,低电平有效,表示8251A发送准备就绪,发送准备就绪,通过编程使方式命令字的通过编程使方式命令字的D5位置位置1,信号有效。,信号有效。CTS:允许发送,输入,低电平有效,是对允许发送,输入,低电平有效,是对RTS的响应;有效时,的响应;有效时,表示外设或调制解调器允许表示外设或调制解调器允许8251A发送数据。发送数据。(3)与发送控制有关的引脚)与发送控制有关的引脚 TxD:数据发送端,输出。数据发送端,输出。TxRDY:发送器准备好,输出,高电平有效,表示发送器准备好,输出,高电平有效,表示8251A准备好准备好接收接收
27、CPU的数据。的数据。TxE:发送器空,输出,高电平有效,表示发送器空,输出,高电平有效,表示8251A发送器空。发送器空。TxC:发送器时钟,输入,同步方式下发送器时钟,输入,同步方式下TxC的频率等于波特率;的频率等于波特率;异步方式下异步方式下TxC的频率可以是数据速率的的频率可以是数据速率的1、16或或64倍。倍。(4)与接收控制有关的引脚)与接收控制有关的引脚 RxD:数据接收端,输入。数据接收端,输入。RxRDY:接收器准备好,输出,高电平有效,表示接收器准备好,输出,高电平有效,表示8251A从从外部设备外部设备/调制解调器上接收到一个字节的数据,等待调制解调器上接收到一个字节的
28、数据,等待CPU的读取。的读取。SYNDET/BRKDET:同步同步/间断检测信号,双向。同步方式时作为间断检测信号,双向。同步方式时作为同步监测端,异步方式时作为间断检测端。同步监测端,异步方式时作为间断检测端。RxC:接收器时钟,输入,用来控制接收器时钟,输入,用来控制8251A接收数据的速度,接收数据的速度,要求与要求与TxC相同。相同。2.8251A的内部结构的内部结构 8251A的内部结构图如的内部结构图如图图9.10所示,由所示,由5个主要部分组成,即接收个主要部分组成,即接收器、发送器、调制解调控制逻辑电路、读器、发送器、调制解调控制逻辑电路、读/写控制逻辑电路和数据总写控制逻辑
29、电路和数据总线缓冲器。线缓冲器。读/写 控 制 逻 辑 调 制 解 调 控 制 C L K R E S E T R D W R C/D C S D T R D S R RT S C T S 图 9.1 0 8 2 5 1 A 的 内 部 结 构 外 部 数 据 总 线 内 部 数 据 总 线 发 送 数 据/命 令 缓 冲 器 状 态 缓 冲 器 接 收 数 据 缓 冲 器 T x D T x R D Y T x E T x C 发 送 缓 冲 器 发 送 控 制 R x D R x R D Y S Y N D E R x C 接 收 缓 冲 器 接 收 控 制 (1)数据总线缓冲器)数据总线
30、缓冲器 数据总线缓冲器包括发送数据数据总线缓冲器包括发送数据/命令缓冲器、状态缓冲器和接收数命令缓冲器、状态缓冲器和接收数据缓冲器,用来与据缓冲器,用来与CPU传送数据、命令字和状态字。传送数据、命令字和状态字。(2)接收器)接收器 包括接收缓冲器和控制电路,通过包括接收缓冲器和控制电路,通过RxD引脚串行输入数据,并按引脚串行输入数据,并按规定的格式转换为并行数据,存放到数据缓冲器中。规定的格式转换为并行数据,存放到数据缓冲器中。同步方式时同步方式时,接,接收器首先检测同步字符,确认同步后接收串行数据,并经串收器首先检测同步字符,确认同步后接收串行数据,并经串/并转换并转换后送接收缓冲器;后
31、送接收缓冲器;异步方式时,异步方式时,首先检测起始位,然后接收数据,在首先检测起始位,然后接收数据,在接收到一帧数据后串接收到一帧数据后串/并转换,送数据接收缓冲器。这时,并转换,送数据接收缓冲器。这时,RxDRY引引脚输出高电平,等待脚输出高电平,等待CPU读取。接收数据的速率由读取。接收数据的速率由 决定。决定。RxDRY信号可供信号可供CPU查询,也可作为中断请求信号。查询,也可作为中断请求信号。RXC (3)发送器)发送器 包括发送缓冲器和控制电路,包括发送缓冲器和控制电路,CPU输出的并行数据,按规定的格输出的并行数据,按规定的格式转换。式转换。同步方式同步方式,在发送数据之前,由发
32、送器自动输出一个(单同,在发送数据之前,由发送器自动输出一个(单同步)或两个(双同步)同步字符,然后数据串行输出。步)或两个(双同步)同步字符,然后数据串行输出。异步方式异步方式,是,是由发送控制电路在其首尾添加起始位和停止位,经并由发送控制电路在其首尾添加起始位和停止位,经并/串转换后由串转换后由TxD端逐位串行输出。发送速率由端逐位串行输出。发送速率由 决定。决定。发送器做好接收数据的准备时,发送器做好接收数据的准备时,TxRDY输出高电平,表示数据输输出高电平,表示数据输出缓冲器空,出缓冲器空,CPU可输出数据。可输出数据。TxRDY信号可供信号可供CPU查询,也可作查询,也可作为中断请
33、求信号。为中断请求信号。(4)调制解调控制逻辑电路)调制解调控制逻辑电路 远距离串行通信时,需经调制器把数字信号附加到载波上传送给远距离串行通信时,需经调制器把数字信号附加到载波上传送给通信线路;在接收端需经解调器从载波中还原出数字信号。通信线路;在接收端需经解调器从载波中还原出数字信号。(5)读)读/写控制逻辑电路写控制逻辑电路 控制控制CPU对对8251A的读的读/写操作。写操作。CPU执行执行IN指令,可读取指令,可读取8251A中的数据或状态;执行中的数据或状态;执行OUT指令,向指令,向8251A写入数据或控制字。写入数据或控制字。TXC9.2.2 8251A9.2.2 8251A控
34、制与状态寄存器控制与状态寄存器 在在8251A中设有控制与状态寄存器。其中控制寄存器包中设有控制与状态寄存器。其中控制寄存器包括方式选择寄存器和工作命令寄存器;状态寄存器记录和反括方式选择寄存器和工作命令寄存器;状态寄存器记录和反映映8251A的工作状态与错误信息。的工作状态与错误信息。1.工作方式选择寄存器工作方式选择寄存器 工作方式选择寄存器共有工作方式选择寄存器共有8位,其格式与功能如位,其格式与功能如图图9.11所示。所示。0:奇校验 1:偶校验 S2 S1 EP PEN L2 L1 B2 B1 D7 D6 D5 D4 D3 D2 D1 D0 00:同步方式 01:异步方式(1)10:
35、异步方式(16)11:异步方式(64)00:字符长度 5 位 01:字符长度 6 位 10:字符长度 7 位 11:字符长度 8 位 0:无奇偶校验 1:有奇偶校验 异 步 00:无效 01:1 位停止位 10:1.5 位停止位 11:2 位停止位 同 步 0:内同步 1:外同步 0:两个同步字符 1:单个同步字符 图 9.11 8251A 方式选择命令字 2.工作命令寄存器工作命令寄存器 工作命令字用来控制工作命令字用来控制8251A的发送与接收,其格式如的发送与接收,其格式如图图9.12所示。所示。1:数据终端准备好,0:未准备好 1:允许发送,0:不允许发送 1:允许接收,0:不允许接收
36、 0:正常工作,1:发中止符(TxD 低电平)1:清除所有错误标志(PE OE FE)1:请求发送 1:内部复位 1:进入搜索方式,搜索同步字符 D7 D6 D5 D4 D3 D2 D1 D0 EH IR RTS ER SBRK RxE DTR TxEN 图 9.12 8251A 工作命令字 TxEN:发送允许位。:发送允许位。TxEN=1时,允许时,允许TxD发送数据。发送数据。DTR:数据终端准备好。:数据终端准备好。DTR=1时,时,表示表示8251A准备好,准备好,引脚引脚输出低电平;输出低电平;DTR=0时,时,引脚输出无效。引脚输出无效。RxE:接收允许位。:接收允许位。RXE=1
37、时,允许时,允许RxD接收数据;否则,不允接收数据;否则,不允许接收数据。许接收数据。SBRK:发送中止字符。:发送中止字符。SBRK=1,使,使TxD为低电平,连续输出为低电平,连续输出0;SBRK=0,正常工作。,正常工作。ER:清除错误标志。:清除错误标志。ER=1,使错误标志(,使错误标志(PE、OE、FE)清)清0。RTS:发送请求标志。:发送请求标志。RTS=1,使,使 引脚输出低电平,有效,引脚输出低电平,有效,表示表示8251A发送准备就绪;发送准备就绪;RTS=0,使,使 引脚无效。引脚无效。IR:内部复位。:内部复位。IR=1,使,使8251A返回到方式选择命令状态。返回到
38、方式选择命令状态。EH:外部搜索方式,:外部搜索方式,EH=1时,搜索同步字符,时,搜索同步字符,EH=0,不搜索同,不搜索同步字符。步字符。DTRDTRRTSRTS 3.状态寄存器状态寄存器 用来记录用来记录8251A工作状态与错误信息,如工作状态与错误信息,如图图9.13所示,所示,CPU可通过可通过IN指令读取。指令读取。图9.13 8251A状态字 1:奇偶校验错误标志 1:接收器准备好 1:发送器准备好 1:发送器空 1:溢出错误标志 1:帧错误标志 1:数据装置准备好 D7 D6 D5 D4 D3 D2 D1 D0 DSR SYNDET/BRKDET FE OE PE TxE Rx
39、RDY TxRDY SYNDET 1:已同步 0:未同步 BRKDET 1:接收到中止符 0:正常工作 TxRDY:发送器准备好。发送缓冲寄存器空,该位置:发送器准备好。发送缓冲寄存器空,该位置1;同时;同时 =0,TxE=1 时,时,TxRDY引脚置高电平。引脚置高电平。PE:奇偶校验错标志。:奇偶校验错标志。PE=1,奇偶校验错误,但是不中断,奇偶校验错误,但是不中断8251A的工作。的工作。OE:溢出错误标志位。:溢出错误标志位。OE=1,发生溢出错误。,发生溢出错误。FE:帧格式错误标志位,:帧格式错误标志位,FE=1,未检测到停止位。,未检测到停止位。其它其它RxRDY、TxE、SY
40、NDET和和DSR与引脚的定义完全相同。与引脚的定义完全相同。CTS9.3 8251A初始化程序设计与应用举例初始化程序设计与应用举例 9.3.1 8251A初始化程序设计初始化程序设计 9.3.2 应用举例应用举例9.3.1 8251A9.3.1 8251A初始化程序设计初始化程序设计 1.初始化程序设计步骤初始化程序设计步骤 (1)向)向8251A写入方式选择字,以写入方式选择字,以确定通信方式、数据格式和波特率确定通信方式、数据格式和波特率等项参数;等项参数;(2)同步方式,需写入同步字符;)同步方式,需写入同步字符;(3)写入工作命令字,确定发送或)写入工作命令字,确定发送或者接收;者
41、接收;(4)由于方式选择字和工作命令字)由于方式选择字和工作命令字是同一端口,且没有标志位,必须是同一端口,且没有标志位,必须按照上述(按照上述(1)、()、(2)、()、(3)的)的顺序。顺序。8251A初始化流程图如初始化流程图如图图9.14所示。所示。N 图 9.14 8251A 初 始 化 流 程 图 系 统 复 位 写 入 方 式 选 择 命 令 字 异 步?写 入 第 一 个 同 步 字 符 单 同 步?写 入 第 二 个 同 步 字 符 写 入 工 作 命 令 字 复 位 数 据 传 送 N Y Y Y N 2.初始化编程举例初始化编程举例 【例【例9.1】设设8251A工作在异
42、步方式下,波特率系数为工作在异步方式下,波特率系数为64,字符长,字符长度度8位,奇校验,位,奇校验,1个停止位,清除出错标志位,请求发送,数据个停止位,清除出错标志位,请求发送,数据准备就绪位,允许接收准备就绪位,允许接收/发送,内部不复位。数据和方式选择字发送,内部不复位。数据和方式选择字/状态端口地址分别为状态端口地址分别为20H和和21H。初始化程序如下:。初始化程序如下:MOV AL,01011111B OUT 21H,AL ;设置方式选择命令字;设置方式选择命令字 MOV AL,00110111B OUT 21H,AL ;设置工作命令字;设置工作命令字 【例【例9.2】设设8251
43、A工作在同步方式下,有一个同步字符,外同步,工作在同步方式下,有一个同步字符,外同步,清除出错标志,允许发送和接收,使清除出错标志,允许发送和接收,使CPU已准备好且请求发送,内部已准备好且请求发送,内部不复位,启动搜索同步字符;同步字符为不复位,启动搜索同步字符;同步字符为0CCH,端口地址同,端口地址同例例9.1。初始化程序如下:初始化程序如下:MOV AL,11000000B OUT 21H,AL ;设置方式选择命令字;设置方式选择命令字 MOV AL,0CCH OUT 21H,AL ;写入同步字符;写入同步字符 MOV AL,10110111B OUT 021H,AL ;设置工作命令字
44、;设置工作命令字9.3.2 9.3.2 应用举例应用举例 用用8251A和和RS-232C标准总线实现两台微机之间的串行通信,其标准总线实现两台微机之间的串行通信,其结构框图如结构框图如图图9.15所示。试编写程序,使发送器所示。试编写程序,使发送器A把数据把数据09传送到传送到接收机接收机B中;采用异步方式,字符长度为中;采用异步方式,字符长度为8位,波特系数为位,波特系数为16,偶校验,偶校验,一位停止位。一位停止位。AD7AD0 RD TxD WR RTS C/D DTR RxD CTS CS DSR 地 址 译 码 器 TxD RxD GND TxD RxD GND AD7AD0 Tx
45、D RD RTS WR DTR C/D RxD CTS DSR CS AD7AD0 RD WR A0 8086 A15A8 M/IO AD7AD0 RD WR A0 8086 A15A8 M/IO RS-232C RS-232C 8251A 8251A 图9.15 8251A双机通讯结构框图 地 址 译 码 器 解:解:首先对发送器首先对发送器A和接收器和接收器B初始化,然后使用查询方式实现半初始化,然后使用查询方式实现半双工通信。对于发送器双工通信。对于发送器A,在,在CPU查询到查询到TxRDY有效有效(高电平高电平)时,向时,向8251A输出一个字节的数据;对于接收器输出一个字节的数据;
46、对于接收器B,在,在CPU查询到查询到RxRDY有有效效(高电平高电平)时,从时,从8251A读取一个字节的数据。设读取一个字节的数据。设8251A端口地址为端口地址为0FF80H、0FF81H,程序设计如下:,程序设计如下:(1)发送器)发送器A初始化程序初始化程序 STACK SEGMENT STACK DW 64 DUP(?)STACK ENDS DATA SEGMENT DATAX DB0123456789 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START:MOV AX,STACK ;段寄存器的装入;段寄存器的装入
47、 MOV SS,AX MOV AX,DATA MOV DS,AX LEA SI,DATAX ;设置发送区的首址;设置发送区的首址 MOV DX,0FF81H ;8251A控制器端口地址控制器端口地址 MOV AL,00H OUT DX,AL ;输出空操作;输出空操作 MOV AL,40H OUT DX,AL ;8251A内部复位内部复位 NOP ;空操作;空操作 NOP MOV AL,7EH ;异步方式,;异步方式,1个停止位,个停止位,8位数据位数据 OUT DX,AL ;波特系数为;波特系数为16,偶校验,偶校验 MOV AL,11H ;允许发送,清除错误标志;允许发送,清除错误标志 OU
48、T DX,AL MOV CX,000AH ;设置计数值为;设置计数值为10 A1:MOV DX,0FF81H ;读;读8251A的状态字的状态字 IN AL,DXH AND AL,01H ;查询;查询TxRDY是否有效是否有效 JZ A1 ;无效,继续查询;无效,继续查询 MOV AL,SI ;有效,向数据端口输出一个字符;有效,向数据端口输出一个字符 MOV DX,0FF80H OUT DX,AL INC SI ;SI指向下一个发送字符指向下一个发送字符 LOOP A1 ;CX0,继续发送,继续发送 MOV AH,4CH ;发送完毕,返回;发送完毕,返回DOS INT 21H CODE EN
49、DS END START (2)接收器)接收器B初始化程序初始化程序 STACK SEGMENT STACK DW 64 DUP(?)STACK ENDS DATA SEGMENT DATAY DB 10 DUP(?)DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START:MOV AX,STACK ;段寄存器的装入;段寄存器的装入 MOV SS,AX MOV AX,DATA MOV DS,AX LEA DI,DATAY ;设置接收区首址;设置接收区首址 MOV DX,0FF81H ;8251A控制器端口地址控制器端口地址 MOV
50、 AL,00H OUT DX,AL ;输出空操作;输出空操作 MOV AL,40H OUT DX,AL ;8251A内部复位内部复位 NOP ;空操作;空操作 NOP MOV AL,7EH ;异步方式,;异步方式,1个停止位,个停止位,8位数据位数据 OUT DX,AL ;波特系数为;波特系数为16,偶校验,偶校验 MOV AL,14H ;允许接收,清除错误标志;允许接收,清除错误标志 OUT DX,AL MOV CX,000AH ;设置计数值为;设置计数值为10 A2:MOV DX,0FF81H ;读;读8251A的状态字的状态字 IN AL,DX AND AL,02H ;查询;查询RxRD