【文档说明】微机原理第七章串行通信接口技术PPT课件.ppt,共(83)页,1.325 MB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-3331.html
以下为本文档部分文字说明:
可编程串行通信接口芯片8251A在串行通信时,收发双方要解决的问题:以何种速率进行数据的发送和接收(波特率)采用何种数据格式(帧格式)接收方如何得知一批数据的开始和结束(帧同步)接收方如何从位流中正确地采样到位数据(位同步)接收方如
何判断收到数据的正确性(数据校验)收发出错时如何处理(出错处理)串行通信的基本概念全双工方式站A站B站A站B站A站B半双工方式单工方式1.数据传送方向2.串行通信的两种基本方式(1)异步通信及其协议
所谓的异步通信,是指通信中两个字符的时间间隔是不固定的,而同一字符中的相邻代码间时间间隔是固定的串行异步通信以字符为单位进行传输,用起始位表示字符的开始,用停止位表示字符结束,其通信协议是起止式异步通信协议串行通信时的数据、控制和状态信息都使用同一
根信号线传送收发双方必须遵守共同的通信协议(通信规程),才能解决传送速率、信息格式、位同步、字符同步、数据校验等问题(2)同步通信及其协议同步通信以一个数据块为传输单位,每个数据块附加1个或2个同步字符,最后以校验字
符结束同步通信协议有多种,常用的有面向比特的高级数据链路控制协议HDLC(High-LevelDataLinkControl)。IBM系列微机中常用的同步数据链路控制协议SDLC(SynchronousData
LinkControl)则是HDLC的子集同步通信的特点是不仅字符内部保持“同步”,而且字符与字符之间也是同步的。在这种通信方式下,收/发双方必须建立准确的位定时信号,也就是收/发时钟的频率必须严格地一致。
每个字符不增加任何附加位,而是连续发送3.波特率与收/发时钟串行传输速率也称波特率(BaudRate)每秒传输的二进制位数bps字符中每个二进制位持续的时间长度都一样,为数据传输速率的倒数(1)串行传输速率字符速率与波特率两
者关系字符速率:每秒钟传输的字符数。波特率:指单位时间内传送二进制数据的位数。单位为:b/s例1:异步传输过程设每个字符对应1个起始位、7个信息位、1个奇偶校验位和1个停止位,如果波特率为1200bps,那么,每秒钟能传输的最大
字符数为1200/10=120个例2:同步传输用1200bps的波特率工作,用4个同步字符作为信息帧头部,但不用奇偶校验,那么,传输100个字符所用的时间为7(100+4)/1200=0.6067s,这就是说,每秒钟
能传输的字符数可达到100/0.6067=165个。可见,在同样的传输率下,同步传输时实际字符传输率要比异步传输时高。(2)发送/接收时钟发送/接收时钟频率与波特率之间的关系为:发送/接收时钟频率=n发送/接收波特率
例:要求传输速率为1200bps当选择n=16时,表明一位数字信号中有16个时钟脉冲,故发送/接收时钟频率为:120016=19.2kHz其中n称为波特因子,一般n=1,16,32,64调制和解调长距离通信时,常需要利用电话线路,
它的频带则只有300Hz~3400Hz。为了通过电话线路传输数字信号,必须先把数字信号转换为适合在电话线路上传送的模拟信号,这就是调制;经过电话线路传输后,在接收端再将模拟信号转换为数字信号,这就是解调。调制方法:移频键控(FSK)移相键控PSK振幅键控(AS
K)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)可编程异步通信接口INS82508250的基本功能:全双工、双缓冲器接收和发送15种波特率
,50-9600bps可编程的异步通信格式提供奇偶、溢出和帧校验等错误检测片内具有优先权中断控制逻辑8250的内部结构8250芯片引脚定义与功能(1)面向CPU一侧的引脚(1)数据线D7~D0:在CPU与8250之间交换
信息地址线A0~A2:寻址8250内部寄存器片选线:8250设计了3个片选输入信号CS0、CS1、CS2*和一个片选输出信号CSOUT。3个片选输入都有效时,才选中8250芯片,同时CSOUT输出高
电平有效。地址选通信号ADS*:当该信号低有效时,锁存上述地址线和片选线的输入状态,保证读写期间的地址稳定(1)处理器接口引脚(2)读控制线数据输入选通DISTR(高有效)和DISTR*(低有效)有一个信号有效,CPU从8
250内部寄存器读出数据相当于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)时钟信号时钟输入引脚XTAL1:8250的基准工作时钟时钟输出引脚XTAL2:基准时钟信号的输出端波特率输出引脚BAUDOUT*:基准时钟经8250内部波特率发生器分频后产生发送时钟,为波特率16倍接收时钟引脚RCLK:接收外部提供的接收时钟信号;若采用发送时钟作为接收时
钟,则只要将RCLK引脚和BAUDOUT*引脚直接相连(4)输出线OUT1*和OUT2*:两个一般用途的输出信号由调制解调器控制寄存器的D2和D3使其输出低电平有效信号复位使其恢复为高8250的寄存器及编程方法8250内部有10个可访问的寄存器,除数寄存器是16位的,占用两个
连续的8位端口内部寄存器用引脚A0~A2来寻址;同时还要利用通信线路控制寄存器的最高位,即除数寄存器访问位DLAB的0和1两种状态,来区别公用1个端口地址所访问的两个寄存器8250内部寄存器端口地址适配器地址DLABA2A1A0访问寄存器名称3F8
H0000接收数据寄存器(读)发送保持寄存器(写)3F9H0001中断允许寄存器3F8H1000波特率除数锁存寄存器(低字节)3F9H1001波特率除数锁存寄存器(高字节)3FAH010中断识别寄存器3FBH011线路控制寄存器3FCH100MODEM控制寄存器3
FDH101线路状态寄存器3FEH110MODEM状态寄存器(1)发送保持寄存器THR(3F8H):“写”包含将要串行发送的并行数据CPU发送保持寄存器发送移位寄存器同步控制8250SOUT(1)接收缓冲寄存器RBR(3F8H):“读”存放
串行接收后转换成并行的数据CPU接收缓冲寄存器接收移位寄存器同步控制8250SIN(2)波特率除数寄存器BRD(3F8H,3F9H)除数寄存器保存设定的分频系数BRD=基准时钟频率÷(16×波特率)起始位时钟(RCLK)数据线(SIN)T16T16T8T例:计算波特
率为1200bps的波特率除数。当使用UART的内部时钟为1.8432MHz时(或由外部通过XTAL1引脚输入),BRD=1843200/(16×1200)=0060H(3)通信线路控制寄存器LCR(3FBH)DLABD6D5D4D3D2D1D0寄
存器选择0正常值1除数寄存器中止字符0无作用1发送中止字符校验位设置××0无校验位001设置奇校验011设置偶校验101校验位为1111校验位为0停止位个数01位11.5位(数据位为5位时)12位(数据位为6~8位时)数据位个数005位016位107位118位指定串行异步通信的字符
格式例:通信线路控制寄存器(LCR)的编程,设置发送数据字长为8位,2位停止位,偶校验,其程序段为:MOVDX,3FBH;LCR的地址MOVAL,00011111B;LCR内容数;据格式参数OUTDX,AL(4)
通信线路状态寄存器LSR(3FDH)0D6D5D4D3D2D1D0为1,表示发送移位寄存器空;当数据由发送保持寄存器移入发送移位寄存器时,该位为0提供串行异步通信的当前状态供CPU读取和处理为1,表示发送保持寄存器空,
当CPU将字符写入发送保持寄存器后,该位为0为1,表示正在传输中止字符为1,表示出现帧错误为1,表示出现奇偶错为1,表示出现溢出错为1,表示接收数据缓冲器收到一个数据,既接收数据准备好;当CPU读走数据后,该位为0为1使DTR*引脚为低否则为高(5)MO
DEM控制寄存器MCR(3FCH)设置8250与数据通信设备之间联络应答的输出信号000LOOPOUT2OUT1RTSDTR为1使RTS*引脚为低否则为高为1使OUT1*引脚为低否则为高为1使OUT2*引脚为低否则为高为1使8250为循环工作方式否则为正常工作方式例:要使MCR的DT
R,RTS有效,OUT1,OUT2以及LOOP无效,则编程如下:MOVDX,3FCH;MCR的地址,MOVAL,00000011B;MCR的控制字OUTDX,AL例:要对8250通过自发自收进行诊断,则程序为:MOVDX,3FCH;MCR的地址MOVAL,0
0010011B;LOOP位置“1”OUTDX,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)保存正在请求中断的优先权最高的中断级别编码00000ID1ID0IP0有中断1无中断ID1ID
0优先权中断类型111001001234接收线路状态接收数据准备好发送保持寄存器空调制解调器状态3.8250应用举例写通信控制字D7=1写除数低8位写通信控制字写除数高8位写MODEM控制字写中断允许字结束8250的初始化过程例:
8250端口地址为3F8H~3FFH,若8250以波特率9600bps,进行异步通信,每字符8位,1位停止位,采用奇校验,允许所有中断,试编程初始化。解:MOVDX,3FBH;8250线路控制寄存器地址送DXMOVAL,80H;置DLAB=1
,设置除数寄存器OUTDX,ALMOVDX,3F8H;除数寄存器地址送DXMOVAL,0CH;波特率为9600bpsOUTDX,AL;送除数低8位INCDXMOVAL,00H;送除数高8位OUTDX,ALMO
VDX,3FBH;8250控制寄存器地址送DXMOVAL,00001011B;8位数据,奇校验,1位停止位OUTDX,ALMOVDX,3F9H;中断允许寄存器地址送DXMOVAL,0FH;设置中断允许控制字,允许所有中断OUTDX,ALMOVDX,3FCH;设置
MODEM控制字MOVAL,0FHOUTDX,AL;OUT1*,OUT2*均为08250查询方式发送初始化8250读LSRD5=1?发送一个字符发完?结束YYNN查询方式接收初始化8250读LSRD0=1?
接收一个字符收完?结束YYNN有错?NY错误处理例:两台PC机用RS-232C串口采用零MODEM方式实现近距离串行通信。数据传送波特率为9600bps,数据格式为8位/每字符,1位停止位,奇校验,双机8250端口地址均为2F8H~2FFH。试编写发送和接收程序,其功能如下:①通信
双方执行程序后,均等待键盘输入字符②双方只要按下一个键,键值在本机当前光标处显示,而且传送到对方,在对方当前光标处显示出来③双方只要按下ESC键,则停止程序的执行,返回到DOS状态④通信双方如果出现通信错误,则屏幕显示“?”,并继续等待键入新字符或接收
新字符MOVDX,2FBH;8250控制寄存器地址送DXMOVAL,80H;置DLAB=1,设置除数寄存器OUTDX,ALMOVDX,2F8H;除数寄存器地址送DXMOVAL,0CH;波特率为9600bpsOUTDX,AL;送除数低8位INCDXMOVAL,00H;送除数高
8位OUTDX,ALMOVDX,2FBH;8250控制寄存器地址送DXMOVAL,0BH;8位数据,奇校验,1位停止位OUTDX,ALMOVDX,2FCH;设置MODEM控制字MOVAL,03H;RTS,CTS有效OUTDX,AL
MOVDX,2F9H;禁止中断MOVAL,00HOUTDX,ALFOREVER:MOVDX,2FDHINAL,DX;读线路状态寄存器TESTAL,1EHJNZERROR;有错,转错误处理程序TESTAL,01
H;查接收缓冲器是否满JNZRECEIVETESTAL,20H;查发送缓冲器是否空JNZFOREVER;为空则发送字符MOVAH,01H;读键盘缓冲器内容;若有键按下,则ZF=0,且AL=字符码INT16HJZFOREVERMOVAH,00H;AL=字符A
SCII码INT16HMOVDX,2F8HOUTDX,ALMOVAH,02H;显示字符MOVDL,ALINT21HCMPAL,27;若按下ESC键,则退出JNZNEXTMOVAH,4CHINC21HNEXT:JMPFOREVERR
ECEIVE:MOVDX,2F8H;接收数据INAL,DXANDAL,7FH;检查是否ESCCMPAL,27JNZDISP;不是ESC,则显示MOVAH,4CH;是ESC,退出INT21HDISP:P
USHAXMOVBX,0;显示字符MOVAH,14INT10HPOPAXCMPAL,0DH;处理回车JNZFOREVERMOVAL,0AHMOVBX,0MOVAH,14INT10HJMPFOREVERERROR:MOVDX,3F8HINAL,DXMOVAL,‘?’MOVBX,0MOVAH
,14INT10HJMPFOREVER8250中断方式通信中断通信方式初始化修改中断向量:按使用的端口COM1或COM2,接管中断0CH或中断0BH(保存原中断向量,将新的中断向量替换上去,注意程序结束时恢复原中断向量)确定通信协
议:设置波特率及数据传输格式,设置中断允许寄存器相应位的允许或禁止开放通信中断:对8259A中断控制器的屏蔽寄存器编程(OCW1),允许中断IRQ4或IRQ3通信中断服务程序首先读中断识别寄存器IIR,判断中断源,
然后转向对应的处理子过程(程序)。当中断识别寄存器D2D1=11时,表明接收出错中断,需要再读取线路状态寄存器,分析错误原因,再进行错误处理可能出现多个中断源同时引发中断。因此,每处理完一种中断源后,应继续读取中断识别寄存器,检测D0是否为“0”,当D0=
0时,表明还有未决中断,应该继续分析中断源并进行中断处理。中断程序返回的条件是中断识别寄存器的D0=1。可编程串行通信接口芯片8251A8251A基本性能:全双工、双缓冲器两种传送方式:同步和异步传送同步传送:5~8位/字符,内部或外部同步,可自动插人同步字符异步传送:5~8
位/字符,时钟速率为通信波特率的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(TransmitterReady):发送器准备好,高电平有效2)TxEMPTY(TransmitterEmpty):发送器空,高电平有效3)TxD:发送数据线4)TxC:发送器输入时钟2.接收器1)R
xD:接收数据线2)RxRDY:接收器准备好3)SYNDET:同步检测4)RxC:接收器输入时钟3.与调制器的接口接号1)DTR:数据终端准备好2)RTS:请求发送3)DSR:数据装置准备好4)CTS:清除传送8251A的编程8251A的编程模型(P312,图7-52)8
251A的读写操作8251A的工作过程(P315,图7-56)(1)方式命令字(2)操作命令字(用于控制发/收,数据传送方向)(3)状态寄存器格式例:若要查询8251A接收器是否准备好,可用下列程序实现:MOVDX,3F9H;状态口NEXT:INAL,DX;读状态口AND
AL,02H;查询D1=1?JZNEXT;未准备好,转NEXT等待MOVDX,3F8H;数据口地址送DXINAL,DX8251A应用举例1.异步方式下初始化程序例:设8251A工作于异步方式,波特率系数为16,具有7位数据位,1位停止
位,偶校验,发送、接收允许,设端口地址为3F8H和3F9H,试编程初始化。分析:根据题目要求,可以确定方式命令字为:01111010B,即7AH。而操作命令字为00110111B,即37H初始化程序如下
:MOVDX,3F9HMOVAL,7AH;送方式命令字OUTDX,ALMOVAL,37H;设操作命令字OUTDX,AL2.同步方式下初始化程序例:设8251A工作于同步方式,控制口的端口地址为3F9H,采用双同步字符,奇校验,7位数据位,试编程初始化。分析:根据题目要求,可以确定方式命令字为000
11000B,即18H。而操作命令字为10110111B即B7H。它使8251A对同步字符进行检索;同时使状态寄存器中3个出错标志复位;此外,使8251A的发送器启动,接收器也启动;控制字还通知8251A,
CPU当前已经准备好进行数据传输。MOVDX,3F9H;命令端口地址给DXMOVAL,00011000B;方式命令字OUTDX,ALMOVAL,16HOUTDX,AL;送第一个同步字符16HOUTDX,AL;送第二个同步
字符16HMOVAL,B7H;设置操作命令字OUTDX,AL3.两台微机之间进行双机串行通信的举例例:通过8251A实现两台微机相互通信的硬件连接图如图8-25所示。利用两片8251A通过标准串行接口RS-232C实现两台8086微机之间的异步串行通信。设两
台微机中8251A的命令端口地址为均3F9H,数据端口地址均为3F8H。分析:设系统采用查询方式控制串行通信的过程。初始化程序由两部分组成:①将一方定义为发送方,发送方CPU查询到TxRDY有效时,则CPU向8251A并行输出一个待发送的字节数据;②将对方
定义为接收方,接收方CPU查询到RxRDY有效时,则从8251A输入一个已接收到的字节数据,直到全部数据传送完毕为止。发送程序如下:START:MOVDX,3F9HMOVAL,7FH;异步方式,8位数据,;一位停止位,偶校验OUTDX,AL;波特率
因子为64,允许;发送MOVAL,11H;操作命令字OUTDX,ALMOVDI,1000H;设置地址指针MOVCX,40H;设置计数器初值L1:MOVDX,3F9HINAL,DXANDAL,01H;查询TxRDY是否有效JZ
L1;无效则等待MOVDX,3F8HMOVAL,[DI];向8251A输出一个字节数据OUTDX,ALINCDI;修改地址指针LOOPL1;未传送完,则继续下一个HLT接收程序如下:BEGIN:MOV
DX,3F9HMOVAL,7FH;异步方式,8位数据,1位停止位OUTDX,AL;偶校验,波特率因子64,允许接收MOVAL,14H;操作命令字(置ER,RxE为1)OUTDX,ALMOVSI,2000H;设置地址指针MOVCX
,40H;设置计数器初值L2:MOVDX,3F9HINAL,DX;读取状态字TESTAL,38H;查询接收器是否有错。JNZERR;有错则转错误处理ANDAL,02H;无误则查状态位D1(RxRDY)JZL2;接收未准备好则等待MOVDX
,3F8HINAL,DX;接受准备好,则接收1个字;节数据MOV[SI],ALINCSI;修改接收数据区地址LOOPL2JMPL3ERR:CALLERR-OUT(略)L3:MOVAX,4C00H;已接收完,返回DOSINT2
1H