可编程串行通信接口芯片8251A

8251A的基本功能

8251A是一种可编程的通用同步/异步接收发送器,通常作为串行通信接口使用,被广泛应用Intel80X86为CPU的 微型计算机中。其基本功能为:

  • (1) 它是全双工、双缓冲器的接收/发送器。
  • (2) 有两种工作方式,可工作在同步或异步工作方式。同步方式工作时,波特率在0~64K范围内;异步方式时,波特率在0~ 9.2K范围内。
  • (3) 同步方式时,字符可选择为5~8bit,可加奇偶校验位,可自动检测同步字符。
  • (4) 异步方式时,字符可选择为5~8bit,可加奇偶校验位,自动为每个字符添加一个启动位,并允许通过编程选择 1 1.5 、或 2 位停止位。

8251A的内部结构

(1)接收器

接收器包括接收缓冲器和接收控制逻辑两部分。接收器的功能是接收在RXD引脚上的串行数据,并按规定的格式把它转换成并行数据,存放在数据总线缓冲器中。

  • ①接收缓冲器

接收缓冲器主要由移位寄存器和数码寄存器组成。接收器接收传送到RXD(接收数据输入端)引脚上的串行数 据,并对串行数据流的特殊位(奇偶位,停止位等)和字符(同步字符)进行检查、处理,按规定的格式将串行 数据转换为并行数据存放在缓冲器中。

接收移位寄存器和接收数据缓冲器组成了双缓冲器结构。

  • ②接收控制逻辑

这一部分控制串行数据的接收,包括三条控制线:
RXRDY(Receiver Ready)接收器准备好,输出,高电平有效。

RXC(Receiver Clock)接收时钟,输入。

SYNDET/BRKDET(SYNchronous DETect/BreaK DETect)同步检测/断点检测,输出/输入,高电平有效。

(2)发送器

发送器包括发送缓冲器和发送控制逻辑两部分。

  • ①发送缓冲器和发送过程

发送数据缓冲器接收由CPU送来的并行数据,按初始化编程指定的数据格式转换成串行数据流送至发送移位寄存器,在TXC的下降沿从TXD引脚发送出去。

发送数据缓冲器和发送移位寄存器组成了发送的双缓冲器结构。

  • ②发送控制逻辑

该部分控制串行数据的发送操作,包括3条控制线:
TXRDY (Transmitter ReaDy)发送器准备好,输出,高电平有效。

TXE (Transmitter Empty)发送器空,输出,高电平有效。

TXC (Transmitter Clock)发送时钟,输入。

(3)读/写控制逻辑

读/写控制逻辑接收CPU的有关控制信号,据此确定对8251A的操作。该部分共有6条对外引线。

CLK 时钟,输入。

RESET 复位,输入,高电平有效。RESET有效,8251A被强行复位到空闲状态。只有在重新初始化后才能脱离空闲状态。
CS¯¯¯¯¯ (Chip Select)片选,输入,低电平有效。

C/D¯¯¯ (Control/Data) 控制/数据信号,输入。

RD¯¯¯¯¯ (Read)读,输入,低电平有效。

WR¯¯¯¯¯¯ (Write)写,输入,低电平有效。

(4)数据总线缓冲

数据总线缓冲器是三态,双向,8位缓冲器,经引脚 D7 D0 和系统的数据总线相连,是8251A与系统数据总线之间的接口。数据总线缓冲器包括:

  • ① 状态字缓冲寄存器,寄存8251A接收/发送操作的各种工作状态。
  • ② 发送数据缓冲寄存器,暂存由CPU送来的数据或控制字。8251A没有独立的控制寄存器,写入的控制命令和发送的数据共用一个寄存器。
  • ③ 接收数据缓冲寄存器,暂存接收到的准备送往CPU数据。

(5)调制解调控制逻辑

远程通信时,8251A的TXD端数据经调制器调制后送上传输线,经传输线送来的信号经解调后送往8251A的RXD端。为了在8251A和调制解调器之间能正确的传送数据,8251A调制解调控制逻辑产生四个相应的联络信号如下:
DIR¯¯¯¯¯¯¯ (Data Terminal Ready)数据终端准备好,输出,低电平有效。

DSR¯¯¯¯¯¯¯¯ (Data Set Ready)调制解调器准备好,输入,低电平有效。

RTS¯¯¯¯¯¯¯ (Request To Send)请求发送,输入,低电平有效。

CTS¯¯¯¯¯¯¯ (Clear To Send)允许发送,输入,低电平有效。

当8251A不与调制解调器相接而是接续其它外设时,这四条线可以作为控制数据传输的联络线。


8251A的编程字

(1)工作方式控制字


D1 D0 确定是工作于同步方式还是异步方式。 D1 D0 =00为同步方式,当方式设为同步时,方式控制字后必须装入 同步字符,并由同一个方式控制字规定装入单同步字符还是双同步字符; D1 D000 为异步方式,且有3种组合来 选择输入的时钟频率与波特率之间的系数。
D3 D2 确定每个字符的数据位(不包括奇偶校验位)。
D5 D4 确定是否校验和奇偶校验的性质。
D7 D6 含义因同步方式或异步方式而异。异步方式( D1 D0 ≠00)时用来确定停止位个数。同步方式时 D6 用来确定 是内同步(SYNDET脚为输出)还是外同步(SYNDET为输入), D7 用来确定同步字符个数。外同步方式时,同步字 符只用于发送,接收时不作用。

例:某异步通讯,数据位为8位,1位起始位、2位停止位、奇校验、波特率系数为16。
则有:11011110B=0DEH

MOV DX,309H ;8251A命令口
MOV AL,0DEH
OUT DX,AL

(2)工作命令控制字


D0 设置为1允许8251A开始发送操作。只有命令字的 D0 =1,引脚TXDRY(通知CPU:发送器准备好)才可能有效(为1)。可作为发送中断屏蔽位。
D1 设置为1强制引脚DTR有效,表示数据终端准备好,通知调制解调器:8251A已准备好。
D2 设置为1允许8251A开始接收数据。只有命令字 D2 =1,RXRDY(通知CPU接收器准备好的引脚)才有可能为1。允许接收时必须使错误标志复位(见 D4 )。在同步方式时还必须指定进入同步搜索操作(见 D7 )。
D3 设置为1迫使TXD端发送低电平,以此作断点字符。
D4 设置为1则对状态字中的所有操作出错标志(FE,OE,PE)复位。
D5 设置为1强制RTS引脚(请求发送)有效,向调制解调器提出发送请求。
D6 设置为1强制8251A内部复位,使之回到准备接收方式字的状态。
D7 只用于同步方式。为使8251A进入同步搜索操作,将输入的信息和同步字符比较,一致则使SYNDET/BRKDET(同步/断点检测)引脚有效,开始对数据的接收操作。
例:若要使8251A内部复位且允许接收/发送,则有

        MOV DX,309H
        MOV AL,40H ;D6=1,复位
        OUT DX,AL
        MOV AL,05H ;D2=1,D0=1
        OUT DX,AL

(3)状态字

状态字的作用是8251A向CPU送去数据传送操作中的各种状态信息。方式字,同步字符,命令字都是CPU写入8251A的,以控制8251A的工作方式和操作。那么,8251A在发送,接收数据的过程中实际工作状态如何呢?如一个字符接收全了 没有?接收的数据有没有错误?有什么类型的错 误?发送缓冲器空了没有?发送移位寄存器空了没有?等等,这些在发送/接收数据操作过程中的状态信息随 时寄存在8251A内部的状态冲寄存器内,CPU可以通过I/O读操作(=1)把状态字读入加以分析,控制CPU和 8251A之间的数据交换。
状态位 D0 (TXRDY)——发送器准备好。
状态位 D1 (RXRDY)——接收准备好。
状态位 D2 (TxE)——发送器空。
状态位 D3 (PE)——奇偶校验错标志
状态位 D4 (OE)——溢出(覆盖)错误标志。
状态位 D5 (FE)——帧格式错误标志
状态位 D6 (SYNDET)——同步检测。
状态位 D7 (DSR)——数据装置准备好。


8251A初始化编程流程与应用

例:8251A工作于异步方式,方式选择控制字为11111011B,工作命令控制字为00010001B。其初始化程序为:

MOV AL,0FBH ;8251A方式选择字
OUT CONTR,AL
MOV AL,11H ;8251A操作命令字
OUT CONTR,AL
…

8251A的应用举例

例:微机系统中两台微机之间进行双机串行通信的硬件连接和软件编程。

  • (1)要求

在甲乙两台微机之间进行串行通信,甲机发送,乙机接收。要求把甲机上开发的应用程序(其长度为2DH)传送到乙机中去。双方采用起止式异步方式,通信的数据格式为,字符长度为8位,2位停止位,波特率因子为64,无校验,波特率为4800。 CPU与8251A之间用查询方式交换数据,8251A的端口地址分配是:309H为命令/状态口,308H为 数据口。

  • (2)分析

由于是近距离传输,因此可以不设 MODEM,两台微机之间直接通过RS-232标准接口连接即可。同时是采用查询 I/O方式,故收/发程序中只需检查发/收准备好的状态是否置位,即可收发 l个字节。

  • (3)设计

①硬件连接

根据以上分析,把两台微机都当作 DTE(数据终端设备),采用最简单的发送线TxD、接收线 RxD和 地线GND三 根线连接就能进行通信。采用8251A作为接口的主芯片再配置少量附加电路,如波特率发生器、 RS—232C 与TTL电平转换电路、地址译码电路等就可构成一个串行通信接口。

②软件编程

由题意可知,接收和发送程序应分别编写,每个程序段中包括8251A初始化、状态查询和输入/输出几部分。 对接收/发送方的8251A初始化时,首先要确定其方式选择控制字和工作命令控制字。根据题中的要求可有:

发送方的方式选择控制字为11001111B=CFH,工作命令控制字为00111110B=37H
接收方的方式选择控制字为11001111B=CFH,工作命令控制字为00010100B=14H
发送端的发送程序(略去 STACK和 DATA段)
         CSEG SEGMENT
         ASSUME CS:CSEG
         TRA PROC FAR
         START: MOV DX,309H ;控制口
         MOV AL.00H ;空操作
         OUT DX,AL 
         MOV AL,40H ;内部复位
         OUT DX,AL 
         NOP
         MOV AL,0CFH ;方式字(异步,2位停止位,字符长度为8位,无校验,波特率因子为64)
         OUT DX, AL 
         MOV AL,37H ;命令字(RTS、ER、RxE、DTR和 TxEN均置 1)
         OUT DX, AL 
         MOV CX,2DH ;传送字节数
         MOV SI,300H ;发送区首址
    L1: MOV DX,309H ;状态口
         IN AL, DX ;查状态位 D。(TxRDY)=1?
         TEST AL,38H ;查错误
         JNZ ERR ;转出错处理
         AND AL,01H 
         JZ L1 ;发送未准备好,则等待
         MOV DX,308H ;数据口
         MOV AL,[SI] ;发送准备好,则从发送区取1字节发送
         OUT DX, AL 
         INC SI ;修改内存地址
         DEC CX ;字节数减 1
         JNZ L1 ; 未发送完,继续
         ERR: (略) 
         MOV AX,4C00H ;已送完,回 DOS
         INT 21H
         TRA ENDP 
         CSEG ENDS
         END START
接收方接收程序(略去 STACK和 DATA段)
         SCEG SEGMENT
         ASSUME CS:REC
         REC PROC FAR
         BEGIN: MOV DX,309H ;控制口
         MOV AL,0AAH ;空操作 
         OUT DX, AL
         MOV AL,50H ;内部复位
         OUT DX, AL
         NOP MOV AL,0CFH ;方式字
         OUT DX, AL
         MOV AL,14H ;命令字(ER、RxE置1)
         OUT DX, AL
         MOV CX,2DH ;传送字节数
         MOV DI,400H ;接收区首址
    L2: MOV DX,309H ;状态口
         IN AL, DX ;查状态位 D2(RxRDY)=17
         TEST AL,38H ;查错误
         JNZ ERR ;转出错处理 .
         AND AL, 02H
         JZ L2 ;接收未准备好,则等待
         MOV DX,308H ;数据口
         IN AL, DX ;接收准备好,则接收1字节
         MOV [DI], AL ;并存入接收区
         INC DI ;修改内存
         LOOP L2 ;未接收完,继续
         ERR: (略)
         MOV AX,4C00H ;已接收完,程序结束,退出
         INT 21H ;返回 DOS
         REC ENDP 
         CSEG ENDS
         END BEGIN 

推荐资料:
8251A习题

你可能感兴趣的:(计算机学科学习笔记,计算机科学与技术专业知识笔记,可编程串行接口芯片,8251A,微机原理与接口技术)