资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,8.3,可编程接口芯片,8251A,8251A,是通用同步异步接收发送器,USART(Universal Synchronous Asynchronous Receiver and Transmitter),,适合作异步起止式数据格式和同步面向字符数据格式的接口,其功能很强。,1,8.3,可编程串行通信接口芯片,8251,一、基本功能,(1),可工作在同步方式,也可工作在异步方式。同步方式下波特率为,0,64 000,波特,异步方式下波特率为,0,19 200,波特。,(2),在同步方式时,每个字符可定义为,5,、,6,、,7,或,8,位。两种方法实现同步,由内部自动检测同步字符或由外部给出同步信号。允许同步方式下增加奇,/,偶校验位进行校验。,(3),在异步方式下,每个字符可定义为,5,、,6,、,7,或,8,位,用,1,位作奇偶校验。时钟速率可用软件定义为波特率的,l,、,16,或,64,倍。另外,,8251A,在异步方式下能自动为每个被输出的数据增加,1,个起始位,并能根据软件编程为每个输出数据设置,1,位、,1.5,位或,2,位停止位。,(4),能进行出错检测。带有奇偶、溢出和帧错误等检测电路,用户可通过输入状态寄存器的内容进行查询。,()与,Intel 8080,、,8085,、,8086,、,8088CPU,兼容,2,二、内部结构,发送,缓冲器,数据总线缓冲器,调制解调控制电路,DB,读,/,写逻辑,RESET,CLK,RD,WR,C/D,CS,DSR,DTR,CTS,RTS,发送,控制,电路,接收,缓冲器,接收,控制,电路,RxD,TxD,TxRDY,TxE,TxC,RxRDY,RxC,SYNDET,状态缓冲器、接收数据缓冲器、数据/命令缓冲器,3,作用:,接收器接收在,RxD,上的串行数据并按规定的格式转换为并行数据,存放在接收数据缓冲器中。,RxD,异或门,内部,CLK,DB,检测,奇偶检验结果,接收缓冲寄存器,接收移位寄存器,奇偶位,停止位,1,波,特,率,工作过程:,(,异步方式)当,8251,允许接收并准备好接收数据时,监测,RxD,端,,当检测到起始位(低电平)后,使用16倍率的内部,CLK,,,连续检测8个0确认。然后按波特率移位、检测,RXD,,,直至停止位。,内部删除起始、奇偶、停止位,接收缓冲寄存器后,使,RxRDY,为高,,向,CPU,提出中断申请。,1,、接收器,4,启动检测,确定已检测到启动位,采样数据检测,16T,启动位,DATA,CLOCK,(,内同步方式)在,CPU,发出允许接收命令后,,8251,一直检测,RxD,,把接收到的每一位数据送入移位寄存器,与同步字符寄存器的内容进行比较。若两者不相同,则继续接收数据和进行移位比较操作;若相等,则,8251,将,SYNDET,置,1,,表示已找到同步字符。,找到同步字符后,利用时钟采样和移位,RxD,线上的数据位,按规定的位数送接收数据缓冲器,同时,RxRDY,信号。,16T,5,内部产生起始、奇偶检验、停止位,按约定的波特率从,TxD,输出。,数据发送缓冲器,波,特,率,发送移位寄存器,奇偶位,停止位,1,起始位,异或门,TXD,SOUT,0,内部,CLK,DB,CPU,执行输出指令,并行数据,发送缓冲器,。,工作过程,发送缓冲器,发送移位寄存器,,,向,CPU,提出中断申请(,TxRDY=1,)。,当数据全部输出结束,在,TXD,发出连续低电平(,TxE=1),。,2,、发送器,6,RxD,(,Receiver Data,),接收数据:从,RxD,端,串行输入数据输入,RxRDY,(,Receiver Ready,),接收数据准备好:表示接收数据缓冲器已收到一个字符数据,,CPU,可采用中断或查询方式读取数据(,RxRDY=0,)。,SYNDET/BRKDET,(,Sync Detecte/Break Detece,),同步检测,/,断点检测,同步方式(同步检测):在内同步方式,,当,8251,检测到同步字符,,SYNDET,输出为高点平,,表明,8251A,已处于同步状态。,CPU,执行一次读操作后,,SYNDET,自动复位;,1,、与接收有关的信号,3,、外部引脚,7,异步方式(断点检测):当,8251,从,RxD,端连续收到两个由全“,0”,组成的字符时,该引脚输出为高电平,表示当前线路上无数据可读,只有当,RxD,端收到,1,个“,1”,信号或,8251,复位时,,BRKDET,变为低电平。,RxC,(,Receiver Clock,),接收时钟,外同步方式:当,SYNDET,引脚有一个正跳变脉冲,,8251,在下一个接收时钟的上升沿开始接收字符,一旦达到同步,,SYNDET,引脚的高电平即可撤除。,8,TxE,(,Transmitter Empty,),发送器空:,TxE=1,表示发送移位寄存器中已无数据可以向外部发送。此时,由,TxD,输出空闲位(同步字符)。当8251从,CPU,接收到一个数据后,,TxE=“0”,。,TxC,(,Transmitter Clock,),发送时钟,TxD,(,Transmitter Data,),发送数据:将,CPU,送入的并行数据转换成串行格式后,从,TxD,端输出,TxRDY,(,Transmitter Ready,),发送数据准备好:,TxRDY=1,表示发送数据缓冲器已准备好从,CPU,接收一个字符数据,,CPU,可采用中断或查询方式输出一个数据(,RxRDY=0,)。,2,、与发送有关的信号,9,4,、,8251,读写操作表,10,5,、调制解调器控制电路,在远程通信时,可用,8251,与调制解调器相连,经电话线传输数据,RxD,TxD,DSR,DTR,CTS,RTS,RxC,TxC,DB,CB,AB,8251A,波特率,发生器,M,O,D,E,M,电话线接口,电话线,数据通信设备,DCE,数据终端设备,DTE,DTR,(,Data Terminal Read y,)数据终端准备好(通知数据装置),DSR,(,Data Set Ready,)数据装置准备好(回应,DTR,信号),RTS,(,Request to Send,)数据终端向,MODEM,发出请求表示数据已准备好需要发送,CTS,(,Clear to Send,),MODEM,回应终端,若,TxEN,有效,8251,可以发送数据,发送结束,CTS=“1”,。,11,6,、,8251A,与,CPU,的连接,12,三、,8251A,的初始化,方式字:确定,8251A,的工作方式;(异步,波特率,字符长度,奇偶校验),命令字:控制,8251A,按方式字所规定的方式工作;(允许,禁止收发数据,启动搜索同步字符,,8251,复位),状态字:了解,8251A,的工作状态。,复位操作,输出方式字,传送完,输出第一个同步字符,输出第二个同步字符,输出命令字,传送数据,输入状态字,同步方式,双同步,复位,Y,N,Y,Y,Y,N,N,N,13,注:对,8251,的控制口进行一次写入操作,需有写恢复时间。(写恢复时间一般为,16,个时钟周期),DELAY1,:,MOV CX,,,02H,D0,:,LOOP D0,RET,8251,复位,电源上电,,8251,自动进入复位状态,为了确保在送方式字和命令字之前,8251,正确复位,可向,8251,的控制口连续写入,3,个“,0”,,然后再写入一个复位控制字(,40H,),用软件使,8251,可靠复位。,14,2,、方式字,用于,CPU,对8251,编程,决定,8251,的通信的格式。如数据长度、奇偶检验、停止位等。,01,异步,1,10,异步,16,11,异步,64,00,字符长度为,5,位,01,字符长度为,6,位,10,字符长度为,7,位,11,字符长度为,8,位,0,无奇偶校验位,01,奇校验,11,偶校验,无效,00,1,个停止位,01,1.5,个停止位,10,2,个停止位,11,S2,S1,EP,PEN,L2,L1,B2,B1,异步方式,15,与异步方式相同,1 SYND,为输入(外同步),0 SYND,为输出(内同步),1,单字符同步,0,双字符同步,SCS,ESD,EP,PEN,L2,L1,0,0,同步方式,16,EH,IR,RST,ER,SBRK,RxE,DTR,TxEN,使,DTR,引脚为低电平,1,启动搜索同步字符,1,允许发送,0,禁止发送,1,允许接收,0,禁止接收,1,使,TxD,线变低,发送空白字符,0,正常工作,1,内部复位,使,8251,回到方式选择格式,1,使,RST,引脚输出低电平,1,使错误标志,PE,,,OE,,,FE,复位,3.,命令字,17,4,、状态字,DSR,SYNDET/BRKDET,FE,OE,PE,TxE,RxRDY,TxRDY,发送器准备好,奇偶错误,溢出错误,帧错误(异步),同引脚含义,数据装置准备好,18,1,异步模式下的初始化程序举例,例题:,设,8251A,工作在异步模式,波特率系数,(,因子,),为,16,,,7,个数据位,/,字符,偶校验,,2,个停止位,发送、接收允许,设端口地址为,00E2H,和,00E4H,。完成初始化程序。,MOV AL,,,0FAH,;送模式字,MOV DX,,,00E2H,OUT DX,,,AL,;异步方式,,7,位,/,字符,偶校验,,2,个停止位,MOV AL,,,37H,;设置控制字,使发送、接收允许,清出错标志,OUT DX,,,AL,;有效,19,2,同步模式下初始化程序举例,设端口地址为,52H,,采用内同步方式,,2,个同步字符(设同步字符为,16H,),偶校验,,7,位数据位,/,字符。,MOV AL,,,38H,;设置模式字,同步模式,用,2,个同步字符,OUT 52H,,,AL,;,7,个数据位,偶校验,MOV AL,,,16H,OUT 52H,,,AL,;送同步字符,16H,OUT 52H,,,AL,MOV AL,,,97H,;设置控制字,使发送器和接收器启动,OUT 52H,,,AL,20,六、,8251A,应用举例,输入字符,要求异步方式下,输入,50,个字符,波特率因子为,16,,,8,位数据,,1,位停止位。设数据端口地址为,30H,,控制端口地址为,31H,。,21,MOVAL,,,40H,OUT,31H,,,AL,;复位,8251A,MOVAL,,,50H,;,OUT,31H,,,AL,;写入异步方式选择字,MOVAL,,,37H,OUT,31H,,,AL,;控制字写入奇地址,PortE,MOVDI,,,0,;变址寄存器置“,0”,MOVCX,,,32H,;送入计数初值,50,个字符,INPUT:INAL,,,31H,;读取状态字,TESTAL,,,02H,;测试状态字第,2,位,RXRDY,JZINPUT,;,8251A,未收到字符则重新取状态字,INAL,,,30H,;,RXRDY,有效,从偶地址口,PortO,输入数据,MOVDX,,,Buffer,;缓冲区首址送,DX,MOVDX,十,DI,,,AL,;将字符送入缓冲区,INCDI,;缓冲区指针加,1,IN AL,,,31H,;再读状态字,TESTAL,,,38H,;测试有无三种错误,JNZ ERROR,;有错转出错处理,LOOPINPUT,;没错,又不够,50,个字符,转,Input,JMP EXIT,;如已输入,50,个字符,则转结束,ERROR,:,EXIT,:,22,两台微型计算机通过,8251A,相互通信的举例,23,分析:初始化程序由两部分组成:是将一方定义为发送器。发送端,CPU,每查询到,TXRDY,有效,则向,8251A,并行输出一个字节数据;是将对方定义为接收器。接收端,CPU,每查询到,RXRDY,有效,则从,8251A,输入一个字节数据,一直进行到全部数据传送完毕为止。,24,发送端初始化程序与发送控制程序,STT,:,MOV DX,,,8251A,控制端口,MOV AL,,,7FH,OUT DX,,,AL,;将,825lA,定义为异步方式,,8,位数据,,1,位停止位,MOV AL,,,11H,;偶校验,取波特率系数为,64,,允许发送。,OUT DX,,,AL,MOV DI,,发送数据块首地址 ;设置地址指针,MOV CX,,发送数据块字节数 ;设置计数器初值,NEXT,:,MOV DX,,,8251A,控制端口,IN AL,,,DX,AND AL,,,01H,;查询,TXRDY,有效否,?,JZ NEXT,;无效则等待,MOV DX,,,8251A,数据端口、,MOV AL,,,DI,;向,8251A,输出一个字节数据。,OUT DX,,,AL,INC DI,;修改地址指针,LOOP NEXT,;未传输完,则继续下一个,HLT,25,接收端初始化程序和接收控制程序,SRR,:,MOV DX,,,8251A,控制端口,MOV AL,,,7FH,OUT DX,,,AL,;初始化,8251A,,异步方式,,8,位数据,MOV AL,,,14H,;,1,位停止位,偶校验,波特率系数,64,,允许接收。,OUT DX,,,AL,MOV DI,,接收数据块首地址 ;设置地址指针,MOV CX,,接收数据块字节数;设置计数器初值,COMT,:,MOV DX,,,8251A,控制端口,IN AL,,,DX,ROR AL,,,1,;查询,RXRDY,有效否,?,ROR AL,,,1,JNC COMT,;无效则等待,ROR AL,,,1,ROR AL,,,1,;有效时,进一步查询是否有奇偶校验错。,JC ERR,;有错时,转出错处理,MOV DX,,,8251A,数据端口,IN AL,,,DX,;无错时,输入一个字节到接收数据块。,MOV DI,,,AL,INC DI,;修改地址指针,LOOP COMT,;未传输完,则继续下一个,HLT,ERR,:,CALL ERR-OUT,26,练习,27,例:,8251,工作于异步方式,波特率系数为,16,,,7,位数据位,,1,个停止位,偶校验,控制口地址,3F2H,。,MOV DX,,,3F2H,MOV AL,,,00H,OUT DX,,,AL,CALL DELAY1,OUT DX,,,AL,CALL DELAY1,OUT DX,,,AL,CALL DELAY1,MOV AL,,,40H,;复位字,OUT DX,,,AL,CALL DELAY1,MOV AL,,,01111010B,;方式字,OUT DX,,,AL,CALL DELAY1,MOV AL,,,00010101B,;命令字,OUT DX,,,AL,28,BEG-T:MOV DX,,,1F2H,MOV AL,,,7AH,OUT DX,,,AL,MOV CX,,,02H,D1,:,LOOP D1,MOV AL,,,11H,OUT DX,,,AL,MOV CX,,,02H,D2,:,LOOP D2,LEA DI,,,BUFF-T,MOV CX,,,COUNT-T,NEXT-T,:,IN AL,,,DX,TEST AL,,,01H,JZ NEXT-T,PUSH DX,MOV DX,,,1F0H,MOV AL,,,DI,OUT DX,,,AL,INC DI,POP DX,LOOP NEXT-T,置方式字,置命令字,置发送缓冲区首址,置发送数据数,读入,8251,状态,TxRDY=1,从发送缓冲区取数送,8251,修改指针,发送完,Y,Y,N,N,29,BEG-R,:,MOV DX,,,1F2H,MOV AL,,,7AH,OUT DX,,,AL,MOV CX,,,02H,D3,:,LOOP D3,MOV AL,,,14H,OUT DX,,,AL,MOV CX,,,02H,D4,:,LOOP D4,LEA DI,,,BUFF-R,MOV CX,,,COUNT-R,NEXT-R,:,IN AL,,,DX,TEST AL,,,02H,JZ NEXT-R,TEST AL,,,38H,JNZ ERROR,MOV DX,,,1F0H,IN AL,,,DX,MOV DI,,,AL,INC DI,LOOP NEXT-R,置方式字置命令字,置接收缓冲区首址,置接收数据数,读入,8251,状态,RxRDY=1,从,8251,接收数据送缓冲区,修改指针,发送完,Y,Y,N,N,传送出错,Y,N,30,在一个以,8086,的系统中,,8251,的数据口地址为,84H,,控制口和状态口的地址为,86H,,试画出地址译码电路、数据总线和控制总线的连接图。,8,2,5,1,A,RxD,TxD,外,设,TxC,RxC,D7D0,RD,WR,A1 RESET,A B C G2A G2B,Y0 Y1 Y2,O O O,D7D0,RD WR C/D RESET,A0 A2,A3,A7,8086,系统总线,LS138,接口电路,M/IO,或,A4,A5,A6,G1,CS,TxRDY TxE RxRDY BRKDET,RS-,232,接口,波特率,发生器,解:如下图所示:,31,若,8251,的端口地址为,FF0,、,FF2H,,要求,8251,工作于异步方式,波特率因子为,16,,,7,位数据位,,1,位奇校验位,,1,位停止位,试对,8251,进行初始化编程。,MOV DX,,,0FF2H,MOV AL,,,00H,OUT DX,,,AL,;向控制口写入第一个“,0”,CALL DELAY1,;延时,OUT DX,,,AL,;向控制口写入第二个“,0”,CALL DELAY1,;延时,OUT DX,,,AL,;向控制口写入第二个“,0”,CALL DELAY1,;延时,MOV AL,,,40H,;向控制口写入复位字,OUT DX,,,AL,CALL DELAY1,;延时,MOV AL,,,01011010B,;写入方式字,OUT DX,,,AL,CALL DELAY1,MOV AL,,,00010101B,;命令字,允许接收发送,清除错误标志,OUT DX,,,AL,;写入命令字,32,
展开阅读全文