2012年下第七章串行口1025(14,15)_第1页
2012年下第七章串行口1025(14,15)_第2页
2012年下第七章串行口1025(14,15)_第3页
2012年下第七章串行口1025(14,15)_第4页
2012年下第七章串行口1025(14,15)_第5页
已阅读5页,还剩76页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2012年下第七章串行口1025(14,15)第一页,共83页。一、计算机串行通信基础随着多微机系统的广泛应用和计算机网络技术的普及,计算机的通信功能愈来愈显得重要。计算机通信是将计算机技术和通信技术的相结合,完成计算机与外部设备或计算机与计算机之间的信息交换。可以分为两大类:并行通信与串行通信。在多微机系统以及现代测控系统中信息的交换多采用串行通信方式。2第二页,共83页。

并行通信通常是将数据字节的各位用多条数据线同时进行传送。并行通信控制简单、传输速度快;由于传输线较多,长距离传送时成本高且接收方的各位同时接收存在困难。

3第三页,共83页。

串行通信是将数据字节分成一位一位的形式在一条传输线上逐个地传送。串行通信的特点:传输线少,长距离传送时成本低,且可以利用电话网等现成的设备,但数据的传送控制比并行通信复杂。

4第四页,共83页。串行通信的基本概念(一)、异步通信与同步通信(二)、串行通信的传输方式(三)、信号的调制与解调(四)、传输速率与传输距离(五)、串行通信的过程及通信协议5第五页,共83页。1、异步通信

异步通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。为使双方的收发协调,要求发送和接收设备的时钟尽可能一致。

串行通信的基本概念(一)、异步通信与同步通信6第六页,共83页。

异步通信是以字符(构成的帧)为单位进行传输,字符与字符之间的间隙(时间间隔)是任意的,但每个字符中的各位是以固定的时间传送的,即字符之间是异步的(字符之间不一定有“位间隔”的整数倍的关系),但同一字符内的各位是同步的(各位之间的距离均为“位间隔”的整数倍)。异步通信的特点:不要求收发双方时钟的严格一致,实现容易,设备开销较小,但每个字符要附加2~3位用于起止位,各帧之间还有间隔,因此传输效率不高。7第七页,共83页。异步通信的数据格式:在帧格式中,一个字符由四个部分组成:起始位、数据位、奇偶校验位和停止位。首先是一个起始为(0),然后是5位--8位数据(规定低位在前,高位在后),接下来是奇偶校验位(可省略),最后是停止位(1)。8第八页,共83页。2、同步通信同步通信时要建立发送方时钟对接收方时钟的直接控制,使双方达到完全同步。此时,传输数据的位之间的距离均为“位间隔”的整数倍,同时传送的字符间不留间隙,即保持位同步关系,也保持字符同步关系。发送方对接收方的同步可以通过两种方法实现。

外同步自同步9第九页,共83页。同步通信的特点:是以特定的位组合(SYN)作为帧的开始和结束标志,所传输的一帧数据可以是任意位。所以传输的效率较高,但实现的硬件设备比异步通信复杂。

同步通信的数据格式:10第十页,共83页。1、单工单工是指数据传输仅能沿一个方向,不能实现反向传输。2、半双工半双工是指数据传输可以沿两个方向,但需要分时进行。3、全双工全双工是指数据可以同时进行双向传输。

(二)、串行通信的传输方式11第十一页,共83页。12第十二页,共83页。单片机能实现全双工的串行通信AT89S51AT89S5113第十三页,共83页。

利用调制器(Modulator)把数字信号转换成模拟信号,然后送到通信线路上去,再由解调器(Demodulator)把从通信线路上收到的模拟信号转换成数字信号。由于通信是双向的,调制器和解调器合并在一个装置中,这就是调制解调器MODEM。(三)、信号的调制与解调14第十四页,共83页。

波特率,即数据传送速率,表示每秒钟传送二进制代码的位数,它的单位是b/s。假设数据传送速率是120字符/s,而每个字符格式包含1个代码位(1个起始位、1个终止位、8个数据位)。这时,传送的波特率为:10b/字符×120字符/s=1200b/s

每一位代码的传送时间Td为波特率的倒数。

Td=1b/(1200bs)=0.833ms异步通信的传送速率在50b/s--19200b/s之间,常用于计算机到终端机和打印机之间的通信、直通电报以及无线电通信的数据发送等。(四)、传输速率与传输距离

1、波特率(Baudrate)15第十五页,共83页。

串行接口或终端直接传送串行信息位流的最大距离与传输速率及传输线的电气特性有关。当传输线使用每0.3m(约1英尺)有50PF电容的非平衡屏蔽双绞线时,传输距离随传输速率的增加而减小。当比特率超过1000bps时,最大传输距离迅速下降,如9600bps时最大距离下降到只有76m(约250英尺)。2、传输距离与传输速率的关系16第十六页,共83页。1、串←→并转换与设备同步两个通信设备在串行线路上成功地实现通信必须解决两个问题:一是串←→并转换,即如何把要发送的并行数据串行化,把接收的串行数据并行化;二是设备同步,即同步发送设备与接收设备的工作节拍,以确保发送数据在接收端被正确读出。(五)、串行通信的过程及通信协议在计算机串行发送数据之前,计算机内部的并行数据被送入移位寄存器并一位一位地输出,将并行数据转换成串行数据。在接收数据时,来自通信线路的串行数据被压入移位寄存器,满8位后并行送到计算机内部。17第十七页,共83页。18第十八页,共83页。在串行通信控制电路中,串--并、并--串转换逻辑被集成在串行异步通信控制器芯片中。89S51单片机的串行口和IBM-PC相同。19第十九页,共83页。进行串行通信的两台设备必须同步工作才能有效地检测通信线路上的信号变化,从而采样传送数据脉冲。设备同步对通信双方有两个共同要求:一是通信双方必须采用统一的编码方法;二是通信双方必须能产生相同的传送速率。设备同步20第二十页,共83页。2、串行通信协议通信协议是对数据传送方式的规定,包括数据格式定义和数据位定义等。(1)起始位约定(2)数据位约定(3)奇偶校验位约定(4)停止位约定(5)波特率设置21第二十一页,共83页。(1)起始位通信线上没有数据被传送时处于逻辑1状态。当发送设备要发送一个字符数据时,首先发出一个逻辑0信号,这个逻辑低电平就是起始位。起始位通过通信线传向接收设备,接收设备检测到这个逻辑低电平后,就开始准备接收数据位信号。起始位所起的作用就是设备同步,通信双方必须在传送数据位前协调同步。(2)数据位当接收设备收到起始位后,紧接着就会收到数据位。数据位的个数可以是5、6、7或8。IBM-PC中经常采用7位或8位数据传送,89C51串行口采用8位或9位数据传送。这些数据位被接收到移位寄存器中,构成传送数据字符。在字符数据传送过程中,数据位从最低有效位开始发送,依次顺序在接收设备中被转换为并行数据。第二十二页,共83页。(3)奇偶校验位

数据位发送完之后,可以发送奇偶校验位。奇偶校验用于有限差错检测,通信双方需约定已知的奇偶校验方式。如果选择偶校验,那么组成数据位和奇偶位的逻辑1的个数必须是偶数;如果选择奇校验,那么逻辑1的个数必须是奇数。(4)停止位约定在奇偶位或数据位(当无奇偶校验时)之后发送的是停止位。停止位是一个字符数据的结束标志,可以是1位,1.5位或2位的高电平。接收设备收到停止位之后,通信线路上便又恢复逻辑1状态,直至下一个字符数据的起始位到来。第二十三页,共83页。(5)波特率设置

通信线上传送的所有位信号都保持一致的信号持续时间,每一位的信号持续时间都由数据传送速度确定,而传送速度是以每秒多少个二进制位来衡量的,这个速度叫波特率。如果数据以300个二进制位每秒在通信线上传送,那么传送速度为300波特,通常记为300b/s。第二十四页,共83页。2、串行口控制字及控制寄存器1、串行口结构框图3、波特率设计4、串行通信工作方式及举例7.1串行口的结构25第二十五页,共83页。发送接收1、串行口结构框图26第二十六页,共83页。串行口的发送和接收都是以特殊功能寄存器SBUF的名义进行读或写的。当向SBUF发“写”命令时(执行“MOVSBUF,A”指令),即是向发送缓冲器SBUF装载并开始由TXD引脚向外发送一帧数据,发送完便使发送中断标志位TI=1。从图中可看出,接收器是双缓冲结构,在前一个字节被从接收缓冲器SBUF读出之前,第二个字节即开始被接收(串行输入至移位寄存器),但是,在第二个字节接收完毕而前一个字节CPU未读取时,会丢失前一个字节。27第二十七页,共83页。在满足串行口接收中断标志位RI(SCON.0)=0的条件下,置允许接收位REN(SCON.4)=1就会接收一帧数据进入移位寄存器,并装载到接收SBUF中,同时使RI=1。当发读SBUF命令时(执行“MOVA,SBUF”命令),便由接收缓冲器(SBUF)取出信息,通过89C51内部总线送CPU。对于发送缓冲器,因为发送时CPU是主动的,不会产生重叠错误,一般不需要用双缓冲器结构来保持最大传送速率。28第二十八页,共83页。2、串行口控制字及控制寄存器89S51串行口是可编程接口,对它初始化编程只用两个控制字分别写入特殊功能寄存器SCON(98H)和电源控制寄存器PCON(87H)中即可。(1)SCON(98H)

89S51串行通信的方式选择、接收和发送控制以及串行口的状态标志等均由特殊功能寄存器SCON控制和指示,其控制字格式如图7-2所示。29第二十九页,共83页。30第三十页,共83页。①SM0和SM1(SCON.7,SCON.6)——串行口工作方式选择位。两个选择位对应4种通信方式,如表7-1所示。其中,fosc是振荡频率。波特率帧格式31第三十一页,共83页。

多机通信时,SM2必须置1。双机通信时,通常使SM2=0。②SM2:多机通信控制位,主要用于方式2和3。若置SM2=1,则允许多机通信。当一片89S51(主机)与多片89S51(从机)通信时,所有从机的SM2位都置1。主机首先发送的一帧数据为地址,即从机机号,其中第9位为1,所有的从机接收到数据后,将其中第9位装入RB8中。SM2=1SM2=1SM2=1SM2=189S5189S5189S5189S5189S51000000011第三十二页,共83页。若SM2=0,即不属于多机通信情况,则接收一帧数据后,不管第九位数据是0还是1,都置RI=1,接收到的数据装入SBUF。根据SM2这个功能,可实现多个AT89S51应用系统的串行通信。在方式1时,若SM2=1,则只有接收到有效停止位时,RI才制1,以便接收下一贞数据。在方式0时,SM2必须是0。在方式0、1通信时,SM2通常置0;在方式2、3的双机通信中,SM2也置0。只有在方式2、3的多机通信中,SM2才置1。各个从机根据收到的第9位数据(RB8中)的值来决定从机可否再接收主机的信息。若(RB8)=0,说明是数据帧,则使接收中断标志位RI=0,信息丢失;若(RB8)=1,说明是地址帧,数据装入SBUF并置RI=1,中断所有从机,被寻址的目标从机清除SM2以接收主机发来的一帧数据。其他从机仍然保持SM2=1。33第三十三页,共83页。③REN——允许接收控制位。由软件置1或清0。在串行通信接收控制过程中,如果满足RI=0和REN=1(允许接收)的条件,就允许接收,一帧数据就装载入接收SBUF中。④TB8——发送数据的第9位(D8)装入TB8中。在方式2或方式3中,根据发送数据的需要由软件置位或复位。在许多通信协议中可用作奇偶校验位,也可在多机通信中作为发送地址帧或数据帧的标志位。对于后者,TB8=1,说明该帧数据为地址;TB8=0,说明该帧数据为数据字节。在方式0或方式1中,该位未用。34第三十四页,共83页。⑤RB8——接收数据的第9位。在方式2或方式3中,接收到的第9位数据放在RB8位。它或是约定的奇/偶校验位,或是约定的地址/数据标识位。在方式2和方式3多机通信中,若SM2=1,如果RB8=1,说明收到的数据为地址帧。⑥TI——发送中断标志。在一帧数据发送完时被置位。在方式0串行发送第8位结束或其他方式串行发送到停止位的开始时由硬件置位,可用软件查询。它同时也申请中断,TI置位意味着向CPU提供“发送缓冲器SBUF已空”的信息,CPU可以准备发送下一帧数据。串行口发送中断被响应后,TI不会自动清0,必须由软件清0。35第三十五页,共83页。⑦RI——接收中断标志。在接收到一帧有效数据后由硬件置位。在方式0中,第8位数据发送结束时,由硬件置位;在其他三种方式中,当接收到停止位中间时由硬件置位。RI=1,申请中断,表示一帧数据接收结束,并已装入接收SBUF中,要求CPU取走数据。CPU响应中断,取走数据。RI也必须由软件清0,清除中断申请,并准备接收下一帧数据。串行发送中断标志TI和接收中断标志RI是同一个中断源,CPU事先不知道是发送中断TI还是接收中断RI产生的中断请求,所以,在全双工通信时,必须由软件来判别。复位时,SCON所有位均清0。36第三十六页,共83页。(2)PCON(87H)电源控制寄存器PCON中只有SMOD位与串行口工作有关,

电源控制寄存器PCON不可位寻址。37第三十七页,共83页。

在串行通信中,收发双方对发送或接收的数据速率有一定的约定,通过软件对AT89S51串行口编程可约定四种工作方式。其中,方式0和方式2的波特率是固定的;而方式1和方式3的波特率是可变的,由定时器T1的溢出率来决定。3、波特率设计串行口的四种工作方式对应着三种波特率。由于输入的移位时钟来源不同,因此,各种方式的波特率计算公式也不同。38第三十八页,共83页。方式0波特率≌fosc/12注意,符号“≌”表示左面的表达式只是引拥右面表达式的数值,即右面的表达式是提供了一种计算的方法。39第三十九页,共83页。(2)方式2的波特率

SMOD=0时,波特率为fosc的1/64;SMOD=1时,波特率为fosc的1/32。即方式2波特率≌2SMOD/64×fosc40第四十页,共83页。(3)方式1和方式3的波特率AT89S51串行口方式1和方式3的波特率由定时器T1的溢出率与SMOD值同时决定。波特率≌2SMOD/32×(T1溢出率)T1溢出率取决于T1的计数速率(计数速率≌fosc/12)和T1预置的初值,T1在此相当于进行m次分频。若定时器T1采用模式1时,波特率公式如下:方式1、方式3波特率≌2SMOD/32×(fosc/12)/(216-初值)41第四十一页,共83页。定时器T1用作波特率发生器时,通常选用定时器模式2(自动重装初值定时器)比较实用。要设置定时器T1为定时方式(使C/T=0),让T1计数内部振荡脉冲,即计数速率为fosc/12(注意应禁止T1中断,以免溢出而产生不必要的中断)。先设定TH1和TL1定时即输初值为X,那么每过“28-X”个机器周期,定时器T1就会产生一次溢出。表7-2列出了串行口方式1、方式3常用波特率及其初值。42第四十二页,共83页。波特率foscSMOD位方式初值X62.5kbit/s12MHz12FFH19.2kbit/s11.0592MHz12FDH9.6kbit/s11.0592MHz02FDH4.8kbit/s11.0592MHz02FAH2.4kbit/s11.0592MHz02F4H1.2kbit/s11.0592MHz02E8H(1)在使用的时钟振荡频率fosc为12MHz或6MHz时,将初值X和fosc计算出的波特率有一定误差。消除误差可采用时钟频率11.0592MHz。(2)如果选用很低的波特率,如波特率选为55,可将定时器T1设置为方式1定时。但在这种情况下,T1溢出时,需在中断服务程序中重新装入初值。中断响应时间和执行指令时间会使波特率产生一定的误差,可用改变初值的方法加以调整。第四十三页,共83页。例7-3:AT89S51单片机时钟振荡频率为11.0592MHz,选用定时器T1工作模式2作为波特率发生器,波特率为2400b/s,求初值。解:设置波特率控制为(SMOD)=0所以,(TH1)=(TL1)=F4H。为什么是它?系统晶体振荡频率选为11.0592MHz就是为了使初值为整数,从而产生精确的波特率。相应的四条指令:MOVTMOD,#00100000B MOVTH1,#0F4HMOVTL1,#0F4HSETBTR144第四十四页,共83页。7.2串行口的4种工作方式方式0

方式0时,串行口为同步移位寄存器的输入输出方式。主要用于扩展并行输入或输出口。数据由RXD(P3.0)引脚输入或输出,同步移位脉冲由TXD(P3.1)引脚输出。发送和接收均为8位数据,低位在先,高位在后。波特率固定为fosc/12。SM2必为0。(1)方式0输出45第四十五页,共83页。

(2)方式0输入扩展并行输入或输出口46第四十六页,共83页。74LS165SBUFSBUF74LS164RXDTXDfosc/12MOVSBUF,ARXDTXD并出并入fosc/12先接收低位示意图MOVA,SBUFTIRI先发送低位示意图47第四十七页,共83页。方式1

方式1是10位数据的异步通信口。TXD为数据发送引脚,RXD为数据接收引脚,传送一帧数据的格式如图所示。其中1位起始位,8位数据位,1位停止位。48第四十八页,共83页。(1)方式1输出(2)方式1输入49第四十九页,共83页。

用软件置REN为1时,接收器以所选择波特率的16倍速率采样RXD引脚电平,检测到RXD引脚输入电平发生负跳变时,则说明起始位有效,将其移入输入移位寄存器,并开始接收这一帧信息的其余位。接收过程中,数据从输入移位寄存器右边移入,起始位移至输入移位寄存器最左边时,控制电路进行最后一次移位。当RI=0,且SM2=0(或接收到的停止位为1)时,将接收到的9位数据的前8位数据装入接收SBUF,第9位(停止位)进入RB8,并置RI=1,向CPU请求中断。50第五十页,共83页。

方式2和方式3

方式2或方式3时为11位数据的异步通信口。TXD为数据发送引脚,RXD为数据接收引脚。

方式2和方式3时起始位1位,数据9位(含1位附加的第9位,发送时为SCON中的TB8,接收时为RB8),停止位1位,一帧数据为11位。方式2的波特率固定为晶振频率的1/64或1/32,方式3的波特率由定时器T1的溢出率决定。

51第五十一页,共83页。

(1)方式2和方式3输出

发送开始时,先把起始位0输出到TXD引脚,然后发送移位寄存器的输出位(D0)到TXD引脚。每一个移位脉冲都使输出移位寄存器的各位右移一位,并由TXD引脚输出。第一次移位时,停止位“1”移入输出移位寄存器的第9位上,以后每次移位,左边都移入0。当停止位移至输出位时,左边其余位全为0,检测电路检测到这一条件时,使控制电路进行最后一次移位,并置TI=1,向CPU请求中断。52第五十二页,共83页。

(2)方式2和方式3输入

接收时,数据从右边移入输入移位寄存器。当位检测逻辑采样到RXD上的负跳变,便开始接收1帧数据。在接收完第九位数据后,满足下列条件,才能真正接收到1个字符。当RI=0,且SM2=0(或接收到的第9位数据为1)时,接收到的数据装入接收缓冲器SBUF和RB8(接收数据的第9位),置RI=1,向CPU请求中断。如果条件不满足,则数据丢失,且不置位RI,继续搜索RXD引脚的负跳变。53第五十三页,共83页。AT89S51串行口的应用举例

方式0时,串行口为同步移位寄存器的输入输出方式。主要用于扩展并行输入或输出口。

74LS164可用于扩展并行输出口,74LS165可用于扩展输入口。数据由RXD(P3.0)引脚输入或输出,同步移位脉冲由TXD(P3.1)引脚输出。发送和接收均为8位数据,低位在先,高位在后。波特率固定为fosc/12。

1、串行口方式0的应用54第五十四页,共83页。补例7-1:用AT89S51串行口外接164串入——并出移位寄存器扩展8位并行口;8位并行口的每位都接一个发光二极管,要求发光二极管从左到右以一定延迟轮流显示,并不断循环。设发光二极管为共阴极接法,如图所示。解:设数据串行发送采用中断方式,显示的延迟通过调用延迟程序DELAY来实现。AT89S5155第五十五页,共83页。中断方式程序清单:

ORG0023H ;串行口中断入口

AJMPSBR ;转入串行口中断服务程序

ORG2000H ;主程序起始地址

MOVSCON,#00H ;串行口方式0初始化

MOVIE,#10010000B MOVA,#80H ;最左一位发光二极管先亮

CLRP1.0 ;关闭并行输出

MOVSBUF,A ;开始串行输出LOOP:SJMPLOOP ;等待中断SBR:

SETBP1.0 ;启动并行输出

ACALLDELAY ;显示延迟一段时间

CLRTI ;清发送中断标志

RRA 准备右边一位显示

CLRP1.0 ;关闭并行输出

MOVSBUF,A ;再一次串行输出

RETI ;中断返回56第五十六页,共83页。用方式0加上并入——串出移位寄存器可扩展一个8位并行输入口。移位寄存器必须带有预置/移位的控制端,由单片机的一个输出端子加以控制,以实现先由8位输入口置数到移位寄存器,然后再串行移位从单片机的串行口输入到接收缓冲器,最后再读入到CPU中。1、串行口方式0的应用57第五十七页,共83页。补例7-2:用89S51串行口外加移位寄存器165或166扩展8位输入口,输入数据由8个开关提供,另有一个开关K提供联络信号。当K=0时,表示要求输入数据,输入的8位为开关量,提供逻辑模拟子程序的输入信号。74LS165读图所得:置数和移位由引脚shift控制,低为置数,高位移位。跨接在H上的开关量最先移出;而方式0的数据传送规则是低位在先,所以,最后移入SBUF中的数据为:A在最高位、H在最低位。HAB58第五十八页,共83页。

用方式0外加移位寄存器来扩展8位输出口时,要求移位寄存器带有输出控制,否则串行移位过程也会反映到并行输出口;另外,输出口最好再接一个寄存器或锁存器,以免在输出门关闭使(STB=0)输出又发生变化。

用方式0加上并入——串出移位寄存器可扩展一个8位并行输入口。移位寄存器必须带有预置/移位的控制端,由单片机的一个输出端子加以控制,以实现先由8位输入口置数到移位寄存器,然后再串行移位从单片机的串行口输入到接收缓冲器,最后再读入到CPU中。59第五十九页,共83页。例7-1

方式2发送在双机通讯中的应用。下面的发送中断服务程序,是在双机通讯中,以TB8作为奇偶校验位,处理方法为数据写入SBUF之前,先将数据的奇偶校验位写入TB8,以保证采用偶校验发送。

2、串行口方式2的应用

9位共偶数个1,通过TB8补0或补1来实现什么是偶校验?当数据本身为偶数个1时(P=0)补0;

当数据本身为奇数个1时(P=1)补1;

结论:令TB8=P7.2、串行口的四种工作方式60第六十页,共83页。PIPTI:PUSHPSW;现场保护

PUSHAccSETBRS1;选择第2组工作寄存器区

CLRRS0CLRTI;发送中断标志清“0”MOVA,@R0;取数据

MOVC,P;校验位送TB8,采用偶校验

MOVTB8,CMOVSBUF,A;启动发送

INCR0;数据指针加1POPAcc;恢复现场

POPPSWRETI ;中断返回7.2、串行口的四种工作方式发送中断服务程序61第六十一页,共83页。例7-2

方式2接收在双机通讯中的应用本例与上例相对应。若第9位数据为校验位,在接收程序中作偶校验处理,设1组寄存器区的R0为数据缓冲器指针。PIRI: PUSHPSW PUSHAcc SETBRS0 ;选择1组寄存器区

CLRRS1 CLRRI MOVA,SBUF;收到数据送A

MOVC,P JNCL1 ;C=0。跳L1 JNBRB8,ERP;ERP为出错处理程序

AJMPL2L1: JBRB8,ERP ;RB8=1,跳ERPL2: MOV@R0,A INCR0 POPAcc POPPSW

AJMPL3ERP:……… ;出错处理程序段

………L3: RETIRB8=0?P=0?YRB8=1?YNYYERPN7.2、串行口的四种工作方式62第六十二页,共83页。数据块的发送补例7-3:编制一个发送程序,将片内RAM中50H~5FH的数据串行发送。串行口设定为工作方式2,TB8作偶校验位。7.2、串行口的四种工作方式(1)采用中断方式的流程图数据发送完?是初始化串口初始化数据区中断初始化

发送第一个数据开始

主程序等待中断清中断标志发送下一个数据

关中断中断入口

中断服务子程序返回写写看! ;发送一个数据MOVA,@R0MOVC,PSW.0;P→CMOVTB8,CMOVSBUF,A;63第六十三页,共83页。

ORG0000HAJMPMAIN;上电,转向主程序

ORG0023H;串行口的中断入口地址

AJMPSERVE;转向中断服务程序

ORG0100H;主程序MAIN:MOVSCON,#80HMOVPCON,#80HMOVR0,#50HMOVR7,#0FH;?够吗

SETBES;允许串行口中断

SETBEA;CPU允许中断

MOVA,@R0MOVC,PSW.0;P→CMOVTB8,CMOVSBUF,A;发送第一个数据HERE:

SJMPHERESERVE:

CLRTI;清除发送中断标志

INCR0;修改数据地址

MOVA,@R0MOVC,PSW.0;P→CMOVTB8,CMOVSBUF,A;发送数据

DJNZR7,ENDT;判断数据块发送完否;若未发送完,则转ENDTCLRES;若发送完,则禁止串行口中断ENDT:RETI;中断返回

END(1)采用中断方式的程序段64第六十四页,共83页。

ORG0000H AJMPMAIN ;上电,转向主程序

ORG0100H ;主程序MAIN: MOVSCON,#80H ;设工作方式2 MOVPCON,#80H ;取波特率为fosc/32 MOVR0,#50H ;首址50H送R0 MOVR7,#10H ;数值长度送R7LOOP: MOVA,@R0 ;取数据

MOVC,PSW.0 ;P→C MOVTB8,C ;奇偶标志送TB8 MOVSBUF,A ;发送数据WAIT: JBCTI,CONT AJMPWAIT ;等待中断标志TI=1CONT: INCR0 DJNZR7,LOOP ;数值尚未发送完,继续发送下一个数据HERE:

SJMPHERE END(2)采用查询方式的程序段65第六十五页,共83页。解:方式3为11位异步通信方式,波特率取决于TI的溢出率。查表7-2(P129)可知,当晶振为11.059MHz,波特率为2400b/s时,可取SMOD=0,定时器选择模式2:初值为F4H补例7-4:编制一个接收程序,将接收的16B数据送入片内RAM的50H—5FH单元中。设串行口工作于方式3,波特率为2400b/s。(晶振为11.059MHz)3、串行口方式3的应用(双机通信)7.2、串行口的四种工作方式RB8=0?P=0?YRB8=1?YNYYERPN66第六十六页,共83页。源程序如下(查询方式):SUBR: MOVTMOD,#20H ;设TI工作于模式2 MOVTH1,#0F4H ;赋循环计数初值

MOVTL1,#0F4H ;赋计数值

SETBTR1 ;启动定时器TI MOVR0,#50H ;首地址送R0 MOVR7,#10H ;数据长度送R7

MOVSCON,#0D0H ;串行口工作与方式3,可接收

MOVPCON,#00H ;设SMOD=0WAIT: JBCRI,PR1 ;接收完一帧数据,清RI,转PR1 SJMPWAIT ;否则等待PR1: MOVA,SBUF ;读入数据

JNBP,PNP ;P=0,转PNP JNBRB8,PER ;P=1,RB8=0,转出错处理

SJMPRIGHTPNP: JBRB8,PER ;P=0,RB8=1,转出错处理RIGHT: MOV@R0,A ;数据送内存

INCR0 ;修改地址指针

DJNZR7,WAIT ;数据未接收完,继续接收下一个数据

CLRPSW.5 ;置正确接收完毕标志F0=0 RETPER: SETBPSW.5 RET67第六十七页,共83页。主机与从机,每个从机有一个唯一的地址码。主机可与每个从机通信,从机之间不能通信。主机每一时段只能与一个从机通信。先叫地址,然后再通信。7.3串口的多机通信要保证主机与所选择的从机实现可靠地通讯,必须保证串口具有识别功能。SCON中的SM2位就是满足这一条件而设置的多机通讯控制位。68第六十八页,共83页。SM2=0、RB8=0 RB8=1RI可以置位SM2=1、RB8=1SM2=1、RB8=0RI可以置位RI不能置位应用这些特性来安排多机通讯的工作过程:(2)主机先将从机地址(即准备接收数据的从机)发给各从机,希望每个从机都能收到。主机发出的地址信息,以第9位为1为特征。(1)从机串行口编程为方式2或方式3接收,且置SM2和REN位为“1”,使从机只处于多机通讯且接收地址帧的状态(监听状态)。(3)各从机接收到地址后,判断是否和本机地址相符合。相符则该从机清“0”SM2位(解除监听状态),准备接收主机的数据或命令;若不符,则保持SM2=1状态(仍处于监听状态,无法接收主机的数据)。(4)接着主机发送数据帧,以第9位为0为特征.此时各从机串行口接收到的RB8=0,只有地址相符合的从机系统(即已清“0”SM2位的从机)才能激活RI,真正收到数据。被叫未被叫(5)当主机与从机的数据通信结束时,主机将发送广播地址。当从机收到“广播地址”后,便将从机的通信模式再设置成多机模式(SM2位置1,回到监听状态),为下一次的多机通信做好准备。69第六十九页,共83页。7.4双机串行通信的硬件连接AT89S51串行口的输入、输出均为TTL电平。抗干扰性差,传输距离短,传输速率低。为提高串行通信的可靠性,增大串行通信的距离和提高传输速率,都采用标准串行接口,如RS-232、RS-422A、RS-485等。1.TTL电平通信接口如果两个单片机相距在1.5m之内,它们的串行口可直接相连,接口如图所示。甲机RXD与乙机TXD端相连,乙机RXD与甲机TXD端相连。70第七十页,共83页。2.RS-232C双机通信接口如果双机通信距离在1.5~15m之间时,可用RS-232C标准接口实现点对点的双机通信,接口如图。MAX232A是美国MAXIM(美信)公司生产的RS-232C双工发送器/接收器电路芯片。7.4双机串行通信的硬件连接71第七十一页,共83页。(1)

电气特性RS-232C上传送的数字量采用负逻辑,且与地对称。逻辑“1”:-3~-15V;逻辑“0”:+3~+15V。RS-232C标准的信号传输的最大电缆长度为30米,最高数传速率为20kbit/s。(2)

电平转换由于TTL电平和RS-232C电平互不兼容,所以两者对接时,必须进行电平转换。常用的转换芯片有MAX232C、MC1488、MC1489。各厂商生产的此类芯片虽然不同,但原理相似。7.4双机串行通信的硬件连接72第七十二页,共83页。3、RS-422A接口RS-232C虽然应用很广泛,但其推出较早,在现代网络通讯中已暴露出明显的缺点:传输速率低、通讯距离短、接口处信号容易产生串扰等。因此,EIA又制定了RS-422A标准。RS-232C即是一种电气标准,又是一种物理接口功能标准,而RS-422A仅仅是一种电气标准。PC机不带RS-422A接口,因此要使用RS-232/RS-422A转换器,把RS-232C接口转换成RS-422A接口。RS-422A能在长距离、高速率下传输数据。它的最大传输率为10Mbit/s,在此速率下,电缆允许长度为12m,如果采用较低传输速率时,最大传输距离可达1200m。7.4双机串行通信的硬件连接73第七十三页,共83页。TTL电平与RS-422A电平转换电路如图所示。TTL电平转换成RS-422A电平的常用芯片:SN75174、MC3487等。RS-422A电平转换成TTL电平的常用芯片:SN75175、MC3486等。SN75174、SN75175是分别是具有三态输出的单片四差分驱动器和接收器,采用+5V电源供电。7.4双机串行通信的硬件连接74第七十四页,共83页。三、RS-485接口RS-422A双机通讯需四芯传输线,这对长距离通讯是很不经济的,故在工业现场,通常采用双绞线传输的RS-485串行

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论