《第4章内串行通信2.ppt》由会员分享,可在线阅读,更多相关《第4章内串行通信2.ppt(42页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第5章章输入输入/输出、输出、中断、中断、定时与串行通信定时与串行通信本节课学习内容本节课学习内容一、对一、对8051串行口的工作方式进行回顾串行口的工作方式进行回顾二、对二、对8051串行口各工作方式传输波特率进串行口各工作方式传输波特率进行总结。行总结。三、对单片机串行总线多机通信方法进行学三、对单片机串行总线多机通信方法进行学习。习。四、举例对串行口的各工作方式进行的使用四、举例对串行口的各工作方式进行的使用进行巩固。进行巩固。第第5章章输入输入/输出、输出、中断、中断、定时与串行通信定时与串行通信串行口控制寄存器串行口控制寄存器SCONSM0SM1SM2RENTB8RB8TIRID7
2、D6D5D4D3D2D1D0串行口数据缓冲器串行口数据缓冲器SBUF发送缓冲器发送缓冲器接收缓冲器接收缓冲器SMODGF1GF0PDIDLD7D6D5D4D3D2D1D0特殊功能寄存器特殊功能寄存器PCON1、串行口通信常用特殊功能寄存器、串行口通信常用特殊功能寄存器一、对串行口的工作方式回顾一、对串行口的工作方式回顾第第5章章输入输入/输出、输出、中断、中断、定时与串行通信定时与串行通信2、串行口的四种工作方式、串行口的四种工作方式方式方式0:同步移位寄存器方式:同步移位寄存器方式。RXD端输出或输入串行数据端输出或输入串行数据TXD端输出同步脉冲端输出同步脉冲方式方式1:波特率可变的:波特
3、率可变的8位异步通信方式。位异步通信方式。方式方式2:9位异步通信方式。位异步通信方式。方式方式3:波特率可变的:波特率可变的9位异步通信方式。位异步通信方式。第第5章章输入输入/输出、输出、中断、中断、定时与串行通信定时与串行通信二、串行通信的波特率二、串行通信的波特率串行通信的串行通信的4种工作方式对应着种工作方式对应着3种波特率。种波特率。(1)对对于于方方式式0,波波特特率率是是固固定定的的,为为单单片片机机时时钟的十二分之一。钟的十二分之一。即:方式即:方式0波特率波特率=振荡器频率振荡器频率/12(2)对对于于方方式式2,波波特特率率是是由由振振荡荡器器的的频频率率和和SMOD(P
4、CON.7)所确定:所确定:方式方式2波特率波特率=2SMOD振荡器频率振荡器频率/64第第5章章输入输入/输出、输出、中断、中断、定时与串行通信定时与串行通信(3)对对于于方方式式1和和方方式式3,波波特特率率都都由由定定时时器器T1的溢出率和的溢出率和SMOD来决定来决定,对应于以下公式:对应于以下公式:方式方式1和方式和方式3波特率波特率=2SMOD(定时器定时器T1的溢出率的溢出率)/32第第5章章输入输入/输出、输出、中断、中断、定时与串行通信定时与串行通信而对于定时器而对于定时器T1的溢出率,在计算的时候应注意:的溢出率,在计算的时候应注意:v定定时时器器T1作作为为波波特特率率发
5、发生生器器使使用用时时,应应禁禁止止T1中中断。断。vT1的工作方式一般选择方式的工作方式一般选择方式2。vT1的的计计数数脉脉冲冲可可以以为为8051的的振振荡荡脉脉冲冲的的12分分频频(C/T=0),也也可可以以选选择择从从外外部部T1(P3.5)上上输输入入作为作为T1的计数信号(的计数信号(C/T=1)。)。此此外外,定定时时计计数数器器T1在在作作为为串串行行口口的的波波特特率率发发生生器器使使用用时时,其其输输出出的的溢溢出出脉脉冲冲分分频频信信号号是是由由内内部部硬件自动与串行口的时钟脉冲输入端连接的。硬件自动与串行口的时钟脉冲输入端连接的。第第5章章输入输入/输出、输出、中断、
6、中断、定时与串行通信定时与串行通信 定时器T1的溢出率=振荡器频率/(12(2n-X)(计算过程:定时器T1溢出需要的时间为 T=(2n-X)12/振荡器频率)对于定时器方式2,取n=8;方式1和方式3的波特率=2SMOD 振荡器频率/32 12(28-(TH1)第第5章章输入输入/输出、输出、中断、中断、定时与串行通信定时与串行通信 表56 常用波特率和定时器T1初值 最大值最大值最大值最大值第第5章章输入输入/输出、输出、中断、中断、定时与串行通信定时与串行通信三三、多机通信、多机通信多台单片机之间的相互配合是按照实际需要将它们组成一定形式的网络,使之相互通信,以完成各种功能。目前,最常用
7、的多机通信网络形式有如下4种:总线型星型环形树型第第5章章输入输入/输出、输出、中断、中断、定时与串行通信定时与串行通信计算机数据通信网络性能比较指标指标可靠性可靠性接口复接口复杂程度杂程度组成灵组成灵活性活性通信效通信效率率价格价格控制控制星型星型差简单好高高较复杂总线型总线型较好简单很好中等较低简单环形环形中等较简单较好中等较低简单树型树型好复杂差最高很高很复杂类型从表中可见,总线型网络结构接口简单,使用灵活,因此许多场合都使用这种网络结构。第第5章章输入输入/输出、输出、中断、中断、定时与串行通信定时与串行通信串行总线型主从式全双工多机通信系统 第第5章章输入输入/输出、输出、中断、中断
8、、定时与串行通信定时与串行通信SM2SM2:多机通信控制位。多机通信控制位。在方式在方式2 2和方式和方式3 3中中,如如SM2=1,SM2=1,则接收到的第则接收到的第9 9位数据位数据(RB8)RB8)为为0 0时不启动接收中断标志时不启动接收中断标志RIRI(即即RI=0),RI=0),并且将接收到的前并且将接收到的前8 8位数据丢弃位数据丢弃;RB8RB8为为1 1时时,才将接收到的前才将接收到的前8 8位数据送入位数据送入SBUF,SBUF,并置位并置位RIRI产生中断请求。产生中断请求。当当SM2=0SM2=0时时,则不论第则不论第9 9位数据为位数据为0 0或或1,1,都都将前将
9、前8 8位数据装入位数据装入SBUFSBUF中中,并产生中断请求并产生中断请求。在方式在方式0 0时时,SM2SM2必须为必须为0 0。第第5章章输入输入/输出、输出、中断、中断、定时与串行通信定时与串行通信多机多机通信的步骤举例通信的步骤举例1、所有从机的、所有从机的SM2位置位置1,以便能接收主机发来的地址;,以便能接收主机发来的地址;2、主机令第、主机令第9位数据为位数据为1,发送出需要与之通信的从机地,发送出需要与之通信的从机地址到各个从机;址到各个从机;3、所有从机都收到地址,向本机的、所有从机都收到地址,向本机的CPU申请中断,进入申请中断,进入服务程序后比较和确认地址;服务程序后
10、比较和确认地址;4、被寻址的从机,用指令清除、被寻址的从机,用指令清除SM2,准备接收数据,并准备接收数据,并向主机发回地址以便核对,这次不参与通信的其余从向主机发回地址以便核对,这次不参与通信的其余从机退出中断服务程序。机退出中断服务程序。5、主机发送控制信号和数据给已被寻址的从机。、主机发送控制信号和数据给已被寻址的从机。6、从机、从机SM2置置1,准备进行下一组通信。,准备进行下一组通信。第第5章章输入输入/输出、输出、中断、中断、定时与串行通信定时与串行通信串行口编程需要注意以下几点:串行口编程需要注意以下几点:1、收发双方字符格式必须相同。、收发双方字符格式必须相同。2、波特率必须一
11、致。、波特率必须一致。3、所用电平必须一致。、所用电平必须一致。4、对通信双方所用各种字符的含义必须统一。、对通信双方所用各种字符的含义必须统一。在此基础上,编程者可以通过设置特殊功能寄存器,在此基础上,编程者可以通过设置特殊功能寄存器,来对串行口进行初始化。来对串行口进行初始化。使用到的特殊功能寄存器:使用到的特殊功能寄存器:SCON、PCON、TMOD、TCON、TH1、TL1、IE、IP、SBUF四、串行口应用程序举例四、串行口应用程序举例第第5章章输入输入/输出、输出、中断、中断、定时与串行通信定时与串行通信SM0SM1SM2RENTB8RB8TIRISCONSMODGF1GF0PDI
12、DLPCONGATEC/TM1M0GATEC/TM1M0TMODTF1TR1TF0TR0IE1IT1IE0IT0TCONEAESET1EX1ET0EX0IEPSPT1PX1PT0PX0IP除此之外,还要用到除此之外,还要用到TH1、TL1、SBUF特殊功能寄存器。特殊功能寄存器。串行通信编程时经常用到的特殊功能寄存器串行通信编程时经常用到的特殊功能寄存器第第5章章输入输入/输出、输出、中断、中断、定时与串行通信定时与串行通信串行口的编程串行口的编程串串行行口口需需初初始始化化后后,才才能能完完成成数数据据的的输输入入、输输出出。其其初初始始化过程如下化过程如下:(1)按按选选定定串串行行口口的
13、的操操作作模模式式设设定定SCON的的SM0、SM1两两位二进制编码,如有接收,则置位二进制编码,如有接收,则置REN为为“1”。(2)对对于于操操作作模模式式2或或3,应应根根据据需需要要在在TB8中中写写入入待待发发送的第送的第9位数据。位数据。(3)若若选选定定的的操操作作模模式式不不是是模模式式0,还还需需设设定定接接收收/发发送送的的波特率。波特率。设定设定SMOD的状态的状态,以控制波特率是否加倍。以控制波特率是否加倍。若选定操作模式若选定操作模式1或或3,则应对定时器则应对定时器T1进行初始化以设定进行初始化以设定其溢出率,并关其溢出率,并关T1中断。中断。第第5章章输入输入/输
14、出、输出、中断、中断、定时与串行通信定时与串行通信例例1:用:用8051串行口外接串行口外接CD4094扩展扩展8位并行口,位并行口,8位并位并行口的各位都接发光二极管,要求发光二极管从左到行口的各位都接发光二极管,要求发光二极管从左到右以一定延迟轮流显示,并不断循环。设发光二极管右以一定延迟轮流显示,并不断循环。设发光二极管为共阴极接法,如图:为共阴极接法,如图:RXD8051TXDP1.0CD4094DATACLKSTB当当STB=1时,打开输出控制门,实现并行输出。时,打开输出控制门,实现并行输出。第第5章章输入输入/输出、输出、中断、中断、定时与串行通信定时与串行通信 第第5章章输入输
15、入/输出、输出、中断、中断、定时与串行通信定时与串行通信解:设数据串行发送采用中断方式,显示的延迟依靠调解:设数据串行发送采用中断方式,显示的延迟依靠调用延迟程序用延迟程序DELAY来实现。来实现。参考程序如下:参考程序如下:ORG0023H;串行中断入口串行中断入口AJMPSER;转入串行中断服务程序转入串行中断服务程序ORG2000H;主程序起始地址主程序起始地址MOVSCON,#00H;串串行口方式行口方式0初始化初始化MOVIE,#90H;打开串行口中断允许开关打开串行口中断允许开关IEMOVA,#80H;最左一位发光二极管先亮最左一位发光二极管先亮CLRP1.0;关闭并行输出关闭并行
16、输出MOVSBUF,A;开始串行输出开始串行输出第第5章章输入输入/输出、输出、中断、中断、定时与串行通信定时与串行通信LOOP:SJMP$;等待中断等待中断SER:SETBP1.0;启动并行输出启动并行输出ACALLDELAY;显示延时一段时间显示延时一段时间CLRTI;清发送中断标志清发送中断标志RRA;准备右边一位显示准备右边一位显示CLRP1.0;关闭并行输出关闭并行输出MOVSBUF,A;再一次串行输出再一次串行输出RETI;中断返回中断返回第第5章章输入输入/输出、输出、中断、中断、定时与串行通信定时与串行通信例例2:8051串行口按双工方式串行口按双工方式收发收发ASC2字符,最
17、高一位字符,最高一位用来作为奇偶校验位,采用奇校验方式。要求传送的用来作为奇偶校验位,采用奇校验方式。要求传送的波特率为波特率为1200波特。(单片机的振荡频率为波特。(单片机的振荡频率为6MHz)编编写有关的通信程序。写有关的通信程序。解:确定工作方式:采用方式解:确定工作方式:采用方式1。定时器定时器1采用工作方式采用工作方式2,单片机时钟频率为,单片机时钟频率为6MHz,查表可知,初值为查表可知,初值为F4H。发送数据首地址:发送数据首地址:20H接收数据首地址:接收数据首地址:40H采用中断方式采用中断方式第第5章章输入输入/输出、输出、中断、中断、定时与串行通信定时与串行通信MAIN
18、:MOVTMOD,#20H;定时器定时器1设置为方式设置为方式2MOVTL1,#0F4H;定时器初值定时器初值MOVTH1,#0F4H;8位重装值位重装值MOVIE,#90H;打开中断开关打开中断开关SETBTR1;启动定时器启动定时器1MOVSCON,#50H;串行口方式串行口方式1,REN=1MOVR0,#20H;发送数据区首址发送数据区首址MOVR1,#40H;接收数据区首址接收数据区首址ACALLSOUT;先输出一个字符先输出一个字符LOOP:SJMP$;等待中断等待中断第第5章章输入输入/输出、输出、中断、中断、定时与串行通信定时与串行通信中断服务子程序:中断服务子程序:ORG002
19、3H;串行口中断入口串行口中断入口AJMPSBR1;转至中断服务程序转至中断服务程序SBR1:JNBRI,SEND;TI=1,为发送中断为发送中断ACALLSIN;RI=1,为接收中断为接收中断SJMPNEXT;转至统一的出口转至统一的出口SEDN:ACALLSOUT;调用发送子程序调用发送子程序NEXT:RETI;中断返回中断返回第第5章章输入输入/输出、输出、中断、中断、定时与串行通信定时与串行通信发送子程序:发送子程序:SOUT:MOVA,R0;取发送数据到取发送数据到AMOVC,P;奇偶标志赋予奇偶标志赋予CCPLC;奇校验奇校验MOVACC.7,C;加到加到ASC2码高位码高位INC
20、R0;修改发送数据指针修改发送数据指针CLRTI;清发送中断标志清发送中断标志MOVSBUF,A;发送发送ASC2码码END1RET;返回返回第第5章章输入输入/输出、输出、中断、中断、定时与串行通信定时与串行通信接收子程序:接收子程序:SIN:MOVA,SBUF;读出接收缓冲区内容读出接收缓冲区内容MOVC,P;取出校验位取出校验位CPLC;奇校验奇校验ANLA,#7FH;删去校验位删去校验位MOVR1,A;读入接收缓冲区读入接收缓冲区INCR1;修改接收数据指针修改接收数据指针CLRRI;清接收中断标志清接收中断标志RET;返回返回第第5章章输入输入/输出、输出、中断、中断、定时与串行通信
21、定时与串行通信例例3利用串行口进行双机通信。利用串行口进行双机通信。把甲机中把甲机中40H开始的开始的10H个数据单元中的个数据单元中的数据用串行口传输给乙机,并放在乙机数据用串行口传输给乙机,并放在乙机60H开始的单元中,发送和接收均采用方式开始的单元中,发送和接收均采用方式2,第第9位数据为奇偶校验位,发送数据速率为位数据为奇偶校验位,发送数据速率为时钟频率的时钟频率的1/64,发送和接收均采用查询方,发送和接收均采用查询方式式。第第5章章输入输入/输出、输出、中断、中断、定时与串行通信定时与串行通信甲机发送(采用查询方式):MOV SCON,80H ;设置工作方式2 MOV PCON,0
22、0 ;置SMOD=0,波特率不加倍 MOV R0,40H ;数据区地址指针 MOV R2,10H ;数据长度LOOP:MOV A,R0 ;取发送数据 MOV C,P ;奇偶位送TB8 MOV TB8,C MOV SBUF,A ;送串口并开始发送数据 第第5章章输入输入/输出、输出、中断、中断、定时与串行通信定时与串行通信WAIT:JBC TI,NEXT ;检测是否发送结束并清TI SJMP WAITNEXT:INC R0 ;修改发送数据地址指针 DJNZ R2,LOOP RET乙机接收(查询方式):MOV SCON,90H;模作模式2,并允许接收MOV PCON,00H;置SMOD=0MOV
23、R0,60H ;置数据区地址指针MOV R2,10H ;等待接收数据长度 第第5章章输入输入/输出、输出、中断、中断、定时与串行通信定时与串行通信LOOP:JBC RI,READ ;等待接收数据并清RI SJMP LOOPREAD:MOV A,SBUF ;读一帧数据 MOV C,P JNC LP0 ;C不为 1 转LP0 JNB RB8,ERR ;RB8=0,即 RB8不为 P转ERR AJMP LP1LP0:JB RB8,ERR ;RB8=1,即 RB8不为 P转ERRLP1:MOV R0,A ;RB8=P,接收一帧数据 INC R0 DJNZ R2,LOOP RETERR:;出错处理程序
24、第第5章章输入输入/输出、输出、中断、中断、定时与串行通信定时与串行通信例例4:设设有有甲甲、乙乙两两台台单单片片机机,以以工工作作方方式式2、全全双双工工串串行行通通信信、每每帧帧为为11位位、可可程程控控的的第第9位位数数据据位位用用于于奇奇偶偶校校验验的的补补偶偶位位。编编出出能能实实现现如如下下功功能能的的程程序序:甲甲机机:每每发发送送1帧帧信信息息,乙乙机机对对接接收收的的数数据据进进行行奇奇偶偶校校验验,若若补补偶偶正正确确,则则乙乙机机向向甲甲机机发发出出“数数据据发发送送正正确确”的的信信息息(例例中中以以00H作作为为回回答答信信号号),甲甲机机接接收收到到该该回回答答信信
25、号号后后再再发发送送下下1字字节节;若若奇奇偶偶校校验验错错,则则乙乙机机发发出出“数数据据发发送送不不正正确确”的的信信息息(例例中中以以AAH作作为为回回答答信信号号)给给甲甲机机,要要求求甲甲机机再再次次发发送送原原数数据据,直直至至发发送送正正确确。甲甲机机发发送送128个字节后就个字节后就停止发送,采用中断的方法。停止发送,采用中断的方法。第第5章章输入输入/输出、输出、中断、中断、定时与串行通信定时与串行通信乙乙机机:接接收收甲甲机机发发送送来来的的数数据据并并进进行行奇奇偶偶校校验验,与与此此同同时时发发出出相相应应的的回回答答信信息息(即即00H或或AAH),直直到到接接收收完
26、完128个字节为止。个字节为止。解解:能能实实现现上上述述通通信信要要求求的的甲甲、乙乙机机的的流流程程图图如如图图525所示。所示。第第5章章输入输入/输出、输出、中断、中断、定时与串行通信定时与串行通信 图525双工串行口应答式通信流程图 (a)甲机发送流程图;(b)乙机发送流程图 第第5章章输入输入/输出、输出、中断、中断、定时与串行通信定时与串行通信第第5章章输入输入/输出、输出、中断、中断、定时与串行通信定时与串行通信相应的程序如下:相应的程序如下:甲机甲机主程序:主程序:ORG0000HLJMPMAIN;转至主程序入口处转至主程序入口处ORG0023H;串行中断入口串行中断入口LJ
27、MPINTSE1;转至中断服务程序转至中断服务程序ORG2000H第第5章章输入输入/输出、输出、中断、中断、定时与串行通信定时与串行通信MAIN:MOVSCON,90H;置工作方式置工作方式2并允许接收并允许接收MOVPCON,80H;波特率加倍波特率加倍MOVDPTR,ADDR1;置数据块指针置数据块指针MOVR0,80H;设置发送字节数初值设置发送字节数初值SETBEA;CPU开中断开中断SETBES;允许串行口中断允许串行口中断MOVXA,DPTR;取第取第1个发送数据个发送数据MOVC,P;奇偶标志位送奇偶标志位送CMOVTB8,C;奇偶标志位送奇偶标志位送TB8MOVSBUF,A;
28、发送数据发送数据SJMP$;等待中断等待中断第第5章章输入输入/输出、输出、中断、中断、定时与串行通信定时与串行通信中断服务程序:中断服务程序:INTSE1:JBRI,LOOP1;检测是否接收口中断,是则转检测是否接收口中断,是则转CLRTI;是发送中断是发送中断,则先清除该标志则先清除该标志SJMPENDT1;转至转至ENDT1处处LOOP1:CLRRI;是接收中断是接收中断,则先清除该标志则先清除该标志MOVA,SBUF;取乙机的应答信息取乙机的应答信息CJNEA,00H,LOOP2;发送不正确转发送不正确转DJNZR0,LOOP3;128个数据发送完否个数据发送完否?未完转中断返回未完转
29、中断返回CLRES;已发送完毕已发送完毕,则禁止串行口中断则禁止串行口中断LOOP3:INCDPTR;修改地址指针修改地址指针MOVXA,DPTR;取下取下1个发送数据个发送数据第第5章章输入输入/输出、输出、中断、中断、定时与串行通信定时与串行通信MOVC,PMOVTB8,C;将奇偶校验位送将奇偶校验位送TB8MOVSBUF,A;启动串行口启动串行口,发送新的数据发送新的数据ENDT1:RETI;中断返回中断返回LOOP2:MOVXA,DPTR;准备重发准备重发1次数据次数据MOVC,PMOVTB8,C;奇偶校验位送奇偶校验位送TB8MOVSBUF,A;启动串行口启动串行口,重发重发1次数据
30、次数据SJMPENDT1;转至中断返回处转至中断返回处第第5章章输入输入/输出、输出、中断、中断、定时与串行通信定时与串行通信乙机主程序:ORG 0000H LJMP MAINR ORG 0023H LJMP INTSE2 ORG 2000H第第5章章输入输入/输出、输出、中断、中断、定时与串行通信定时与串行通信MAINR:MOV PCON,80H ;波特率加倍 MOV SCON,90H ;工作方式2,允许接收 MOV DPTR,ADDR2 ;置数据指针 MOV R0,80H ;传送128个字节 SETB EA ;CPU开中断 SETB ES ;允许串行口中断 SJMP$;等待中断第第5章章输
31、入输入/输出、输出、中断、中断、定时与串行通信定时与串行通信中断服务程序:INTSE2:JNB RI,LOOP6 ;不是接收中断则转 CLR RI ;是,则清接收中断标志 MOV A,SBUF ;接收数据 MOV C,P ;判奇偶标志 JC LOOP4 ;为奇数时转 ORL C,RB8 ;为偶数时判RB8 JC LOOP5 ;RB8为1时(出错)转 第第5章章输入输入/输出、输出、中断、中断、定时与串行通信定时与串行通信LOOP3:MOVX DPTR,A ;正确时则存入接收的数据 MOV A,#00H MOV SBUF,A ;发送应答信息00H INC DPTR ;修改地址指针 DJNZ R0,ENDT2 ;未完,转返回 CLR ES ;已完,则关串行口中断ENDT2:RETI ;中断返回LOOP4:ANL C,RB8 ;为奇数时判RB8 JC LOOP3 ;RB8为1时(正确)转第第5章章输入输入/输出、输出、中断、中断、定时与串行通信定时与串行通信LOOP5:MOV A,AAH ;出错,则发应答信息AAH MOV SBUF,A SJMP ENDT2 ;转至中断返回处LOOP6:CLR TI ;是发送中断,则清TI标志 SJMP ENDT2 ;转至中断返回处