单片机第二章31PPT课件

上传人:艳*** 文档编号:187664217 上传时间:2023-02-16 格式:PPT 页数:88 大小:1.53MB
收藏 版权申诉 举报 下载
单片机第二章31PPT课件_第1页
第1页 / 共88页
单片机第二章31PPT课件_第2页
第2页 / 共88页
单片机第二章31PPT课件_第3页
第3页 / 共88页
资源描述:

《单片机第二章31PPT课件》由会员分享,可在线阅读,更多相关《单片机第二章31PPT课件(88页珍藏版)》请在装配图网上搜索。

1、80518051内部资源,即内部资源,即80518051的片内外围部件,的片内外围部件,要用特殊功能寄存器或要用特殊功能寄存器或SFRSFR寻址。寻址。需提供定义寄存器的头文件或用语句写出。需提供定义寄存器的头文件或用语句写出。5.5 5.5 定时器定时器/计数器计数器5.6 5.6 串行口串行口内内 容容8.2 定时器定时器/计数器(计数器(Timer/Counter)8051有两个有两个16位位内部定时器内部定时器/计数器计数器T0、T1。若是计数若是计数内部晶振驱动时钟内部晶振驱动时钟,则是,则是定时器定时器。若是计数若是计数8051的的输入引脚的脉冲信号输入引脚的脉冲信号,则是,则是计

2、计数器数器。8051的的T/C是是加加1计数计数的。定时器实际上也是工的。定时器实际上也是工作在计数方式下,只不过对固定频率的脉冲计作在计数方式下,只不过对固定频率的脉冲计数;由于脉冲周期固定,由计数值可以计算出数;由于脉冲周期固定,由计数值可以计算出时间,有定时功能。时间,有定时功能。当当T/C工作在工作在定时器定时器时,对振荡源时,对振荡源12分频的脉冲分频的脉冲计数,即每个机器周期计数值加计数,即每个机器周期计数值加1,计数频率,计数频率fosc/12。当当T/C工作在工作在计数器计数器时,计数脉冲来自外部脉冲时,计数脉冲来自外部脉冲输入引脚输入引脚T0或或T1。当当T0或或T1脚上脚上

3、负跳变时计数值加负跳变时计数值加1。识别引脚上。识别引脚上的负跳变需的负跳变需2个机器周期。个机器周期。T0或或T1脚输入的可计数外部脉冲的最高频率为脚输入的可计数外部脉冲的最高频率为fosc/24。8.2.1 与与T/C有关的特殊功能寄存器有关的特殊功能寄存器 计数寄存器计数寄存器THTH和和TLTLT/CT/C是是1616位的,由位的,由THTH高高8 8位和位和TLTL低低8 8位构成。位构成。定时器定时器/计数器控制寄存器计数器控制寄存器TCONTCON(Timer/Counter Control Register)Timer/Counter Control Register)低低4位

4、与外部中断有关。高位与外部中断有关。高4位的功能如下:位的功能如下:(1)TF1、TF0计数溢出标志位计数溢出标志位 (2)TR1、TR0启动控制位启动控制位 1:启动定时器启动定时器/计数器工作计数器工作 0:停止定时器停止定时器/计数器工作计数器工作 定时器定时器/计数器方式控制寄存器计数器方式控制寄存器TMOD(Timer/Counter Mode Register)8位分为两组,高位分为两组,高4位控制位控制T1,低,低4位控制位控制T0。(1)GATE门控位门控位 0:以:以TRX(X=0,1)来启动定时器)来启动定时器/计数器计数器运行。运行。1:用外中断引脚:用外中断引脚(INT

5、0*或或INT1*)上的高电上的高电平和平和TRX来启动定时器来启动定时器/计数器运行。计数器运行。(2)M1、M0工作方式选择位工作方式选择位 M1 M0 工工 作作 方方 式式 0 0 方式方式0,13位定时器位定时器/计数器计数器 0 1 方式方式1,16位定时器位定时器/计数器计数器 1 0 方式方式2,8位常数自动重新装载位常数自动重新装载 1 1 方式方式3,仅适用于,仅适用于T0,T0分成两个分成两个 8位计数器,位计数器,T1停止计数停止计数(3)(3)C/TC/T*计数器模式或定时器模式选择位计数器模式或定时器模式选择位0 0:定时器模式。定时器模式。1 1:计数器模式。计数

6、器模式。8.2.2 T/C的工作方式的工作方式1 方式方式013位的位的T/C,TL的低的低5位和位和TH的的8位,满计数值为位,满计数值为213,但启动前可以预置计数初值。但启动前可以预置计数初值。当当C/T 0时,为时,为定时器定时器,振荡源,振荡源12分频的信号作为分频的信号作为计数脉冲。计数脉冲。当当C/T 1时,为时,为计数器计数器,对外部脉冲输入端,对外部脉冲输入端T0或或T1输入的脉冲计数。输入的脉冲计数。计数脉冲能否加到计数器上,受启动信号的控制。计数脉冲能否加到计数器上,受启动信号的控制。GATE=0,只要,只要TR=1,则,则T/C启动。启动。GATE=1,T/C启动受到双

7、重控制,启动信号启动受到双重控制,启动信号TRINT。T/CT/C启动后立即加启动后立即加1 1计数,当计数,当1313位计数满时,位计数满时,THTH向高位进向高位进位。此进位将中断溢出标志位。此进位将中断溢出标志TFTF置置1 1,产生中断请求,表,产生中断请求,表示定时时间到或计数次数到。示定时时间到或计数次数到。若若T/CT/C开中断(开中断(ET=1ET=1)且)且CPUCPU开中断(开中断(EA=1EA=1),则当),则当CPUCPU转向中断服务程序时,转向中断服务程序时,TFTF自动清零。自动清零。计数满时,若要进行下一次定时计数满时,若要进行下一次定时/计数,须用软件向计数,须

8、用软件向THTH和和TLTL重装预置计数初值。重装预置计数初值。若不置若不置TRTR位位0 0则计数不会停止。则计数不会停止。2 2 方式方式1 1与方式与方式0的唯一区别在于计数寄存器的位数是的唯一区别在于计数寄存器的位数是16位,位,由由TH和和TL寄存器各提供寄存器各提供8位,满计数值为位,满计数值为216。3 方式方式2TLX作为常数缓冲器作为常数缓冲器,当,当TLX计数溢出时,在溢出标志计数溢出时,在溢出标志TFX置置“1”的同时,还的同时,还自动的将自动的将THX中的初值送至中的初值送至TLX,使使TLX从初值开始重新计数。从初值开始重新计数。定时器定时器/计数器的方式计数器的方式

9、2工作过程工作过程(X=0,1)。8位的可自动重装载的位的可自动重装载的T/C,满计数值为,满计数值为28。TH和和TL当作两个当作两个8位计数器。计数过程时,位计数器。计数过程时,TH寄存寄存8位初值并保持不变,由位初值并保持不变,由TL进行进行8位计数。位计数。计数过程中,除产生溢出中断请求外,还自动将计数过程中,除产生溢出中断请求外,还自动将TH中初值重装到中初值重装到TL,即重装载。,即重装载。省去用户软件中重装初值的程序,精确的定时。省去用户软件中重装初值的程序,精确的定时。4 4 方式方式3 3增加一个增加一个附加附加的的8位定时器位定时器/计数器,从而具有计数器,从而具有3个定个

10、定时器时器/计数器计数器。只适用于定时器只适用于定时器/计数器计数器T0,此时此时TH0和和TL0成为两成为两个独立的计数器。个独立的计数器。T1不能工作在方式不能工作在方式3。T1方式方式3时相当于时相当于TR1=0,停止计数(此时,停止计数(此时T1可用可用来作串行口波特率产生器)。来作串行口波特率产生器)。TL0可作定时器可作定时器/计数器,占用计数器,占用T/C0在在TCON和和TMOD寄寄存器中的控制位和标志位;存器中的控制位和标志位;TH0只能作定时器,占用只能作定时器,占用T/C1的资源的资源TR1和和TF1。此时,。此时,T/C1仍可用于方式仍可用于方式0、1、2,但不能使用中

11、断方式。,但不能使用中断方式。只有将只有将T/C1用作串行口的波特率发生器时,用作串行口的波特率发生器时,T/C0才工才工作在方式作在方式3。1工作方式工作方式3下的下的T0 T0分为两个独立的分为两个独立的8位计数器位计数器:TL0和和TH0。TL0使用使用T0的状态控制位的状态控制位C/T*、GATE、TR0、TF0,而,而TH0被固定为一个被固定为一个8位定时器(不能作位定时器(不能作外部计数模式),并使用定时器外部计数模式),并使用定时器T1的状态控制的状态控制位位TR1和和TF1,同时占用定时器,同时占用定时器T1的中断请求源的中断请求源TF1。2T0工作在方式工作在方式3下下T1的

12、各种工作方式的各种工作方式 当当T1用作串行口的波特率发生器时,用作串行口的波特率发生器时,T0才才工作在方式工作在方式3。T0处于方式处于方式3时,时,T1可定为方式可定为方式0、方式、方式1和和方式方式2,用来作为串行口的波特率发生器,用来作为串行口的波特率发生器,或不需要中断的场合。或不需要中断的场合。定时器定时器/计数器对输入信号的要求计数器对输入信号的要求 外部计数脉冲外部计数脉冲的最高频率为系统振荡器频率的最高频率为系统振荡器频率的的1/24,例如选用,例如选用12MHz频率的晶体,则可频率的晶体,则可输入输入500KHz的外部脉冲。的外部脉冲。输入信号的高、低电平至少要输入信号的

13、高、低电平至少要保持一个机器保持一个机器周期周期。8.2.3 定时器定时器/计数器的初始化计数器的初始化1 初始化步骤初始化步骤在使用在使用8051的定时器的定时器/计数器前,应对它进行编程初始化,主要计数器前,应对它进行编程初始化,主要是对是对TCON和和TMOD编程,还需要计算和装载编程,还需要计算和装载T/C的计数初值。一的计数初值。一般完成以下几个步骤:般完成以下几个步骤:(1)确定)确定T/C的工作方式的工作方式编程编程TMOD寄存器;寄存器;(2)计算)计算T/C中的计数初值,并装载到中的计数初值,并装载到TH和和TL;(3)T/C在中断方式工作时,需开在中断方式工作时,需开CPU

14、中断和源中中断和源中断断编程编程IE寄存器;寄存器;(4)启动)启动定时器定时器/计数器计数器编程编程TCON中的中的TR1或或TR0位。位。2 2 定时器的计数初值定时器的计数初值在在定时器定时器方式下,方式下,T/CT/C是对机器周期脉冲计数的,如果是对机器周期脉冲计数的,如果f foscosc=6MHz,=6MHz,一个机器周期为一个机器周期为2us2us,则,则方式方式0 0:1313位定时器位定时器最大定时间隔最大定时间隔2 213132us2us16.384ms16.384ms;例:例:213213*2/(106)=0.0163842/(106)=0.016384方式方式1 1:1

15、616位定时器位定时器最大定时间隔最大定时间隔2 216162us2us131.072ms131.072ms;方式方式2 2:8 8位定时器位定时器最大定时间隔最大定时间隔2 28 82us2us512us512us。若使若使T/CT/C工作在方式工作在方式1 1,fosc=6MHz,要求定时时间为要求定时时间为1ms1ms,求计数初值。,求计数初值。如设计数初值为如设计数初值为x x,则有(,则有(2 21616x x)2us2us1000us1000us或或 x x2 21616500500因此因此 TH,TLTH,TL可置为可置为6553665536500=65036500=650363

16、 3 计数器的计数初值计数器的计数初值方式方式0 0:1313位计数器的位计数器的满计数值满计数值2 2131381928192;方式方式1 1:1616位计数器的位计数器的满计数值满计数值2 216166553665536;方式方式2 2:8 8位计数器的位计数器的满计数值满计数值2 28 8256256。若使若使T/CT/C工作在计数器工作在计数器2 2,则要求计数,则要求计数1010个脉冲个脉冲的计数初值。的计数初值。如设计数初值为如设计数初值为x x,则有,则有2 28 8x x1010即即 x x2 28 81010因此因此 THTHTLTL25625610108.2.4 应用实例应

17、用实例 在实时系统中,定时通常使用定时器。在实时系统中,定时通常使用定时器。与软件循环定时不同,不占用与软件循环定时不同,不占用CPU,在定时,在定时器工作时可以继续执行程序。器工作时可以继续执行程序。例例:设单片机的设单片机的fosc=12MHzfosc=12MHz,要求在,要求在P1.0P1.0脚上输脚上输出周期为出周期为2ms2ms的方波。的方波。方法方法1 1:查询方式:查询方式解解:使用定时器使用定时器0 0的方式的方式1 1编程。定时编程。定时1ms1ms,每次时间到,每次时间到时时P1.0P1.0取反。取反。定时器计数率定时器计数率fosc/12fosc/12,机器周期,机器周期

18、1s1s,每个机器周期定时器计数加每个机器周期定时器计数加1 1,1ms=1000us1ms=1000us需计数次数需计数次数10001000计数初值计数初值 65536-100065536-1000#includesbit P1_0=P10;void main(void)TMOD=0 x01;/*定时器0方式1*/TR0=1;/*启动T/C0*/for(;)TH0=(655361000)/256;/*装载计数初值*/TL0=(655361000)%256;do while(!TF0);/*查询等待TF0置位*/P1_0!P1_0;TF00;/*软件清TF0*/方法方法2:中断方式中断方式l用

19、定时器用定时器0的方式的方式1编程。编程。l每次中断程序电平,每次中断程序电平,P1.0取反,并且重新取反,并且重新装载计数初值。装载计数初值。#include#includesbit P1_0=P10;sbit P1_0=P10;void timer0(void)interrupt 1 using 1 /void timer0(void)interrupt 1 using 1 /*T/C0T/C0中断服务程序入口中断服务程序入口*/P1_0 P1_0!P1_0!P1_0;/*P1.0P1.0取反取反*/TH0=(655361000TH0=(655361000)/256/256;/*计数初值重

20、装载计数初值重装载*/TL0=(655361000TL0=(655361000)%256%256;void main(void)void main(void)TMOD=0 x01;/TMOD=0 x01;/*T/C0 T/C0工作在定时器方式工作在定时器方式1 1*/P1_0 P1_0 0 0;TH0=(655361000TH0=(655361000)/256/256;/*预置计数初值预置计数初值*/TL0=(655361000TL0=(655361000)%256%256;EA=1EA=1;/*CPUCPU开中断开中断*/ET0ET01 1;/*T/C0 T/C0开中断开中断*/TR0TR0

21、1 1;/*启动启动T/C0T/C0开始定时开始定时 */do while(1)do while(1);例例:在在P1.7 P1.7 端接有一个发光二极管,要求利用端接有一个发光二极管,要求利用T/CT/C控制,使控制,使LEDLED亮亮1s1s、灭、灭1s1s,周而复始。,周而复始。解:解:1s1s时间长,各种定时方式不能满足,使用复合方式。时间长,各种定时方式不能满足,使用复合方式。对对 6MHz 6MHz 方式方式1 1,1616位定时器最大定时间隔位定时器最大定时间隔 65536 65536 2us2us131.072ms131.072ms。定时定时100 ms100 ms,一个周期,

22、一个周期200ms,200ms,再计数再计数5 5次,达到次,达到1s1s。对对6 MHz 方式方式1 定时方式定时方式需要计数次数需要计数次数100 1000/2=50000,即,即初值为初值为 6553650000。方式方式2,采用计数,采用计数,初值,初值2565。#include#includesbit P1_0=P10;sbit P1_0=P10;sbit P1_7=P17;sbit P1_7=P17;timer0()interrupt timer0()interrupt 1 1 using using 1 1 /*T/C0T/C0中断服务程序中断服务程序*/P1_0 P1_0!P1

23、_0!P1_0;/*P1.0P1.0取反取反*/TH0=(6553650000TH0=(6553650000)/256/256;/*重载计数初值重载计数初值*/TL0=(6553650000TL0=(6553650000)%256;%256;timer1()interrupt timer1()interrupt 3 3 using using 2 2 /*T/C1T/C1中断服务程序中断服务程序*/P1_7P1_7!P1_7!P1_7;/*1s1s到,灯改变状态到,灯改变状态*/main()main()P1_7=0 P1_7=0;/*置灯初始灭置灯初始灭*/P1_0=1P1_0=1;/*保证第

24、一次反相便开始计数保证第一次反相便开始计数*/TMOD=0 x61;/TMOD=0 x61;/*T/C0 T/C0方式方式1 1定时,定时,T/C1T/C1方式方式2 2计数计数*/TH0=(6553650000TH0=(6553650000)/256/256;/*预置计数初值预置计数初值*/TL0=(6553650000TL0=(6553650000)%256%256;TH1=256-5;TH1=256-5;TL1=256-5;TL1=256-5;IP=0 x08;IP=0 x08;/*置优先级寄存器置优先级寄存器*/EA=1EA=1;/*CPUCPU开中断开中断*/ET0ET01 1;/*

25、T/C0 T/C0开中断开中断*/ET1ET11 1;/*T/C1 T/C1开中断开中断*/TR0TR01 1;/*启动启动T/C0T/C0*/TR1TR11 1;/*启动启动T/C1T/C1*/forfor(;)(;)例例 采用采用10MHz10MHz晶振,在晶振,在P1.0P1.0脚上输出周期为脚上输出周期为2.5s2.5s,占空比为,占空比为20%20%的脉冲信号。的脉冲信号。解:取定时器解:取定时器10ms,计数,计数250次需要次需要 2.5s。20%需要需要50次。其中高电平需要次。其中高电平需要50次,低电平次,低电平200次。每到次。每到50次次P1.0变为低电平,每到变为低电

26、平,每到250次次时时P1.0变为高电平。变为高电平。10ms需计数需计数 10X1000 X10/12=8333#include#include define uchar unsigned chardefine uchar unsigned charuchar time;uchar time;uchar period=250;uchar period=250;uchar high=50;uchar high=50;timer0()interrupt 1 using 1 /timer0()interrupt 1 using 1 /*T/C0T/C0中断服务程序中断服务程序*/TH0=(6553

27、68333TH0=(655368333)/256/256;/*重载计数初值重载计数初值*/TL0=(655368333TL0=(655368333)%256;%256;if(+time=high)P1.0=0;/if(+time=high)P1.0=0;/*高电平时间到变低高电平时间到变低*/else if(time=period)/else if(time=period)/*周期时间到变高周期时间到变高*/time=0;time=0;P1.0=1;P1.0=1;main()main()TMOD=0 x01;/TMOD=0 x01;/*定时器定时器0 0方式方式1 1*/TH0=(655368

28、333TH0=(655368333)/256/256;/*预置计数初值预置计数初值*/TL0=(655368333TL0=(655368333)%256%256;EA=1EA=1;/*CPUCPU开中断开中断*/ET0ET01 1;/*T/C0 T/C0开中断开中断*/TR0TR01 1;/*启动启动T/C0T/C0*/do while(1)do while(1);通信基本知识通信基本知识信息交换统称为信息交换统称为“通信通信”。并行通信:数据的各位同时传送。传送速度快,并行通信:数据的各位同时传送。传送速度快,传送线多,距离短。如打印机。传送线多,距离短。如打印机。串行通信:数据一位一位顺序

29、传送。串行通信:数据一位一位顺序传送。能够节省能够节省传输线,特别适用于数据位数较多和远距离数传输线,特别适用于数据位数较多和远距离数据传送。据传送。传送速度慢。传送速度慢。在计算机系统中,在计算机系统中,CPU和外部通信有两种通和外部通信有两种通信方式:并行通信和串行通信。信方式:并行通信和串行通信。按照串行数据的时钟控制方式,串行通信可按照串行数据的时钟控制方式,串行通信可分为异步通信和同步通信。分为异步通信和同步通信。两种通信方式的示意图两种通信方式的示意图 1 异步通信(异步通信(Asynchronous Communication)数据不连续传送,以字符(或字节)为单数据不连续传送,

30、以字符(或字节)为单位组成字符帧传送。位组成字符帧传送。重要指标:重要指标:字符帧(数据帧)字符帧(数据帧)波特率波特率字符帧(数据帧)字符帧(数据帧)由起始位、数据位、奇偶由起始位、数据位、奇偶校验位和停止位组成。校验位和停止位组成。异步通信的字符帧格式异步通信的字符帧格式 起始位起始位:位于数据帧开头,只占一位,始终:位于数据帧开头,只占一位,始终为逻辑为逻辑0低电平低电平,用于向接收设备表示发送,用于向接收设备表示发送端开始发送一帧信息。端开始发送一帧信息。数据位数据位:紧跟起始位之后,用户根据情况可:紧跟起始位之后,用户根据情况可取取5位、位、6位、位、7位或位或8位,位,低位在前高位

31、在低位在前高位在后后。奇偶校验位奇偶校验位:位于数据位后,仅占一位,由:位于数据位后,仅占一位,由用户根据需要选择。用户根据需要选择。停止位停止位:位于数据帧末尾,为逻辑:位于数据帧末尾,为逻辑1高电平高电平,通常可取通常可取1位、位、1.5位或位或2位,用于向接收端表位,用于向接收端表示一帧字符信息已发送完毕,也为发送下一示一帧字符信息已发送完毕,也为发送下一帧字符作准备。帧字符作准备。在串行通信中,发送端一帧一帧发送信息,在串行通信中,发送端一帧一帧发送信息,接收端一帧一帧接收信息。两相邻数据帧之接收端一帧一帧接收信息。两相邻数据帧之间可以没有空闲位,也可以有若干空闲位,间可以没有空闲位,

32、也可以有若干空闲位,由用户根据需要决定。由用户根据需要决定。波特率波特率(Baud)每秒钟传送二进制数码的位数,也叫比特数,每秒钟传送二进制数码的位数,也叫比特数,单位为单位为bit/s,即位,即位/秒。秒。波特率用于表征数据传输的速度。波特率用于表征数据传输的速度。波特率越高,数据传输速度越快,但和字符波特率越高,数据传输速度越快,但和字符的实际传输速率不同。的实际传输速率不同。字符的实际传输速率是指每秒内所传数据帧字符的实际传输速率是指每秒内所传数据帧的帧数,和数据帧格式有关。的帧数,和数据帧格式有关。收发方必须事先规定两件事:收发方必须事先规定两件事:字符格式:位数和奇偶校验字符格式:位

33、数和奇偶校验 波特率波特率异步通信的波特率为异步通信的波特率为509600bit/s。优点优点:不需要传送同步脉冲,数据帧长度不受限制,不需要传送同步脉冲,数据帧长度不受限制,所需设备简单。所需设备简单。缺点缺点:数据帧中因包含起始位和停止位而降低了有数据帧中因包含起始位和停止位而降低了有效数据的传输速率。效数据的传输速率。2 同步通信(同步通信(Synchronous Communication)数据连续传送,字符之间无空隙。数据连续传送,字符之间无空隙。时钟频率和波特率一致。时钟频率和波特率一致。同步通信中的数据帧和异步通信中的数据帧同步通信中的数据帧和异步通信中的数据帧不同,通常含有若干

34、个数据字符。不同,通常含有若干个数据字符。字符帧均由同步字符、数据字符和校验字符字符帧均由同步字符、数据字符和校验字符CRC三部分组成。在同步通信中,同步字符可三部分组成。在同步通信中,同步字符可以采用统一的标准格式,也可以由用户约定。以采用统一的标准格式,也可以由用户约定。同步通信的字符帧格式同步通信的字符帧格式 优点优点:数据传输速率较高,通常可达数据传输速率较高,通常可达56000bit/s或更或更高。异步通信的波特率为高。异步通信的波特率为509600bit/s。缺点缺点:要求发送时钟和接收时钟保持要求发送时钟和接收时钟保持严格同步严格同步。发。发送时钟除应和发送波特率保持一致外,还要

35、送时钟除应和发送波特率保持一致外,还要求把它同时传送到接收端去。求把它同时传送到接收端去。串行通信的制式串行通信的制式单工(单工(simplex)全双工(全双工(full duplex)半双工(半双工(half duplex)单工、半双工和全双工三种制式示意图单工、半双工和全双工三种制式示意图 半双工半双工:A站(发送器和接收器)和站(发送器和接收器)和B站(发送站(发送器和接收器)之间只有器和接收器)之间只有一个一个通信回路,数据可通信回路,数据可由由A站发送站发送B站接收或者站接收或者B站发送站发送A站接收。站接收。全双工全双工:A站(发送器和接收器)和站(发送器和接收器)和B站(发送站(

36、发送器和接收器)之间有器和接收器)之间有两个两个独立的通信回路,两独立的通信回路,两站都可以同时发送和接收数据。站都可以同时发送和接收数据。单工单工:A站(发送器)和站(发送器)和B站(接收器)之间形站(接收器)之间形成单向连接,数据只能由成单向连接,数据只能由A站传送站传送B站,而不能站,而不能由由B站传送到站传送到A站。站。8.3 8.3 串行口串行口全双工的异步通信串行口全双工的异步通信串行口4种工作方式,波特率由片内定时器种工作方式,波特率由片内定时器/计数器控计数器控制。制。每发送或接收一帧数据,均可发出中断请求。每发送或接收一帧数据,均可发出中断请求。除用于串行通信,除用于串行通信

37、,还可用来扩展并行还可用来扩展并行I/O口。口。串行口内部结构图串行口内部结构图SBUF是两个在物理上独立的接收、发送寄存是两个在物理上独立的接收、发送寄存器,一个用于存放接收到的数据,另一个用于器,一个用于存放接收到的数据,另一个用于存放欲发送的数据,可同时发送和接收数据。存放欲发送的数据,可同时发送和接收数据。两个缓冲器共用一个地址两个缓冲器共用一个地址99H,通过对,通过对SBUF的的读、写指令来区别是对接收缓冲器还是发送缓读、写指令来区别是对接收缓冲器还是发送缓冲器进行操作。冲器进行操作。串行口数据缓冲器串行口数据缓冲器SBUF CPU在在写写SBUF时,就是修改发送缓冲器的内时,就是

38、修改发送缓冲器的内容;容;读读SBUF,就是读接收缓冲器的内容。,就是读接收缓冲器的内容。接收或发送数据,是通过串行口对外的两条独接收或发送数据,是通过串行口对外的两条独立收发信号线立收发信号线RXD(P3.0)、)、TXD(P3.1)来实来实现的,因此可以同时发送、接收数据,为全双现的,因此可以同时发送、接收数据,为全双工制式。工制式。8.3.1 与串行口有关的与串行口有关的SFR1.串行口控制寄存器串行口控制寄存器SCON(Serial Control Register)字节地址字节地址98H,可位寻址。,可位寻址。单片机复位时,所有位单片机复位时,所有位全为全为0。(1 1)SM0SM0

39、、SM1SM1串行口串行口4 4种工作方式的选择位种工作方式的选择位 SM0 SM1 SM0 SM1 方式方式 功功 能能 说说 明明 0 00 0 0 0 同步移位寄存器方式(用于扩展同步移位寄存器方式(用于扩展I/OI/O口)口)0 10 1 1 10 1 10位异步收发,波特率可变(由定时器位异步收发,波特率可变(由定时器 控制)控制)1 01 0 2 11 2 11位异步收发,波特率为位异步收发,波特率为fosc/64fosc/64或或fosc/32fosc/32 1 11 1 3 11 3 11位异步收发,波特率可变(由定时器位异步收发,波特率可变(由定时器 控制)控制)(2 2)S

40、M2SM2 多机通信控制位多机通信控制位 用于方式用于方式2 2或方式或方式3 3中。中。当串行口以当串行口以方式方式2或方式或方式3接收接收时,时,如果如果SM2=1,只有当接收到的第只有当接收到的第9位数据(位数据(RB8)为)为“1”时,才将接收到的前时,才将接收到的前8位数据送入位数据送入SBUF,并置并置“1”RI,产生中断请求;当接收到的第产生中断请求;当接收到的第9位数据(位数据(RB8)为)为“0”时,时,则将接收到的前则将接收到的前8位数据丢弃。位数据丢弃。如果如果SM2=0,则不论第,则不论第9位数据是位数据是“1”还是还是“0”,都将前,都将前8位数据送入位数据送入SBU

41、F中,并置中,并置“1”RI,产生中断请求。,产生中断请求。在在方式方式1时,如果时,如果SM2=1,则只有收到停止位时才,则只有收到停止位时才会激活会激活RI。在在方式方式0时,时,SM2必须为必须为0。(3)REN串行口接收允许位串行口接收允许位 由软件置由软件置“1”或清或清“0”。REN=1 允许串行口接收数据。允许串行口接收数据。REN=0 禁止串行口接收数据。禁止串行口接收数据。(4)TB8发送的第发送的第9位数据位数据方式方式2和和方式方式3时,时,TB8是要发送的第是要发送的第9位数据,位数据,可作为可作为奇偶校验位奇偶校验位使用,也可作为使用,也可作为地址帧地址帧或或数据帧数

42、据帧的标志。的标志。TB8=1为地址帧,为地址帧,TB8=0为数据帧。为数据帧。(5)RB8接收到的第接收到的第9位数据位数据方式方式2和和方式方式3时,时,RB8存放接收到的第存放接收到的第9位数位数据。据。方式方式1时时,如果,如果SM2=0,RB8是接收到的停止是接收到的停止位。位。方式方式0时时,不使用,不使用RB8。(6)TI发送中断标志位发送中断标志位方式方式0时时,串行口发送第,串行口发送第8位数据结束时由硬件置位数据结束时由硬件置“1”。其它工作方式其它工作方式,串行口发送停止位的开始时置,串行口发送停止位的开始时置“1”。TI=1,表示一帧数据发送结束,可供软件查询,表示一帧

43、数据发送结束,可供软件查询,也可申请中断。也可申请中断。CPU响应中断后响应中断后,向向SBUF写入写入要发送的下一帧数据。要发送的下一帧数据。TI必须由软件清必须由软件清“0”。(7)RI接收中断标志位接收中断标志位 方式方式0时时,接收完第,接收完第8位数据时,位数据时,RI由硬件置由硬件置1。其它工作方式其它工作方式,串行接收到停止位时,该位置,串行接收到停止位时,该位置“1”。RI=1,表示一帧数据接收完毕,并申请中断,表示一帧数据接收完毕,并申请中断,CPU从接收从接收SBUF取走数据。该位状态也可软取走数据。该位状态也可软件查询。件查询。RI必须由软件清必须由软件清“0”。2.电源

44、控制寄存器电源控制寄存器PCON(Power Control Register)SMOD:波特率加倍控制位。:波特率加倍控制位。1,波特率加倍;,波特率加倍;0,则不加倍。,则不加倍。字节地址为字节地址为87H,没有位寻址功能。,没有位寻址功能。8.3.2 串行口的工作方式串行口的工作方式1 方式方式0(移位寄存器输入(移位寄存器输入/输出方式)输出方式)1.串行数据通过串行数据通过RXD(P3.0)输出,输出,TXD(P3.1)用于输出移位时钟脉冲。用于输出移位时钟脉冲。2.8位数据为一帧,低位在前,不设起始位和停止位,位数据为一帧,低位在前,不设起始位和停止位,先发送或接收最低位。先发送或

45、接收最低位。3.固定波特率固定波特率B=fosc/12。帧格式如下:。帧格式如下:方式方式0发送发送 当当CPU执行一条将数据写入发送缓冲器执行一条将数据写入发送缓冲器SBUF的指令的指令时,产生一个正脉冲,串行口即把时,产生一个正脉冲,串行口即把SBUF中的中的8位数位数据以据以fosc/12的固定波特率从的固定波特率从RXD引脚串行输出引脚串行输出,低,低位在先,位在先,TXD引脚输出同步移位脉冲引脚输出同步移位脉冲,发送完,发送完8位数位数据置据置“1”中断标志位中断标志位TI。时序如下图所示。时序如下图所示。方式方式0接收接收 REN=1,接收数据,接收数据,REN=0,禁止接收。,禁

46、止接收。REN=1REN=1,允许接收,允许接收。向串口的。向串口的SCONSCON写入控制字(置为方式写入控制字(置为方式0 0,并置,并置“1”REN1”REN位,同时位,同时RI=0RI=0)时,产生一个正脉冲,串行口即开始接)时,产生一个正脉冲,串行口即开始接收数据。收数据。RXDRXD为数据输入端,为数据输入端,TXDTXD为移位脉冲信号输出端,接收器为移位脉冲信号输出端,接收器也以也以fosc/12fosc/12的固定波特率的固定波特率采样采样RXDRXD引脚的数据信息,当收到引脚的数据信息,当收到8 8位位数据时置数据时置“1”RI1”RI,表示一帧数据接收完。时序如下图所示。,

47、表示一帧数据接收完。时序如下图所示。方式方式0下下,SCON中的中的TB8、RB8位没有用到,位没有用到,发送或接收完发送或接收完8位数据由硬件置位数据由硬件置“1”TI或或RI,CPU响应中断。响应中断。TI或或RI须由用户软件清须由用户软件清“0”,可用如下指令:可用如下指令:CLR TI;TI位清位清“0”CLR RI;RI位清位清“0”方式方式0时,时,SM2位必须为位必须为0。2 方式方式1(10位异步通信方式)位异步通信方式)1 一帧一帧10位:位:1位起始位位起始位(0),8位数据位,位数据位,1位停止位位停止位(1),先发送或接收最低位。帧格式如下:,先发送或接收最低位。帧格式

48、如下:2 RXD:接收数据端。:接收数据端。TXD:发送数据端。:发送数据端。3 波特率可变,定时器波特率可变,定时器1的波特率信号经的波特率信号经16或或32分频。分频。波特率可由以下公式计算得到:波特率可由以下公式计算得到:方式方式1波特率波特率2SMOD .(定时器(定时器1的溢出率)的溢出率)/32 其中其中SMOD为为PCON的最高位。定时器的最高位。定时器1的方式的方式0、1、2都可以使用。溢出率为定时时间的倒数值。都可以使用。溢出率为定时时间的倒数值。方式方式1发送发送 方式方式1输出时,数据由输出时,数据由TXD输出,一帧信息为输出,一帧信息为10位,位,1位起始位位起始位0,

49、8位数据位(先低位)和位数据位(先低位)和1位停止位位停止位1。当执行一条数据当执行一条数据写发送缓冲器写发送缓冲器SBUF的指令,就启动发的指令,就启动发送。图中送。图中TX时钟的频率就是发送的波特率。时钟的频率就是发送的波特率。发送开始时,内部发送控制信号变为有效。将起始位向发送开始时,内部发送控制信号变为有效。将起始位向TXD输出,此后,每经过一个输出,此后,每经过一个TX时钟周期,便产生一时钟周期,便产生一个移位脉冲,并由个移位脉冲,并由TXD输出一个数据位。输出一个数据位。8位数据位全位数据位全部发送完毕后,置部发送完毕后,置“1”TI。方式。方式1发送数据的时序如下发送数据的时序如

50、下图所示。图所示。方式方式1接收接收 数据从数据从RXD(P3.0)脚输入。当检测到)脚输入。当检测到起始位的负起始位的负跳变跳变时,开始接收数据。时,开始接收数据。定时控制信号有两种:接收移位时钟(定时控制信号有两种:接收移位时钟(RXRX时钟,频时钟,频率和波特率相同)和位检测器采样脉冲(频率是率和波特率相同)和位检测器采样脉冲(频率是RXRX时钟的时钟的1616倍,倍,1 1位数据期间,有位数据期间,有1616个采样脉冲),当个采样脉冲),当采样到采样到RXDRXD端从端从1 1到到0 0的跳变时就启动检测器,的跳变时就启动检测器,接收的接收的值是值是3 3次连续采样(第次连续采样(第7

51、 7、8 8、9 9个脉冲时采样)进行个脉冲时采样)进行表决以确认是否是真正的起始位表决以确认是否是真正的起始位(负跳变)的开始。(负跳变)的开始。当一帧数据接收完,须同时满足当一帧数据接收完,须同时满足两个条件两个条件,接,接收才真正有效。收才真正有效。RI=0,即上一帧数据接收完成时,即上一帧数据接收完成时,RI=1发出发出的中断请求已被响应,的中断请求已被响应,SBUF中的数据已被取中的数据已被取走,说明走,说明“接收接收SBUF”已空。已空。SM2=0或或收到的停止位收到的停止位=1(方式(方式1时,停止时,停止位已进入位已进入RB8),则收到的数据装入),则收到的数据装入SBUF和和

52、RB8(RB8装入停止位),且置装入停止位),且置“1”中断标志中断标志RI。若这两个条件不同时满足,收到的数据将丢失。若这两个条件不同时满足,收到的数据将丢失。3 方式方式2(11位异步接收位异步接收/发送方式)发送方式)11位异步通信接口。每帧数据均为位异步通信接口。每帧数据均为11位,位,1位位起始位起始位0,8位数据位(先低位),位数据位(先低位),1位可程控位可程控的第的第9位数据和位数据和1位停止位。帧格式如下:位停止位。帧格式如下:方式方式2波特率波特率2SMOD .(fosc/64)方式方式2发送发送 发送前,先根据通信协议由软件设置发送前,先根据通信协议由软件设置TB8(例(

53、例如,双机通信时的奇偶校验位或多机通信时如,双机通信时的奇偶校验位或多机通信时的地址的地址/数据的标志位)。数据的标志位)。方式方式2发送数据波形如图所示。发送数据波形如图所示。方式方式2接收接收 SM0、SM1=10,且且REN=1。数据由。数据由RXD端输端输入,接收入,接收11位信息。当位检测到位信息。当位检测到RXD从从1到到0的负跳变,并判断起始位有效后,开始接收的负跳变,并判断起始位有效后,开始接收一帧信息。在接收完第一帧信息。在接收完第9位数据后,需满足两位数据后,需满足两个条件,才能将接收到的数据送入个条件,才能将接收到的数据送入SBUF。(1)RI=0,意味着接收缓冲器为空。

54、,意味着接收缓冲器为空。(2)SM2=0或接收到的第或接收到的第9位数据位位数据位RB8=1。当上述两个条件满足时,接收到的数据送入当上述两个条件满足时,接收到的数据送入SBUF(接收缓冲器),第(接收缓冲器),第9位数据送入位数据送入RB8,并置并置“1”RI。若不满足两个条件,接收的信。若不满足两个条件,接收的信息将被丢弃。息将被丢弃。4 方式方式3(11位异步接收位异步接收/发送方式)发送方式)SM0、SM1=11,串口为方式,串口为方式3。波特率可变的波特率可变的11位异步通信方式,除位异步通信方式,除波特率外波特率外,方式,方式3和方式和方式2相同。方式相同。方式3的时序见方式的时序

55、见方式2。方式方式3波特率波特率2SMOD .(定时器(定时器1的溢出率)的溢出率)/328.3.3 串行口的初始化步骤串行口的初始化步骤(1)确定定时器)确定定时器1的工作方式的工作方式编程编程TMOD寄寄存器。存器。(2)计算定时器)计算定时器1的初值,装载的初值,装载TH1和和TL1。(3)启动定时器)启动定时器1编程编程TCON中的中的TR1位。位。(4)确定串行口的控制编程)确定串行口的控制编程SCON。(5)串行口在中断方式工作时,需开串行口在中断方式工作时,需开CPU中中断和源中断断和源中断编程编程IE寄存器。寄存器。串行口常用波特率串行口常用波特率串行口串行口工作方工作方式式波

56、特率波特率fosc=6MHzfosc=12MHzfosc=11.0592MHzSMODTMODTH1SMODTMODTH1SMODTMODTH1方式方式01M 方式方式2375k1187.5k10方式方式1 或或方式方式362.5k120FFH19.2k120FDH9.6k020FDH4.8k120F3H020FAH2.4k120F3H020F3H020F4H1.2k120E6H020E6H020E8H600120CCH020CCH020D0H300020CCH02098H020A0H137.51201DH0201DH0202EH11002072H010FEEBH020FEFFH8.3.4 8.3.4 应用举例应用举例#Include void main(void)unsigned char a;TMOD=0 x20;/*使用定时器使用定时器1,定时方式,定时方式2*/TL1=0 xfd;TH1=0 xfd;/*在在11.059MHz下,设置波特率下,设置波特率9600*/SCON=0 xd8;PCON=0 x00;/*串口方式串口方式3*/TR1=1;/*开定时器开定时器1*/while(1);while(RI=0);/*等待接收数据等待接收数据 */RI=0;a=SBUF;SBUF=a;/*发送接收到的数据发送接收到的数据 */while(TI=0);TI=0

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!