1第八章MCS-51单片机串行通信1、串行通信的基础知识。2、串行通信接口的结构和工作方式,串行通信接口的应用和编程。本章主要内容《单片机原理及应用》8.2MCS-51的串行接口8.1串行通信的基础知识2掌握单片机串行口的结构和工作方式。学习目的了解串行通信的通信方式。掌握串行口初始化程序及串行通信程序的编写。38.1串行通信的基础知识并行数据传送串行数据传送原理各数据位同时传送数据位按位顺序进行优点传送速度快、效率高最少只需一根传输线即可完成:成本低缺点数据位数→传输线根数:成本高速度慢应用传送距离<30米,用于计算机内部几米~几千公里,用于计算机与外设之间一、串行通信基本原理并行数据传送同步串行异步(用于单片机中)41、同步通信以一串字符为一个传送单位,字符间不加标识位,在一串字符开始用同步字符标识,硬件要求高,通讯双方须严格同步。二、串行通信的基本方式2、异步通信以字符为传送单位用起始位和停止位标识每个字符的开始和结束字符,间隔不固定,只需字符传送时同步即可。异步通信字符帧格式D0D1D2D3D4D5D6D7停止位起始位52.波特率的规定1.字符格式异步通信的双方需要两项约定:例:要求每秒传送120个字符,每帧为10位。解:波特率=120×10=1200位/秒,每位0.83ms数据位传送输率=120×8=960位/秒一帧字符位数的规定:数据位,校验位,起始位和停止位。波特率:每秒钟传送二进制数的位数6三、串行接口功能(1)发送器:并串数据格式转换,添加标识位和校验位,一帧发送结束,设置结束标志,申请中断。(2)接收器:串并数据格式转换,检查错误,去掉标识位,保存有效数据,设置接收结束标志,申请中断。(3)控制器:接收编程命令和控制参数,设置工作方式:同步/异步、字符格式、波特率、校验方式、数据位与同步时钟比例等。73、全双工通讯:可同时进行发送和接收。(1条或2条数据线,双向)发送器接收器地线数据线发送接收器接收发送器地线数据线四、串行数据传送方向1、单工通讯:数据单向传送。(1条数据线,单向)2、半双工通讯:数据可分时双向传送。(1条数据线,双向)发送接收器接收发送器地线数据线返回81个全双工串行口,可同时发送和接收数据有4种工作方式波特率由软件设置,通过片内定时/计数器产生接收、发送均可工作在查询方式或中断方式8.2MCS-51单片机的串行接口一、串行口的功能结构9MCS-51串行口结构RITI门SBUF发送控制器波特率发生器A接收控制器或门串行口中断移位寄存器SBUFRXDTXD110二、串行接口控制寄存器1.数据缓冲器SBUF2.节电控制寄存器PCONSMOD(PCON.7):波特率加倍控制位。SMOD=1,波特率加倍;SMOD=0,则不加倍。发送SBUF和接收SBUF共用一个地址99H。1)发送SBUF存放待发送的8位数据,写入SBUF将同时启动发送。发送指令:2)接收SBUF存放已接收成功的8位数据,供CPU读取。读取串行口接收数据指令:MOVSBUF,AMOVA,SBUF11SM0、SM1:选择串行口4种工作方式。SM2:多机控制位,用于多机通讯。REN:允许接收控制位,REN=1,允许接收;REN=0,禁止接收。TB8:发送的第9位数据位,可用作校验位和地址/数据标识位。RB8:接收的第9位数据位或停止位。TI:发送中断标志,发送一帧结束,TI=1,必须软件清零;RI:接收中断标志,接收一帧结束,RI=1,必须软件清零。SM0SM1SM2RENTB8RB8TIRI3.串行口控制/状态寄存器SCON(98H)12三、串行口的工作方式(1)方式0(SM0SM1=00)--同步移位寄存器方式用于扩展并行I/O接口特点1.一帧8位,无起始位和停止位。2.RXD:数据输入/输出端。TXD:同步脉冲输出端,每个脉冲对应一个数据位。3.波特率B=fosc/12如:fosc=12MHz,B=1MHz,每位数据占1s。4.发送过程:写入SBUF,启动发送,MOVSBUF,A一帧发送结束,TI=1。接收过程:REN=1且RI=0,启动接收,MOVA,SBUF一帧接收完毕,RI=1。13(a)发送时序写入SBUFRXD输出TXDTID0D1D2D3D4D5D6D7接收时序(b)写REN=1RI=0RXD输入RI时序图:14(2)方式1(SM0SM1=01)--8位数据异步通信方式1.一帧10位:8位数据位,1个起始位(0),1个停止位(1)。2.RXD:接收数据端TXD:发送数据端。3.波特率:用T1作为波特率发生器,B=(2SMOD/32)×T1溢出率。4.发送:写入SBUF,同时启动发送,一帧发送结束,TI=1。接收:REN=1,允许接收。接收完一帧,若RI=0且停止位为1(或SM2=0),将接收数据装入SBUF,停止位装入RB8,并使RI=1;否则丢弃接收数据,不置位RI。特点15写入SBUFTXD数据输出(a)发送时序图TID0D1D2D3D4D5D6D7停止位起始位采样检测负跳变RXD输入数据(b)接收时序图D0D1D2D3D4D5D6D7停止位起始位RI时序图:当REN=1,CPU开始采样RXD引脚负跳变信号,若出现负跳变,才进入数据接收状态,先检测起始位,若第一位为0,继续接收其余位;否则,停止接收,重新采样负跳变。数据采样速率为波特率16倍频,在数据位中间,用第7、8、9个脉冲采样3次数据位,并3中取2保留采样值。16(3)方式2、3(SM0SM1=10OR11)9位数据异步通讯方式1.一帧为11位:9位数据位,1个起始位(0),1个停止位(1)。第9位数据位在TB8/RB8中,常用作校验位和多机通讯标识位。2.RXD:接收数据端TXD:发送数据端。3.波特率:方式2:B=(2SMOD/64)×fosc。方式3:B=(2SMOD/32)×T1溢出率。4.发送:先装入TB8,写入SBUF并启动发送,发送结束,TI=1接收:REN=1,允许接收。接收完一帧,若RI=0且第9位为1(或SM2=0),将接收数据装入接收SBUF,第9位装入RB8,使RI=1;否则丢弃接收数据,不置位RI。特点17(a)发送时序图写入SBUFTXD输出TIRXD输入(b)接收时序图RID0D1D2D3D4D5D6TB8停止位起始位D7D0D1D2D3D4D5D6RB8停止位起始位D7检测负跳变时序图:184种方式比较方式波特率传送位数发送端接收端用途01/12fosc(固定不变)8(数据)RXDRXD接移位寄存器,扩充并口12SMOD/32T1溢出率10(起始位、8位数据位、停止位)TXDRXD单机通讯22SMOD/64fosc11(第9位为1:地址;为0:数据)TXDRXD多机通讯32SMOD/32T1溢出率11位(同方式2)TXDRXD多机通讯19四、串行口的应用SIO:MOVSCON,#控制状态字;写方式字且TI=RI=0(MOVPCON,#80H);波特率加倍(MOVTMOD,#20H);T1作波特率发生器(MOVTH1,#X);选定波特率(MOVTL1,#X)(SETBTR1)(SETBEA);开串行口中断(SETBES)1、串行口初始化编程格式202、串行口在方式0的应用串行口通过接口74LS164实现:串行→并行的数据转换(显示器接口);通过接口74LS165实现:并行→串行的数据转换。80C51RXDTXD74LS164...波特率为fosc/12的同步移位脉冲+5V共阳极Q7Q1Q0D(0)74LS164...Q7Q1Q0D(1)74LS164...Q7Q1Q0D(7)(7)(0)(1).........数据低→高串入并出80C51RXDTXD74LS165...QHS/LCLK(2)数据低→高并入串出P1.0SIN74LS165...QHS/LCLK(1)用于接移位寄存器扩充并口。213、串行口在方式1、2、3的应用共同点:均用于异步通信不同点:1)字符帧格式方式1:10位异步通信,不可以用于多机通信方式2、3:11位异步通信,可以用于多机通信2)波特率方式1、3:有MCS-51内部定时计数器决定方式2:由主脉冲频率决定22串行口按全双工方式收发ASCII码字符,最高1位用来作奇偶校验位,采用奇校验方式,要求传送的波特率为1200波特。假设发送缓冲区首址为20H,接收缓冲区首址为40H,时钟频率fosc=6MHZ,试编写有关的通信程序。例9.123分析7位ASCII码加1位奇校验共8位数据,采用串行口工作方式1;奇偶校验位P值取反后放入ASCII码的最高位,即是要求的奇校验;24CPU只需把数据从接收缓冲器读出和把数据写入发送缓冲器,数据传送用中断方式进行;响应中断以后,通过检测是TI置位还是RI置位来决定CPU是进行发送操作还是接收操作;定时器T1采用工作方式2,避免重装定时初值。25取SMOD=0,T1的初值C:SMOD0688osc226102224333843841200fCFH波特率TH1=TL1=F3HTMOD=00100000B=20H定时器初始化26SM0、SM1=01(方式1);SM2=0;REN=1(允许接收数据);其余各位均取0则SCON=01010000B=50HSMOD=0,则PCON=00H串行口初始化27ORG0000HLJMPMAINORG0023HLJMPSBR1ORG0030HMAIN:MOVSP,#6FHMOVTMOD,#20HMOVTL1,#F3HMOVTH1,#F3HSETBTR1MOVSCON,#50HMOVR0,#20HMOVR1,#40HSETBEASETBESLCALLSOUTHALT:SJMPHALTSBR1:JNBRI,SENDLCALLSINSJMPNEXTSEND:LCALLSOUTNEXT:RETI28发送子程序SOUT:MOVA,@R0MOVC,PCPLCMOVACC.7,CINCR0MOVSBUF,ACLRTIRET接收子程序SIN:MOVA,SBUFMOVC,PCPLCANLA,#7FHMOV@R1,AINCR1CLRRIRET29全双工串行通信连接图设有如图甲、乙两台单片机,以工作方式2、全双工串行通信、每帧为11位、可程控的第9位数据位用于奇偶校验的补偶位。编出能实现如下功能的程序:例9.230甲机:每发送1帧信息,乙机对接收的数据进行奇偶校验,若正确,则向甲机发出“数据发送正确”的信息(00H),甲机接收到该回答信号后再发送下1字节;若奇偶校验错,则乙机发出“数据发送不正确”的信息(AAH)给甲机,要求甲机再次发送原数据,直至发送正确。甲机发送128个字节后就停止发送。31甲机中断服务程序INTSE1:JBRI,LOOP1CLRTISJMPENDT1LOOP1:CLRRIMOVA,SBUFCJNEA,#0,LOOP2;接收数据不为0,重发INCDPTRMOVXA,@DPTRMOVC,PMOVTB8,CMOVSUBF,ADJNZR0,ENDT1CLRESENDT1:RETILOOP2:MOVXA,@DPTRMOVC,PMOVTB8,CMOVSBUF,ASJMPENDT1甲机主程序ORG0000HLJMPMAINORG0023HLJMPINTSE1ORG0030HMAIN:MOVPCON,#80H;SMOD=1,波特率加倍MOVSCON,#90H;方式2,允许接收MOVDPTR,#ADDR1;待发数据首地址MOVR0,#80H;128个字节数据SETBEASETBES;开中断MOVXA,@DPTRMOVC,PMOVTB8,C;设置奇偶校验位MOVSUBF,AHALT1:SJMPHALT132乙机:接收甲机发送来的数据并进行奇偶校验,与此同时发出相应的回答信息(即00H或AAH),直到接收完128个字节为止。33乙机主程序ORG0000HLJMPMAINRORG0023HLJMPINTSE2ORG0100HMAINR:MOVPCON,#80HMOVSCON,#90HMOVDPTR,#