8251A可编程串行接口芯片_第1页
8251A可编程串行接口芯片_第2页
8251A可编程串行接口芯片_第3页
8251A可编程串行接口芯片_第4页
8251A可编程串行接口芯片_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、8.2 8251A可编程串行接口芯片8.2.1 8251A的引脚信号8251A是用来作为CPU与外设或调制解调器之间的接口芯片,有28个引脚,如图8.12所示。D7D0:三态、双向数据总线。RESET:芯片复位信号线。该信号有效时,迫使8251A处于空闲状态;在把一组新的控制字写入8251A设定其功能之前,该芯片一直处于空闲状态。当该线上加高电平(宽度为时钟的6倍)时,芯片复位而处于空闲状态,等待命令。通常把它与系统的复位线相连,以便上电复位。CLK:工作时钟,由外部时钟源提供。为芯片内部电路提供定时,并非发送或接收数据的时钟。在同步方式下,CLK的频率要大于接收器或发送器输入时钟(RxC或T

2、xC)频率的30倍。在异步方式下,CLK的频率要大于接收器或发送器输入时钟频率的4.5倍。另外,CLK的周期要在0.4s到1.35s范围内。RD#:读信号。该信号有效表示CPU正从8251A读数据或状态信息。WR#:写信号。该信号有效表示CPU正把控制字或数据写入8251A。CS#:片选信号。该信号有效时,表示该8251A已被选中,可进行读写操作;若为高电平则数据总线处于高阻状态,此时RD和WR对器件无影响。C/D#:控制/数据选择线。若此引脚加高电平,则CPU访问8251A命令寄存器或状态寄存器;若加低电平,则CPU访问数据寄存器。可见,8251A芯片内部只有两个端口。DSR # :数据通信

3、设备准备好,是输入信号,低电平有效。通常用以表示MODEM已准备好。CPU通过读8251A的状态寄存器的D7位检测这个信号。DTR # :数据终端准备好,是输出信号,低电平有效。它由工作命令字的D1位置“1”变为有效,用以表示8251A准备就绪。通常用于MODEM的控制。RTS # :请求发送,是输出信号,低电平有效。通常用于通知MODEM 8251A要求发送数据。用工作命令字的D5位置“1”来使其有效。CTS # :允许传送,是输入信号,低电平有效。通常是MODEM对8251A的信号的响应,当CTS#有效且工作命令字中的TxE位为1时8251A方可发送数据。如果在发送器工作过程中,TxE位变

4、为0或CTS #变为无效,则发送器关闭之前要将已经写入的所有数据发送出去后才关闭。如果在最后一个字符出现在串行数据流之前出现这种状况,则最后一个字符将在CTS #变为有效和TxE变为1时再发送一次。TxRDY(Transmitter Ready):发送器准备好,输出,高电平有效。当它有效时,表示发送器已准备好接收CPU送来的数据字符,通知CPU可以向8251A发送数据。CPU向8251A写入了一个字符以后,TxRDY自动复位。在用查询方式时,此信号作为一个状态位,CPU可从状态寄存器的D0位检测这个信号;在用中断方式时,此信号作为中断请求信号。TxEMPTY(Transmitter Empty

5、):发送器空,输出,高电平有效。当它有效时,指示发送器中的数据已发送出去,已经没有要发送的字符了。当8251A从CPU接收待发的字符后,自动复位。TxEMPTY既然表示发送已经结束,这样在半双工方式中,CPU就从它知道何时切换数据的传输方向,由发送转为接收。此信号可从状态寄存器的D2位检测到。在同步方式下,该引脚为高电平表示字符还未写入8251A,8251A正在发送填充字符。当同步字符正在移出时,TxEMPTY是不会变为低电平的。TxC:发送器时钟,输入,由外部(波特率时钟发生器)提供。由它控制8251A发送数据的速率。在异步方式下,TxC的频率可以等于波特率,也可以是波特率的16倍或64倍。

6、在同步方式下, TxC的频率与数据速率相同。 TxC的下降沿把串行数据移出8251A。TxD:发送数据线,输出,串行数据从该引脚发送出去。RxRDY(Receiver Ready):接收器准备好,输出,高电平有效。当它有效时,表示8251A已经从它的串行输入端接受了一个字符,通知CPU读取数据。当CPU从8251A读了一个字符后,此信号自动复位。在查询方式时,此信号可作为状态位,CPU通过读状态寄存器的D0位检测这个信号。在中断方式时可作为中断请求信号。RxRDY的电平状态还受工作命令字的RxE位控制,只有当RxE=1时,接收器接收到字符后才能将RxRDY变高,否则即使接收到字符RxRDY也不

7、变高。RxC:接收器时钟,输入,由外部(波特率时钟发生器)提供,由它控制8251A接收数据的速率。其频率的选择往往和TxC相同。在异步方式下, RxC的频率可以等于波特率,也可以是波特率的16倍或64倍。在同步方式下, RxC的频率与数据速率相同。实际应用中,把TxC和RxC连接在一起,使用同一个时钟源波特率时钟发生器。RxD:接收数据线,输入,接收器从该引脚接收串行数据。SYNDET(Synchronous Detection)/BD(Break Detection):同步检测/间断检测,是双功能引脚。在同步方式时,作同步字符检出信号SYNDET,为双向线。SYNDET是作为输入还是输出,取

8、决于初始化程序指定8251A是工作于内同步或外同步。当8251A工作于内同步方式时,SYNDET是输出,高电平有效,表示接收/发送器已经同步;当8251A工作于外同步方式时,SYNDET是输入,它的一个正跳变信号将启动8251A在下个的下降沿开始装配字符。在异步方式时,作间断检出信号BD,输出,高电平有效。只要接受器在两个连续的停止位串中间(包括起始位、数据位、奇偶位)保持低电平,那么该引脚就输出高电平。在8251A被复位或RxD恢复为1时该引脚变低。8.2.2 8251A的内部结构8251A的结构分成5个主要部分:接收器、发送器、调制控制、读/写控制以及系统数据总线缓冲器。8251A的内部由

9、内部数据总线实现相互之间的通信。8251A的内部结构如图8.13所示。 1.数据总线缓冲器数据总线缓冲器是三态、双向、8位缓冲器,与系统数据总线连接起来。包含状态缓冲器、接收数据缓冲器、发送数据/命令缓冲器。状态缓冲器用来存放8251A的内部工作状态,以供CPU读出查询;接收数据缓冲器用来存放接收器已经装配好的字符,准备让CPU 读出;发送数据/命令缓冲器用来存放CPU写入8251A的数据或命令。CPU向8251A写入命令字是为了控制8251A的内部操作,使其建立所需要的工作方式。命令一旦写入,8251A立即就执行,不需要占用发送数据/命令缓冲器多少时间。CPU向8251A写入输出数据,由于串

10、并转换才能输出所以需要较长的时间。因此,一旦给发送数据/命令缓冲写入发送数据,发送控制器的TxRDY信号就变低,此时CPU不能向8251A写入新的数据或者命令,只有当发送器完成数据发送,TxRDY=1时,才能写入新的数据或命令,否则就会出错。由此,让CPU向8251A发送数据或命令时,一般需要先测试TxRDY的电平状态,这TxRDY为高电平时才将数据或命令写入8251A。2.接收器接收器的功能是在接收时钟的作用下接收RxD引脚上的串行数据并按指定的方式把它转换为并行数据。在异步方式下,当接收器成功的接收到起始位后,8251A便接收数据位、校验位、停止位。在内同步方式时,8251A首先搜索同步字

11、符,在RxD是以一次一位的方式移动数据,在接收到每一位时都将现在接收的8位与同步字符寄存器的内容进行比较,若相等就搜索结束,使SYNDET=1表示已经同步,然后开始接收数据。在外同步方式时,通过SYNDET引脚检测到外部电路提供的同步信号之后,开始接收数据。无论在什么方式下,接收的同时进行校验,若发现错误,则在状态寄存器中保存,以便CPU处理;当校验无错时,才将并行数据存放在数据总线缓冲器的接收数据缓冲器中,并发出接收器准备好信号(RxRDY=1),通知CPU读数据。3.发送器发送器的功能是,首先把待发送的并行数据转换成所要求的帧格式并加上校验位,然后在发送时钟的作用下,在TxD引脚上一位一位

12、地串行发送出去。在异步方式时,发送器总是要加上起始位,并根据命令字的设定加上奇偶校验位和停止位;在同步方式下,发送器最先发送的是同步字符,而在随后发送的数据中除了奇偶校验位外不再插入别的位,如果在发送过程中CPU未及时提供发送数据,发送器就自动发送同步字符。不管哪种方式,发送完一帧数据后,发送器准备好信号置位(TxRDY=1),通知CPU发送下一个数据。4.读/写控制读/写控制逻辑对CPU输出的控制信号进行译码以实现表8.5所示的读/写功能。C/D功 能0000l0l01001l1l00CPU从 8251A读数据CPU 从8251A读状态CPU写数据到8251ACPU写命令到 8251AUSA

13、RT总线浮空(无操作)CSRD#WR#5.MODEM控制 MODEM控制部分有四条信号线,一般用于实现对MODEM的控制联络,有时也可以用来作与外设联络的标准信号使用。 8.2.3 8251A的工作方式1.方式命令字方式命令字的作用是指定通信方式及该方式下的数据格式,即指定8251A为异步方式还是同步方式,并按照其通信方式约定帧数据格式。它必须跟在一个复位操作(内部或外部的)之后。方式命令字长为8位,可以分为4组,每组2位,其格式是: 0=内同步l=外同步0=双同步1=单同步00=不使用01=1位10=1.5位11=2位0=无校验01=奇校验11=偶校验00=5位01=6位10=7位11=8位

14、00=同步01=异步(1)10=异步(16)11=异步(64)D7D6D5D4D3D2D1D0SlS0EPPENL1L0BlB0同步控制异步时的停止位数校验方式数据位数同步方式、异步方式的波特率因子D1D0(B1B0):这两位确定8251A是工作于同步方式还是异步方式。当D1D0=00时,为同步方式;当D1D0 00时,为异步方式,并且由D1D0的3种组合用以选择异步方式的波特率因子(1、16或64)。D3D2(L1L0):用以指定1个字符数据包含的数据位位数。D5D4(EP、PEN):用以指定要不要校验以及采用奇校验还是偶校验。D7D6(S1S0):在同步和异步方式下的意义是不同的。异步方式

15、时用以指定停止位的长度;同步方式时用以指定是内同步还是外同步,以及同步字符的个数是一个或两个。例如,在某异步通信中,数据格式采用8位数据位,1位起始位,2位停止位,奇校验,波特率因子是16,则其方式命令字为11 01 11 10B = 0DEH。若将方式命令写入命令口,则程序段为: MOV DX,8251A-C ;8251A命令口地址 MOV AL,0DEH ;异步方式命令字 OUT DX,AL某同步通信中,若帧数据格式为:字符长度8位,双同步字符,内同步方式,奇校验,则方式命令字是00011100B = 1CH。若将方式命令写入命令口,则程序段为:MOV DX,8251A-C ;8251A命

16、令口地址MOV AL,1CH ;同步方式命令字OUT DX,AL某同步通信中,若帧数据格式为:字符长度8位,外同步方式,偶校验,则方式命令字是01111100B = 7CH。若将方式命令写入命令口,则程序段为:MOV DX,8251A-C ;8251A命令口地址MOV AL,7CH ;同步方式命令字OUT DX,AL2.工作命令字工作命令字的作用是指定8251A进行某种操作(如发送、接收、内部复位和检测同步字符等)或处于某种工作状态,以便接收或发送数据。在异步方式和外同步方式时,它必须跟在方式命令字之后;在内同步方式时,它必须跟在同步字符之后。工作命令字长为8位,其格式为: 进入搜索方式内 部

17、复 位发 送请 求错误标志复位发终止字符接 收允 许数据终端准备好发 送允 许D7D6D5D4D3D2D1D0EHIRRTSERSBRKRxEDTRTxE说明:D0是允许发送TxEN(Transmit Enable) 。D0=1,允许发送。D0=0,禁止发送。可作为发送中断屏蔽位。D1是数据终端准备就绪DTR。D1=1时,强置有效,表示终端设备已准备好。D1=0时,强置无效。D2是允许接收RxE(Receive Enable)。D2=1,允许接收。D2=0,禁止接收。可用作接收中断屏蔽位。D3是发中止字符SBRK(Send Break Character)。D3=1时,强迫TxD为低电平,输出

18、连续的空号。D3=0时,正常操作。D4是错误标志复位ER(Error Reset) 。D4=1时,使状态字中的错误标志位(PE/OE/FE)复位。D4=0时,错误标志位不复位。D5是请求发送RTS(Request To Send)。D5=1时,强迫为低电平,置请求发送有效。D5=0时,置无效。D6是内部复位m(Internal Reset)。D6=1时,进行内部复位,使8251A处于等待方式命令。发方式命令之前,一定要先进行内部复位,即复位命令之后一定是跟方式命令字。D6=0时,不进行内部复位。D7是进入搜索方式EH(Enter Hunt Mode)。D7=1时,启动搜索同步字符。D7=0时,

19、不搜索同步字符。其中有些关键位(D6,D4,D2和D0)是经常要使用的。例如,若要使8251A内部复位,则程序段为:MOV DX,8251A-C ;8251A命令口地址MOV AL,01000000B ;置D6=1,使内部复位OUT DX,AL注意:只要是包含D6=1的任何代码作为命令字都能实现内部复位。某异步通信时,允许接收,同时允许发送,则程序段为:MOV DX,8251A-C ;8251A命令口地址MOV AL,00000101B ;置D2=l,D0=l,允许接收和发送OUT DX,AL注意:在该段程序前应先写过复位命令和方式命令。 3.状态字状态字的作用是报告8251A当前状态。状态字

20、是8251A在执行命令过程中自动产生的,并存放在状态寄存器中,状态寄存器的某状态位置1,表示有效。状态字长为8位,其格式为: 数据设备就绪同 步检 出格式错溢出错奇偶错发 送缓冲器空接 收准备好发 送准备好D7D6D5D4D3D2D1D0DSRSYNDETFEOEPETxEMPTYRxRDYTxRDY说明:D0是发送准备好TxRDY。D0=1时,准备好;D0=0时,未准备好。D1是接收准备好RxRDY。D1=1时,准备好;D1=0时,未准备好。D2是发送缓冲器空TxEMPTY。D2=1时,发送缓冲器空;D2=0时,发送缓冲器不空。D3是奇偶错PE(Parity Error)。当接收器检测出奇偶

21、错时,PE位置“1”。PE有效并不禁止8251A工作。D4是溢出错OE(Overrun Error)。当前一个字符尚未被CPU取走,后一个字符又到来,则OE置“1”。OE有效并不禁止8251A的操作,但是被溢出的字符丢掉了。D5是帧出错FE(Framing Error)。当接收器在一字符的后面没有检测到规定的停止位,则FE置“1”。只用于异步方式。D6是同步检出SYNDET。在SYNDET引脚上检测到同步信号或从内部检出了规定的同步字符时置位。D7是数据设备就绪DSR。在DSR#有效时被置位。D3、D4、D5这3个错误状态位,均可由工作命令字的错误标志ER位复位。其中有些状态位(D0、D1、D

22、3、D4、D5)是经常使用的关键位。例如,某串行通信时,在发送程序中,需查状态字的D0位是否置1,即查TxRDY=1否?程序段为:LP: MOV DX,8251A-C ;读8251A状态字 IN AL,DX AND AL,01H ;查发送器是否就绪 JZ LP ;未就绪,则继续查某串行通信时,在接收程序中,需查状态字的D1位是否置1,即查RxRDY=1否?程序段为:LP: MOV DX,8251A-C ;读8251A状态字 IN AL,DX AND AL,02H ;查接收器是否就绪 JZ LP ;未就绪,则继续查若要在接收过程中检查出错信息,则可用下列程序段:MOV DX,8251A-C ;读

23、8251A状态字IN AL,DX TEST AL,00111000B ;检查D5 、D4 、D3三位(FE、OE、PE) JNZ ERROR ;若其中有一位为1,则出错,并转入错误处理程序8.2.4 8251A的编程1.8251A初始化编程8251A的方式命令字、工作命令字和状态字之间的关系是:方式命令字只是约定了双方通信的方式(同步/异步)及其数据格式(数据位和停止位长度,校验特性,同步字符特性等)、传送速率(波特率因子)等参数,但并没有规定数据传送的方向是发送还是接收,故需要工作命令字来控制发/收。但何时才能发/收取决于8251A的工作状态,即状态字。只有当825lA进入发送/接收准备好的

24、状态,才能真正开始数据的传送。 由于8251A发送数据缓冲器与命令缓冲器共用,因此在8251A发送数据的工作过程中若要向它写命令的话,必须等到TxRDY状态位有效,否则将覆盖掉待发数据。由于方式命令字和工作命令字均无特征位标志,且都是送到同一命令端口,所以在向8251A写入方式命令字和工作命令字时,必需要按一定的顺序,这种顺序不能颠倒或改变,若改变了这种顺序,8251A就不能识别。这种顺序是:复位方式命令字工作命令字1工作命2,如图8.14所示。 (1)初始化为异步方式从图8.14可以看出,在写方式命令字之前必须先复位。为了避免因8251A正在等待同步字符而误把写入的复位命令当作同步字符造成初

25、始化错误,往往先写入3个0来解决这个问题。这是因为,如果当前8251A已经处于复位状态,就会把第一个0当作双同步字符的内同步方式字,尔后的两个0当作同步字符;若8251A正在等待同步字符,就会把第一个0或第一、第二个0当作同步字符,尔后的0看做工作命令字;其他情况把3个0都视作工作命令字。程序段如下:MOV DX,8251A-C ;8251A命令口地址XOR AL,AL ;连续输出3个0OUT DX,ALOUT DX,ALOUT DX,ALMOV AL,40H ;内部复位OUT DX,ALMOV AL,0FBH ;写方式命令字1111 1011BOUT DX,ALMOV AL,37H ;写工作

26、命令字OUT DX,AL (2)初始化为同步方式同步字符数为2的内同步,同步字符是0AAH,7个数据位,偶校验。复位3个出错标志,启动收/发器,送出就绪信号,对同步字符进行检索。 则初始化程序段为:MOV DX,8251A-C ;8251A命令口地址XOR AL,AL ;连续输出3个0OUT DX,ALOUT DX,ALOUT DX,ALMOV AL,40H ;内部复位OUT DX,ALMOV AL,38H ;写方式命令字0011 1000BOUT DX,ALMOV AL,0AAH ;连续写入两个同步字符OUT DX,ALOUT DX,ALMOV AL,97H ;写工作命令字OUT DX,AL

27、 2. 8251A应用编程(1)双机异步串行通信两台微机之间进行串行通信,甲机发送,乙机接收;两机相距1m以内。要求把甲机上1KB的数据块传送到乙机中去。采用起止式异步方式,字符长度为7位,2位停止位,波特率因子为64,无校验。CPU与8251A之间用查询方式交换数据。两台微机中的8251A的口地址相同:320H为数据口地址,321H为命令/状态口地址。由于是近距离传输,并且采用查询I/O方式,故可采用图8.15所示连接。 甲机的发送程序如下:DATA SEGMENTTBUFF DB 1024 DUP(?)DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA

28、START:MOV AX,DATAMOV DS,AXLEA BX,TBUFFMOV CX,1024MOV DX,321H ;初始化8251AXOR AL,AL OUT DX,ALOUT DX,ALOUT DX,ALMOV AL, 40H ;复位OUT DX,ALMOV AL,11001011B ;异步通信的方式命令字OUT DX,ALMOV AL,00110011B ;工作命令字OUT DX,ALLOOP1:MOV DX,321H ;测试是否可发送 IN AL,DX TEST AL,1 ;TxRDY发送器是否准备好JZ LOOP1 ;没有,继续测试MOV DX,320H ;发送一个字符MOV

29、AL,BXOUT DX,ALINC BXDEC CX ;是否发送完?JNZ LOOP1 ;未发完,继续MOV AH,4CH ;已发完,退出INT 21HCODE ENDS END START乙机的接收程序如下:DATA SEGMENTRBUFF DB 1024 DUP(?)DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXLEA BX,RBUFFMOV CX,1024MOV DX,321H ;初始化8251AXOR AL,AL OUT DX,ALOUT DX,ALOUT DX,ALMOV AL, 40H

30、;复位OUT DX,ALMOV AL,11001011B ;异步通信的方式命令字,通信双方的格式相同OUT DX,ALMOV AL,00010110B ;工作命令字OUT DX,ALLOOP1:MOV DX,321H ;测试是否已接收好 IN AL,DX TEST AL,2 ;RxRDY接收器是否准备好JZ LOOP1 ;未接收,继续测试MOV DX,320H ;读出接收的字符,存入缓冲区IN AL,DXMOV BX, ALINC BXDEC CX ;是否接收完?JNZ LOOP1 ;未完,继续MOV AH,4CH ;已收完,退出INT 21H CODE ENDS END START(2)双机

31、同步串行通信仍然如上题图8.15所示,两台微机之间进行对等串行通信,两机相距1m以内。要求传送的数据为1KB。采用同步字符数为2的内同步,同步字符是55H,8个数据位,偶校验。复位3个出错标志,启动收/发器,送出就绪信号,对同步字符进行检索。CPU与8251A之间用查询方式交换数据。两台微机中的8251A的口地址相同:320H为数据口地址,321H为命令/状态口地址。两机相同的收、发程序如下:DATA SEGMENTTBUFF DB 1024 DUP(?)RBUFF DB 1024 DUP(?)DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:

32、MOV AX,DATAMOV DS,AXMOV ES,AXMOV DX,321H ;初始化8251AXOR AL,AL OUT DX,ALOUT DX,ALOUT DX,ALMOV AL,40H ;复位OUT DX,ALMOV AL,00111100B ;方式命令字,通信双方的格式相同OUT DX,ALMOV AL,55H ;同步字符OUT DX,ALOUT DX,ALMOV AL,10110111B ;工作命令字OUT DX,ALLEA DI,TBUFFLEA SI,RBUFFMOV BX,1024MOV CX,1024RECEIVE: ;接收字符TEST CX,0FFFFHJZ SENDM

33、OV DX,321H IN AL,DXTEST AL,2JZ SEND MOV DX,320H IN AL,DXMOV SI,ALINC SIDEC CXSEND: ;发送字符TEST BX,0FFFFHJZ NEXTMOV DX,321H IN AL,DXTEST AL,1JZ NEXTMOV DX,320H MOV AL,DIOUT DX,ALINC DIDEC BXNEXT:TEST CX,0FFFFHJNZ RECEIVETEST BX,0FFFFHJNZ SENDMOV AH,4CH ;已收、发完,退出INT 21H CODE ENDS END START(3)用8251A设计RS-232C标准的串行通信口 要求用8251A设计一个按RS-232C标准进行零MODEM方式、全双工异步串行通信接口。如果有两台微机之间需要通信,可以直接利用这个接口互连,且双方在各自的键盘上按键向对方发送字符,同时又可接收对方发来的字符。字符数据格式为起止式,2位停止位,8位数据位,偶校验,波特率因子为16。发送的字符和接收的字符均在屏幕上显示。波特率在110bit/s、150bit/s、300bit

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论