《串行通信及其接口7-1概述.ppt》由会员分享,可在线阅读,更多相关《串行通信及其接口7-1概述.ppt(21页珍藏版)》请在三一办公上搜索。
1、第七章 串行通信及其接口,7-1 概 述,7-2 MCS-51的串行口,7-3 串行口的控制,7.1 概 述,1、串行通信数据传送方向 1)单工方式数据只能向一个方向传输。2)半双工方式允许数据分时两个方向传输。,3)全双工方式数据可以同时往两个相反的方向传输。,2)同步方式:每个数据位占用的时间都相等,发送机每一个基本的时间单位发送一位,接收机与发送机的时钟必须严格同步。其格式如图。,2、异步和同步通信方式1)异步方式:用一个起始位表示字符的开始,停止位表示字符的结束。数据位则在起始位之后,停止位之前,这样构成一帧,其格式如图。,7.2MCS-51的串行口,1、数据缓冲器SBUF 发送SBU
2、F和接收SBUF共用一个地址99H。2、串行口控制寄存器SCON 寄存器的字节地址为98H,可位寻址。SCON格式如图。,SM0、SM1:控制串行口的工作方式SM2:多机控制位,用于多机通讯。REN:允许接收控制位,REN=1,允许接收;REN=0,禁止接收。TB8:发送的第9位数据位,可用作校验位和地址/数据标识位RB8:接收的第9位数据位或停止位TI:发送中断标志,发送一帧结束,TI=1,必须软件清零RI:接收中断标志,接收一帧结束,RI=1,必须软件清零,3特殊功能寄存器PCON其字节地址为87H,没有位寻址功能,其中与串行接口有关的只有D7位。SMOD(PCON.7):波特率倍增位。当
3、SMOD=1时,波特率加倍;当SMOD=0时,波特率不加倍。,3、串行口的工作方式,(1)方式0:同步移位寄存器方式。用于扩展并行I/O接口。1.一帧8位,无起始位和停止位。2.RXD:数据输入/输出端。TXD:同步脉冲输出端,每个脉冲对应一个数据位。3.波特率B=fosc/12如:fosc=12MHz,B=1MHz,每位数据占1s。4.发送过程:写入SBUF,启动发送,一帧发送结束,TI=1。接收过程:REN=1且RI=0,启动接收,一帧接收完毕,RI=1。,(2)方式1:8位数据异步通讯方式。,1.一帧10位:8位数据位,1个起始位(0),1个停止位(1)。2.RXD:接收数据端。TXD:
4、发送数据端。3.波特率:用T1作为波特率发生器,B=(2SMOD/32)T1溢出率。4.发送:写入SBUF,同时启动发送,一帧发送结束,TI=1。接收:REN=1,允许接收。接收完一帧,若RI=0且停止位为1(或SM2=0),将接收数据装入SBUF,停止位装入RB8,并使RI=1;否则丢弃接收数据,不置位RI。,当REN=1,CPU开始采样RXD引脚负跳变信号,若出现负跳变,才进入数据接收状态,先检测起始位,若第一位为0,继续接收其余位;否则,停止接收,重新采样负跳变。数据采样速率为波特率16倍频,在数据位中间,用第7、8、9个脉冲采样3次数据位,并3中取2保留采样值。,方式1串行发送接收时序
5、图,(3)方式2和方式3 9位数据异步通讯方式。,1.一帧为11位:9位数据位,1个起始位(0),1个停止位(1)。第9位数据位在TB8/RB8中,常用作校验位和多机通讯标识位。2.RXD:接收数据端,TXD:发送数据端。3.波特率:方式2:BR=(2SMOD/64)fosc。方式3:BR=(2SMOD/32)T1溢出率。4.发送:先装入TB8,写入SBUF并启动发送,发送结束,TI=1。接收:REN=1,允许接收。接收完一帧,若RI=0且第9位为1(或SM2=0),将接收数据装入接收SBUF,第9位装入RB8,使RI=1;否则丢弃接收数据,不置位RI。,(4)计算波特率,方式0为固定波特率:
6、BR=fosc/12方式2可选两种波特率:BR=(2SMOD/64)fosc 方式1、3为可变波特率,用T1作波特率发生器。BR=(2SMOD/32)T1溢出率串行口方式1、3,根据波特率选择T1工作方式,计算时间常数。T1选方式2:TH1=X=28-(2SMOD fosc)/(1232BR)T1选方式1用于低波特率,需考虑T1重装时间常数时间。,.3 串行口的控制,7-3-1 主从机间的通信 1 双机串行异步通信(1)单片机与单片机间的串行异步通信接口设计 两台8031直接通信如图:,两台8031采用RS232C总线通信如图:,例 如图8751-1的工作是检查接在P1口上的 SW开关,当检测
7、到开关的状态有变化时,就将变化后的状态读入,通过串行口将这个开关状态传送给8751-2。当8751-2接收到这个字节后就将它输出到P1口上显示,并且也将它接收到的数据回传给8751-1以通知8751-1已经接收到数据。当8751-1接收到这个响应数据后与刚才传出去的数据比较,若不相同再发送一次,以确保将正确的数据传递给8751-2。,通信约定:双方都采用串行通信方式,波特率为9600(晶振为11.059M),采用中断方式进行发送和接收数据。8751-1程序:BUFFEREQU30H;发送数据缓冲区ECHOFLAGBIT00H;当发送与接收到的数据相同时此标志置1ERRFLAGBIT01H;当发
8、送与接收到的数据不同时此标志置1ORG0000HSJMPSTARTORG0023H;串行口中断输入口 SJMPUART1ORG0030HSTART:MOV TMOD,#20H;定时器1设置为方式2,作波特率发生器 ANL PCON,#7FH MOV TH1,#0FDH;波特率为9600 MOV TL1,#0FDH SETB TR1 MOV SCON,#50H;设置为串行方式1允许接收 MOV IE,#90H;允许串行口中断 MOV BUFFER,#00H;缓冲区清零WAIT:MOVA,P1 CJNEA,BUFFER,SWCH,SJMPWAITSWCH:MOVBUFER,ATRAGIN:MOVS
9、BUF,A;发送数据CLRECHOFLAGCLRERRFLAGWAITEO:JBERRFLAG,TRAGINJNBECHOFLAG,WAITEOSJMPWAITUART1:PUSHPSWPUSHACCSETBRS0CLRRS1JBCRI,RCV1;判断是否为接收中断CLRTISJMPRETURNRCV1:MOVA,SBUFCJNEA,BUFFER,DATAERSETBECHOFLAGSJMPRETURNDATAER:SETBERRFLAGRETURN:POPACCPOPPSWRETIEND,()单片机与PC系列微机间的异步串行通信接口设计,8031单片机与PC系列微机是两种不同类型的机种,它们
10、的硬件结构不同,具有的电气特性也不一样,因此它们之间不能用导线直接连接,而要通过电平转换电路。8031单片机和PC机通过RS232C总线通信接口图如下:,7-3-2 多机通信接口,1多机通信原理 串行口控制寄存器SCON中的SM2为多机通信接口控制位。串行口以方式2或3接收时,若SM2为1,则仅当接收到的第9位数据RB8为1时,数据才装入SBUF,置位RI,请求CPU对数据进行处理;如果接收到的第9位数据RB8为0,则不产生中断标志RI,信息丢失,CPU不做任何处理。当SM2为0时,则接收到一个数据后,不管第9位数据RB8是0还是1,都将数据装入接收缓冲器SBUF并置位中断标志RI,请求CPU
11、处理。MCS-51的主从多机通信正是利用了这个特性。,2多机通信程序设计,MCS-51多机通信程序设计 以典型的PC机和MCS-51构成的主从式多机系统(PC机为主机MCS-51单片机为从机或前沿机)为例,如图:,设MCS-51晶振为6MHz设置波特率为2400,以方式3进行多机串行通信为例,编程方法如下:,MOV TMOD,#20H MOV TH1,#0F9H;设置波特率为2400 MOV TL1,#0F9H MOV SCON,#0F0H;设置串行口为方式3,;SM2=1,允许接收 ANLPCON,#7FHSETBTR1SETBES;允许串行口中断SETBEAWAIT:SJMPWAIT;听号,当接收到地址帧“呼号”且地址帧与本机地址相符时,要置SM2为0以便准备接收数据帧,同时需要将本机地址发回作为应答,建立与主机的联络。编程如下:SIO:CLRRI PUSH PSW PUSH ACC MOV A,SBUF;接收串行数据 XRLA,#ADDR;判断是否与本机地址 相符 JNZBACK;不相符则返回 CLRSM2;相符则SM2为0且发回本机地址 MOVSBUF,AWAIT:JNBTI,WAIT CLRTIBACK:POP ACC POP PSW RETI,