,单击此处编辑母版标题样式,*,*,*,单击此处编辑母版文本样式,本章分为三节,主要介绍:,7.1,串行口,的结构,7,.0,计算机,串行通信基础,7.2,串行口,的四种工作方式,第,7,章,MCS-51,的串行口,7.3,多机通信,7.4,波特率的制定方法,1,本章分为三节,主要介绍:7.1 串行口的结构7.0 计算,7.1,计算机串行通信基础,计算机通信,是指计算机与外部设备或计算机与计算机之间的信息交换,。有,并行通信,和,串行通信,两种方式。,MCS-51,单片机内部有一个功能强大的全双工的异步通信串行口。,所谓全双工就是双机之间串行接收、发送数据可同时进行。,所谓异步通信,就是收、发双方没有同步时钟来控制收、发双方的同步传送,而是靠双方各自的时钟来控制数据的异步传送。,2,7.1 计算机串行通信基础 计算机通信是指计算机与,异步通信的数据格式,:,异步通信的特点,:不要求收发双方时钟的严格一致,实现容易,设备开销较小,但每个字符要附加,2,3,位用于起止位,各帧之间还有间隔,因此传输效率不高。,3,异步通信的数据格式:异步通信的特点:不要求收发双方,2,、同步通信,同步通信时要建立发送方时钟对接收方时钟的直接控制,使双方达到完全同步。此时,传输数据的位之间的距离均为“位间隔”的整数倍,同时传送的字符间不留间隙,即,保持位同步,关系,,也保持字符同步,关系。发送方对接收方的同步可以通过两种方法实现。,4,2、同步通信4,要传送的串行数据在发方是以数据帧形式一帧一帧地发送,通过传输线由收方一帧一帧地接收。,MCS-51,的串行口有,4,种工作方式,,波特率可由软件设置片内的定时器计数器来控制。每当串行口,接收或发送,1B,完毕,均可发出,中断请求,。,MCS-51,的串行口除了可以用于串行数据通信之外,还可以非常方便地用来扩展并行,1/0,口。,5,要传送的串行数据在发方是以数据帧形式一帧一帧地发送,,7.1,串行口的结构,有两个物理上独立的接收、发送缓冲器,SBUF,,可同时发送、接收数据,,两个缓冲器共用一个特殊功能寄存器字节地址,(99H),。,6,7.1 串行口的结构6,字节地址98H,可位寻址,位地址为,98H9FH,。,7.1.1,串行口控制寄存器 SCON,(1)SM,0,、,SM,1:,4种工作方式的选择位,7,字节地址98H,可位寻址,位地址为98H9FH。7,(2)SM2:多机通信控制位,SM2位主要用于方式2或方式3。当串行口以方式2或方式3接收时,,如果SM2=1,则只有当接收到的第9位数据(RB8)为1时,才将接收到的前8位数据送,入,SBUF,并置1 RI,产生中断请求;当接收到的第9位数据(RB8)为0时,则将接收到的前8位数据,丢弃。,SM2=0,时,则不论第,9,位数据是,1,还是,0,,都将前,8,位数据送入,SBUF,中,并置,1RI,,产生中断请求。,方式1时,如果SM2=1,则只有收到有效的停止位时才会激活RI。,在方式0时,SM2必须为 0。,8,(2)SM2:多机通信控制位方式1时,如果SM2=1,则,(3)REN,:允许串行接收位,由软件置,1,或清,0,。,REN=1,允许串行口接收数据。,REN=0,禁止串行口接收数据。,(4)TB8,:发送的第,9,位数据,在方式,2,和,3,时,,TB8,是要发送的第,9,位数据。其值由软件置,1,或清,0,。,在双机通信时,,TB8,一般作为奇偶校验位使用;在多机通信中用来表示主机发送的是地址帧还是数据帧,,TB8=1,为地址帧,,TB8=0,为数据帧。,9,(3)REN:允许串行接收位(4)TB8:发送的第9位数据,(5)RB,8,:,接收到的第 9 位数据,工作在方式2和3时,RB,8,存放接收到的第9位数据。在方式1,如果SM,2=,0,RB,8,是接收到的停止位。在方式,0,,不使用RB,8,。,(6)TI,:发送中断标志位,在方式,0,时,串行发送第,8 位数据结束时由硬件置 1,在其它工作方式,串行口发送停止位的开始时置1,。,TI=1,表示一帧数据发送结束,可供软件查询,也可申请中断。CPU 响应中断后,在中断服务程序中向 SBUF 写,入要发送的下一帧数据。,TI 必须由软件清 0。,10,(5)RB8:接收到的第 9 位数据(6)TI:发送中断,(5),RI:,接收中断标志位,串行口工作在方式,0,时,接收完第,8,位数据时,,RI,由硬件置,1,。在其它工作方式中,串行口接收到停止位时,该位置,1,。,RI=1,,表示一帧数据接收完毕,并申请中断,要求,CPU,从接收,SBUF,取走数据。该位的状态也可供软件查询。,RI,必须由软件清,0,。,SCON,的所有位都可进行位操作清,0,或置,1,。,11,(5)RI:接收中断标志位11,SMOD:波特率选择位。,例如:方式 1 的波特率的计算公式为:,当,SMOD=1,时,要比,SOMD=0,时的波特率加倍,所以也称,SMOD,位为波特率倍增位。,7.1.2 特殊功能寄存器,P,CON,PCON,字节地址为,87H,,没有位寻址功能。,12,SMOD:波特率选择位。当SMOD=1时,要比SOM,7.2.1,方式,0,串行口的工作方式,0,为同步移位寄存器输入输出方式,常用于外接移位寄存器,以扩展并行,I/0,口。,这种方式不适用于两个,MCS-51,之间的串行通信。,以,8,位数据为,1,帧,不设起始位和停止位,先发送或接收最低位。波特率固定为,f,osc,/12,。,7.2,串行口的,4,种工作方式,13,7.2.1 方式 0 以8位数据为1帧,不设起始位和停,1.,方式,0,发送,当,CPU,执行,1,条将数据写入,SBUF,的指令时,产生,1,个正脉冲,串行口开始即把,SBUF,中的,8,位数据以,f,osc,12,的固定波特率从,RXD,引脚串行输出,低位在先,,TXD,引脚输出同步移位脉冲,发送完,8,位数据置,1,中断标志位,TI,。,14,1.方式0发送14,1.,方式,0,接收,接收时,,REN,为串行口允许接收控制位,,REN=0,,禁止接收;,REN=1,,允许接收。,当,CPU,向串行口的,SCON,寄存器写入控制字(方式,0,,并置,1REN,位,同时,RI=0,)时,产生,1,个正脉冲,串行口即开始接收数据。引脚,RXD,为数据输入端,,TXD,为移位脉冲信号输出端,接收器也以,f,osc,/12,的固定波特率采样,RXD,引脚的数据信息,当接收器接收到,8,位数据时置,1,中断标志,RI,,表示,1,帧数据接收完毕,可进行下一帧数据的接收。,15,1.方式0接收15,上面介绍了方式0的发送和接收。在方式0下,SCON 中的 TB8、RB8 位没有用到,发送或接收完 8 位数据由硬件置 ITI 或 RI 中断标志位,CPU 响应 TI 或 RI 中断。TI或 RI标志位必须由用户软件清 0,可采用如下指令:,CLR TI;TI 位清 0,CLR Rl;RI位清 0,清0 TI 或 RI。方式0时,SM2位(多机通信控制位)必须为 0。,16,上面介绍了方式0的发送和接收。在方式0下,SCON,7.2.2,方式,1,SM0,、,SM1,两位为,01,时,串行口以方式,1,工作。方式,1,真正用于数据的串行发送和接收。,TXD,引脚和,RXD,引脚分别用于发送和接收数据。方式,1,收发,1,帧的数据为,10,位,,1,个起始位,(0),8,个数据位,,1,个停止位,(1),,先发送或接收最低位。,方式,1,串行口为波特率可变的,8,位异步通信接口。方式,1,的波特率由下式确定:,17,7.2.2 方式1 方式1串行口为波特率可变的8位异步通,1.,方式,1,发送,方式,1,输出时,数据位由,TXD,端输出,发送,1,帧信息为,10,位,,1,位起始位,0,,,8,位数据位(先低位)和,1,位停止位,1,,当,CPU,执行,1,条数据写发送缓冲器,SBUF,的指令,就启动发送。,TX时钟的频率就是发送的波特率。发送开始时,内部发送控制信号 变为有效,将起始位向TXD输出,每经过1个TX时钟周期,便产生1个移位脉冲,并由TXD输出1个数据位。8位数据位全部发送完毕后,置1中断标志位TI,然后 失效。,18,1.方式1发送 TX时钟的频率就是发送的波特率。发送开,1.,方式,1,接收,以方式,1,接收,(REN=1,SM0,SM1=01),时,数据从,RXD(P3.0),引脚输入。当检测到负跳变的起始位时,则开始接收。接收时,定时控制信号有,2,种,一种是接收移位时钟(,RX,时钟),它的频率和传送的波特率相同。,19,1.方式1接收19,另一种是位检测器采样脉冲,频率是RX时钟的16倍,,以波特率的,16倍的速率采样RXD引脚状态,当采样到RXD端从1到0的跳变时就启动检测器,接收的值是3次连续采样(,第,7、8、9,次,)取其中2次相同的值,以确认是否是真正的起始位的开始,这样能较好地消除干扰引起的影响,以保证可靠无误的开始接收数据。,当确认起始位有效时,开始接收1帧信息。接收每一位数据时,也都进行3次连续采样(第 7、8、9 个脉冲时采样),接收的值是3次采样中至少2次相同的值,以保证接收到的数据位的准确性。,20,另一种是位检测器采样脉冲,频率是RX时钟的16倍,以,当一帧数据接收完毕以后,必须同时满足以下两个条件,这次接收才真正有效。,(1)RI=0,即上一帧数据接收完成时,RI=1发出的中断请求已被响应,SBUF中的数据已被取走,说明“接收SBUF”已空。,(2)SM2=0或收到的停止位=1(,方式,1时,停止位已进,入,RB8),则将接收到的数据装,入,SBUF和RB8(RB8装,入停止位,),,且置,1中断标志RI。,若这两个条件不同时满足,收到的数据不能装,入,SBUF,这意味着该帧数据将丢失。,21,当一帧数据接收完毕以后,必须同时满足以下两个条件,这,7.2.3,方式,2,SM0,、,SM1,两位为,10,时,串行口以方式,2,工作。方式,2,和方式,3,时,串行口被定义为,9,位异步通信接口。,每帧数据均为,11,位,,,1,位起始位,0,8,位数据位,(先低位),1,位可程控为,1,或,0,的第,9,位数据,和,1,位停止位,1,。,22,7.2.3 方式222,1.,方式,2,发送,发送前,先根据通信协议由软件设置,TB8,(例如,,双机通信时的奇偶校验位,或,多机通信时的地址数据的标志位,)。,然后将要发送的数据写入,SBUF,,即可启动发送过程。,串行口能自动把,TB8,取出,并装入到第,9,位数据位的位置,再逐一发送出去。,发送完毕,则把,TI,位置,1,。,23,1.方式 2 发送23,例,7-1,方式,2,发送在双机通信中的应用。,下面的发送中断服务程序,是在双机通信中,以,TB8,作为奇偶校验位,处理方法为数据写入,SBUF,之前,先将数据的奇偶校验位写入,TB8,(设第,2,组的工作寄存器区的,R0,作为发送数据区地址指针)。,本程序采用奇偶校验发送。,程序如下,:,24,例 7-1 方式 2 发送在双机通信中的应用。24,2.,方式,2,接收,当,SCON,的,SM0,、,SM1,两位为,10,,且,REN=1,时,允许串行口以方式,2,接收数据。,接收时,数据由,RXD,端输入,接收,11,位信息。当位检测逻辑采样到,RXD,引脚从,1,到,0,的负跳变,并判断起始位有效后,便开始接收,1,帧信息。,在接收完第,9,位数据后,需满足以下,2,个条件才能将接收到的数据送入,SBUF,接收缓冲器。,(1)RI=0,,意味着接收缓冲器为空,(2)SM2=0,或接收到的第,9,位数据位,RB8=1,当都满足时,接收到的数据送入,SBUF,,第,9,位数据送入,RB8,,并置,1 RI,。若不满足这,2,个条件,接收的信息将被丢弃。,25,2.方式2接收 在接收完第9位数据后,需满足以下2个条,