单片机第3章-2_第1页
单片机第3章-2_第2页
单片机第3章-2_第3页
单片机第3章-2_第4页
单片机第3章-2_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、3.3 MCS-51单片机的定时器单片机的定时器/计数器计数器 3.3.1 定时器定时器/计数器计数器 1 1基本概念基本概念(1 1)计数)计数:计数是指对外部事件的个数进行计量。其实质就是计数是指对外部事件的个数进行计量。其实质就是对外部输入脉冲的个数进行计量。实现计数功能的器件称为对外部输入脉冲的个数进行计量。实现计数功能的器件称为计数器。计数器。(2 2)定时:)定时:8051单片机中的定时器和计数器是一个部件,只单片机中的定时器和计数器是一个部件,只不过计数器记录的是外界发生的事件,而定时器则是由单片不过计数器记录的是外界发生的事件,而定时器则是由单片机内部提供一个非常稳定的计数源进

2、行定时的。这个计数源机内部提供一个非常稳定的计数源进行定时的。这个计数源是由单片机的晶振经过是由单片机的晶振经过12分频后获得的一个脉冲源。所以定分频后获得的一个脉冲源。所以定时器计数脉冲的时间间隔与晶振有关。时器计数脉冲的时间间隔与晶振有关。(3 3)定时的种类)定时的种类 软件定时软件定时:利用执行一个循环程序进行时间延迟。其特点是定利用执行一个循环程序进行时间延迟。其特点是定时时间精确,不需外加硬件电路,但占用时时间精确,不需外加硬件电路,但占用CPU时间。因此软件时间。因此软件定时的时间不宜过长。定时的时间不宜过长。 硬件定时硬件定时:利用硬件电路实现定时。其特点是不占用利用硬件电路实

3、现定时。其特点是不占用CPU时间,时间,通过改变电路元器件参数来调节定时,但使用不够灵活方便。通过改变电路元器件参数来调节定时,但使用不够灵活方便。对于时间较长的定时,常用硬件电路来实现。对于时间较长的定时,常用硬件电路来实现。 可编程定时器可编程定时器:通过专用的定时器通过专用的定时器/计数器芯片实现。其特点是计数器芯片实现。其特点是通过对系统时钟脉冲进行计数实现定时,定时时间可通过程序通过对系统时钟脉冲进行计数实现定时,定时时间可通过程序设定的方法改变,使用灵活方便。也可实现对外部脉冲的计数设定的方法改变,使用灵活方便。也可实现对外部脉冲的计数功能。功能。 MCS-51单片机内部有两个单片

4、机内部有两个16位可编程的定时器位可编程的定时器/计数器,简计数器,简称为称为T0和和T1,均可作定时器用也可计数器,它们均是二进制加,均可作定时器用也可计数器,它们均是二进制加法计数器,当计数器计满回零时能自动产生溢出中断请求,表法计数器,当计数器计满回零时能自动产生溢出中断请求,表示定时时间已到或计数已终止。适用于定时控制、延时、外部示定时时间已到或计数已终止。适用于定时控制、延时、外部计数和检测等。计数和检测等。计数器计数器:对引脚对引脚T0(P 3.4 )和)和T1(P3.5.)输入的外部脉冲信号)输入的外部脉冲信号计数,当输入脉冲信号从计数,当输入脉冲信号从1到到0的负跳变时,计数器

5、就自动加的负跳变时,计数器就自动加1。计数的最高频率一般为振荡频率的计数的最高频率一般为振荡频率的1/24。定时器定时器:对系统晶振振荡脉冲的对系统晶振振荡脉冲的12分频输出进行计数。分频输出进行计数。 (1 1)定时器)定时器/ /计数器的结构计数器的结构组成:组成:16位加法计数器、工作方式寄存器位加法计数器、工作方式寄存器TMOD和控制寄存器和控制寄存器TCON。 T0: TL0(低(低8位)和位)和TH0(高(高8位)位) T1: TL1(低(低8位)和位)和TH1(高(高8位)位)2MCS-51内部定时器内部定时器/计数器计数器 8051单片机内部的定时器单片机内部的定时器/计数器的

6、结构如下图所示计数器的结构如下图所示。(2)控制寄存器)控制寄存器TCON (88H) TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0TF0/TF1:T0/1计数溢出标志位。可用于申请中断或供计数溢出标志位。可用于申请中断或供CPU查查询。在进入中断服务程序时会自动清零;但在查询方式时必须询。在进入中断服务程序时会自动清零;但在查询方式时必须软件清零。软件清零。 =1 :计数溢出计数溢出; =0 :计数未满。:计数未满。TR0/TR1:T0/1启停控制位。启停控制位。 =1 :启动计数;:启动计数; =0: 停止计数。停止计数。IE0/IE1和和IT0/IT1:用于管理外部中断

7、(前面已介绍过)。:用于管理外部中断(前面已介绍过)。 M1,M0:工作方式选择位:工作方式选择位 。 =00:13位定时器位定时器/计数器;计数器; =01:16位定时器位定时器/计数器(常用);计数器(常用); =10:可自动重装的:可自动重装的8位定时器位定时器/计数器(常用);计数器(常用); =11:T0 分为分为2个个8位定时器位定时器/计数器;仅适用于计数器;仅适用于T0。 C/T :定时方式:定时方式/计数方式选择位。计数方式选择位。 = 1:选择计数器工作方式,对:选择计数器工作方式,对T0/T1引脚输入的外部事件引脚输入的外部事件的负脉冲计数;的负脉冲计数; = 0 :选择

8、定时器工作方式,对机器周期脉冲计数定时。:选择定时器工作方式,对机器周期脉冲计数定时。 如下页图所示。(3 3)工作方式寄存器)工作方式寄存器TMOD GATE C / T M1 M0 GATE C / T M1 M0T1T2TGATE:门控位,定时器:门控位,定时器/计数器的启计数器的启/停可由软件与硬件两者控制停可由软件与硬件两者控制 = 0 :软件控制,只由:软件控制,只由TCON中的启中的启/停控制位停控制位TR0/TR1控制定控制定时器时器/计数器的启计数器的启/停。停。 = 1 :硬件控制,由外部中断请求信号:硬件控制,由外部中断请求信号 / 和和TCON中的中的启启/停控制位停控

9、制位TR0/TR1组合状态控制定时器组合状态控制定时器/计数器的启计数器的启/停。停。 其控制逻辑如下图所示。其控制逻辑如下图所示。0INT1INT3.3.2 3.3.2 定时器定时器/ /计数器的工作方式计数器的工作方式 8051单片机的定时器单片机的定时器/计数器共有四种工作模式,现以计数器共有四种工作模式,现以T0为例加为例加以介绍,以介绍,T1与与T0的工作原理相同,但方式的工作原理相同,但方式3下下T1停止计数。方式(如停止计数。方式(如F0)和用户定义名称等几种)和用户定义名称等几种方式。方式。1工作方式工作方式0( M1M0=00 ,13位定时器位定时器/计数器)计数器) 由由T

10、H0的全部的全部8位和位和TL0的低的低5位(位( TL0的高的高3位未用)构成位未用)构成13位位加加1计数器,当计数器,当TL0低低5位计数满时直接向位计数满时直接向TH0进位,并当全部进位,并当全部13位计位计数满溢出时,溢出标志位数满溢出时,溢出标志位TF0置置“1”。2工作方式工作方式1 ( M1M0=01 ,16位定时器位定时器/计数器)计数器) 由由TH0和和TL0构成构成16位加位加1计数器,其他特性与工作方式计数器,其他特性与工作方式0相同。相同。3工作方式工作方式2 ( M1M0=10 ,自动重装计数初值的,自动重装计数初值的8位定位定时器时器/计数器)计数器) 16位定时

11、器位定时器/计数器被拆成两个计数器被拆成两个8位寄存器位寄存器TH0和和TL0,CPU在对在对它们初始化时必须装入相同的定时器它们初始化时必须装入相同的定时器/计数器初值。以计数器初值。以TL0作计数器,作计数器,而而TH0作为预置寄存器。当计数满溢出时,作为预置寄存器。当计数满溢出时,TF0置置“1”,同时,同时TH0将将计数初值以硬件方法自动装入计数初值以硬件方法自动装入TL0。这种工作方式很适合于那些重复计。这种工作方式很适合于那些重复计数的应用场合(如串行数据通信的波特率发生器)。数的应用场合(如串行数据通信的波特率发生器)。4工作方式工作方式3 ( M1M0=11 , 2个个8位定时

12、器位定时器/计数器,仅适用计数器,仅适用于于T0)TL0:8位定时器位定时器/计数器,使用计数器,使用T0原有控制资源原有控制资源TR0和和TF0,其功能和操作与方式其功能和操作与方式0或方式或方式1完全相同。完全相同。TH0:只能作为:只能作为8位定时器,借用位定时器,借用T1的控制位的控制位TR1和和TF1,只能,只能对片内机器周期脉冲计数。对片内机器周期脉冲计数。 在方式在方式3模式下,定时器模式下,定时器/计数器计数器0可以构成两个定时器或可以构成两个定时器或者一个定时器和一个计数器。者一个定时器和一个计数器。 T0方式方式3下的下的T1方式方式2,因定时初值能自动恢复,用作波,因定时

13、初值能自动恢复,用作波特率发生器更为合适。特率发生器更为合适。 定时器定时器/计数器可按片内机器周期定时,也可对由计数器可按片内机器周期定时,也可对由T0/T1引脚输入一个负脉冲进行加法计数。在应用时,其工引脚输入一个负脉冲进行加法计数。在应用时,其工作方式和工作过程均可通过程序设定和控制,因此,定时器作方式和工作过程均可通过程序设定和控制,因此,定时器/计数器在工作前必须先对其进行初始化,计算和设置初值。计数器在工作前必须先对其进行初始化,计算和设置初值。 1. 定时器定时器T0/T1 中断申请过程中断申请过程 (1)在已经开放)在已经开放T0/T1中断允许且已被启动的前提下,中断允许且已被

14、启动的前提下,T0/T1加加1计满溢出时计满溢出时 TF0/TF1标志位自动置标志位自动置“1” ; (2)CPU 检测到检测到TCON中中TF0/TF1变变“1”后后,将产生指将产生指令:令:LCALL 000BH/LCALL 001BH 执行中断服务程序;执行中断服务程序; (3)TF0/TF1标志位由硬件自动清标志位由硬件自动清“0”,以备下次中断申以备下次中断申请。请。3.3.3 定时器定时器/计数器的应用计数器的应用 2. 定时器定时器/计数器初始化的步骤计数器初始化的步骤 (1)写)写TMOD,设置定时器,设置定时器/计数器的工作方式;计数器的工作方式; (2)计算定时器)计算定时

15、器/计数器的初值,写入计数器的初值,写入TH0/TH1、TL0/TL1。 (3)设置)设置IE、IP,以开放相应的中断和设定中断优先级。,以开放相应的中断和设定中断优先级。 3. 定时器定时器/计数器的定时器计数器的定时器/计数器范围计数器范围 (1 1)工作方式)工作方式0 0:13位定时器位定时器/计数器方式计数器方式 最大计数值最大计数值= 213 = 8192 (2 2)工作方式)工作方式1 1:16位定时器位定时器/计数器方式计数器方式 最大计数值最大计数值= 216 = 65536 (3)工作方式工作方式2和工作方式和工作方式3:8位的定时器位的定时器/计数器方式因此,计数器方式因

16、此, 最大计数值最大计数值= 28 = 256 3. 计数器初值的计算计数器初值的计算 方法:方法:用最大计数量减去需要的计数次数。即:用最大计数量减去需要的计数次数。即: TC=M C 其中:其中:TC计数器需要预置的初值;计数器需要预置的初值; M计数器的模值(最大计数值);计数器的模值(最大计数值); 方式方式0时,时,M=213;方式;方式1时,时,M=216;方式;方式2, 3时,时,M=28; C计数器计满回计数器计满回0所需的计数值,即设计任务要求的计数值。所需的计数值,即设计任务要求的计数值。例如:例如:流水线上一个包装是流水线上一个包装是12盒,要求每到盒,要求每到12盒就产

17、生一个动盒就产生一个动作,用单片机的工作方式作,用单片机的工作方式0来控制,则应当预置的初值为:来控制,则应当预置的初值为: TC = M C = 213 12=81804. 定时器初值的计算定时器初值的计算 定时时间的计算公式为定时时间的计算公式为: T=(M TC)T0 (或或TC=M T/T0 )其中:其中:T定时器的定时时间,即设计任务要求的定时时间;定时器的定时时间,即设计任务要求的定时时间; T0计数器计数脉冲的周期,即单片机系统主频周期计数器计数脉冲的周期,即单片机系统主频周期的的12倍;倍; M计数器的模值;计数器的模值; TC定时器需要预置的初值。定时器需要预置的初值。 若设

18、初值若设初值TC=0,则定时器定时时间为最大。若设单片机系,则定时器定时时间为最大。若设单片机系统主频为统主频为12MHz,则各种工作方式定时器的最大定时时间为:,则各种工作方式定时器的最大定时时间为:工作方式工作方式0 0: Tmax=2131 s=8.192ms工作方式工作方式1 1: Tmax=2161 s=65.536ms工作方式工作方式2 2和和3 3:Tmax=281 s=0.256ms 例例 设外部有一个脉冲源。编制程序,对外部脉冲源进行计数并设外部有一个脉冲源。编制程序,对外部脉冲源进行计数并显示。显示。解:解:将外部计数源连到引脚将外部计数源连到引脚T1上,可用上,可用LED

19、将计数的值显示出将计数的值显示出来,我们用来,我们用P1口连接的口连接的8个个LED来显示计到的数据。来显示计到的数据。程序如下程序如下: ORG 0000H AJMP START; 转入主程序转入主程序 ORG 0030H START: MOV SP, #60H; 设置堆栈指针设置堆栈指针 MOV TMOD, #60H ; 定时器定时器/计数器计数器1作计数用作计数用 01100000B MOV TL1,#00H MOV TH1,#00H SETB TR1 ; 启动计数器启动计数器1开始运行开始运行 LOOP: MOV A, TL1 ; 读计数器读计数器1的计数值送的计数值送A MOV P1

20、, A ; 将计数值输出到将计数值输出到P1口,驱动口,驱动LED显示显示 AJMP LOOP ; 转回转回LOOP END5. 定时器定时器/计数器应用举例计数器应用举例郑州大学 P126 例3.6 设一只发光二极管LED和8051的P1.0脚相连。当当P1.0脚是高电平时,LED不亮;当P1.0脚是低电平时,LED亮。编制程序用定时器来实现发光二极管LED的闪烁功能。已知单片机系统主频为12MHz。解:解:设置LED每60ms闪烁1次。选择定时器/计数器0工作在方式1。此时定时器对系统主频的12分频脉冲计数。T0=1微秒, TC=M-T/T0=5536=15A0H郑州大学方法方法1:用查询

21、方式:用查询方式 ORG 0000H MOV TH0,#15H AJMP START MOV TL0,#0A0H ORG 0030H SETB TR0START:MOV SP,#60H AJMP LOOP MOV P1,#0FFH END MOV TMOD,#01H ;00000001 MOV TH0,#15H MOV TL0,#0A0H SETB TR0LOOP: JBC TF0,NEXT AJMP LOOPNEXT: CPL P1.0郑州大学方法方法2:用中断方式实现:用中断方式实现 ORG 0000H TIME0:PUSH ACC AJMP START PUSH PSW ORG 000B

22、H CPL P1.0 AJMP TIME0 MOV TH0,#15H ORG 0030H MOV TL0,#0A0HSTART:MOV SP,#60H SETB TR0 MOV P1,#0FFH POP PSW MOV TMOD,#01H POP ACC MOV TH0,#15H RETI MOV TL0,#0A0H END SETB EA SETB ET0 SETB TR0LOOP: AJMP LOOP 例例 设置设置LED每每1s闪烁一次。已知单片机系统主频为闪烁一次。已知单片机系统主频为12MHz。解:解:定时器定时器/计数器的最长的定时是计数器的最长的定时是65.536ms,无法实,无

23、法实现现1s的定时。可以采用软件计数器来进行设计。的定时。可以采用软件计数器来进行设计。设计思想:设计思想:定义一个软件计数器单元定义一个软件计数器单元30H,先用定时器,先用定时器/计数计数器器0做一个做一个50ms的定时器,定时时间到了以后将软件计数器中的定时器,定时时间到了以后将软件计数器中的值加的值加1,如果软件计数器计到了,如果软件计数器计到了20,取反,取反P1.0,并清掉软件,并清掉软件计数器中的值,否则直接返回。则完成了计数器中的值,否则直接返回。则完成了20次定时中断才取反次定时中断才取反一次一次P1.0,因此定时时间就为,因此定时时间就为2050=1000ms=1s。定时器

24、定时器/计数器计数器0采用工作方式采用工作方式1,其初值为:,其初值为: 216 50ms/1 s=65536 50000=15536=3CB0H电路图如下:电路图如下:程序如下:程序如下: ORG 0000H AJMP START ; 转入主程序转入主程序 ORG 000BH ; 定时器定时器/计数器计数器0的中断服务程序入口地址的中断服务程序入口地址 AJMP TIME0 ; 跳转到真正的定时器中断服务程序处跳转到真正的定时器中断服务程序处 ORG 0030H START: MOV SP, #60H ; 设置堆栈指针设置堆栈指针 MOV P1, #0FFH ; 关发光二极管关发光二极管LE

25、D(使其灭)(使其灭) MOV 30H, #00H ; 软件计数器预清软件计数器预清0 MOV TMOD, # 01H ; 定时器定时器/计数器计数器0工作于方式工作于方式1 MOV TH0, #3CH ; 设置定时器设置定时器/计数器的初值计数器的初值 MOV TL0, #0B0H SETB EA ; 开总中断允许开总中断允许 SETB ET0 ; 开定时器开定时器/计数器计数器0中断允许中断允许 SETB TR0; 启动定时器启动定时器/计数器计数器0 LOOP: AJMP LOOP ; 循环等待循环等待(真正工作时,这里可写任意其他程序)(真正工作时,这里可写任意其他程序)定时器定时器/

26、 /计数器计数器0 0的中断服务程序如下的中断服务程序如下: TIME0: PUSH ACC ; 将将PSW和和ACC推入堆栈保护推入堆栈保护 PUSH PSW INC 30H ; 软件计数器加软件计数器加1 MOV A, 30H CJNE A, #20, T_LP2 ; 软件计数器单元中的值到了软件计数器单元中的值到了20了吗?了吗? 到了,继续执行到了,继续执行; 否则,转入否则,转入T_LP2 T_LP1: CPL P1.0 ; 到了,到了,P1.0取反取反 MOV 30H, #00H; 清软件计数器清软件计数器 T_LP2: MOV TH0, #3CH; 重置定时器重置定时器/计数器的

27、初值计数器的初值 MOV TL0, #0B0H POP PSW ; 恢复恢复PSW和和ACC POP ACC RETI; 中断返回中断返回 END3.4 MCS-51 3.4 MCS-51 单片机的串行通信单片机的串行通信 3.4.1 3.4.1 概述概述1.1.通信通信 通信:通信:单片机与外界进行信息交换统称为通信。单片机与外界进行信息交换统称为通信。80518051单片机的通信方式有两种:单片机的通信方式有两种:并行通信:并行通信:数据的各位同时发送或接收。特点是传送速度快、效数据的各位同时发送或接收。特点是传送速度快、效率高,但成本高。适用于短距离传送数据。计算机内部的数率高,但成本高

28、。适用于短距离传送数据。计算机内部的数据传送一般均采用并行方式。据传送一般均采用并行方式。串行通信:串行通信:数据一位一位顺序发送或接收。特点是传送速度慢,数据一位一位顺序发送或接收。特点是传送速度慢,但成本低。适用于较长距离传送数据。计算机与外界的数据但成本低。适用于较长距离传送数据。计算机与外界的数据传送一般均采用串行方式。传送一般均采用串行方式。 2. 2. 数据通信的制式数据通信的制式单工方式单工方式:数据仅按一个固定方向传送;数据仅按一个固定方向传送;半双工方式半双工方式:数据可实现双向传送,但不能同时进行;数据可实现双向传送,但不能同时进行;全双工方式全双工方式:允许双方同时进行数

29、据双向传送;允许双方同时进行数据双向传送;多工方式多工方式:在同一线路上实现资源共享。在同一线路上实现资源共享。 3. 3. 串行通信的分类串行通信的分类 串行数据通信按数据传送方式可分为串行数据通信按数据传送方式可分为异步通信异步通信和和同步通信同步通信两种形式:两种形式:同步方式:同步方式:以以数据块数据块为单位进行数据传送为单位进行数据传送,包括同步字符、数,包括同步字符、数据块和校验字符据块和校验字符CRCCRC。优点是数据传输速率较高,缺点是要求发。优点是数据传输速率较高,缺点是要求发送时钟和接收时钟保持严格同步。数据格式如下图所示。送时钟和接收时钟保持严格同步。数据格式如下图所示。

30、 异步方式异步方式:以以字符为单位进行数据传送,字符为单位进行数据传送,每一个字符均按固定每一个字符均按固定的字符格式传送,又被称为帧。优点是不需要传送同步脉冲,的字符格式传送,又被称为帧。优点是不需要传送同步脉冲,可靠性高,所需设备简单;缺点是字符帧中因包含有起始位和可靠性高,所需设备简单;缺点是字符帧中因包含有起始位和停止位而降低了有效数据的传输速率。停止位而降低了有效数据的传输速率。数据格式如下图所示:数据格式如下图所示:4. 4. 串行数据通信的波特率串行数据通信的波特率 波特率是指每秒钟传送信号的数量,单位为波特(波特率是指每秒钟传送信号的数量,单位为波特(Baud)。)。而每秒钟传

31、送二进制数的信号数(即二进制数的位数)定义为而每秒钟传送二进制数的信号数(即二进制数的位数)定义为比特率,单位是比特率,单位是bps(bit per second)或写成)或写成b/s(位(位/秒)。秒)。 在单片机串行通信中,传送的信号是二进制信号,波特率在单片机串行通信中,传送的信号是二进制信号,波特率与比特率数值上相等。单位采用与比特率数值上相等。单位采用bps。例如,异步串行通信的数据传送的速率是例如,异步串行通信的数据传送的速率是120字符字符/秒,而每个字秒,而每个字符规定包含符规定包含10位数字,则传输波特率为:位数字,则传输波特率为: 120字符字符/秒秒 10位位/字符字符=

32、1200位位/秒秒= 1200bps3.4.2 MCS-513.4.2 MCS-51的串行口的串行口 MCS-51单片机内部有一个全双工的串行通信口(单片机内部有一个全双工的串行通信口(P3.0、P3.1) ,既可作,既可作UART(通用异步接收(通用异步接收/发送器)用,也可作同发送器)用,也可作同步移位寄存器使用,还可用于网络通信,其帧格式可有步移位寄存器使用,还可用于网络通信,其帧格式可有8位、位、10位和位和11位,并能设置各种波特率。位,并能设置各种波特率。1 1串行口寄存器结构串行口寄存器结构 (1)两个物理上独立的同名的接收)两个物理上独立的同名的接收/发送缓冲寄存器发送缓冲寄存

33、器SBUF 指令指令 MOV SBUF,A 启动一次数据发送启动一次数据发送, 指令指令 MOV A,SBUF 完成一次数据接收完成一次数据接收, 即向发送缓冲器即向发送缓冲器SBUF写入数据即可写入数据即可发送数据,从接收缓冲器发送数据,从接收缓冲器SBUF读出数据即可接收数据。读出数据即可接收数据。 (2)输入和输出移位寄存器和控制器等组成。)输入和输出移位寄存器和控制器等组成。 (3)2个个SFR寄存器寄存器SCON和和PCON,用于串行口的初始化编,用于串行口的初始化编程。程。 (4)接收)接收/发送数据发送数据,无论是否采用中断方式工作无论是否采用中断方式工作,每接收每接收/发送发送

34、一个数据都必须用指令对一个数据都必须用指令对 RI/TI 清清0,以备下一次收,以备下一次收/发。发。 SBUF(发)(发)SBUF(收)(收)发送控制器发送控制器 TI接收控制器接收控制器 RI移位寄存器移位寄存器波波特特率率发发生生器器T1 1A累累加加器器(门门)移位寄存器移位寄存器RxD(P3.0)TxD(P3.1)去申请中断去申请中断引脚引脚引脚引脚CPU内部内部 MCS-51串行口的结构如下图所示:串行口的结构如下图所示:2. 串行通信控制寄存器串行通信控制寄存器SCON (98H)SM0 SM1 SM2 REN TB8 RB8 TI R1SM0,SM1:串行口:串行口4种工作方式

35、控制位。种工作方式控制位。 =00:方式:方式0,8位同步移位寄存器,其波特率为位同步移位寄存器,其波特率为fosc/12; =01:方式:方式1,10位位UART,其波特率为可变,由定时器控制;,其波特率为可变,由定时器控制; =10:方式:方式2,11位位UART,其波特率为,其波特率为fosc/64或或fosc/32; =11:方式:方式3,11位位UART,其波特率为可变,由定时器控制。,其波特率为可变,由定时器控制。 其中:其中:fosc为系统晶振频率。为系统晶振频率。RI,TI:串行口收:串行口收/发数据申请中断标志位发数据申请中断标志位 1 申请中断;申请中断; 0 不申请中断。

36、不申请中断。RB8:在方式:在方式2、3中,用于存放收到的第中,用于存放收到的第9位数据;在双机通信位数据;在双机通信中,作为奇偶校验;在多机通信中,用作区别地址帧中,作为奇偶校验;在多机通信中,用作区别地址帧/数据帧的数据帧的标志。标志。TB8:方式:方式2、3中,是要发送的第中,是要发送的第9位数据;在双机通信中,用位数据;在双机通信中,用于对接收到的数据进行奇偶校验;在多机通信中,用作判断地址于对接收到的数据进行奇偶校验;在多机通信中,用作判断地址帧帧/数据帧,数据帧,TB8=0 表示发送的是数据,表示发送的是数据,TB8=1 表示发送的是地表示发送的是地址。址。REN:串行口接收允许控

37、制位:串行口接收允许控制位 = 1: 表示允许接收;表示允许接收; = 0: 禁止接收。禁止接收。SM2:串行口多机通信控制位,作为方式:串行口多机通信控制位,作为方式2、方式、方式3的附加控制位。的附加控制位。3. 中断允许寄存器中断允许寄存器IE(0A8H) 中断允许寄存器中断允许寄存器IE在在3.2.2节中已介绍。其中对串行口有影节中已介绍。其中对串行口有影响的位响的位ES。ES为串行中断允许控制位。为串行中断允许控制位。 ES=1:允许串行中断;:允许串行中断; ES=0:禁止串行中断。:禁止串行中断。 4. 4. 电源管理寄存器电源管理寄存器PCONPCON(87H87H) 不可位寻

38、址。不可位寻址。 PCON主要用于实现电源控制而设置的专用主要用于实现电源控制而设置的专用寄存器,已在寄存器,已在1.3.3节中介绍过。其格式如下图所示。节中介绍过。其格式如下图所示。SMOD GF1 GF0 PD 1DLSMOD:串行口波特率倍增位串行口波特率倍增位 =1:串行口波特率加倍。:串行口波特率加倍。 =0:串行口波特率不变,系统复位时默认:串行口波特率不变,系统复位时默认SMOD=0。3.4.3 3.4.3 串行口的工作方式串行口的工作方式 1. 工作方式工作方式0( 8位移位寄存器位移位寄存器I/O方式)方式)发送发送/ /接收过程:接收过程:SBUF中的串行数据由中的串行数据

39、由RxD逐位移出逐位移出/移入(低移入(低位在先,高位在后);位在先,高位在后);TxD输出移位时钟,频率输出移位时钟,频率=fosc1/12;每;每送出送出/接收接收8位数据位数据 TI/ RI自动置自动置1;需要用软件清零;需要用软件清零 TI/ RI 。注意注意:串行口在方式串行口在方式0下的工作并非是一种同步通信方式,下的工作并非是一种同步通信方式,经常经常配合配合“串入并出串入并出”“”“并入串出并入串出”移位寄存器一起使用,移位寄存器一起使用,以达到以达到扩展一个并行口的目的。扩展一个并行口的目的。 扩展电路如下图所示。扩展电路如下图所示。如要发送数据,查询方式的程序如下:如要发送

40、数据,查询方式的程序如下: MOV SCON,#00H ;串行口方式;串行口方式0 MOV SBUF,A ;将数据送出;将数据送出 JNB TI,$ ;等待数据发送完毕;等待数据发送完毕 CLR TI ;为下次发送作准备;为下次发送作准备注意:注意:复位时,复位时,SCON 已经被清零,缺省值为方式已经被清零,缺省值为方式0。发送条件:发送条件:TI=0。接收条件接收条件:TI=0,置位,置位 REN=1 (允许接收数据)。(允许接收数据)。2. 方式方式1 (波特率可变的波特率可变的10位异步通信方式位异步通信方式 )发送发送/ /接收数据的格式接收数据的格式:一帧信息包括一帧信息包括1个起

41、始位个起始位0,8个数据位和个数据位和1个停止位个停止位1。发送发送/ /接收过程接收过程:SBUF中的串行数据由中的串行数据由RXD逐位移出逐位移出/移入;移入;TXD输出移输出移位时钟,频率位时钟,频率= (2SMOD/32) T1的溢出率,的溢出率,波特率可变。每送出波特率可变。每送出/接收接收8位数位数据据 TI/ RI自动置自动置1;需要用软件清零;需要用软件清零 TI/ RI 。工作时,发送端自动添加一个起。工作时,发送端自动添加一个起始位和一个停止位;接收端自动去掉一个起始位和一个停止位。始位和一个停止位;接收端自动去掉一个起始位和一个停止位。发送发送/ /接收条件接收条件:同方

42、式同方式0。3. 方式方式2(固定波特率的固定波特率的11位异步接收位异步接收/发送方式发送方式)发送发送/ /接收过程接收过程:方式方式2的接收的接收/发送过程类似于方式发送过程类似于方式1,所不同的,所不同的是它比方式是它比方式1增加了一位增加了一位“第第9位位”数据数据(TB8/RB8),用于,用于“奇偶奇偶校验校验”。方式。方式2常用于单片机间通信。波特率常用于单片机间通信。波特率 = fosc 2SMOD/64 。发送发送/ /接收条件接收条件:同方式同方式0。4. 方式方式3(可变波特率的可变波特率的11位异步接收位异步接收/发送方式发送方式) 方式方式3和方式和方式2唯一的区别是

43、波特率机制不同,方式唯一的区别是波特率机制不同,方式3的波特的波特率率=(2SMOD/32) T1的溢出率。的溢出率。奇偶校验奇偶校验:奇偶校验是检验串行通信双方传输的数据正确与否奇偶校验是检验串行通信双方传输的数据正确与否的一个措施,并不能保证通信数据的传输一定正确。即的一个措施,并不能保证通信数据的传输一定正确。即如果如果奇奇偶校验发生错误,表明数据传输一定出错了;如果奇偶校验没偶校验发生错误,表明数据传输一定出错了;如果奇偶校验没有出错,绝不等于数据传输完全正确。有出错,绝不等于数据传输完全正确。奇校验规定奇校验规定:8位有效数据连同位有效数据连同1位附加位中,二进制位附加位中,二进制“

44、1”的个的个数为奇数。数为奇数。偶校验规定偶校验规定:8位有效数据连同位有效数据连同1位附加位中,二进制位附加位中,二进制“1”的个的个数为偶数。数为偶数。约定发送采用约定发送采用奇校验奇校验:若发送的若发送的8位有效数据中位有效数据中“1”的个数为偶的个数为偶数,则要人为在附加位中添加一个数,则要人为在附加位中添加一个“1”一起发送;若发送的一起发送;若发送的8位位有效数据中有效数据中“1”的个数为奇数,则要人为在附加位中添加一个的个数为奇数,则要人为在附加位中添加一个“0”一起发送。一起发送。约定接收采用约定接收采用奇校验奇校验:若接收到的若接收到的9位数据中位数据中“1”的个数为奇数,的

45、个数为奇数,则表明接收正确,取出则表明接收正确,取出8位有效数据即可;若接收到的位有效数据即可;若接收到的9位数据位数据中中“1”的个数为偶数,则表明接收出错!应当进行出错处理。的个数为偶数,则表明接收出错!应当进行出错处理。 采用采用偶校验时,处理方法与奇校验类似。偶校验时,处理方法与奇校验类似。3.4.4 3.4.4 串行口的通信波特率串行口的通信波特率 串行口的通信波特率恰到好处地反映了串行传输数据的速率。在串行口的通信波特率恰到好处地反映了串行传输数据的速率。在MCS-51串行口的四种工作方式中,方式串行口的四种工作方式中,方式0和和2的波特率是固定的,而方式的波特率是固定的,而方式1

46、和和3的波特的波特率是可变的,由定时器率是可变的,由定时器T1的溢出率(的溢出率(T1溢出信号的频率)控制。各种方式的溢出信号的频率)控制。各种方式的通信波特率如下:通信波特率如下:方式方式0:波特率固定为波特率固定为fosc/12。 其中:其中:fosc系统主机晶振频率系统主机晶振频率方式方式2:波特率由波特率由PCON中的选择位中的选择位SMOD来决定,可由下式表示:来决定,可由下式表示: 波特率波特率=(2SMOD/64)fosc 方式方式1和方式和方式3:波特率是可变的,由定时器波特率是可变的,由定时器T1的溢出率控制。波特率为:的溢出率控制。波特率为: 波特率波特率=(2SMOD/3

47、2)定时器定时器T1溢出率溢出率 T1溢出率溢出率=T1计数率计数率/产生溢出所需的周期产生溢出所需的周期 = (fosc/12)/(2K TC) 其中:其中:K定时器定时器T1的位数,定时器的位数,定时器T1用作波特率发生器时,通常工用作波特率发生器时,通常工作在方式作在方式2, 所以所以T1的溢出所需的周期数的溢出所需的周期数= 28 TC。 TC定时器定时器T1的预置初值。的预置初值。 下表列出了定时器T1工作于方式2的常用波特率及初值。 3.4.5 3.4.5 串行口的应用串行口的应用 1 1串口方式串口方式0 0应用编程应用编程 例题例题6 6 用用8051串行口外接串行口外接CD4

48、094扩展扩展8位并行输出口,位并行输出口,8位并位并行口的各位都接一个发光二极管,要求发光二极管呈流水灯状行口的各位都接一个发光二极管,要求发光二极管呈流水灯状态(轮流点亮)。态(轮流点亮)。 解:解:硬件连接电路如下图所示。硬件连接电路如下图所示。 在开始通信之前,应先对控制寄存器在开始通信之前,应先对控制寄存器SCON进行进行初始化初始化。将。将00H送送SCON即设置方式即设置方式0。数据传送采用查询方式,通过查询。数据传送采用查询方式,通过查询TI的状态,来决定是否发送下一帧数据。在串行接收时,通过对的状态,来决定是否发送下一帧数据。在串行接收时,通过对RI查询来确定何时接收下一帧数

49、据。程序如下:查询来确定何时接收下一帧数据。程序如下: ORG 1000H START: MOV SCON, #00H; 置串行口工作方式置串行口工作方式0 MOV A, #80H ; 最高位灯先亮最高位灯先亮 CLR P1.0 ; 关闭并行输出关闭并行输出 OUT0: MOV SBUF, A ; 开始串行输出开始串行输出 OUT1: JNB TI, OUT1; 输出完否?未完,等待;完了,继续执行输出完否?未完,等待;完了,继续执行 CLR TI ; 完了,清完了,清TI标志,以备下次发送标志,以备下次发送 SETB P1.0; 打开并行口输出打开并行口输出 ACALL DELAY; 延时一

50、段时间延时一段时间 RR A ; 循环右移循环右移 CLR P1.0; 关闭并行输出关闭并行输出 SJMP OUT0 ; 循环循环 DELAY: MOV R7, #250 ; 延时子程序延时子程序 D1: MOV R6, #250 D2: DJNZ R6, D2 DJNZ R7, D1 RET END2双机通信双机通信 双机通信的硬件连接图如下图所示。双机通信的硬件连接图如下图所示。 通信协议如下通信协议如下: 设设1号机是发送方,号机是发送方,2号机是接收方。采用串行口方式号机是接收方。采用串行口方式1进行进行通信,一帧信息为通信,一帧信息为10位,其中有位,其中有1个起始位、个起始位、8个

51、数据位和个数据位和1个停个停止位;波特率为止位;波特率为2400bps,T1工作在定时器方式工作在定时器方式2,单片机时钟,单片机时钟振荡频率选用振荡频率选用11.0 592MHz,查表,查表3.4.3可得可得TH1=TL1=0F4H,PCON寄存器的寄存器的SMOD位为位为0。 当当1号机发送时,先发送一个号机发送时,先发送一个“E1”联络信号,联络信号,2号机收到后号机收到后回答一个回答一个“E2”应答信号,表示同意接收。当应答信号,表示同意接收。当1号机收到应答信号机收到应答信号号“E2”后,开始发送数据,每发送一个字节数据都要计算后,开始发送数据,每发送一个字节数据都要计算“校校验和验

52、和”,假定数据块长度为,假定数据块长度为16个字节,起始地址为个字节,起始地址为40H,一个数,一个数据块发送完毕后立即发送据块发送完毕后立即发送“校验和校验和”。2号机接收数据并转存到号机接收数据并转存到数据缓冲区,起始地址也为数据缓冲区,起始地址也为40H,每接收到一个字节数据便计算,每接收到一个字节数据便计算一次一次“校验和校验和”,当收到一个数据块后,再接收,当收到一个数据块后,再接收1号机发来的号机发来的“校验和校验和”,并将它与,并将它与2号机求出的校验和进行比较。若两者相号机求出的校验和进行比较。若两者相等,说明接收正确,等,说明接收正确,2号机回答号机回答00H;若两者不相等,

53、说明接收;若两者不相等,说明接收不正确,不正确,2号机回答号机回答0FFH,请求重发。,请求重发。1号机接到号机接到00H后结束发后结束发送。若收到的答复非零,则重新发送数据一次。程序框图如下送。若收到的答复非零,则重新发送数据一次。程序框图如下页图所示。页图所示。 发送程序如下:发送程序如下: ORG 1000H ASTART: CLR EA MOV TMOD, #20H; 定时器定时器1置为方式置为方式2 MOV TH1, #0F4H; 装载定时器初值,波特率装载定时器初值,波特率2400 MOV TL1, #0F4H MOV PCON, #00H SETB TR1; 启动定时器启动定时器

54、 MOV SCON, #50H ; 设定串口方式设定串口方式1,且准备接收应答信号,且准备接收应答信号 ALOOP1: MOV SBUF, #0E1H ; 发联络信号发联络信号 JNB TI, $; 等待一帧发送完毕等待一帧发送完毕 CLR TI ; 允许再发送允许再发送 JNB RI, $; 等待等待2号机的应答信号号机的应答信号 CLR RI ; 允许再接收允许再接收 MOV A, SBUF ; 2号机应答后,读至号机应答后,读至A XRL A, #0E2H; 判断判断2号机是否准备完毕号机是否准备完毕 JNZ ALOOP1; 2号机未准备好,继续联络号机未准备好,继续联络 ALOOP2:

55、 MOV R0, #40H; 2号机准备好,设定数据块地址指针初值号机准备好,设定数据块地址指针初值 MOV R7, #10H; 设定数据块长度初值设定数据块长度初值 MOV R6, #00H; 清校验和单元清校验和单元 ALOOP3: MOV SBUF, R0 ; 发送一个数据字节发送一个数据字节 MOV A, R6 ADD A, R0 ; 求校验和求校验和 MOV R6, A; 保存校验和保存校验和 INC R0 JNB TI, $ CLR TI DJNZ R7, ALOOP3; 整个数据块是否发送完毕整个数据块是否发送完毕 MOV SBUF, R6; 发送校验和发送校验和 JNB TI,

56、 $ CLR TI JNB RI, $; 等待等待2号机的应答信号号机的应答信号 CLR RI MOV A, SBUF; 2号机应答,读至号机应答,读至A JNZ ALOOP2 ; 2号机应答号机应答“错误错误”,转重新发送,转重新发送 RET; 2号机应答号机应答“正确正确”,返回,返回 END接收程序如下接收程序如下: : ORG 1000H BSTART: CLR EA MOV TMOD, #20H MOV TH1, #0F4H MO V TL1, #0F4H MOV PCON, #00H SETB TR1 MOV SCON, #50H; 设定串口方式设定串口方式1,且准备接收,且准备接

57、收 BLOOP1: JNB RI, $ ; 等待等待1号机的联络信号号机的联络信号 CLR RI MOV A, SBUF; 收到收到1号机信号号机信号 XRL A, #0E1H; 判断是否为判断是否为1号机联络信号号机联络信号 JNZ BLOOP1 ; 不是不是1号机联络信号,再等待号机联络信号,再等待 MOV SBUF, #0E2H; 是是1号机联络信号,发应答信号号机联络信号,发应答信号 JNB TI, $ CLR TI MOV R0, #40H ; 设定数据块地址指针初值设定数据块地址指针初值 MOV R7, #10H ; 设定数据块长度初值设定数据块长度初值 MOV R6, #00H;

58、 清校验和单元清校验和单元 BLOOP2: JNB RI, $ CLR RI MOV A, SBUF MOV R0, A; 接收数据转储接收数据转储 INC R0 ADD A, R6 ; 求校验和求校验和 MOV R6, A DJNZ R7, BLOOP2 ; 判断数据块是否接收完毕判断数据块是否接收完毕 JNB RI, $ ; 完毕,接收完毕,接收1号机发来的校验和号机发来的校验和 CLR RI MOV A, SBUF XRL A, R6 ; 比较校验和比较校验和 JZ END1 ; 校验和相等,跳至发正确标志校验和相等,跳至发正确标志 MOV SBUF, #0FFH ; 校验和不相等,发错

59、误标志校验和不相等,发错误标志 JNB TI, $ ; 转重新接收转重新接收 CLR TI END1: MOV SBUF, #00H RET END3 3多机通信多机通信(1 1)硬件连接)硬件连接 单片机构成的多机系统常使串行口工作在方式单片机构成的多机系统常使串行口工作在方式2和方式和方式3,采用总线型主从式结构(一个是主机,其余的是从机,从机要采用总线型主从式结构(一个是主机,其余的是从机,从机要服从主机的调度、支配)。有时还要对信号进行光电隔离、电服从主机的调度、支配)。有时还要对信号进行光电隔离、电平转换等。在实际的多机应用系统中,常采用平转换等。在实际的多机应用系统中,常采用RS-485串行标准串行标准总线进行数据传输。简单的硬件连接如下图所示(图中没有画总线进行数据传输。简单的硬件连接如下图所示(图中没有画出出RS-485接口)。接口)。(2 2)通信协议)通信协议主机置主机置SM2位位0,所有从机的,所有从机的SM2位置位置1,处于接收地址帧状态。,处于接收地址帧状态。 主机发送一地址帧,其中,主机发送一地址帧,其中,8位是地址,第位是地址,第9位为位为1表示该帧为地表示该帧为地址帧。址帧。 所有从机收到地址帧后,都将接收的地址与本机的地址比较。所有从机收到地址帧后,都将接收的地址与本机的地址比较。对于地址相符的从机

温馨提示

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

评论

0/150

提交评论