串行通信接口.ppt
第8章,串行通信接口,第8章 串行通信接口,学习目标: 掌握串行通信的基本概念; 掌握RS-232C串行接口标准;了解RS-422、RS-423、RS-485串行接口标准的特点及应用场合; 理解串行接口芯片INS 8250的内部结构及外部特性,掌握INS 8250的内部寄存器及编程方法; 重点掌握利用INS 8250实现查询方式和中断方式下的串行通信编程应用; 学会采用BIOS或DOS调用方式利用串行接口来发送/接收一个字符。,第8章 串行通信接口,本章目录: 8.1 串行通信的基本概念 8.2 串行接口标准 8.3 异步通信接口 8.4 通信接口的BIOS调用及DOS调用 习题与思考题,8.1 串行通信的基本概念,8.1.1 串行通信的特点 8.1.2 数据通信方式 8.1.3 串行通信方式 8.1.4 信息的校验方式 8.1.5 传输速率与传送距离 8.1.6 信号的调制与解调 8.1.7 串行接口的基本结构和基本功能,返回上一级,8.1.1 串行通信的特点,串行通信,就是使数据在一根传输线上一位一位地进行传输而实现的通信。 特点:信息在一个方向上传输,只占用一根通信线,因此在这根传输线上既传送数据信息又传送联络控制信息;信息格式有固定的要求,需要进行逻辑电平转换。 通信方式:异步通信和同步通信两种。,返回上一级,8.1.2 数据通信方式,串行通信中,数据通常是在两个站(如终端和微机)之间进行传送,按照同一时刻数据流的方向可分成三种基本传送模式,返回上一级,8.1.3 串行通信方式,根据时钟控制方式可分为: 异步通信方式 是指通信的发送设备与接收设备使用各自的时钟控制工作,要求双方的时钟尽量一致,但接收端的时钟完全独立于发送端,由自己内部的时钟发生器产生,所以实际频率总是有差异的。 同步串行通信 是指通信的双方使用同一个时钟控制数据的发送和接收,发送端与接收端的时钟必须严格一致。,返回上一级,通信协议是指通信双方的一种约定。约定中包括对数据格式、同步方式、传送速度、传送步骤、纠错方式以及控制字符定义等问题作出统一规定,通信双方必须共同遵守。因此,也叫做通信控制规程,或称传输控制规程,它属于ISOS OSI七层参考模型中的数据链路层。 通信协议有两类:异步协议和同步协议。 同步协议又有面向字符(Character-Oriented)和面向比特(Bit-Oriented)两种。,返回上一级,1起止式异步协议,起止式异步协议的特点是一个字符一个字符传输,而且每传送一个字符都是以起始位开始,以停止位结束,字符之间没有固定的时间间隔要求。 靠起始位和停止位来实现字符的界定或同步,称为起止式协议。 可靠性高;附加位,降低了传输效率,返回上一级,异步传输模式的字符格式,1位起始位,58位数据 1位校验位(可无) 1位、1.5位或2位的停止位,返回上一级,传送时,数据的低位在前,高位在后。比如要传送一个字符“C“,C的ASCII码为43H(1000011),要求一位停止位,采用偶校验,数据有效位7位,则一帧信息为:0110000。,返回上一级,2面向字符的同步协议,IBM公司的二进制同步通信协议(BSC) 特点是一次传送由若干个字符组成的数据块,并规定了10个特殊字符作为这个数据块的开头与结束标志以及整个传输过程的控制信息,它们也叫做通信控制字。 由于被传送的数据块是由字符组成,故被称作面向字符的协议。 传输效率大大提高。传输控制字,增强了通信控制能力和校验功能。,返回上一级,面向字符同步协议的帧格式,SYN,是同步字符(Synchrunous Character)每一个帧开始处都加有同步字符,加一个SYN同步字符的称单同步,加两个SYN同步字符的称双同步。设置同步字符的目的是起联络作用,传送数据时,接收端不断检测,一旦出现同步字符,就知道是一帧开始了。 SOH,是序始字符(Start OF Header),表示标题的开始。 标题,包括源地址、目标地址和路由指示等信息。,返回上一级,STX,是文始字符(Start Of Text),它标志着传送的正文(数据块)开始。 数据块,就是被传送的正文内容,由多个字符组成。 组终字符ETB(End of Trandmission Block)或文终字符ETX,其中ETB用在正文很长,需要分成若干个数据块,分别在不同帧中发送的场合,这时在每个分数据块后面用组终字符ETB,而在最后一个分数据块后面用文终字符ETX。 校验码,对从SOH开始直到ETX(或ETB)字段进行校验,校验方式可以是纵横奇偶校验或CRC校验。,返回上一级,转义字符DLE,将特定字符作为普通数据处理的能力,这种能力叫做“数据透明”。为此,协议中设置了转义字符DLE(Data Link Escape)。 接收器收到了一个DLE就可预知下一个字符是数据字符。 DLE本身也是特定字符,当它出现在数据块中时,也要在它前面再加上另一个DLE。这种方法叫字符填充。,返回上一级,3面向比特的同步协议,最有代表性的面向比特的协议: IBM的同步数据链路控制规程SDLC (Synchronous Data Conrtol) 国际标准化组织ISO的高级数据链路控制规程HDLC (High Level Data Link Conrtol) 美国国家标准协会的先进数据通信规程ADCCP (Advancde Data Communications Control Procedure) 特点,所传输的一帧数据可以是任意位,而且它是靠约定的位组合模式,而不是靠特定字符来标志帧的开始和结束,故称“面向比特”的协议。,返回上一级,面向比特同步协议的帧格式,(1)SDLC/HDLC标志字符 SDLC/HDLC协议规定,所有信息传输必须以一标志字符开始,且以同一个字符结束。这个标志字符是01111110,称标志场(F)。 从开始标志到结束标志之间构成一个完整的信息单位,称为一帧。所有信息是以帧的形式传输的,而标志字符提供了每一帧的边界。接收端可以通过搜索“01111110”来探知帧的开头和结束,以此建立帧同步。,返回上一级,(2)地址场和控制场 地址场用来规定出与之通信的次站的地址。 控制场可规定若干个命令。 SDLC规定A场和C场的宽度为8位或16位。接收方必须检查每个地址字节的第一位,如果为“0”,则后边跟着另一个地址字节;若为“1”,则该字节就是最后一个地址字节。同样,如果控制场第一个字节的第一位为“0”,则还有第二个控制场字节,否则就只有一个字节。,返回上一级,(3)信息场(Information) 包含有要传送的数据,并不是每一帧都必须有信息场。即数据场可以为0,当它为0时,则这一帧主要是控制命令。,返回上一级,(4)校验场 两个字节长,帧校验场称为FC(Frame Check)场或称为帧校验序列FCS(Frame Check Sequence)。 SDLC/HDLC均采用16位循环冗余校验码CRC(Cylic Redundancy Code),其生成多项式为CCITT多项式X16+X12+X5+1。除了标志场和自动插入的“0”位外,所有的信息都参加CRC计算。,返回上一级,“0”位插入和删除技术: 为了把信息场中同标志字节相同的字符与标志区分开。 具体作法是发送端在发送所有信息(除标志字节外)时,只要遇到连续5个“1”,就自动插入一个“0”;当接收端在接收数据时(除标志字节外),如果连续接收到5个“1”,就自动将其后的一个“0”删除,以恢复信息的原有形式。这种“0”位的插入和删除过程是由硬件自动完成的。,返回上一级,若在发送过程中出现错误,则SDLC/HDLC协议是用异常结束(Abort)字符,或称失效序列使本帧作废。在失效序列中不使用“0”位插入/删除技术。 在HDLC规程中,7个连续的“1”被作为失效字符,而在SDLC中失效字符是8个连续的“1”。 SDLC/HDLC协议规定,在一帧之内不允许出现数据间隔。在两帧信息之间,发送器可以连续输出标志字符序列,也可以输出连续的高电平,它被称为空闲(Idle)信号。,返回上一级,8.1.4 信息的校验方式,通信中差错控制能力是衡量一个通信系统的重要内容。 发现传输中的错误,叫检错。 发现错误之后,如何消除错误,叫纠错。 常用的校验方式有两种: 奇偶校验和循环冗余(CRC)校验。,返回上一级,1奇偶校验(Parity check),发送时,在每个字符的数据最高有效位之后都附加一个奇偶校验位,这个校验位可为“1”或为“0”,以便保证整个字符(包括校验位)中“1”的个数为偶数(偶校验)或为奇数(奇校验)。 接收时,接收方采用与发送方相同的通信格式,使用同样的奇偶校验,对接收到的每个字符进行校验。,返回上一级,2循环冗余码校验CRC,发送时,根据编码理论对发送的串行二进制序列按某种算法产生一些校验码,并将这些校验码放在数据信息后一同发出。 在接收端将接收到的串行数据信息按同样算法计算校验码,当信息位接收完之后,接着接收CRC校验码,并与接收端计算得出的校验码进行比较,若相等则无错,否则说明接收数据有错。 接收器可用中断或状态标志位的方法通知CPU,以便进行出错处理。在通信控制规程中一般采用CRC检错,以自动纠错方法来纠错。,返回上一级,8.1.5 传输速率与传送距离,1波特率 串行通信中,每秒钟传送的位数(bit/s)。 在串行通信中,所说的传输速率是指波特率,而不是指字符速率,两者的关系是:假如在某异步串行通信中,通信格式为1个起始位、8个数据位、1个偶数位、2个停止位,若传输速率是1200波特,那么,每秒所能传送的字符数是1200/(1+8+1+2)=100个。,返回上一级,2发送时钟和接收时钟 在发送数据时,发送器在发送时钟(下降沿)作用下将移位寄存器中的数据按位串行移位输出,数据位的时间间隔取决于发送时钟周期。 在接收数据时,接收器在接收时钟(上升沿)作用下对接收数据位采样,并按位串行移入接收移位寄存器,最后装配成并行数据。 发送/接收时钟频率是根据所要求的传输波特率及所选择的倍数N来确定。 发送/接收时钟频率与波特率的关系为:发/接时钟频率=N.*发/收波特(其中 N=1,16,64)。,返回上一级,8.1.6 信号的调制与解调,在进行远程数据通信时,将二进制信号变换成适合电话网传输的模拟信号,这一过程称为“调制”,对应完成此过程的设备为调制器(Modulator); 接收时,将在电话网上传输的音频模拟信号进行还原成原来的数字信号,这一过程称为“解调”,对应完成此过程的设备为解调器(Demodulator)。 大多数情况下,串行通信是双向的,调制器和解调器一般合在一个装置中,这就是调制解调器MODEM。,返回上一级,调制解调器的类型按照调制技术分为:振幅键控(ASK)、频移键控(FSK)和相移键控(PSK)。 当波特率小于300时,一般采用频移键控(FSK)调制方式。其基本原理是把“0”和“1”的两种数字信号分别调制成不同频率的两个音频信号,返回上一级,8.1.7 串行接口的基本结构和基本功能,基本功能: 1、实现串行与并行数据之间的相互变换 2、根据串行通信协议完成串行数据的格式化 在异步通信方式发送时自动添加启/停位,接收时自动删除启/停位等。面向字符的同步方式数据格式化时,需要在数据块前加同步字符,数据块后加校验字符。 3、具有出错检测电路 在发送时,接口电路自动生成奇偶校验位;在接收时,接口电路检查字符的奇偶校验位或其他校验码,用来指示接收的数据是否正确。,返回上一级,1异步串行通信接口,异步通信接口基本结构图,返回上一级,发送移位寄存器及发送控制逻辑:发送数据寄存器的数据并行送入发送移位寄存器,然后在发送时钟控制下,将装配好的数据逐位发送出去。 接收移位寄存器及接收控制逻辑:在接收时钟控制下,将串行数据输入线上的串行数据逐位接收并移入接收移位寄存器。当移位寄存器接收到规定的数据位后,将数据并行送往接收数据寄存器。,返回上一级,发送数据寄存器:从CPU数据总线接收并行数据。 接收数据寄存器:接收从接收移位寄存器送来的并行输入数据,再将数据送往CPU。 数据总线缓冲器:它是CPU与数据寄存器(发送和接收)交换数据的双向缓冲器,用来传递CPU对端口的控制信息、双向传递数据、向CPU提供状态信息。,返回上一级,常见的差错状态位,奇偶校验错:接收器按照事先约定的方式(奇校验、偶校验或无校验)进行奇偶校验,如果有错误则将奇偶校验状态位置位“1”。 帧出错:在异步串行通信中,一帧信息由起始位、数据位、奇偶校验位(可选)和停止位组成。若接收端在任一字符的后面没有检测到规定的停止位,接收器便判为帧错误,差错检测逻辑将使帧错误状态位置位。 溢出错:在接收数据过程中,当接收移位寄存器接收到一个正确字符时,就会把移位寄存器的数据并行装入数据寄存器中,CPU要及时读取这个数据。如果CPU不能及时将接收数据寄存器的数据读走,下一个字符数据又被送入数据输入寄存器,因此将上一个数据覆盖,从而发生了溢出错误,差错检测逻辑会把相应的溢出错标志位置位。,返回上一级,2同步串行通信的接口,同步通信端口基本结构图,返回上一级,FIFO(先进先出缓冲器):它是由多个寄存器组成,因此发送时,CPU一次可以将几个字符预先装入;接收时允许CPU一次连续取出几个字符。 发送FIFO:它接收CPU数据总线送来的并行数据。 输出移位寄存器:它从发送FIFO取得并行数据,以发送时钟的速率串行发送数据信息。 CRC发生器:它从发送数据流信息中获得CRC校验码。 CRC校验器:它从接收数据流信息中提取CRC校验码,并与接收到的校验码相比较。,返回上一级,输入移位寄存器:它从串行输入线上以时钟分离器提取出来的时钟速率接收串行数据流,每接收完一个字符数据将其送往接收FIFO。 接收FIFO:接收输入移位寄存器送来的并行输入数据,CPU从它取走接收数据。 总线缓冲器:它是CPU与FIFO(发送和接收)交换数据的双向缓冲器,用来传递CPU端口的控制信息、字符数据和向CPU提供状态信息。 时钟分离器和锁相环:用来从串行输入数据中提取时钟信号,以保证接收时钟与发送时钟的同频同相。,返回上一级,8.2 串行接口标准,数据终端设备DTE与数据通信设备DCE串行连接时要解决两个问题: 一、双方要共同遵循物理接口标准,包括连接电缆的机械、电气特性、信号功能及传送过程的定义,它属于ISOS OSI七层参考模型中的物理层。 二、按接口标准设进行串行通信的接口电路。 8.2.1 EIA-RS-232C接口标准 8.2.2 RS-422、RS-423、RS-485接口标准,返回上一级,8.2.1 EIA-RS-232C接口标准,RS-232C标准(协议) 是美国EIA(电子工业协会)于1969年公布的通信协议。 适合数据传输速率020000bit/s范围内的通信。,返回上一级,1电气特性,(1)电平规定 数据发送TxD和数据接收RxD的信号电平: 逻辑1(MARK)=-3-15V,典型值为-12V; 逻辑0(SPACE)=+3+15V,典型值为+12V。 RTS、CTS、DTR和DCD控制和状态信号电平: 信号有效(接通,ON状态)=+3+15V,典型值为+12V; 信号无效(断开,OFF状态)=-3-15V,典型值为-12V。,返回上一级,(2)电平转换 必须在EIA-RS-232C与TTL电路之间进行电平和逻辑关系的转换。 目前较广泛地使用集成电路转换器件,如MC1488、SN75150芯片可完成TTL电平到EIA电平的转换,而MC1489、SN75154芯片可实现EIA电平到TTL电平的转换。MAX232芯片可完成TTLEIA双向电平转换。,返回上一级,1488和1489的内部结构和引脚,MC1488的引脚(2),(4,5),(9,10)和(12,13)接TTL电平输入,引脚3,6,8,11输出端接EIA-RS-232C。MC1489的1,4,10,13脚接EIA电平输入,而3,6,8,11脚接TTL输出,返回上一级,串行接口电路中的主芯片UART,处理的是TTL逻辑电平,EIA-RS-232C连接器,处理的是EIA电平,返回上一级,(3)传输距离及通信速率 RS-232C接口标准的电气特性中规定,驱动器的负载电容应小于2500pF,直接传送最大距离是15m,传输数据速率不能高于20kbit/s。,返回上一级,2接口信号功能,RS-232并未定义连接器的物理特性,因此,出现了DB-25、DB-15和DB-9各种类型的连接器,DB-25/DB-9型连接器,返回上一级,RS-232C标准接口信号,返回上一级,常用联络控制信号线,请求发送RTS(Request to send):表示DTE请求DCE发送数据。 允许发送CTS(Clear to send):表示DCE准备好接收DTE发来的数据,是对请求发送信号RTS的响应信号。 这对RTS/CTS请求应答联络信号适用于半双工方式,用于MOEDM系统中作发送/接收方式之间的切换。,返回上一级,数据装置准备好DSR(Data Set Ready):由DCE发至DTE,表示DCE已与通信信道相连接。 数据终端准备好DTR(Data Terminal Ready):由DTE发至DCE,有效(ON状态)时表明数据终端可以使用。 这对信号有效只表示设备已准备好,可以使用。所以,这两个信号可以直接连到电源上,一上电就立即变得有效。,返回上一级,接收线信号检出RLSD(Received Line Signal Detection):表示DCE已接通通信信道,通知DTE准备接收数据。此线也叫数据载波检出DCD(Data Carrier Detection)线。 振铃指示RI(Ringing):当MODEM检测到线路上有振铃呼叫信号时,使该信号有效,通知终端,已被呼叫,每次振铃期间RI为接通状态,而在两次振铃期间,则为断开状态。,返回上一级,数据发送与接收线,发送数据TxD(Transimitted Data):通过TxD线数据终端设备串行发送数据到DCE。 接收数据RxD(Received Data):通过RxD线数据终端设备接收从DCE送来的串行数据。,返回上一级,地线,保护地PG:可接机器外壳,需要时可以直接接地,也可以不接。 信号地SG:这是其它各信号电压的参考点。无论电缆如何连接,这条线必不可少。,返回上一级,信号线的连接,(1)在15m以上的远距离通信时,一般要加调制解调器MODEM。 若在通信双方的MODEM之间采用专用线进行通信则只要使用28号信号线进行联络与控制;若采用普通电话线进行通信,则还要增加RI(22)和DTR(20)两个信号线进行联络。,返回上一级,(2)近距离通信时,不采用调制解调器MODEM,又称零MODEM方式。 最简单的情况,在通信中只要使用3根线(发送线、接收线、信号地线)便可实现全双工异步通信。,返回上一级,(3)如果在直接连接时,需要考虑RS-232C的联络控制信号,则采用零MODEM方式的标准连接方法,又称为双交叉环回接口。,返回上一级,8.2.2 RS-422、RS-423、RS-485接口标准,EIA-RS-232C接口标准规定,最大传输距离为15m,最高数据传输速率不高于20kbit/s。 为了解决传输距离不够远、传输速率不够快的问题,EIA在RS-232C的基础上,制订了更高性能的串行接口标准。,返回上一级,RS-422A标准,RS-422A标准是一种以平衡方式传输的标准。 平衡,是指双端发送和双端接收,所以,传送信号要用两条线AA和BB,发送端和接收端分别采用平衡发送器和差动接收器。,返回上一级,RS-422A标准的电气特性对逻辑电平的定义是根据两条传线之间的电位差值来决定 :当AA电平比BB电平低-2V时表示逻辑“1”;当AA线电平比BB线电平高+2V时表示逻辑“0”。 RS-422A电路通过平衡发送器把逻辑电平变换成电位差,完成始端的信息传送; 通过差动接收器把电位差变成逻辑电平,实现终端的信息接收。,返回上一级,RS-422A标准抗共模干扰的能力强,最大数据速率可达10Mbit(传送15m时)。若传输速率降到90kbit/s时,则最大距离可达1200m。 该标准规定电路中只许有1个发送器,可有多个接收器,允许驱动器输出为+2V+6V,接收器输入电平可以低到+200mV。 为了实现RS-422A标准的连接,许多公司推出了平衡驱动器/接收器集成芯片,如MC3487/3486、SN75174/75175等。,返回上一级,2RS-423A标准,RS-423A标准是非平衡方式传输的。即单端线传送信号,规定信号参考电平为地。 该标准规定电路中只允许有1个单端发送器,但可有多个接收器。因此,允许在发送器和接收器之间有一个电位差。,返回上一级,标准规定的逻辑“1”电压必须超过4V,但不能高于6V;逻辑“0”电压必须低于-4V,但不能低于-6V。 RS-423A标准由于采用差动接收,提高了抗共模干扰的能力,因而与RS-232C相比,具有传输距离更远、传输速率更快,当传输距离为90m时,最大数据速率可为100kbit/s,若降至1kbit/s时,传输距离为1200m。,返回上一级,3RS-485接口标准,RS-485是一种平衡传输方式的串行接口标准,和RS-422A兼容,且扩展了其功能,是一个多发送器的标准,允许一个发送器驱动多个负载设备。 RS-485的共线电路结构是在一对平衡传输线的两端都配置终端电阻,其发送器、接收器、组合收发器可挂在平衡传输线上的任何位置。,返回上一级,RS-485标准抗干扰能力强,传输速率高,传送距离远。 RS-485允许平衡电缆上连接32个发送器/接收器对,目前已在许多方面得到应用,尤其是在多点通信系统中。 为了实现RS-485标准串行传送,可采用大规模集成芯片,如MAXIM公司的MAX485/491芯片。,返回上一级,8.3 异步通信接口,IBM-PC机系统可配有同步和异步通信接口,一般系统只配置了异步通信接口,系统提供有两个通信端口:COM1和COM2。 PC/XT异步通信适配器提供RS-232C标准的EIA电压接口和20mA电流环接口两种操作方式。 8.3.1 异步通信适配器的组成 8.3.2 INS 8250的结构和外部特性 8.3.3 INS8250内部寄存器及其编程方法 8.3.4 INS 8250应用实例,返回上一级,8.3.1 异步通信适配器的组成,返回上一级,1电平转换,INS 8250芯片处理电平为TTL电平,要与25芯连接器相连接,必须经过电平转换。 前图中,INS 8250和连接器的信号线是分别通过了电平转换器SN75150和SN75154才送到对方的。,返回上一级,2地址译码电路,系统地址总线低10位(A0A9)用于端口地址译码,其中高位地址(A3A9)经译码器U2产生选片信号,送到8250的CS2端;低位地址(A0A2)直接送到8250的(A0A2)端,作为芯片内部寄存器的选择线。 I/O地址译码部分是由8输入端与非门U2及反相器U3组成的。 口地址有两个,由跳接开关U15的J10和J12端子进行切换。 中断请求由跳线开关U15控制连接IRQ3/IRQ4 。,返回上一级,8.3.2 INS 8250的结构和外部特性,INS 8250的外部引脚及内部结构图,返回上一级,片选信号CS0=1,CS1=1,CS2=0时,选中INS 8250芯片,并由A0A2选择访问哪个内部寄存器。 DISTR或DISTR和DOSTR或DOSTR,读写控制信号两对。 DDIS,(数据总线)驱动器禁止信号引脚,在CPU从8250读取数据时为低电平,其它时间为高电平,禁止外部收发器对系统总线的驱动,PC/XT异步适配器未使用此信号。,返回上一级,中断请求引脚INTRPT,OUT1和OUT2两个输出引脚用来控制INTRPT的输出。 XTAL1 XTAL2 ,输入外部晶体振荡电路产生的1.8432MHz信号,作为8250的基准工作时钟。 BAUDOUT,输出外部输入的基准时钟经内部波特率发生器(分频器)分频后产生的发送时钟。 RCLK可接收由外部提供的接收时钟信号。 MR,主复位端,接系统RESET信号。,返回上一级,8.3.3 INS8250内部寄存器及其编程方法,8250芯片只有3根地址选择线A0A2,而内部有10个可访问的寄存器,所以有些寄存器的端口地址必须重复,8250内部寄存器地址,返回上一级,1波特率因子寄存器(DLL/DLH),8250芯片串行数据传输的速率是由波特率因子寄存器DLL/DLH控制,在初始化时将选用的波特率因子值的高、低字节分别写入DLH和DLL。 外接1.8432MHz基准时钟,通过除以波特率因子寄存器给定的分频值,在8250内部产生不同的波特率,通过BAUDOUT引脚输出接到RCLK端,控制收发数据的传输速率。 即分频值的计算公式是: 波特率因子=1843200(16*波特率),返回上一级,波特率因子与波特率对照表,返回上一级,若设定通信波特率为1200BPS,则波特率因子值为00H(高8位)和60H(低8位),其装入程序段为: MOV DX,3FBH ;置LCR口地址,DLAB=1 MOV AL,80H OUT DX,AL MOV DX,3F8H ;DLL的口地址 MOV AL,60H ;波特率因子低字节 MOV DX,3F9H ;DLH的口地址 MOV AL,00H ;波特率因子高字节 OUT DX,AL,例:设置INS8250波特率因子寄存器,2通信线路控制寄存器(LCR),主要用来指定异步通信数据格式,即字符长度、停止位位数、奇偶校验。 LCR的最高位DLAB用来指定允许访问波特率因子寄存器。 内容不仅可以写入而且可以读出。,返回上一级,D0D1位:字长选择,用来设置数据有效位数。 WLS1WLS0=00,为5位;WLS1WLS0=01,为6位;WLS1WLS0=10,为7位;WLS1WLS0=11,为8位。 D2位:停止位选择,用来设置停止位位数。 STB=0,为1位;STB=1,为1位(字符长为5位时);或STB=1,为2位(字符长度为6,7或8位时)。 D3位:奇偶校验允许位,用来设置是否要奇偶校验。 PEN=0,不要校验;PEN=1,要校验。,返回上一级,D4位:偶校验选择,用来设置偶校验或奇校验 EPS=0,要奇校验;EPS=1,要偶校验。 D5位:附加奇偶标志位选择。 SP=0,不附加;SP=1,附加1位。 D6位:中止设定。指定发正常信号还是连续发空号(逻辑0)。 SB=0,正常;SB=1,中止。 D7位:波特率因子寄存器访问允许控制位。 DLAB=1,允许访问波特率因子寄存器;DLAB=0,访问其他寄存器。,返回上一级,PEN=1 SP=1时,说明在奇偶校验位和停止位之间插入一位奇偶标志位: “0”,采用偶校验;“1”,则采用奇校验。 作用是发送设备把采用何种奇偶校验方式通过数据流告诉接收设备 例,设发送数据字长为7位,1位停止位,偶校验,其程序段为: MOV DX,3FBH ;LCR口地址 MOV AL,00011010B ;LCR的内容,数据格式参数 OUT DX,AL,返回上一级,3通信线路状态寄存器(LSR),表示数据接收和数据发送时8250的状态。若出错,则指出出错的类型。 CPU可以采用查询方式查询这些状态,也可以采用中断方式获得出错的原因。对LSR不仅可读,而且可写(除6位外),写LSR是为了人为地设置某些错误状态,供系统自检时使用。,返回上一级,D0位:接收数据准备好(接收缓冲器满)。 DR=1,表示接收器已接收到一个数据字符,并且接收移位寄存器的内容已送到接收缓冲器中;当CPU从接收缓冲器读走一个数据时,DR位自动置“0”。 D1D3位:出错标志位。 OE溢出错标志位: PE 奇偶校验出错标志位: FE 帧出错标志位:,返回上一级,D4位:中止识别指示。 BI=1,指示发送设备进入中止状态;发送端发送正常时,BI=0。 D5位:发送保持器空。 THRE=1,一旦数据从发送保持寄存器送到发送移位寄存器,发送保持寄存器就变为空;当CPU将数据写入发送保持器中,THRE自动置“0”。 D6位:发送移位寄存器空(只读)。 TSRE=1,表示数据从发送移位寄存器送到发送数据上;当发送保持寄存器的内容被送入发送移位寄存器时,TSRE自动置“0”。,返回上一级,START: MOVDX,3FDH;LSR口地址 INAL,DX;读取LSR的内容 TESTAL,00011110B;查询有无数据接收错误 JNZERR;有错,转出错处理 TESTAL,01H;无错,查询接收数据是否;准备好,DR=1? JNZRECEIVE;已准备好,则转到接收程序 TESTAL,20H;未准备好,再查发送保持;寄存器是否空,THRE=1? JNZTRANS;已空,则转到发送程序 JMPSTART;不空,循环等待 ERR: TRANS : RECEIVE: ,例:利用LSR的状态位进行收发数据处理,4中断允许寄存器(IER),控制中断源提出的中断请求被允许还是被禁止。 该寄存器控制了8250的4个中断,若对应位置“1”,则允许相应的中断请求;若对应位置“0”,就禁止相应的中断请求。,返回上一级,D0位:ERBFI=1,允许接收缓冲器满中断;ERBFI=0,禁止接收缓冲器满中断 D1位:ETBEI=1,允许发送保持寄存器空中断;ETBEI=0,禁止发送保持寄存器空中断 D2位:ELSI=1, 允许接收数据出错中断;ELSI=0,禁止接收数据出错中断 D3位:EMSI=1,允许调制解调器状态改变中断;EMSI=0,禁止调制解调器状态改变中断 D4D7位:标志位,D4D7=0,返回上一级,5中断识别寄存器(IIR),8250内部设有4个中断优先级,按从高到低的顺序排列为:接收数据出错中断、接收缓冲器满中断、发送保持寄存器空中断、MODEM控制信号状态改变引起的中断。 8250内部设置了中断识别寄存器IIR,用来保存优先级最高的中断类型编码,直到该中断请求被CPU响应并服务之后,才能接受其它的中断请求。IIR是只读寄存器,它的内容随中断源而改变。最高5位为标志位,规定为低电平“0”。,返回上一级,D0位:IP=0,表示还有其它中断等待处理;IP=1,表示无其它中断等待处理。 D1D2位:中断类型标识码ID1ID2,表示申请中断的中断源的中断类型编码。 ID1ID2=00时,调制解调器状态改变引起的中断 ID1ID2=01时,发送保持寄存器空(THRE=1)中断 ID1ID2=10时,接收缓冲器满(RBFI=1)中断 ID1ID2=11时,接收数据出错(包括OE=1,PE=1,FE=1,BI=1)中断,返回上一级,6调制解调控制寄存器(MCR),调制解调控制寄存器(MCR) 设置对MODEM的联络控制信号和芯片自检,返回上一级,D0位:D0=1,数据终端准备好(DTR=1)有效 D1位:D1=1,请求发送有效(RTS=1) D2位:D2=1,使OUT1输出有效(OUT1=1),未使用 D3位:D3=1,中断控制,为使8250能发出中断控制信号,此位必须置“1”(OUT2=1) D4位:LOOP位是供8250本身自检诊断而设置的。当这位置“1”时,8250处于诊断方式。在正常通信时,LOOP位置“0”。,返回上一级,若要使MCR的DTR、 RTS有效,OUT1、OUT2以及LOOP无效,则可用下程序 MOV DX,3FCH;MCR口地址 MOV AL,00000011B;MCR的控制字 OUT DX,AL 若要自发自收进行诊断,则程序段为: MOV DX,3FCH;MCR口地址 MOV AL,00010011B;LOOP位置“1” OUT DX,AL,例:设置MCR,7MODEM状态寄存器(MSR),MODEM状态寄存器用来检测和记录来自MODEM的联络控制信号及其状态的变化,返回上一级,MSR的低4位表示来自MODEM联络控制信号状态的改变情况。任意一位为“1”,且在中断允许时(IER中D3=1),均产生MODEM状态中断。 MSR的高4位,分别表示收到了来自MODEM的控制信号,供CPU进行处理。,返回上一级,8发送保持寄存器(THR),发送时,CPU首先将待发送的字符写到8250的发送保持寄存器THR中,然后进入发送移位寄存器,在发送时钟的作用下,从SOUT引脚输出。,返回上一级,接收缓冲寄存器(RBR),接收时,串行数据在接收时钟作用下,从SIN引脚先输入到接收移位寄存器RSR,然后由RSR并行输入到接收缓冲器RBR,一旦RBR变满,将LSR的DR位置“1”,产生中断请求,要求CPU读取数据字符。,返回上一级,8.3.4 INS 8250应用实例,异步通信编程一般有三个部分: 初始化串行通信口、发送一个字符以及接收一个字符。,返回上一级,1初始化串行通信口COM1,初始化串行通信口COM1(端口基址3F8H): 确定数据传输帧格式、确定传输波特率以及确定8250操作方式。 8250操作方式: 自发自收的循环反馈通信方式 程序查询方式传送 中断方式传送,返回上一级,初始化方法有两种: 一种是按步骤分别对线路控制寄存器、波特率因子寄存器和MODEM的控制寄存器等进行参数写入操作,其参数是在程序中由指令分散设定的; 二是专门编制一个初始化串行口的子程序,其初始化参数作为子程序的入口参数集中给出,可由调用者按要求设置不同参数来完成相应的初始化。,返回上一级,入口参数:AL=初始化参数 其中,D4D0各位的定义与线路控制寄存器相对应的位定义相同,而D7D5的各位则为波特率选择。,返回上一级,;波特率因子表 ;D7D6D5 波特率 BAUD-TABLE DW1047;0 0 0 110 DW768;0 0 1 150 DW384;0 1 0 300 DW192;0 1 1 600 DW96;1 0 0 1200 DW48;1 0 1 2400 DW24;1 1 0 4800 DW12;1 1 1 9600 SERIAL-INITPROC NEAR MOVAH,AL;入口参数保存到AH MOVDX,3FBH;线路控制寄存器端口 MOVAL,80H;置DLAB=1 OUTDX,AL MOVDL,AH;获取波特率因子 MOVCL,4 ROLDL,CL;波特率因子移低4位,串行口初始化的子程序,下页,上页,ANDDX,0EH;因子值乘2,存放在DX MOVDI,OFFSET BAUD-TABLE ADDDI,DX;DI为波特率因子表索引 MOVDX,3F9H;波特率因子高字节端口 MOVAL,CS:DI+1 OUTDX,AL ;写入因子高字节 MOVDX,3F8H ;波特率因子低字节端口 MOVAL,CS:DI OUTDX,AL ;写入低字节 MOVDX,3FBH ;线路控制寄存器端口 MOVAL,AH ANDAL,1FH ;保留数据格式参数 OUTDX,AL ;写入数据格式 MOVAL,0 ;屏蔽4种中断源类型 MOVDX,3F9H ;中断允许寄存器端口 OUTDX,AL ;采用查询I/O RET ;正常通信,返回 SERIAL-INIT ENDP,串行口初始化的子程序(续),下页,上页,2查询方式下的PC机间相互通信,要求:在A机上敲键盘字符,并且在A机的屏幕上显示该字符,然后通过串行口将该字符发送给B机,并且也在B机上显示,即实现A机与B机间通信,通信波特率为1200BPS。以敲击字符“P”作为结束,(使用COM2端口)。 分析:为了实现PC机间相互通信,两机通过RS-232C的三根信号线(TXD、RXD、GND)进行相连。为实现一端向另一端传送数据,采用查询方式分别编写发送程序和接收程序。,返回上一级,查询方式的PC机间通信程序流程图,返回上一级,datasegment dispdb transmission star