第9章微机系统串行通信1第9章微机系统串行通信一、串行通信基础二、可编程串行异步通信接口芯片8250三、可编程串行通信接口芯片8251雷达物位计一、串行通信基础串行通信的概念所谓串行通讯是指外设和计算机间使用一根数据信号线一位一位地传输数据,每一位数据都占据一个固定的时间长度。“串行”是指外设与接口电路之间的信息传送方式,CPU与接口之间仍按并行方式工作。第9章微机系统串行通信3信息传输的检错和纠错•串行数据在传输过程中,由于干扰可能引起信息的出错如何发现传输中的错误,叫检错。发现错误后,如何消除错误,叫纠错•最简单的检错方法是奇偶校验,即在传送字符的各位之外,再传送1位奇/偶校验位。可采用奇校验或偶校验。奇校验:所有传送的数位(包含字符的各个数位和校验位)中,1的个数为奇数偶校验:所有传送的数位(包含字符的各个数位和校验位)中,1的个数为偶数奇偶校验能够检测出1位误码,但是不能纠错。第9章微机系统串行通信4串行数据传输方式通讯双方能同时进行发送和接收操作只有1根数据线传送数据信号,通讯双方不能同时在两个方向上传送。发送器接收器数据收发器收发器数据收发器收发器数据只允许数据按照一个固定的方向传送单工方式半双工方式全双工方式第9章微机系统串行通信5传输速率在串行通讯中,用波特率来描述数据的传输速率波特率,即每秒钟传送的二进制位数,简写为bps国际上规定了一个标准波特率系列:110、300、600、1200、1800、2400、4800、9600、14.4Kbps、19.2Kbps、28.8Kbps、33.6Kbps、56Kbps。第9章微机系统串行通信6传输速率在串行通信中,无论收发都必须有时钟脉冲信号对传送的数据进行定位和同步控制。接收时钟/发送时钟是波特率的倍数——波特率因子。例:波特率=9600bps,波特率因子=16,则接收时钟和发送时钟频率=9600×16=153600Hz波特率因子=16,表明16个时钟脉冲传送1位。第9章微机系统串行通信7信号的调制和解调数字信号的频带宽,而普通通信线路频带较窄,如电话线频带范围仅300~3400Hz所以采用普通通信线路进行远程数据通信时,需要在发送端用调制器(Modulator)把数字信号转换为模拟信号,模拟信号经通信线路传送到接收方,接收方再以解调器(Demodulator),把模拟信号变为数字信号。大多数情况下,调制器和解调器合在一个装置中,称为调制解调器——Modem第9章微机系统串行通信8在数据通讯中,Modem起着传输信号的作用,是一种数据通讯设备,简称DCE接收设备和发送设备称为数据终端设备,简称DTE。微机串行通信接口电路,如8250/8251为DTE。信号的调制和解调第9章微机系统串行通信9串行通信的类型串行通讯可以分为两种类型:同步通讯、异步通讯异步通讯一个字符一个字符地传输,每个字符一位一位地传输,传输一个字符时,以起始位开始,然后传输字符本身的各位,接着传输校验位,最后以停止位结束该字符的传输。一次传输的起始位、字符各位、校验位、停止位构成一组完整的信息,称为帧(Frame)帧与帧之间可有任意个空闲位第9章微机系统串行通信10异步通讯的信息格式起始位逻辑01位数据位逻辑0或15位、6位、7位、8位校验位逻辑0或11位或无停止位逻辑11位、1.5位或2位空闲位逻辑1任意数量串行通信的类型异步通讯第9章微机系统串行通信11例:传送8位数据45H(0100,0101B),奇校验,1个停止位,则信号线上的波形为串行通信的类型异步通讯第9章微机系统串行通信12同步通讯靠同步字符完成收发双方同步多个字符成组传送,在每组信息的开始,加上同步字符,字符组和同步字符以及需要的其他字符构成一个信息帧同步字符字符1字符2……字符n校验字符数据块串行通信的类型第9章微机系统串行通信13串行通信的接口标准在串行通信中,DTE和DCE之间的连接要符合接口标准计算机通信中使用最普遍的是RS-232C标准PC机上的COM1、COM2接口,就是RS-232C接口,使用9针和25针连接器第9章微机系统串行通信14串行通信的接口标准TxD发送数据(DTEDCE)RxD接收数据(DCEDTE)SG信号地DSRDCE就绪(DCEDTE)DTRDTE就绪(DTEDCE)RTS请求发送(DTEDCE)CTS清除发送(DCEDTE)DCE允许DTE发送,该信号是对RTS信号的回答。DCD数据载波检出(DCEDTE)当本地DCE收到对方的DCE设备送来的载波信号时,使DCD有效,通知DTE准备接收,并且由DCE将接收到的载波信号解调为数字信号,经RxD线送给DTE。RI振铃信号(DCEDTE)当DCE收到交换机送来的振铃呼叫信号时,使该信号有效,通知DTE已被呼叫。第9章微机系统串行通信15串行通信的接口标准RS-232-C采用负逻辑,且信号电平与TTL不兼容串行接口芯片8250、8251均使用TTL电平,应使用电平转换电路与RS-232C连接器连接。MC1488:TTL电平→RS232电平(用于发送方)MC1489:TTL电平←RS232电平(用于接收方)第9章微机系统串行通信16串行通信的接口标准采用Modem(DCE)和电话网通信时的信号连接第9章微机系统串行通信17串行通信的接口标准采用专用线通讯时的信号连接第9章微机系统串行通信18串行通信的接口标准无Modem的标准连接第9章微机系统串行通信19串行通信的接口标准无Modem的最简连接第9章微机系统串行通信20典型的串行接口的结构由于CPU与接口之间按并行方式传输,接口与外设之间按串行方式传输,因此,在串行接口中,必须要有“接收移位寄存器”(串→并)和“发送移位寄存器”(并→串)。第9章微机系统串行通信21二、可编程串行异步通信接口芯片82508250的内部结构与引脚功能第9章微机系统串行通信22二、可编程串行异步通信接口芯片82508250INTRPT8259OUT2#IR4CPUINTINTR8250中断请求信号与CPU的连接8250的内部结构与引脚功能第9章微机系统串行通信238250的内部寄存器8250内部有10个可寻址的寄存器,分为数据、控制、状态三组8250有7个端口地址:主串口(COM1)地址:3F8H~3FEH辅串口(COM2)地址:2F8H~2FEH发送保持寄存器(3F8H/2F8H):保存待发送的并行数据接收缓冲寄存器(3F8H/2F8H):保存接收到的一个字符第9章微机系统串行通信248250的内部寄存器通信线状态寄存器(3FDH/2FDH)该寄存器提供数据传输的状态信息,各位含义如下:D0位:接收数据准备好×接收缓冲器满)标志位。D0=1,表示接收器已接收到一帧完整的数据,并以转换成并行数据,存入接收缓冲寄存器。D1位:溢出错标志位。D1=1,表示接收缓冲器中的字符未取走。8250又接收到新输入的数据,造成前一数据被破坏。D2位:奇偶错标志位。D2=1,表示接收到的数据有奇偶错。D3位:帧错(接收格式错)标志位。D3=1,表示接收的数据没有正确的停止位。D4位:线路间断标志位。D4=1,表示收到长时间“0”信号(即终止信号)。第9章微机系统串行通信258250的内部寄存器D5位:发送保持寄存器空闲标志位。D5=1,表示数据已从发送保持寄存器转移到发送移位寄存器,发送保持寄存器空闲,CPU可以写入新数据。当新数据送入发送保持寄存器后,D5置0。D6位:发送移位寄存器空闲标志位。D6=1,表示一帧数据已发送完毕。当下一个数据由发送保持寄存器移入发送移位寄存器时,该位被置0。D7位:恒为0。第9章微机系统串行通信26中断允许寄存器(3F9H/2F9H)8250的内部寄存器0000D3D2D1D0允许接收缓冲器满中断允许发送保持器空中断允许接收数据出错中断允许MODEM状态改变中断中断识别寄存器(3FAH/2FAH)00000D2D1D0D00:有中断待处理;1:无中断待处理D2~D111:接收数据错;10:接收缓冲器满01:发送保持器空;00:MODEM状态改变第9章微机系统串行通信27MODEM控制寄存器(3FCH/2FCH)控制与MODEM的接口信号8250的内部寄存器000D4D3D2D1D0数据终端就绪,使DTR=0请求发送,使RTS=0使OUT1=0使OUT2=0,允许发IRQ4中断请求1:内部自环方式,用于自检0:正常收发方式第9章微机系统串行通信28除数寄存器(高8位3F9H/2F9H,低8位3F8H/2F8H)8250使用1.8432MHz的基准时钟输入信号,通过内部分频产生发送时钟频率和接收时钟频率。波特率因子固定为16,所以16*波特率=1843200/分频系数分频系数即为除数除数=1843200/(16*波特率)除数要由程序员分两次写入除数寄存器的高8位和低8位8250的内部寄存器第9章微机系统串行通信298250的内部寄存器通信线控制寄存器(3FBH/2FBH):用于指定异步串行通信的数据格式第9章微机系统串行通信30MODEM状态寄存器(3FEH/2FEH)提供与DCE之间联络信号的状态信息8250的内部寄存器D7D6D5D4D3D2D1D0上次读取该寄存器后,D7~D4位对应的引脚是否发生电平变化接收就绪(CTS=0)数据就绪(DSR=0)有振铃指示(RI=0)接收线检测到载波信号(RLSD=0)第9章微机系统串行通信319.3串行端口的中断服务功能•9.3.1AH=00子功能•9.3.2AH=01/02子服务功能•9.3.3AH=03子服务功能•9.3.4AH=04/05子服务功能返回本章首页第9章微机系统串行通信329.3.1AH=00子功能•表7.10AH=00的参数设置返回本节第9章微机系统串行通信339.3.2AH=01/02子服务功能•表7.11AH=01/02子服务功能返回本节第9章微机系统串行通信349.3.3AH=03子服务功能•表7.12列出了AH=03子服务功能,该功能专门用于读通信进程中的状态。在AH中返回线路状态,在AL中返回MODEM状态。表7.12AH=03子服务功能返回本节第9章微机系统串行通信359.3.4AH=04/05子服务功能•表7.13AH=04/05的扩展子服务功能返回本节第9章微机系统串行通信368250通信编程1.初始化编程包括设置波特率、串行通信数据格式、工作方式设波特率为9600,则除数为1843200/(9600*16)=12=000CHMOVDX,3FBHMOVAL,80H;访问除数寄存器OUTDX,ALMOVDX,3F8hMOVAX,000CHOUTDX,AL;除数的低8位写入3F8HINCDXMOVAL,AHOUTDX,AL;除数的高8位写入3F9H第9章微机系统串行通信378250通信编程1.初始化编程数据格式为8位数据位,1位停止位,奇校验MOVAL,0BH;00001011MOVDX,3FBHOUTDX,AL8250的工作方式由MODEM控制寄存器设置设置自环工作方式MOVAL,13HMOVDX,3FChOUTDX,AL第9章微机系统串行通信388250通信编程2.查询方式通信编程读线路状态寄存器3FDH查相应状态位(D0和D5位)发送程序:MOVDX,3FDHINAL,DXTESTAL,20H;D5位是否为1JZTRMOVAL,[SI];从[SI]取出MOVDX,3F8H;发送数据OUTDX,ALTR:接收程序:MOVDX,3FDHINAL,DXTESTAL,1;D0位是否为1JZREMOVDX,3F8HINAL,DXMOV[DI],AL;读入数据存入[DI]中RE:第9章微机系统串行通信398250通信编程3.中断方式通信编程•设置中断向量:对IRQ4,中断类型号为0CH•设置中断允许寄存器例如,允许发送与接收中断请求MOVAL,3MOVDX,3F9HOUTDX,AL•中