定时计数器和串行接口.ppt
第第7章章定时定时/计数器与串行通信计数器与串行通信第第7章章MCS-51单片机单片机定时定时/计数器和串行接口计数器和串行接口第第7章章定时定时/计数器与串行通信计数器与串行通信(1)了解定时了解定时/计数器的结构和工作原理。计数器的结构和工作原理。(2)熟悉定时熟悉定时/计数器的控制寄存器。计数器的控制寄存器。(3)掌握定时掌握定时/计数器的应用编程。计数器的应用编程。(4)了解串行通信接口的结构和工作原理。了解串行通信接口的结构和工作原理。(5)熟悉串行通信接口的控制寄存器。熟悉串行通信接口的控制寄存器。(6)掌握串行通信的应用编程。掌握串行通信的应用编程。本章教学要求本章教学要求 第第7章章定时定时/计数器与串行通信计数器与串行通信7.1定时定时/计数器计数器在实际的控制系统中常要求有外部实时时钟,以实现定时或延时控制;还要求有外部计数器,以实现对外界事件进行计数。比如,在单片机控制的电力拖动系统中,控制的对象为电动机,为了实现闭环控制,就需要定时地对转速进行采样。第第7章章定时定时/计数器与串行通信计数器与串行通信对于定时/计数器来说,不管是独立的定时器芯片还是单片机内的定时器,大都有以下特点:(1)定时/计数器有多种工作方式,可以是计数方式也可以是定时方式。(脉冲内部提供、外部提供)(2)定时/计数器的计数值是可变的,当然对计数的最大值有一定限制,这取决于计数器的位数。计数的最大值也就限制了定时的最大值。(3)可以按照规定的定时或计数值,在定时时间到或者计数终止时,发出中断申请,以便实现定时控制。第第7章章定时定时/计数器与串行通信计数器与串行通信7.1.1定时/计数器的结构及工作原理MCS-51单片机的定时/计数器(以下简称T/C)的结构如下图所示。由图可见,T/C的核心是1个加1计数器,它的输入脉冲有两个来源:一个是外部脉冲源计计数数器器,另一个是系统机器周期(时钟振荡器经12分频以后的脉冲信号)定时器定时器。第第7章章定时定时/计数器与串行通信计数器与串行通信图7-2定时/计数器的结构框图第第7章章定时定时/计数器与串行通信计数器与串行通信当T/C处于定时方式时,加1计数器在每个机器周期加1,因此,也可以把它看作在累计机器周期。由于一个机器周期包含12个振荡周期,所以它的最高计数速率是振荡频率的1/12。用作计数器时,由于对外部信号的识别需要一个机器周期,而计数器判断的是一次下降沿,所以计数最高速率是振荡频率的1/24。第第7章章定时定时/计数器与串行通信计数器与串行通信16位的加1计数器由两个8位的特殊功能寄存器THx或TLx组成(X=0、1)。它们可被程控为不同的组合状态。(13位、16位、两个分开的8位等),从而形成T/C不同的4种工作方式,这只要用指令改变TMOD(工作方式控制寄存器)的相应位即可。第第7章章定时定时/计数器与串行通信计数器与串行通信第第7章章定时定时/计数器与串行通信计数器与串行通信7.1.2定时/计数器的方式和控制寄存器MCS-51单片机有2个特殊功能寄存器TMOD和TCON:TMOD用于设置T/C的工作方式;TCON用于控制定时器T0、T1的启动与停止,并包含了定时器的状态。1.定时器工作方式寄存器TMOD定时器工作方式寄存器TMOD用于选择定时器的工作方式,它的高4位控制定时器T1,低4位控制定时器T0。TMOD中各位的定义如下:GATEC/TM1M0GATEC/TM1M0T1T0TMOD89H第第7章章定时定时/计数器与串行通信计数器与串行通信其中:T/C功能选择位,当=1时为计数方式;当=0时为定时方式。M1M0:T/C工作方式定义位,其具体定义方式如表所示。第第7章章定时定时/计数器与串行通信计数器与串行通信GATE:门控制位,用于控制定时器的启动是否受外部中断源信号的影响。GATE=0时,与外部中断无关,由TCON寄存器中的TRx位控制启动。GATE=1时,由控制位TRx和引脚共同控制启动,只有在没有外部中断请求信号的情况下(即外部中断引脚=1时),才允许定时器启动。利用这一功能可以方便地测量外部脉冲高电平的脉宽。第第7章章定时定时/计数器与串行通信计数器与串行通信2.定时器控制寄存器TCONTCON控制寄存器各位的定义如下:TF1TR1TF0TR0IE1IT1IE0IT0D7D6D5D4D3D2D1D0TCON88H第第7章章定时定时/计数器与串行通信计数器与串行通信其中:TF0(TF1):为T0(T1)定时器溢出中断标志位。当T0(T1)计数溢出时,由硬件置位,并在允许中断的情况下,发出中断请求信号。当CPU响应中断转向中断服务程序时,由硬件自动将该位清0。TR0(TR1):为T0(T1)运行控制位。当TR0(TR1)=1时启动T0(T1);TR0(TR1)=0时关闭T0(T1)。该位由软件进行设置。第第7章章定时定时/计数器与串行通信计数器与串行通信7.1.3定时/计数器的工作方式MCS-51单片机的T/C有4种工作方式,分别由TMOD寄存器中的M1、M0两位的二进制编码所决定。1.方式0当M1M0=00时,T/C设定为工作方式0,构成13位的T/C。其逻辑结构如图所示。在此工作方式下,T/C构成一个13位的计数器,由THx的8位和TLx的低5位组成,TLx的高3位未用,满计数值为213。第第7章章定时定时/计数器与串行通信计数器与串行通信图73T/C方式0的逻辑结构图第第7章章定时定时/计数器与串行通信计数器与串行通信2.方式1当M1M0=01时,T/C设定为工作方式1,构成16位定时/计数器,其中THx作为高8位,TLx作为低8位,满计数值为216,其余同方式0类似。其逻辑结构如图所示。第第7章章定时定时/计数器与串行通信计数器与串行通信图74T/C方式1的逻辑结构图第第7章章定时定时/计数器与串行通信计数器与串行通信3.方式2当M1M0=10时,T/C工作在方式2,构成1个自动重装载的T/C,满计数值为28。在方式2中THx和TLx被当作两个8位计数器,计数过程中,THx寄存8位初值并保持不变,由TLx进行8位计数。计数溢出时,除产生溢出中断请求外,还自动将THx中的初值重新装到TLx中去,即重装载。第第7章章定时定时/计数器与串行通信计数器与串行通信图75T/C方式2的逻辑结构图第第7章章定时定时/计数器与串行通信计数器与串行通信4.方式3方式3只适用于定时器T0。当定时器T1处于方式3时相当于TR1=0,停止计数。当T0工作在方式3时,TH0和TL0被拆成2个独立的8位计数器。这时,TL0既可作为定时器使用,也可作为计数器使用,它占用了定时器T0所使用的控制位(C/、GATE、TR0、TF0),其功能和操作与方式0或方式1完全相同;而TH0只能作定时器用,并且占据了定时器T1的两个控制信号TR1和TF1。在这种情况下,定时器T1虽仍可用于方式0、1、2,但不能使用中断方式。第第7章章定时定时/计数器与串行通信计数器与串行通信图76T/C方式3的逻辑结构图第第7章章定时定时/计数器与串行通信计数器与串行通信7.1.4定时/计数器应用举例由于MCS-51单片机的定时/计数器是可编程的,因此在使用之前需要进行初始化。在编程时主要注意两点:第一要能正确写入控制字;第二能进行计数初值的计算。一般情况下,包括以下几个步骤:(1)确定工作方式,即对TMOD寄存器进行赋值。(2)计算计数初值,并写入寄存器TH0、TL0或TH1、TL1中。(3)根据需要,置位ETx允许T/C中断。(4)置位EA使CPU开中断(需要时)。(5)置位TRx启动计数。第第7章章定时定时/计数器与串行通信计数器与串行通信计数初值的计算方法如下:由于定时/计数器是以加1的方式计数,因此同常用的减1计数器的算法不同。在定时方式下:假定时间常数为Tc,定时时间为T,而T=TcTp,则时间常数为(71)其中Tp为机器周期,即12/晶振频率。应装入定时/计数器的初值为X=2n-Tc(n为计数器的位数)(72)第第7章章定时定时/计数器与串行通信计数器与串行通信例1:若晶振频率为6MHz,试计算MCS-51单片机定时/计数器的最小定时时间和最大定时时间。解:先确定机器周期:计算最小定时时间:对于定时器的几种工作方式来说,最小定时时间都是一样的,即Tmin=TcTp=12s=2s计算最大定时时间:当T/C工作在方式1下的定时时间最长,则最大定时时间为Tmax=TcTp=2162s=131072s=131ms晶振频率第第7章章定时定时/计数器与串行通信计数器与串行通信例2:若单片机的晶振频率为6MHz,要求定时/计数器T0产生100ms的定时,试确定计数初值以及TMOD寄存器的内容。解:当晶振频率为6MHz时,产生100ms的定时接近最大值(131ms),故只能采用方式1(16位定时器)。第第7章章定时定时/计数器与串行通信计数器与串行通信晶振频率时间常数为:计数初值为:第第7章章定时定时/计数器与串行通信计数器与串行通信设置TMOD方式字:对于T0来说:M1M0=01、GATE=0。由于T1不用,可任意设置,现取为全0,因此,TMOD寄存器的内容为:TMOD=00000001B=01H试解释对于T0的寄存器设置。第第7章章定时定时/计数器与串行通信计数器与串行通信例3:利用定时/计数器T0通过引脚输出周期为2ms的方波,设晶振频率为12MHz。试确定计数初值、TMOD内容及编制相应程序。解:若要产生周期为2ms的方波,只要每1ms将信号的幅值由0变到1或由1变到0即可,可采用取反指令CPL来实现。为了提高CPU的效率,可采用定时中断的方式,每1ms产生一次中断,在中断服务程序中将输出信号取反即可。定时器T0的中断入口地址为000BH。计算计数初值:对于定时1ms来说,用定时器方式0(13位定时器)就可实现。第第7章章定时定时/计数器与串行通信计数器与串行通信机器周期为:Tp=1us时间常数为:计数初值为:则其高8位为E0H,低5位为18H,故TH0=E0H,TL0=18H。第第7章章定时定时/计数器与串行通信计数器与串行通信确定TMOD方式字:对于定时器T0来说,M1M0=00H、=0、GATE=0。定时器T1不用,取为全0。于是TMOD=00000000B=00H程序设计:ORG000BH;T0中断服务程序入口LJMPINT;转至INT处ORG2000H;主程序MOVTMOD,00H;置T0为定时方式0MOVTH0,0E0H;设置计数初值第第7章章定时定时/计数器与串行通信计数器与串行通信MOVTL0,18HSETBEA;CPU开中断SETBET0;允许T0中断SETBTR0;启动T0HALT:SJMPHALT;暂停,等待中断;输出方波MOVTH0,0E0H;重新装入计数初值MOVTL0,18HRETI;中断返回第第7章章定时定时/计数器与串行通信计数器与串行通信例例例例7-57-5 设设一一只只发发光光二二极极管管LED和和8051的的脚脚相相连连。当当脚脚是是高高电电平平时时,LED发发亮亮;当当脚脚是是低低电电平平时时,LED熄熄灭灭。编编制制程程序序用用定定时时器器来来实实现现发发光光二二极极管管LED的的闪闪烁烁功功能能,设设置置LED每每1s闪闪烁烁一一次次。已已知单片机系统主频为知单片机系统主频为12MHz。-应用实例应用实例第第7章章定时定时/计数器与串行通信计数器与串行通信设设计计思思想想:定定时时/计计数数器器的的最最长长定定时时是是,无无法法实实现现1s的的定定时时。可可以以采采用用软软件件计计数数器器来来进进行行设设计计。定定义义一一个个软软件件计计数数器器单单元元30H,先先用用定定时时/计计数数器器T0做做一一个个50ms的的定定时时器器,定定时时时时间间到到后后将将软软件件计计数数器器中中的的值值加加1,如如果果软软件件计计数数器器计计到到了了20(1s),取取反反,并并清清除除软软件件计计数数器器中中的的值值,否否则则直直接接返返回回。则则完完成成了了20次次定定时时中断才取反一次,实现定时时间中断才取反一次,实现定时时间2050=1000ms=1s的定时。的定时。定时定时/计数器计数器T0采用工作方式采用工作方式1(16位定时器),位定时器),其初值为:其初值为:216 50ms/1 s=65536 50000=15536=3CB0H-应用实例应用实例第第7章章定时定时/计数器与串行通信计数器与串行通信程序如下:程序如下:ORG0000HAJMPSTART;转入主程序转入主程序ORG000BH;定时定时/计数器计数器T0的中断服务程序入口地址的中断服务程序入口地址AJMPTIME0;跳转到真正的定时器中断服务程序处跳转到真正的定时器中断服务程序处ORG0030HSTART:MOVSP,#60H;设置堆栈指针设置堆栈指针MOVP1,#00H;关发光二极管关发光二极管LED(使其灭)(使其灭)MOV30H,#00H;软件计数器预清软件计数器预清0MOVTMOD,#01H;定时定时/计数器计数器T0工作于方式工作于方式1MOVTH0,#3CH;设置定时设置定时/计数器的初值计数器的初值MOVTL0,#0B0HSETBEA;开总中断允许开总中断允许SETBET0;开定时开定时/计数器计数器T0中断允许中断允许SETBTR0;启动定时启动定时/计数器计数器T0LOOP:JMPLOOP;循环等待循环等待-应用实例应用实例第第7章章定时定时/计数器与串行通信计数器与串行通信TIME0:INC30H;中断程序中断程序MOVA,30HCJNEA,#14H,RET0;与与20比较比较,不等转不等转RET0MOV30H,#00HRET0:MOVTH0,#3CH;重设定时初值,启动重设定时初值,启动MOVTL0,#0B0HRETI-应用实例应用实例第第7章章定时定时/计数器与串行通信计数器与串行通信尽尽管管MCS-51为为用用户户只只提提供供了了两两个个外外部部中中断断源源,但但用用户户可可以以根根据据实实际际需需求求,进进行行多多于于两两个个外外部部中中断断请请求求的的扩扩展展,其其中中有有很很多多扩扩展方法。在此重点介绍利用定时器中断作为外部中断的扩展。展方法。在此重点介绍利用定时器中断作为外部中断的扩展。MCS-51有有两两个个定定时时/计计数数器器T0、T1,若若选选择择它它们们以以计计数数器器方方式式工工作作,当当引引脚脚T0或或T1上上发发生生负负跳跳变变时时,T0或或T1计计数数器器则则加加1。利利用用这这个个特特性性,借借用用引引脚脚T0或或T1作作为为外外部部中中断断请请求求输输入入线线,若若设设定定计计数数初初值值为为满满量量程程,计计数数器器加加1,就就会会产产生生溢溢出出中中断断请请求求,TF0或或TF1变变成成了了外外部部中中断断请请求求标标志志位位,T0或或T1的的中中断断入入口口地地址址被被扩扩展展成成了了外外部部中中断断源源的的入入口口地地址址。值值得得注注意意的的是是,当当使使用用定定时时器器作作为为外外部部中中断断时时,定定时时器器以以前前的的功功能能将将失失效效,除除非非用用软软件对它进行复用。件对它进行复用。3 3采用定时采用定时采用定时采用定时/计数器扩展外部中断计数器扩展外部中断计数器扩展外部中断计数器扩展外部中断-扩展外部中断扩展外部中断第第7章章定时定时/计数器与串行通信计数器与串行通信将将定定时时器器T0引引脚脚作作为为外外部部中中断断源源使使用用的的具具体体做做法法为为,设设定定相相应应定定时时器器工工作作方方式式为为方方式式2,计计数数器器TH0、TL0初初值值为为0FFH,允允许计数器许计数器T0中断,则中断,则T0的初始始化程序如下:的初始始化程序如下:MOVTMOD,06H;将计数器将计数器T0设定为设定为;方式方式2外部计数外部计数MOVTL0,#0FFH;设置计数器初值设置计数器初值MOVTH0,#0FFH;设置重装计数器初值设置重装计数器初值SETBET0;允许允许T0中断中断SETBEA;CPU开中断开中断SETBTR0;启动启动T0-扩展外部中断扩展外部中断第第7章章定时定时/计数器与串行通信计数器与串行通信#includevoidmain(void)TMOD=0 x66;/*两个定时两个定时/计数器都设为方式计数器都设为方式2外部计数模式外部计数模式*/TH1=0 xFF;/*设定重装值,设定重装值,TL1不用设置不用设置*/TH0=0 xFF;/*设定重装值,设定重装值,TL0不用设置不用设置*/TCON=0 x50;/*置位置位TR1、TR0,开始计数,开始计数*/IE=0 x9F;/*中断使能中断使能*/-扩展外部中断扩展外部中断第第7章章定时定时/计数器与串行通信计数器与串行通信/*定时器定时器0中断服务程序中断服务程序*/voidtimer0_int(void)interrupt1TF0=0;/*计数溢出标志位清计数溢出标志位清0*/*定时器定时器1中断服务程序中断服务程序*/voidtimer1_int(void)interrupt3TF1=0;/*计数溢出标志位清计数溢出标志位清0*/-扩展外部中断扩展外部中断第第7章章定时定时/计数器与串行通信计数器与串行通信定时器计数器扩展外部中断实际项目例子定时器计数器扩展外部中断实际项目例子/*强力单片机技术项目交易网作者:王春林*/#include#include#include#include#defineUNunsignedcharvoiddel05s();sbitlsledcs=P37;UNdatad0=0;UNdatad1=0;UNdatad2=0;UNdatad3=0;voiddelay();sbitbm7=bm7;sfr16DPTR=0 x82;sbitACC0=ACC0;sbitACC1=ACC1;sbitACC2=ACC2;sbitACC3=ACC3;sbitACC4=ACC4;sbitACC5=ACC5;sbitACC6=ACC6;sbitACC7=ACC7;unsignedcharbdatabm;sbitbm0=bm0;sbitbm1=bm1;sbitbm2=bm2;sbitbm3=bm3;sbitbm4=bm4;sbitbm5=bm5;sbitbm6=bm6;第第7章章定时定时/计数器与串行通信计数器与串行通信UNcodeledcode=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90,/0-90 x88,0 x83,0 xa7,0 xa1,0 x86,0 x8e;voidmain()/*设为模式1,计数*/TMOD=0 x05;/*初值设定,当设为TH0=0 xff;TL0=0 xff;每按C/T0(K4)一次计数加一,此方法可把计数器作为外部中断使用;当设为TH0=0 xff;TL0=0 xf0;每按C/T0(K4)16次计数加一,(不考虑按键抖动)*/TH0=0 xff;TL0=0 xff;TR0=1;ET0=1;EA=1;while(1)/*显示计数值*/P0=0 xff;P0=ledcoded3;P1=0 xfe;delay();P0=ledcoded2;P1=0 xfd;delay();P0=ledcoded1;P1=0 xfb;delay();P0=ledcoded0;P1=0 xf7;delay();第第7章章定时定时/计数器与串行通信计数器与串行通信P1=0 xff;voiddelay()unsignedintkk=0 xff;do_nop_();kk-;while(kk!=0);voiddel05s()unsignedintkk=0 xefff;do_nop_();kk-;while(kk!=0);/*定时器0中断*/voidtime0()interrupt1using1d0+;if(d09)d0=0;d1+;if(d19)d1=0;d2+;if(d29)d2=0;d3+;if(d0=9&d1=9&d2=9&d3=9)d0=d1=d2=d3=0;TH0=0 xff;TL0=0 xff;第第7章章定时定时/计数器与串行通信计数器与串行通信习题7-2、7-5、7-7、7-9、7-11第第7章章定时定时/计数器与串行通信计数器与串行通信7.2串行通信接口串行通信接口7.2.1串行通信的基本知识1.并行通信与串行通信在实际应用中,不但计算机与外部设备之间常常要进行信息交换,而且计算机之间也需要交换信息,所有这些信息的交换均称为“通信”。通信的基本方式分为并行通信和串行通信两种。第第7章章定时定时/计数器与串行通信计数器与串行通信并行通信是构成1组数据的各位同时进行传送,例如8位数据或16位数据并行传送。其特点是传输速度快,但当距离较远、位数又多时导致了通信线路复杂且成本高。串行通信是数据一位接一位地顺序传送。其特点是通信线路简单,只要一对传输线就可以实现通信(如电话线),从而大大地降低了成本,特别适用于远距离通信。缺点是传送速度慢。第第7章章定时定时/计数器与串行通信计数器与串行通信图通信的两种基本方式(a)并行通信;(b)串行通信第第7章章定时定时/计数器与串行通信计数器与串行通信串行通信可分为异步传送和同步传送两种基本方式。1)异步传送方式异步传送的特点是数据在线路上的传送不连续。在传送时,数据是以一个字符为单位进行传送的。它用一个起始位表示字符的开始,用停止位表示字符的结束。异步传送的字符格式如图所示。第第7章章定时定时/计数器与串行通信计数器与串行通信一个字符由起始位、数据位、奇偶校验位和停止位4个部分组成。起始位为0占1位;其后接着的就是数据位,它可以是5位、6位、7位或8位,传送时低位在先、高位在后;再后面的1位为奇偶校验位,可要也可以不要;最后是停止位,它用信号1来表示字符的结束,可以是1位、1位半或2位。第第7章章定时定时/计数器与串行通信计数器与串行通信图串行异步传送的字符格式(a)字符格式;(b)有空闲位的字符格式第第7章章定时定时/计数器与串行通信计数器与串行通信例如,采用串行异步通信方式传送ASCII码字符5,规定为7位数据位,1位偶校验位,1位停止位,无空闲位。由于5的ASCII码为35H,其对应7位数据位为0110101,如按低位在前、高位在后顺序排列应为1010110。前面加1位起始位,后面配上偶校验位1位0,最后面加1位停止位1,因此传送的字符格式为0101011001,其对应的波形如图所示。第第7章章定时定时/计数器与串行通信计数器与串行通信图传送ASCII码字符5的波形图第第7章章定时定时/计数器与串行通信计数器与串行通信在串行异步传送中,CPU与外设之间事先必须约定:字符格式。双方要事先约定字符的编码形式、奇偶校验形式及起始位和停止位的规定。例如用ASCII码通信,有效数据为7位,加1个奇偶校验位、1个起始位和1个停止位共10位。当然停止位也可大于1位。波特率(Baudrate)。波特率就是数据的传送速率,即每秒钟传送的二进制位数,单位为位/秒。它与字符的传送速率(字符/秒)之间存在如下关系:波特率=位/字符字符/秒=位/秒要求发送端与接收端的波特率必须一致。第第7章章定时定时/计数器与串行通信计数器与串行通信例如,假设字符传送的速率为120字符/秒,而每1个字符为10位,那么传送的波特率为10位/字符120字符/秒=1200位/秒=1200波特每1位二进制位的传送时间Td就是波特率的倒数,例如上例中Td第第7章章定时定时/计数器与串行通信计数器与串行通信2)同步传送在异步传送中,每1个字符都要用起始位和停止位作为字符开始和结束的标志,占用了一定的时间。为了提高传送速度,有时就去掉这些标志,而采用同步传送,即1次传送1组数据。在这1组数据的开始处要用同步字符SYN来加以指示,如图所示。计算机网络采用的就是这样的传送方式。第第7章章定时定时/计数器与串行通信计数器与串行通信图同步传送第第7章章定时定时/计数器与串行通信计数器与串行通信BSC协议的数据块有如下四种格式协议的数据块有如下四种格式(1)不带报头的单块报文或分块传输中的最后一块报文:SYNSYNSTX报文ETXBCC(2)带报头的单块报文:SYNSYNSOH报头STX报文ETXBCC(3)分块传输中的第一块报文:SYNSYNSOH报头STX报文ETBBCC(4)分块传输中的中间报文:SYNSYNSTX报文ETBBCC第第7章章定时定时/计数器与串行通信计数器与串行通信2.数据传送方向串行通信的数据传送方向有3种形式。(1)单工方式。如图(a)所示,A端为发送站,B端为接收站,数据仅能从A站发至B站。(2)半双工方式。如图(b)所示,数据既可从A站发送到B站,也可以由B站发送到A站。不过在同一时间只能作1个方向的传送。(3)全双工方式。如图(c)所示,每个站(A、B)既可同时发送,也可同时接收。第第7章章定时定时/计数器与串行通信计数器与串行通信图串行通信的三种方式(a)单工方式;(b)半双工方式;(c)全双工方式第第7章章定时定时/计数器与串行通信计数器与串行通信3、串行通信的校验、串行通信的校验奇偶校验和校验CRC校验如16位CRC校验码(r=16),可以校验32kbit的数据,可以检测突发长度不大于16的突发错以及99.998%的突发长度大于或等于17的突发错。第第7章章定时定时/计数器与串行通信计数器与串行通信仿真结果仿真结果校校验验位数位数(r)总总的的帧帧位位长长(n)检检出出错误错误个数个数(e1)总总错错误误个个数数(e)检检错错率率410043649788810049749710016100497497100第第7章章定时定时/计数器与串行通信计数器与串行通信7.2.2MCS-51单片机的串行接口单片机的串行接口MCS-51单片机内部有1个功能很强的全双工串行口,可同时发送和接收数据。它有4种工作方式,可供不同场合使用。波特率由软件设置,通过片内的定时/计数器产生。接收、发送均可工作在查询方式或中断方式,使用十分灵活。MCS-51的串行口除了用于数据通信外,还可以非常方便地构成1个或多个并行输入/输出口,或作串并转换,用来驱动键盘与显示器。第第7章章定时定时/计数器与串行通信计数器与串行通信图79MCS-51串行口的原理结构图MCS-51单片机串行口构成:单片机串行口构成:发送缓冲寄存器发送缓冲寄存器(SBUF)发送控制器发送控制器发送控制门发送控制门接收缓冲寄存器接收缓冲寄存器(SBUF)接收控制寄存器接收控制寄存器移位寄存器移位寄存器中断中断第第7章章定时定时/计数器与串行通信计数器与串行通信1.串行接口的特殊功能寄存器与与串串行行通通信信有有关关的的控控制制寄寄存存器器共共有有4个个:SBUF、SCON、PCON和和IE。1)串行口数据缓冲器SBUFSBUF是两个在物理上独立的接收、发送缓冲器,可同时发送、接收数据。两两个个缓缓冲冲器器只只用用一一个个字字节节地地址址99H,可通过指令对SBUF的读写来区别是对接收缓冲器的操作还是对发送缓冲器的操作。CPU写SBUF,就是修改发送缓冲器;读SBUF,就是读接收缓冲器。串行口对 外 也 有 两 条 独 立 的 收 发 信 号 线 RXD(P3.0)和TXD(P3.1),因此可以同时发送、接收数据,实现全双工传送。第第7章章定时定时/计数器与串行通信计数器与串行通信2)串行口控制寄存器SCONSCON寄存器用来控制串行口的工作方式和状态,它可以是位寻址。在复位时所有位被清0,字地址为98H。SCON的格式为SM0SM1SM2RENTB8RB8TIRID7D6D5D4D3D2D1D0第第7章章定时定时/计数器与串行通信计数器与串行通信SM0、SM1:串行口工作方式选择位。SM2:多机通信控制位。主要用于工作方式2和方式3。在方式2和方式3中,如SM2=1,则接收到的第9位数据(RB8)为0时不启动接收中断标志RI(即RI=0),并且将接收到的前8位数据丢弃;RB8为1时,才将接收到的前8位数据送入SBUF,并置位RI产生中断请求。当SM2=0时,则不论第9位数据为0或1,都将前8位数据装入SBUF中,并产生中断请求。在方式0时,SM2必须为0。第第7章章定时定时/计数器与串行通信计数器与串行通信多机通信过程多机通信过程所有从机的SM2=1,处于只接收地址帧状态所有同学坐着听讲主机发地址信息,以第9位TB8=1表示发送的是地址老师喊同学名字从机接收到地址帧后与本机地址比较所有同学听到名字与自己的名字比较被寻址从机SM2=0,其余从机SM2=1不变名字相符的同学站起来主机发数据信息,对已被寻址的从机因SM2=0,可以接收主机发来的信息。其余从机因SM2=1不理睬主机。老师与站起的同学进行提问回答课堂交流被寻址的从机SM2置1.主机可另发地址帧与其它从机通信时。回答问题的同学坐下第第7章章定时定时/计数器与串行通信计数器与串行通信REN:允许串行接收控制位。若REN=0,则禁止接收;若REN=1,则允许接收。该位由软件置位或复位。TB8:发送数据位8。在方式2和方式3时,TB8为所要发送的第9位数据。在多机通信中,以TB8位的状态表示主机发送的是地址还是数据:TB8=0为数据,TB8=1为地址;也可用作数据的奇偶校验位。该位由软件置位或复位。RB8:接收数据位8。TI:发送中断标志位。软件清零RI:接收中断标志位。软件清零第第7章章定时定时/计数器与串行通信计数器与串行通信3)电源控制寄存器PCONPCON主要是为CHMOS型单片机的电源控制而设置的专用寄存器,单元地址为87H,不能位寻址。在HMOS单片机中,该寄存器除最高位外,其它位都是虚设的。最高位SMOD为串行口波特率选择位,当SMOD=1时,方式1、2、3的波特率加倍;当SMOD=0时,正常波特率。SMODGF1GF0PDIDLD7D6D5D4D3D2D1D0PCON87H44)中断允许控制寄存器()中断允许控制寄存器()中断允许控制寄存器()中断允许控制寄存器(IEIE)IEIE的地址是的地址是的地址是的地址是A8HA8H,其内容第,其内容第,其内容第,其内容第6 6章已介绍。其中串行口章已介绍。其中串行口章已介绍。其中串行口章已介绍。其中串行口允许中断的控制位为允许中断的控制位为允许中断的控制位为允许中断的控制位为ESES,当,当,当,当ES=1ES=1,允许串行口中断;当,允许串行口中断;当,允许串行口中断;当,允许串行口中断;当ES=0ES=0,禁止串行中断,禁止串行中断,禁止串行中断,禁止串行中断。第第7章章定时定时/计数器与串行通信计数器与串行通信2.串行接口的工作方式串行口有4种工作方式,它是由SCON中的SM0、SM1来定义的,如表所示。第第7章章定时定时/计数器与串行通信计数器与串行通信1)方式0串行接口的工作方式0为同步移位寄存器方式,其波特率是固定的,为fosc(振荡频率)的1/12。方式方式0发送发送数据从RXD引脚串行输出,TXD引脚输出同步脉冲。当1个数据写入串行口发送缓冲器时,串行口将8位数据以fosc/12的固定波特率从RXD引脚输出,从低位到高位。发送完后置中断标志TI为1,呈中断请求状态,在在再再次次发发送数据之前送数据之前,必须用软件将必须用软件将TI清清0。第第7章章定时定时/计数器与串行通信计数器与串行通信方式方式0接收接收在满足REN=1和RI=0的条件下,串行口处于方式0输入。此时,RXD为数据输入端,TXD为同步信号输出端,接收器也以fosc/12的波特率采样RXD引脚输入的数据信息。当接收器接收完8位数据后,置中断标志RI=1为请求中断,在在再次接收之前再次接收之前,必须用软件将必须用软件将RI清清0。第第7章章定时定时/计数器与串行通信计数器与串行通信在在方方式式0下下,串串行行口口作作为为同同步步移移位位寄寄存存器器使使用用。这这时时用用RXD()引引脚脚作作为为数数据据移移位位的的入入口口和和出出口口,而而由由TXD()引引脚脚提提供供移移位位脉脉冲冲。移移位位数数据据的的发发送送和和接接收收以以8位位为为一一帧帧,不不设设起起始始位位和和停停止位,止位,低位在前高位在后低位在前高位在后,其帧格式如图,其帧格式如图7-10所示。所示。第第7章章定时定时/计数器与串行通信计数器与串行通信 74LS164为带清0端的串行输入/并行输出移位寄存器(8位),而74LS165为并行输入/串行输出移位寄存器(8位)。Q0Q7 并行输出端。A,B串行输入端。MR 清除端,为0时,输出清零。CP 时钟输入端。每一个时钟信号的上升沿加到CP端时,移位寄存器移一位,8个时钟脉冲过后,8位二进制数全部移入74LS164中。第第7章章定时定时/计数器与串行通信计数器与串行通信第第7章章定时定时/计数器与串行通信计数器与串行通信第第7章章定时定时/计数器与串行通信计数器与串行通信第第7章章定时定时/计数器与串行通信计数器与串行通信HC165第第7章章定时定时/计数器与串行通信计数器与串行通信使用方式使用方式0实现数实现数据的移位输入据的移位输入/输出时,输出时,实际上是把串行口变成实际上是把串行口变成并行口使用。串行口作并行口使用。串行口作为并行输出口使用时,为并行输出口使用时,要有要有“串入并出串入并出”的移的移位寄存器配合(例如位寄存器配合(例如CD4049或或74HC164),),其电路连接如图其电路连接如图7-11所所示。示。第第7章章定时定时/计数器与串行通信计数器与串行通信如果把实现并如果把实现并入串出功能的移位入串出功能的移位寄存器(例如寄存器(例如CD4014或或74HC165)与串行)与串行口配合使用,如图口配合使用,如图7-12所示,就可以所示,就可以把串行口变为并行把串行口变为并行输入口使用。输入口使用。第第7章章定时定时/计数器与串行通信计数器与串行通信例例7-6使使用用74HC164的的并并行行输输出出引引脚脚接接8支支发发光光二二极极管管,利利用用它它的的串串入入并并出出功功能能,把把发发光光二二极极管管从从左左向向右右轮轮流流点点亮亮,并并反反复复循循环环。发发光光二二极极管管为为共共阴阴极极型型,电电路路连连接接如图如图7-15所示。所示。串口方式串口方式串口方式串口方式0 0应用应用应用应用分分分分析析析析:当当当当串串串串行行行行口口口口把把把把8 8位位位位状状状状态态态态码码码码串串串串行行行行移移移移位位位位输输输输出出出出后后后后,TITI置置置置1 1。把把把把TITI作作作作为为为为状状状状态态态态查查查查询标志,使用查询方法。询标志,使用查询方法。询标志,使用查询方法。询标志,使用查询方法。第第7章章定时定时/计数器与串行通信计数器与串行通信ORG1000HSTART:MOVSCON,#00H;置串行口工作方式置串行口工作方式0MOVA,#80H;最高位灯先亮最高位灯先亮CLRP1.0;关闭并行输出关闭并行输出OUT0:MOVSBUF,A;开始串行输出开始串行输出OUT1:JNBTI,OUT1;输出完否输出完否?未完未完,等待等待CLRTI;完了,清零完了,清零TI标志位,标志位,;以备下次发送以备下次发送SETBP1.0;打开并行口输出打开并行口输出ACALLDELAY;延时一段时间延时一段时间(1)(1)汇编语言编程汇编语言编程汇编语言编程汇编语言编程第第7章章定时定时/计数器与串行通信计数器与串行通信RRA;循环右移循环右移CLRP1.0;关闭并行输出关闭并行输出SJMPOUT0;循环循环;延时子程序延时子程序DELAY:MOVR7,#250D1:MOVR6,#250D2:DJNZR6,D2DJNZR7,D1RETEND第第7章章定时定时/计数器与串行通信计数器与串行通信(2)C51编程编程#include#include#defineout_offP10=0#defineout_onP10=1externvoiddelay(void);/*外部延时函数外部延时