资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,#,可编程串行通信接口芯片,8251A,在串行通信时,收发双方要解决的问题,:,以何种速率进行数据的发送和接收(,波特率,),采用何种数据格式(,帧格式,),接收方如何得知一批数据的开始和结束(,帧同步,),接收方如何从位流中正确地采样到位数据(,位同步,),接收方如何判断收到数据的正确性(,数据校验,),收发出错时如何处理(,出错处理,),串行通信的基本概念,全双工方式,站,A,站,B,站,A,站,B,站,A,站,B,半双工方式,单工方式,1.,数据传送方向,2.,串行通信的两种基本方式,(,1,)异步通信及其协议,所谓的异步通信,是指通信中两个字符的时间间隔是不固定的,而同一字符中的相邻代码间时间间隔是固定的,串行异步通信以字符为单位进行传输,用起始位表示字符的开始,用停止位表示字符结束,其通信协议是,起止式异步通信协议,串行通信时的数据、控制和状态信息都使用同一根信号线传送,收发双方必须遵守共同的通信协议(通信规程),才能解决传送速率、信息格式、位同步、字符同步、数据校验等问题,(,2,)同步通信及其协议,同步通信以一个数据块为传输单位,每个数据块附加,1,个或,2,个同步字符,最后以校验字符结束,同步通信协议有多种,常用的有面向比特的高级数据链路控制协议,HDLC,(,High-Level Data Link Control,)。,IBM,系列微机中常用的同步数据链路控制协议,SDLC,(,Synchronous Data Link Control,)则是,HDLC,的子集,同步通信的特点是不仅字符内部保持,“,同步,”,,而且字符与字符之间也是同步的。,在这种通信方式下,收,/,发双方必须建立准确的位定时信号,也就是收,/,发时钟的频率必须严格地一致。,每个字符不增加任何附加位,而是连续发送,3.,波特率与收,/,发时钟,串行传输速率也称,波特率,(,Baud Rate,),每秒传输的二进制位数,bps,字符中每个二进制位持续的时间长度都一样,为数据传输速率的倒数,(,1,)串行传输速率,字符速率与波特率两者关系,字符速率:每秒钟传输的字符数。,波特率:指单位时间内传送二进制数据的位数。单位为:,b/s,例,:,异步传输过程,设每个字符对应,1,个起始位、,7,个信息位、,1,个奇偶校验位和,1,个停止位,如果波特率为,1200bps,,那么,每秒钟能传输的最大字符数为,1200/10,120,个,例,2:,同步传输,用,1200bps,的波特率工作,用,4,个同步字符作为信息帧头部,但不用奇偶校验,那么,传输,100,个字符所用的时间为,7(100+4)/1200,0.6067s,,这就是说,每秒钟能传输的字符数可达到,100/0.6067,165,个。,可见,,在同样的传输率下,同步传输时实际字符传输率要比异步传输时高,。,(,2,)发送,/,接收时钟,发送,/,接收时钟频率与,波特率之间的关系为:,发送,/,接收时钟频率,=n,发送,/,接收,波特率,例:要求传输速率为,1200 bps,当选择,n=16,时,,表明一位数字信号中有,16,个时钟脉冲,故发送,/,接收时钟频率为:,1200,16=19.2kHz,其中,n,称为波特因子,一般,n=1,,,16,,,32,,,64,调制和解调,长距离通信时,常需要利用电话线路,它的频带则只有,300Hz,3400Hz,。为了通过电话线路传输数字信号,必须先把数字信号转换为适合在电话线路上传送的模拟信号,这就是调制;经过电话线路传输后,在接收端再将模拟信号转换为数字信号,这就是解调。,调制方法:,移频键控(,FSK,),移相键控,PSK,振幅键控(,ASK,),4.,信号的调制解调,RS-232C,信号定义的说明,RS-232C,的,25,个插脚仅定义,22,个。在微机通信中,通常使用的,RS-232C,接口信号只有,9,根引脚(,P299,图,7-37,),5.RS232C,接口,RS-232C,总线的电气规范,RS-232C,标准与,TTL,标准之间的转换,常用于将,TTL,电平转换为,RS-232C,电平的芯片,除,MC1488,外还有,75188,,,75150,等;用于将,RS-232C,电平转换为,TTL,电平,除,MC1489,外,还有,75189,,,75154,等,RS-232C,的应用,使用,MODEM,连接,直接连接,三线连接,计算机通常使用,UART,来实现数据的串,/,并和并,/,串转换,UART,的基本原理(,P301,图,7-39,、,7-40,),UART,的工作过程,常用的错误标志,奇偶校验错,帧错误,溢出(丢失)错误,6.,通用异步收发器,(UART),可编程异步通信接口,INS8250,8250,的基本功能:,全双工、双缓冲器接收和发送,15,种波特率,,50-9600bps,可编程的异步通信格式,提供奇偶、溢出和帧校验等错误检测,片内具有优先权中断控制逻辑,8250,的内部结构,8250,芯片引脚定义与功能,(,1,)面向,CPU,一侧的引脚(,1,),数据线,D,7,D,0,:在,CPU,与,8250,之间交换信息,地址线,A,0,A,2,:寻址,8250,内部寄存器,片选线:,8250,设计了,3,个片选输入信号,CS,0,、,CS,1,、,CS,2,*,和一个片选输出信号,CSOUT,。,3,个片选输入都有效时,才选中,8250,芯片,同时,CSOUT,输出高电平有效。,地址选通信号,ADS*,:当该信号低有效时,锁存上述地址线和片选线的输入状态,保证读写期间的地址稳定,(,1,)处理器接口引脚(,2,),读控制线,数据输入选通,DISTR,(高有效)和,DISTR*,(低有效)有一个信号有效,,CPU,从,8250,内部寄存器读出数据,相当于,I/O,读信号,写控制线,数据输出选通,DOSTR,(高有效)和,DOSTR*,(低有效)有一个有效,,CPU,就将数据写入,8250,内部寄存器,相当于,I/O,写信号,8250,读写控制信号有两对,每对信号作用完全相同,只不过有效电平不同而己,(,1,)处理器接口引脚(,3,),驱动器禁止信号,DDIS,:,CPU,从,8250,读取数据时,,DDIS,引脚输出低电平,用来禁止外部收发器对系统总线的驱动;其它时间,,DDIS,为高电平,主复位线,MR,:硬件复位信号,RESET,中断请求线,INTRPT,:,8250,有,4,级共,10,个中断源,当任一个未被屏蔽的中断源有请求时,,INTRPT,输出高电平向,CPU,请求中断,(,2,)面向外设引脚信号,8250,数据装置准备好,DSR*,数据终端准备好,DTR*,发送数据,SOUT,接收数据,SIN,请求发送,RTS*,允许发送,CTS*,信号地,GND,载波检测,RLSD*,振铃指示,RI*,(,3,)时钟信号,时钟输入引脚,XTAL,1,:,8250,的基准工作时钟,时钟输出引脚,XTAL,2,:,基准时钟信号的输出端,波特率输出引脚,BAUDOUT*,:基准时钟经,8250,内部波特率发生器分频后产生发送时钟,为波特率,16,倍,接收时钟引脚,RCLK,:,接收外部提供的接收时钟信号;若采用发送时钟作为接收时钟,则只要将,RCLK,引脚和,BAUDOUT*,引脚直接相连,(,4,)输出线,OUT1*,和,OUT2*,:,两个一般用途的输出信号,由调制解调器控制寄存器的,D,2,和,D,3,使其输出低电平有效信号,复位使其恢复为高,8250,的寄存器及编程方法,8250,内部有,10,个,可访问的寄存器,除数寄存器是,16,位的,占用两个连续的,8,位端口,内部寄存器用引脚,A,0,A,2,来寻址;同时还要利用通信线路控制寄存器的最高位,即除数寄存器访问位,DLAB,的,0,和,1,两种状态,,来区别公用,1,个端口地址所访问的两个寄存器,8250,内部寄存器端口地址,适配器地址,DLAB,A,2,A,1,A,0,访问寄存器名称,3F8H,0,0 0 0,接收数据寄存器(读),发送保持寄存器(写),3F9H,0,0 0 1,中断允许寄存器,3F8H,1,0 0 0,波特率除数锁存寄存器(低字节),3F9H,1,0 0 1,波特率除数锁存寄存器(高字节),3FAH,0 1 0,中断识别寄存器,3FBH,0 1 1,线路控制寄存器,3FCH,1 0 0,MODEM,控制寄存器,3FDH,1 0 1,线路状态寄存器,3FEH,1 1 0,MODEM,状态寄存器,(,1,)发送保持寄存器,THR,(3F8H),:,“写”,包含将要串行发送的并行数据,CPU,发送保持寄存器,发送移位寄存器,同步控制,8250,SOUT,(,1,)接收缓冲寄存器,RBR,(3F8H),:,“读”,存放串行接收后转换成并行的数据,CPU,接收缓冲寄存器,接收移位寄存器,同步控制,8250,SIN,(,2,)波特率除数寄存器,BRD,(3F8H,3F9H),除数寄存器保存设定的分频系数,BRD,基准时钟频率,(,16,波特率),起 始 位,时钟,(,RCLK,),数据线,(,SIN,),T,16 T,16 T,8 T,例:计算波特率为,1200bps,的波特率除数。,当使用,UART,的内部时钟为,1.8432MHz,时(或由外部通过,XTAL,1,引脚输入),,BRD=1843200/,(,16,1200,),=0060H,(,3,)通信线路控制寄存器,LCR,(,3FBH,),DLAB,D,6,D,5,D,4,D,3,D,2,D,1,D,0,寄存器选择,0,正常值,1,除数寄存器,中止字符,0,无作用,1,发送中止字符,校验位设置,0,无校验位,001,设置奇校验,011,设置偶校验,101,校验位为,1,111,校验位为,0,停止位个数,0 1,位,1 1.5,位(数据位为,5,位时),1 2,位(数据位为,6,8,位时),数据位个数,00 5,位,01 6,位,10 7,位,11 8,位,指定串行异步通信的字符格式,例:通信线路控制寄存器(,LCR,)的编程,设置发送数据字长为,8,位,,2,位停止位,偶校验,其程序段为:,MOV DX,,,3FBH,;,LCR,的地址,MOV AL,,,00011111B,;,LCR,内容数,;据格式参数,OUT DX,,,AL,(,4,)通信线路状态寄存器,LSR,(,3FDH),0,D,6,D,5,D,4,D,3,D,2,D,1,D,0,为,1,,表示发送移位寄存器空;,当数据由发送保持寄存器移入,发送移位寄存器时,该位为,0,提供串行异步通信的当前状态,供,CPU,读取和处理,为,1,,表示发送保持寄存器空,,当,CPU,将字符写入发送保持,寄存器后,该位为,0,为,1,,表示正在传输中止字符,为,1,,表示出现帧错误,为,1,,表示出现奇偶错,为,1,,表示出现溢出错,为,1,,表示接收数据缓冲器收到,一个数据,既接收数据准备好;,当,CPU,读走数据后,该位为,0,为,1,使,DTR*,引脚为低,否则为高,(,5,),MODEM,控制寄存器,MCR(3FCH),设置,8250,与数据通信设备之间,联络应答的输出信号,0 0 0,LOOP,OUT,2,OUT,1,RTS,DTR,为,1,使,RTS*,引脚为低,否则为高,为,1,使,OUT1*,引脚为低,否则为高,为,1,使,OUT2*,引脚为低,否则为高,为,1,使,8250,为循环工作方式,否则为正常工作方式,例:要使,MCR,的,DTR,,,RTS,有效,,OUT,1,,,OUT,2,以及,LOOP,无效,则编程如下:,MOV DX,,,3FCH,;,MCR,的地址,,MOV AL,,,00000011B,;,MCR,的控制字,OUT DX,,,AL,例:要对,8250,通过自发自收进行诊断,则程序为,:,MOV DX,,,3FCH,;,MCR,的地址,MOV AL,,,00010011B,;,LOOP,位置“,1,”,OUT DX,,,AL,(,6,),MODEM,状态寄存器,MSR(3FEH),反映,4,个控制输入信号的当前状态及其变化,MSR,高,4,位中某位为,1,,说明相应输入信号当前为低有效,否则为高电平,MSR,低,4,位中某位为,1,,则说明从上次,CPU,读取该状态字后,相应输入信号已发生改变,从高变低或反之,MCR,低,4,位任一位置,1,,均产生调制解调器状态中断,当,CPU,读取该寄存器或复位后,低,4,位被清零,(,7,)中断允许寄存器,IER,(,3F9H,),8250,设计有,2,个中断寄存器和,4,级中断,4,级中断的优先权,是按照串行通信过程中事件的紧迫程度安排的、是固定不变的,用户可利用中断允许或禁止进行控制,中断允许寄存器的低,4,位控制,8250,这,4,级中断是否被允许,某位为,1,,则对应的中断被允许,否则,被禁止,8.,中断识别,IIR,(,3FAH,),保存正在请求中断的优先权最高,的中断级别编码,0 0 0 0 0,ID,1,ID,0,IP,0,有中断,1,无中断,ID,1,ID,0,优先权,中断类型,1 1,1 0,0 1,0 0,1,2,3,4,接收线路状态,接收数据准备好,发送保持寄存器空,调制解调器状态,3.8250,应用举例,写通信控制字,D7=1,写除数低,8,位,写通信控制字,写除数高,8,位,写,MODEM,控制字,写中断允许字,结束,8250,的初始化过程,例:,8250,端口地址为,3F8H,3FFH,,若,8250,以波特率,9600bps,,进行异步通信,每字符,8,位,,1,位停止位,采用奇校验,允许所有中断,试编程初始化。,解:,MOV,DX,,,3FBH,;,8250,线路控制寄存器地址送,DX,MOV AL,,,80H,;置,DLAB=1,,设置除数寄存器,OUT DX,,,AL,MOV DX,,,3F8H,;除数寄存器地址送,DX,MOV AL,,,0CH,;波特率为,9600bps,OUT DX,,,AL,;送除数低,8,位,INC DX,MOV AL,,,00H,;送除数高,8,位,OUT DX,,,AL,MOV,DX,,,3FBH,;,8250,控制寄存器地址送,DX,MOV AL,,,00001011B,;,8,位数据,奇校验,,1,位停止位,OUT DX,,,AL,MOV,DX,,,3F9H,;中断允许寄存器地址送,DX,MOV AL,,,0FH,;设置中断允许控制字,允许所有中断,OUT DX,,,AL,MOV,DX,,,3FCH,;设置,MODEM,控制字,MOV AL,,,0FH,OUT DX,,,AL,;,OUT1*,OUT2*,均为,0,8250,查询方式发送,初始化,8250,读,LSR,D5=1,?,发送一个字符,发完?,结束,Y,Y,N,N,查询方式接收,初始化,8250,读,LSR,D0=1,?,接收一个字符,收完?,结束,Y,Y,N,N,有错?,N,Y,错误处理,例:两台,PC,机用,RS-232C,串口采用零,MODEM,方式实现近距离串行通信。数据传送波特率为,9600bps,,数据格式为,8,位,/,每字符,,1,位停止位,奇校验,双机,8250,端口地址均为,2F8H,2FFH,。试编写发送和接收程序,其功能如下:,通信双方执行程序后,均等待键盘输入字符,双方只要按下一个键,键值在本机当前光标处显示,而且传送到对方,在对方当前光标处显示出来,双方只要按下,ESC,键,则停止程序的执行,返回到,DOS,状态,通信双方如果出现通信错误,则屏幕显示,“,?,”,,并继续等待键入新字符或接收新字符,MOV,DX,,,2FBH,;,8250,控制寄存器地址送,DX,MOV AL,,,80H,;置,DLAB=1,,设置除数寄存器,OUT DX,,,AL,MOV DX,,,2F8H,;除数寄存器地址送,DX,MOV AL,,,0CH,;波特率为,9600bps,OUT DX,,,AL,;送除数低,8,位,INC DX,MOV AL,,,00H,;送除数高,8,位,OUT DX,,,AL,MOV,DX,,,2FBH,;,8250,控制寄存器地址送,DX,MOV AL,,,0BH,;,8,位数据,奇校验,,1,位停止位,OUT DX,,,AL,MOV DX,,,2FCH,;设置,MODEM,控制字,MOV AL,,,03H,;,RTS,,,CTS,有效,OUT DX,,,AL,MOV DX,,,2F9H,;禁止中断,MOV AL,,,00H,OUT DX,,,AL,FOREVER,:,MOV DX,,,2FDH,IN AL,,,DX,;读线路状态寄存器,TEST AL,,,1EH,JNZ ERROR,;,有错,转错误处理程序,TEST AL,,,01H,;,查接收缓冲器是否满,JNZ RECEIVE,TEST AL,,,20H,;,查发送缓冲器是否空,JNZ FOREVER,;为空则发送字符,MOV AH,,,01H,;,读键盘缓冲器内容,;若有键按下,则,ZF=0,,且,AL=,字符码,INT 16H,JZ FOREVER,MOV AH,,,00H,;,AL=,字符,ASCII,码,INT 16H,MOV DX,,,2F8H,OUT DX,,,AL,MOV AH,,,02H,;显示字符,MOV DL,,,AL,INT 21H,CMP AL,,,27,;,若按下,ESC,键,则退出,JNZ NEXT,MOV AH,,,4CH,INC 21H,NEXT,:,JMP FOREVER,RECEIVE,:,MOV DX,,,2F8H,;接收数据,IN AL,,,DX,AND AL,,,7FH,;检查是否,ESC,CMP AL,,,27,JNZ DISP,;不是,ESC,,则显示,MOV AH,,,4CH,;是,ESC,,退出,INT 21H,DISP,:,PUSH AX,MOV BX,,,0,;显示字符,MOV AH,,,14,INT 10H,POP AX,CMP AL,,,0DH,;处理回车,JNZ FOREVER,MOV AL,,,0AH,MOV BX,,,0,MOV AH,,,14,INT 10H,JMP FOREVER,ERROR,:,MOV DX,,,3F8H,IN AL,,,DX,MOV,AL,,,?,MOV BX,0,MOV AH,14,INT 10H,JMP FOREVER,8250,中断方式通信,中断通信方式初始化,修改中断向量:按使用的端口,COM1,或,COM2,,接管中断,0CH,或中断,0BH,(保存原中断向量,将新的中断向量替换上去,注意程序结束时恢复原中断向量),确定通信协议:设置波特率及数据传输格式,设置中断允许寄存器相应位的允许或禁止,开放通信中断:对,8259A,中断控制器的屏蔽寄存器编程(,OCW1,),允许中断,IRQ4,或,IRQ3,通信中断服务程序,首先读中断识别寄存器,IIR,,判断中断源,然后转向对应的处理子过程,(,程序,),。,当中断识别寄存器,D2D1=11,时,表明接收出错中断,需要再读取线路状态寄存器,分析错误原因,再进行错误处理,可能出现多个中断源同时引发中断。因此,每处理完一种中断源后,应继续读取中断识别寄存器,检测,D0,是否为,“,0,”,,当,D0=0,时,表明还有未决中断,应该继续分析中断源并进行中断处理。,中断程序返回的条件是中断识别寄存器的,D0=1,。,可编程串行通信接口芯片,8251A,8251A,基本性能:,全双工、双缓冲器,两种传送方式:同步和异步传送,同步传送:,58,位,/,字符,内部或外部同步,可自动插人同步字符,异步传送:,58,位,/,字符,时钟速率为通信波特率的,1,、,16,或,64,倍,可自动产生、检测和处理终止字符,可产生,1,、,1.5,或,2,位的停止位,波特率在同步方式时为,0,64Kbps,,异步方式时为,0,19.2Kbps,出错检测:具有奇偶、溢出和帧错误等检测电路,8251A,的内部结构:,(,1,),8251A,与,CPU,接口信号,1,、,片选信号,CS*,为低电平时,,8251A,被选中,2,、,数据信号,D7,D0,与系统的数据总线相连,3,、,读写控制信号,RD*,为读信号,WR*,为写信号,C/D*,为控制,/,数据信号,RESET,复位,CLK,时钟,8251A,的接口信号,(,2,),8251A,与外部设备之间的连接信号,1.,发送器,1,),TxRDY,(,Transmitter Ready,):发送器准备好,高电平有效,2,),TxEMPTY,(,Transmitter Empty,):发送器空,高电平有效,3,),TxD,:发送数据线,4,),TxC,:发送器输入时钟,2.,接收器,1,),RxD,:接收数据线,2,),RxRDY,:接收器准备好,3,),SYNDET,:同步检测,4,),RxC,:接收器输入时钟,3.,与调制器的接口接号,1,),DTR,:数据终端准备好,2,),RTS,:请求发送,3,),DSR,:数据装置准备好,4,),CTS,:清除传送,8251A,的编程,8251A,的编程模型(,P312,图,7-52,),8251A,的读写操作,8251A,的工作过程,(P315,图,7-56),(,1,)方式命令字,(,2,)操作命令字,(,用于控制发,/,收,数据传送方向,),(,3,)状态寄存器格式,例:若要查询,8251A,接收器是否准备好,可用下列程序实现:,MOV,DX,,,3F9H,;状态口,NEXT,:,IN,AL,,,DX,;读状态口,AND,AL,,,02H,;查询,D,1,=1,?,JZNEXT,;未准备好,转,NEXT,等待,MOV,DX,,,3F8H,;数据口地址送,DX,IN,AL,,,DX,8251A,应用举例,1.,异步方式下初始化程序,例:设,8251A,工作于异步方式,波特率系数为,16,,具有,7,位数据位,,1,位停止位,偶校验,发送、接收允许,设端口地址为,3F8H,和,3F9H,,试编程初始化。,分析:根据题目要求,可以确定方式命令字为:,01111010B,,即,7AH,。而操作命令字为,00110111B,,即,37H,初始化程序如下:,MOV DX,,,3F9H,MOV AL,,,7AH,;送方式命令字,OUT DX,,,AL,MOV AL,,,37H,;设操作命令字,OUT DX,,,AL,2.,同步方式下初始化程序,例:设,8251A,工作于同步方式,控制口的端口地址为,3F9H,,采用双同步字符,奇校验,,7,位数据位,试编程初始化。,分析:根据题目要求,可以确定方式命令字为,00011000B,,即,18H,。而操作命令字为,10110111B,即,B7H,。它使,8251A,对同步字符进行检索;同时使状态寄存器中,3,个出错标志复位;此外,使,8251A,的发送器启动,接收器也启动;控制字还通知,8251A,,,CPU,当前已经准备好进行数据传输。,MOV,DX,,,3F9H,;,命令端口地址给,DX,MOV,AL,,,00011000B,;方式命令字,OUT,DX,,,AL,MOV,AL,,,16H,OUT,DX,,,AL,;送第一个同步字符,16H,OUT,DX,,,AL,;送第二个同步字符,16H,MOV,AL,,,B7H,;设置操作命令字,OUT,DX,,,AL,3.,两台微机之间进行双机串行通信的举例,例:通过,8251A,实现两台微机相互通信的硬件连接图如图,8-25,所示。利用两片,8251A,通过标准串行接口,RS-232C,实现两台,8086,微机之间的异步串行通信。设两台微机中,8251A,的命令端口地址为均,3F9H,,数据端口地址均为,3F8H,。,分析:设系统采用查询方式控制串行通信的过程。,初始化程序由两部分组成:,将一方定义为发送方,发送方,CPU,查询到,TxRDY,有效时,则,CPU,向,8251A,并行输出一个待发送的字节数据;,将对方定义为接收方,接收方,CPU,查询到,RxRDY,有效时,则从,8251A,输入一个已接收到的字节数据,直到全部数据传送完毕为止。,发送程序如下:,START,:,MOV,DX,,,3F9H,MOV,AL,,,7FH,;异步方式,,8,位数据,,;一位停止位,偶校验,OUT,DX,,,AL,;波特率因子为,64,,允许,;发送,MOV,AL,,,11H,;操作命令字,OUT,DX,,,AL,MOV,DI,,,1000H,;设置地址指针,MOV,CX,,,40H,;设置计数器初值,L1,:,MOV,DX,,,3F9H,IN,AL,,,DX,AND AL,,,01H,;查询,TxRDY,是否有效,JZ L1,;无效则等待,MOV,DX,,,3F8H,MOV,AL,,,DI,;向,8251A,输出一个字节数据,OUT,DX,,,AL,INC,DI,;修改地址指针,LOOP L1,;未传送完,则继续下一个,HLT,接收程序如下:,BEGIN,:,MOV,DX,,,3F9H,MOV,AL,,,7FH,;异步方式,,8,位数据,,1,位停止位,OUT,DX,,,AL,;偶校验,波特率因子,64,,允许接收,MOV,AL,,,14H,;操作命令字(置,ER,,,RxE,为,1,),OUT,DX,,,AL,MOV,SI,,,2000H,;设置地址指针,MOV,CX,,,40H,;设置计数器初值,L2,:,MOV,DX,,,3F9H,IN,AL,,,DX,;读取状态字,TEST,AL,,,38H,;查询接收器是否有错。,JNZ,ERR,;有错则转错误处理,AND,AL,,,02H,;无误则查状态位,D,1,(,RxRDY,),JZ,L2,;接收未准备好则等待,MOV,DX,,,3F8H,IN,AL,,,DX,;接受准备好,则接收,1,个字,;节数据,MOV,SI,,,AL,INC,SI,;修改接收数据区地址,LOOP L2,JMP,L3,ERR,:,CALL,ERR-OUT,(略),L3,:,MOV,AX,,,4C00H,;已接收完,返回,DOS,INT,21H,
展开阅读全文