资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第7章,MCS-51,的串行口,全双工,的,异步,通信串行口,4种工作方式,波特率由片内定时器/计数器控制。每发送或接收一帧数据,均可发出中断请求。除用于串行通信,,还可用来扩展并行,I/O,口。,7.1 串行口的结构,串行口内部结构如下图,,两个物理上独立的接收和发送缓冲器,,可同时收、发数据。,两个缓冲器共用一个特殊功能寄存器字节地址:,SBUF(99H)。,控制寄存器共两个:,特殊功能寄存器,SCON,和,PCON,。,7.1.1 串行口控制寄存器,SCON,字节地址98,H,,可位寻址,格式如图所示,。,(1),SM0、SM1,串行口4种工作方式的选择位,表 串行口的4种工作方式,SM0 SM1,方式,功 能 说 明,0 0,0,同步移位寄存器方式(用于扩展,I/O,口),0 1,1,8位异步收发,波特率可变(由定时器控制),1 0,2,9位异步收发,波特率为,fosc/64,或,fosc/32,1 1,3,9,位异步收发,波特率可变(由定时器控制),(2),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,中,并置“1”,RI,,产生中断请求。,在,方式1,时,如果,SM2=1,,则只有收到停止位时才会激活,RI。,在,方式0,时,,SM2,必须为0。,(3),REN,允许串行接收位,由软件置“1”或清“0”。,REN=1,允许串行口接收数据。,REN=0,禁止串行口接收数据。,(4),TB8,发送的第9位数据,方式2和3时,,TB8,是要发送的第9位数据,可作为,奇偶校验位,使用,多机通信中表示主机发送的是,地址帧,或,数据帧,的标志。,=1,为地址帧,=0,为数据帧,(5),RB8,接收到的第9位数据,方式2和3时,,RB8,存放接收到的第9位数据。在方式1,如果,SM2=0,RB8,是接收到的停止位。在方式0,不使用,RB8。,(6)TI,发送中断标志位,方式0时,,串行发送第8位数据结束时由硬件置“1”,其它工作方式,,串行口发送停止位的开始时置“1”。,TI=1,表示一帧数据发送结束,可供软件查询,也可申请中断。,CPU,响应中断后,向,SBUF,写入要发送的下一帧数据。,TI,必须由软件清0。,(,7),RI,接收中断标志位,方式0时,,接收完第8位数据时,,RI,由硬件置1。,其它工作方式,,串行口接收到停止位时,该位置“1”。,RI=1,,表示一帧数据接收完毕,并申请中断,CPU,从接收,SBUF,取走数据。该位状态也可,软件查询。,RI,必须由软件清“0”。,7.1.2,特殊功能寄存器,PCON,字节地址为87,H,,没有位寻址功能,。,SMOD:,波特率选择位,。,例如:方式1的波特率的计算公式为:,方式1波特率,=(2,SMOD,/32),定时器,T1,的溢出率,也称,SMOD,位为,波特率倍增位,。,7.2 串行口的4种工作方式,7.2.1 方式0,同步移位寄存器输入,/,输出方式,,常用于外接移位寄存器,以扩展并行,I/O,口。,8位数据为一帧,不设起始位和停止位,先发送或接,收最低位。,波特率固定为,fosc/12,。,帧格式如下:,1方式0发送,当,CPU,执行一条将数据写入发送缓冲器,SBUF,的指令时,产生一个正脉冲,串行口即把,SBUF,中的,8位数据以,fosc/12,的固定波特率从,RXD,引脚串行输出,,低位在先,TXD,引脚输出同步移位脉冲,,发送完8位数据置“1”中断标志位,TI。,时序如图,7-5,所示。,2方式0接收,REN=1,,接收数据,,REN=0,,禁止接收,。,REN=1,,允许接收,。向串口的,SCON,写入控制字(置为方式0,并置“1”,REN,位,同时,RI=0),时,产生一个正脉冲,串行口即开始接收数据。,RXD,为数据输入端,,TXD,为移位脉冲信号输出端,,,接收器也以,fosc/12,的固定波特率,采样,RXD,引脚的数据信息,当收到8位数据时置“1”,RI。,表示一帧数据接收完,时序如下:,方式0下,,SCON,中的,TB8、RB8,位没有用到,发送或接收完8位数据由硬件置“1”,TI,或,RI,,,CPU,响应中断。,TI,或,RI,须由用户软件清“0”,可用如下指令:,CLR TI;TI,位清“0”,CLR RI;RI,位清“0”,方式0时,,SM2,位必须为0。,7.2.2 方式1,SM0、SM1,=01,方式1,一帧数据,为10位,1个起始位(0),8个数据位,1个停止位(1),先发送或接收最低位。帧格式如下,:,方式1波特率=(2,SMOD,/32),定时器,T1,的溢出率,SMOD,为,PCON,寄存器的最高位的值(0或1)。,1方式1发送,方式1输出时,数据由,TXD,(,P3.1,)脚输出,,一帧信息为10位,,1位起始位0,8位数据位(先低位)和1位停止位1。,当执行一条数据写发送缓冲器,SBUF,的指令,就启动发送。图中,TX,时钟的频率就是发送的波特率。,发送开始时,内部发送控制信号变为有效。将起始位向,TXD,输出,此后,每经过一个,TX,时钟周期,便产生一个移位脉冲,并由,TXD,输出一个数据位。8位数据位全部发送完毕后,置,“,1,”,TI,。方式1发送数据的时序,如图,7-8,所示。,2方式1接收,数据从,RXD(P3.0),脚输入。当检测到起始位的负跳变时,开始接收数据。,定时控制信号有两种,:,接收移位时钟,(,RX,时钟,频率和波特率相同)和,位检测器采样脉冲,(频率是,RX,时钟的16倍,1位数据期间,有16个采样脉冲),当采样到,RXD,端从1到0的跳变时就启动检测器,,接收的值是3次连续采样,(第7、8、9个脉冲时采样),取其中两次相同的值,进行,表决,以,确认是否是真正的起始位,(负跳变)的开始。,当一帧数据接收完,须同时满足两个条件,接收才真正有效。,RI=0,,,即上一帧数据接收完成时,,RI=1,发出的中断请求已被响应,,SBUF,中的数据已被取走,说明“接收,SBUF”,已空。,SM2=0,或,收到的停止位=1,(方式1时,停止位已进入,RB8),,则收到的数据装入,SBUF,和,RB8(RB8,装入停止位),且置“1”中断标志,RI。,若这两个条件不同时满足,收到的数据将丢失。,7.2.3 方式2,9位,异步通信接口。,每帧数据均为11位,,1位起始位0,8位数据位(先低位),1位可程控的第9位数据和1位停止位。帧格式如下。,方式2波特率=(2,SMOD,/64),fosc,1方式2发送,发送前,先根据通信协议由软件,设置,TB8,(,例如,双机通信时的奇偶校验位或多机通信时的地址/数据的标志位)。将要发送的数据写入,SBUF,,启动发送过程。串行口能自动取出,TB8,,并装入第,9,位数据的位置再发送。发送完毕,置,“,1,”,TI,。方式2发送数据波形如图所示。,例7-1,方式2发送在双机通信中的应用。,下面的,发送,中断服务程序,是在双机通信中,以,TB8,作为奇偶校验位,处理方法为数据写入,SBUF,之前,先将数据的奇偶校验位写入,TB8(,设第2组工作寄存器区的,R0,作为发送数据区地址指针),以保证采用偶校验发送。,PIPTI:PUSH PSW ;,现场保护,PUSH A,SETB RS1 ;,选择第2组工作寄存器区,CLR RS0,CLR TI ;,发送中断标志清“0”,MOV A,R0;,取数据,MOV C,P ;,校验位送,TB8,采用偶校验,MOV TB8,C,MOV SBUF,A ;,启动发送,INC R0 ;,数据指针加1,POP A ;,恢复现场,POP PSW,RETI ;,中断返回,2方式2接收,SM0、SM1,=10,,且,REN=1,。数据由,RXD,端输入,接收11位信息。当位检测到,RXD,从1到0的负跳变,并判断起始位有效后,开始收一帧信息。在接收完第9位数据后,,需满足两个条件,,才能将接收到的数据送入,SBUF。,(1),RI=0,,意味着接收缓冲器为空。,(2),SM2=0,或,接收到的第9位数据位,RB8=1,时,。,当上述两个条件满足时,接收到的数据送入,SBUF,(,接收缓冲器),,第9位数据送入,RB8,,,并置“1”,RI。,若不满足两个条件,接收的信息将被丢弃。,方式2接收数据的时序如图所示。,例7-2,方式2接收在双机通信中的应用。,本例与上例相对应。若第9位数据为校验位,在接收程序中作,偶校验,处理,设1组寄存器区的,R0,为数据缓冲器指针。,PIRI:PUSH PSW,PUSH A,SETB RS0 ;,选择1组寄存器区,CLR RS1,CLR RI,MOV A,SBUF ;,收到数据送,A,MOV C,P,JNC L1,;,C,0,,跳,L1,JNB RB8,ERP;ERP,为出错处理程序,AJMP L2,L1:JB RB8,ERP,;,RB8,1,,跳,ERP,L2:MOV R0,A,INC R0,POP A,POP PSW,AJMP RTN,ERP:;,出错处理程序段,RTN,:,RETI,7.2.4,方式3,SM0、SM1,=11,,串口为方式3。,波特率可变的9位异步通信方式,,除波特率外,方式3和方式2相同。,方式3的时序见方式2。,方式3波特率=,(2,SMOD,/32),定时器,T1,的溢出率,7.3 多机通信,要,保证主机与所选择的从机实现可靠的通信,,必须保证串口具有识别功能。,SCON,中的,SM2,位,就是满足这一条件而设置的,多机通信控制位。,原理:,在串行口以方式2(或方式3)接收时,,若,SM2=1,,,表示置多机通信功能位,有两种可能:,(1),接收到的第9位数据(,RB8),为,1,时,,数据才装入,SBUF,,并,置中断标志,RI=1,向,CPU,发出中断请求;,(2)接收到的,第9位数据为,0,时,,则,不产生中断标志,,,信息将抛弃,。,若,SM2=0,,,则,接收的第9位数据不论是0还是1,,都产生,RI=1,中断标志,接收到的数据装入,SBUF,中。,应用上述特性,便可实现,MCS-51,的多机通信。,设多机系统中有一主机和3个8031从机,,如下图。,主机的,RXD,与从机的,TXD,相连,主机,TXD,与从机的,RXD,端相连。从机地址分别为00,H、01H,、,02H。,多机通信工作过程:,(1)从机串行口,编程为方式2或方式3接收,,且,置“1”,SM2,和,REN,位,,使从机只处于多机通信且接收地址帧的状态。,(2)主机,先将从机地址,(即准备接收数据的从机),发给各从机,主机发出的,地址信息,的第9位为1,,各从机的串行口接收到的第9位信息,RB8,为1,且由于,SM2=1,,则置“1”,RI,,各从机响应中断,执行中断程序。在中断服务子程序中,,判主机送来的地址是否和本机地址相符合,,,相符则该从机,清“0”,SM2,位,,准备接收主机的数据或命令;若,不符,则保持,SM2=1,状态,。,(3),接着主机发送数据帧,,此时各从机串行口接收到的,RB8=0,,只有地址相符合的从机系统(即已清“0”,SM2,位的从机),才能激活,RI,,,从而进入中断,在中断程序中接收主机的数据(或命令);,其它的从机因,SM2,1,,又,RB8=0,不激活中断标志,RI,,,不能进入中断,接收的数据丢失。,前图所示的多机系统是主从式,由主机控制多机之间的通信,,从机和从机的通信只能经主机才能实现,。,7.4 波特率的制定方法,方式0、方
展开阅读全文