【大学课件】MCS51单片机的定时器计数器

上传人:枫** 文档编号:569474681 上传时间:2024-07-29 格式:PPT 页数:53 大小:537.52KB
返回 下载 相关 举报
【大学课件】MCS51单片机的定时器计数器_第1页
第1页 / 共53页
【大学课件】MCS51单片机的定时器计数器_第2页
第2页 / 共53页
【大学课件】MCS51单片机的定时器计数器_第3页
第3页 / 共53页
【大学课件】MCS51单片机的定时器计数器_第4页
第4页 / 共53页
【大学课件】MCS51单片机的定时器计数器_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《【大学课件】MCS51单片机的定时器计数器》由会员分享,可在线阅读,更多相关《【大学课件】MCS51单片机的定时器计数器(53页珍藏版)》请在金锄头文库上搜索。

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

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

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

4、6位可编程的定时器位可编程的定时器/计数器,简计数器,简称为称为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内部定时器内部定时器/计数器计数器 http:/ 8051单片机内部的定时器单片机内部的定时器/计数器的

6、结构如下图所示计数器的结构如下图所示。http:/ (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、管理外部中断(前面已介绍过)。http:/ 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 M0T1T2http:/ = 0 :软件控制,只由:软件控制,只由TCON中的启中的启/停控制位停控制位TR0/TR1控制定控制定时器时器/计数器的启计数器的启/停。停。 = 1 :硬件控制,由外部中断请求信号:硬件控制,由外部中断请求信号 / 和和TCON中中的启的启/停控制位停控制位TR0/TR1组合状态控制定时器组合状态控制定时器/计数器的启计数器的启/停。停。 其控制逻辑如下图所示。其控

9、制逻辑如下图所示。http:/ 3.3.2 定时器定时器/ /计数器的工作方式计数器的工作方式 8051单单片片机机的的定定时时器器/计计数数器器共共有有四四种种工工作作模模式式,现现以以T0为为例例加加以以介介绍绍,T1与与T0的的工工作作原原理理相相同同,但但方方式式3下下T1停停止止计计数数。方方式式(如如F0)和用户定义名称等几种)和用户定义名称等几种方式。方式。1工作方式工作方式0( M1M0=00 ,13位定时器位定时器/计数器)计数器) 由由TH0的的全全部部8位位和和TL0的的低低5位位( TL0的的高高3位位未未用用)构构成成13位位加加1计计数数器器,当当TL0低低5位位计

10、计数数满满时时直直接接向向TH0进进位位,并并当当全全部部13位位计计数满溢出时,溢出标志位数满溢出时,溢出标志位TF0置置“1”。2工作方式工作方式1 ( M1M0=01 ,16位定时器位定时器/计数器)计数器) 由由TH0和和TL0构成构成16位加位加1计数器,其他特性与工作方式计数器,其他特性与工作方式0相同。相同。3工工作作方方式式2 ( M1M0=10 ,自自动动重重装装计计数数初初值值的的8位位定定时器时器/计数器)计数器) 16位位定定时时器器/计计数数器器被被拆拆成成两两个个8位位寄寄存存器器TH0和和TL0,CPU在在对对它它们们初初始始化化时时必必须须装装入入相相同同的的定

11、定时时器器/计计数数器器初初值值。以以TL0作作计计数数器器,而而TH0作作为为预预置置寄寄存存器器。当当计计数数满满溢溢出出时时,TF0置置“1”,同同时时TH0将将计计数数初初值值以以硬硬件件方方法法自自动动装装入入TL0。这这种种工工作作方方式式很很适适合合于于那那些些重重复复计计数的应用场合(如串行数据通信的波特率发生器)。数的应用场合(如串行数据通信的波特率发生器)。http:/ ( M1M0=11 , 2个个8位位定定时时器器/计计数数器器,仅仅适适用用于于T0)TL0:8位位定定时时器器/计计数数器器,使使用用T0原原有有控控制制资资源源TR0和和TF0,其其功能和操作与方式功能

12、和操作与方式0或方式或方式1完全相同。完全相同。TH0:只只能能作作为为8位位定定时时器器,借借用用T1的的控控制制位位TR1和和TF1,只只能能对片内机器周期脉冲计数。对片内机器周期脉冲计数。 在在方方式式3模模式式下下,定定时时器器/计计数数器器0可可以以构构成成两两个个定定时时器器或或者一个定时器和一个计数器。者一个定时器和一个计数器。 T0方方式式3下下的的T1方方式式2,因因定定时时初初值值能能自自动动恢恢复复,用用作作波波特率发生器更为合适。特率发生器更为合适。http:/ 定定时时器器/计计数数器器可可按按片片内内机机器器周周期期定定时时,也也可可对对由由T0/T1引引脚脚输输入

13、入一一个个负负脉脉冲冲进进行行加加法法计计数数。在在应应用用时时,其其工工作作方方式式和和工工作作过过程程均均可可通通过过程程序序设设定定和和控控制制,因因此此,定定时时器器/计数器在工作前必须先对其进行初始化,计算和设置初值。计数器在工作前必须先对其进行初始化,计算和设置初值。 1. 定时器定时器T0/T1 中断申请过程中断申请过程 (1)在已经开放)在已经开放T0/T1中断允许且已被启动的前提下,中断允许且已被启动的前提下,T0/T1加加1计满溢出时计满溢出时 TF0/TF1标志位自动置标志位自动置“1” ; (2)CPU 检测到检测到TCON中中TF0/TF1变变“1”后后,将产生指令:

14、将产生指令:LCALL 000BH/LCALL 001BH 执行中断服务程序;执行中断服务程序; (3)TF0/TF1标志位由硬件自动清标志位由硬件自动清“0”,以备下次中断申请。以备下次中断申请。3.3.3 定时器定时器/计数器的应用计数器的应用 http:/ 定时器定时器/计数器初始化的步骤计数器初始化的步骤 (1)写)写TMOD,设置定时器,设置定时器/计数器的工作方式;计数器的工作方式; (2)计算定时器)计算定时器/计数器的初值,写入计数器的初值,写入TH0/TH1、TL0/TL1。 (3)设置)设置IE、IP,以开放相应的中断和设定中断优先级。,以开放相应的中断和设定中断优先级。

15、3. 定时器定时器/计数器的定时器计数器的定时器/计数器范围计数器范围 (1 1)工作方式)工作方式0 0:13位定时器位定时器/计数器方式计数器方式 最大计数值最大计数值= 213 = 8192 (2 2)工作方式)工作方式1 1:16位定时器位定时器/计数器方式计数器方式 最大计数值最大计数值= 216 = 65536 (3)工作方式工作方式2和工作方式和工作方式3:8位的定时器位的定时器/计数器方式因此,计数器方式因此, 最大计数值最大计数值= 28 = 256 http:/ 计数器初值的计算计数器初值的计算 方法:方法:用最大计数量减去需要的计数次数。即:用最大计数量减去需要的计数次数

16、。即: TC=M C 其中:其中:TC计数器需要预置的初值;计数器需要预置的初值; M计数器的模值(最大计数值);计数器的模值(最大计数值); 方式方式0时,时,M=213;方式;方式1时,时,M=216;方式;方式2, 3时,时,M=28; C计数器计满回计数器计满回0所需的计数值,即设计任务要求的计数值。所需的计数值,即设计任务要求的计数值。例如:例如:流水线上一个包装是流水线上一个包装是12盒,要求每到盒,要求每到12盒就产生一个动盒就产生一个动作,用单片机的工作方式作,用单片机的工作方式0来控制,则应当预置的初值为:来控制,则应当预置的初值为: TC = M C = 213 12=81

17、80http:/ 定时器初值的计算定时器初值的计算 定时时间的计算公式为定时时间的计算公式为: T=(M TC)T0 (或或TC=M T/T0 )其中:其中:T定时器的定时时间,即设计任务要求的定时时间;定时器的定时时间,即设计任务要求的定时时间; T0计计数数器器计计数数脉脉冲冲的的周周期期,即即单单片片机机系系统统主主频频周周期期的的12倍;倍; M计数器的模值;计数器的模值; TC定时器需要预置的初值。定时器需要预置的初值。 若若设设初初值值TC=0,则则定定时时器器定定时时时时间间为为最最大大。若若设设单单片片机机系系统主频为统主频为12MHz,则各种工作方式定时器的最大定时时间为:,

18、则各种工作方式定时器的最大定时时间为:工作方式工作方式0 0: Tmax=2131 s=8.192ms工作方式工作方式1 1: Tmax=2161 s=65.536ms工作方式工作方式2 2和和3 3:Tmax=281 s=0.256mshttp:/ 例例 设设外外部部有有一一个个脉脉冲冲源源。编编制制程程序序,对对外外部部脉脉冲冲源源进进行行计计数数并并显示。显示。解解:将将外外部部计计数数源源连连到到引引脚脚T1上上,可可用用LED将将计计数数的的值值显显示示出出来来,我们用,我们用P1口连接的口连接的8个个LED来显示计到的数据。来显示计到的数据。程序如下程序如下: ORG 0000H

19、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, A ; 将计数值输出到将计数值输出到P1口,驱动口,驱动LED显示显示 AJMP LOOP ; 转回转回LOOP END5. 定时器定时器/计数器应用举例计

20、数器应用举例http:/ 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=15A0Hhttp:/ ORG 0000H MOV TH0,#15H AJMP START MOV TL0,#0A0H ORG 0030H SETB TR0START:MOV SP,#60H

21、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.0http:/ ORG 0000H TIME0:PUSH ACC AJMP START PUSH PSW ORG 000BH CPL P1.0 AJMP TIME0 MOV TH0,#15H ORG 0030H MOV TL0,#0A0HSTART:MOV SP,#60H SETB TR0 MOV P1,#0FFH POP PSW MOV TM

22、OD,#01H POP ACC MOV TH0,#15H RETI MOV TL0,#0A0H END SETB EA SETB ET0 SETB TR0LOOP: AJMP LOOPhttp:/ 例例 设设置置LED每每1s闪闪烁烁一一次次。已已知知单单片片机机系系统统主主频频为为12MHz。解解:定定时时器器/计计数数器器的的最最长长的的定定时时是是65.536ms,无无法法实实现现1s的定时。可以采用软件计数器来进行设计。的定时。可以采用软件计数器来进行设计。http:/ 216 50ms/1 s=65536 50000=15536=3CB0H电路图如下:电路图如下:http:/ ORG

23、 0000H AJMP START ; 转入主程序转入主程序 ORG 000BH ; 定时器定时器/计数器计数器0的中断服务程序入口地址的中断服务程序入口地址 AJMP TIME0 ; 跳转到真正的定时器中断服务程序处跳转到真正的定时器中断服务程序处 ORG 0030H START: MOV SP, #60H ; 设置堆栈指针设置堆栈指针 MOV P1, #0FFH ; 关发光二极管关发光二极管LED(使其灭)(使其灭) MOV 30H, #00H ; 软件计数器预清软件计数器预清0 MOV TMOD, # 01H ; 定时器定时器/计数器计数器0工作于方式工作于方式1 MOV TH0, #3

24、CH ; 设置定时器设置定时器/计数器的初值计数器的初值 MOV TL0, #0B0H SETB EA ; 开总中断允许开总中断允许 SETB ET0 ; 开定时器开定时器/计数器计数器0中断允许中断允许 SETB TR0; 启动定时器启动定时器/计数器计数器0 LOOP: AJMP LOOP ; 循环等待循环等待(真正工作时,这里可写任意其他程序)(真正工作时,这里可写任意其他程序)http:/ /计数器计数器0 0的中断服务程序如下的中断服务程序如下: TIME0: PUSH ACC ; 将将PSW和和ACC推入堆栈保护推入堆栈保护 PUSH PSW INC 30H ; 软件计数器加软件计

25、数器加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; 重置定时器重置定时器/计数器的初值计数器的初值 MOV TL0, #0B0H POP PSW ; 恢复恢复PSW和和ACC POP ACC RETI; 中断返回中断返回 ENDhttp:/ MCS-51 3.4 MCS-51 单片

26、机的串行通信单片机的串行通信 3.4.1 3.4.1 概述概述1.1.通信通信 通信:通信:单片机与外界进行信息交换统称为通信。单片机与外界进行信息交换统称为通信。80518051单片机的通信方式有两种:单片机的通信方式有两种:并并行行通通信信:数数据据的的各各位位同同时时发发送送或或接接收收。特特点点是是传传送送速速度度快快、效效率率高高,但但成成本本高高。适适用用于于短短距距离离传传送送数数据据。计计算算机机内内部部的的数数据据传送一般均采用并行方式。传送一般均采用并行方式。串行通信:串行通信:数据一位一位顺序发送或接收。特点是传送速度慢,数据一位一位顺序发送或接收。特点是传送速度慢,但成

27、本低。适用于较长距离传送数据。计算机与外界的数据传但成本低。适用于较长距离传送数据。计算机与外界的数据传送一般均采用串行方式。送一般均采用串行方式。 http:/ 2. 数据通信的制式数据通信的制式单工方式单工方式:数据仅按一个固定方向传送;数据仅按一个固定方向传送;半双工方式半双工方式:数据可实现双向传送,但不能同时进行;数据可实现双向传送,但不能同时进行;全双工方式全双工方式:允许双方同时进行数据双向传送;允许双方同时进行数据双向传送;多工方式多工方式:在同一线路上实现资源共享。在同一线路上实现资源共享。 3. 3. 串行通信的分类串行通信的分类 串串行行数数据据通通信信按按数数据据传传送

28、送方方式式可可分分为为异异步步通通信信和和同同步步通通信信两种形式:两种形式:同同步步方方式式:以以数数据据块块为为单单位位进进行行数数据据传传送送,包包括括同同步步字字符符、数数据据块块和和校校验验字字符符CRCCRC。优优点点是是数数据据传传输输速速率率较较高高,缺缺点点是是要要求求发发送时钟和接收时钟保持严格同步。数据格式如下图所示。送时钟和接收时钟保持严格同步。数据格式如下图所示。 http:/ 4. 串行数据通信的波特率串行数据通信的波特率 波波特特率率是是指指每每秒秒钟钟传传送送信信号号的的数数量量,单单位位为为波波特特(Baud)。而而每每秒秒钟钟传传送送二二进进制制数数的的信信

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

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

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

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

33、式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 不申请中断。不申请中断。http:/ 表示发送的是数据,

34、表示发送的是数据,TB8=1 表示发送的是地表示发送的是地址。址。REN:串行口接收允许控制位:串行口接收允许控制位 = 1: 表示允许接收;表示允许接收; = 0: 禁止接收。禁止接收。SM2:串行口多机通信控制位,作为方式:串行口多机通信控制位,作为方式2、方式、方式3的附加控制位。的附加控制位。http:/ 中断允许寄存器中断允许寄存器IE(0A8H) 中断允许寄存器中断允许寄存器IE在在3.2.2节中已介绍。其中对串行口有影节中已介绍。其中对串行口有影响的位响的位ES。ES为串行中断允许控制位。为串行中断允许控制位。 ES=1:允许串行中断;:允许串行中断; ES=0:禁止串行中断。:

35、禁止串行中断。 4. 4. 电源管理寄存器电源管理寄存器PCONPCON(87H87H) 不不可可位位寻寻址址。 PCON主主要要用用于于实实现现电电源源控控制制而而设设置置的的专专用用寄寄存器,已在存器,已在1.3.3节中介绍过。其格式如下图所示。节中介绍过。其格式如下图所示。SMOD GF1 GF0 PD 1DLSMOD:串行口波特率倍增位串行口波特率倍增位 =1:串行口波特率加倍。:串行口波特率加倍。 =0:串行口波特率不变,系统复位时默认:串行口波特率不变,系统复位时默认SMOD=0。http:/ 3.4.3 串行口的工作方式串行口的工作方式 1. 工作方式工作方式0( 8位移位寄存器

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

37、并行口的目的。 扩展电路如下图所示。扩展电路如下图所示。http:/ MOV SCON,#00H ;串行口方式;串行口方式0 MOV SBUF,A ;将数据送出;将数据送出 JNB TI,$ ;等待数据发送完毕;等待数据发送完毕 CLR TI ;为下次发送作准备;为下次发送作准备注意:注意:复位时,复位时,SCON 已经被清零,缺省值为方式已经被清零,缺省值为方式0。发送条件:发送条件:TI=0。接收条件接收条件:TI=0,置位,置位 REN=1 (允许接收数据)。(允许接收数据)。2. 方式方式1 (波特率可变的波特率可变的10位异步通信方式位异步通信方式 )发送发送/ /接收数据的格式接收

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

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

40、送方式) 方方式式3和和方方式式2唯唯一一的的区区别别是是波波特特率率机机制制不不同同,方方式式3的的波波特特率率=(2SMOD/32) T1的溢出率。的溢出率。http:/ 采用采用偶校验时,处理方法与奇校验类似。偶校验时,处理方法与奇校验类似。http:/ 3.4.4 串行口的通信波特率串行口的通信波特率 串串行行口口的的通通信信波波特特率率恰恰到到好好处处地地反反映映了了串串行行传传输输数数据据的的速速率率。在在MCS-51串串行行口口的的四四种种工工作作方方式式中中,方方式式0和和2的的波波特特率率是是固固定定的的,而而方方式式1和和3的的波波特特率率是是可可变变的的,由由定定时时器器

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

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

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

44、RG 1000H START: MOV SCON, #00H; 置串行口工作方式置串行口工作方式0 MOV A, #80H ; 最高位灯先亮最高位灯先亮 CLR P1.0 ; 关闭并行输出关闭并行输出 OUT0: MOV SBUF, A ; 开始串行输出开始串行输出 OUT1: JNB TI, OUT1; 输出完否?未完,等待;完了,继续执行输出完否?未完,等待;完了,继续执行 CLR TI ; 完了,清完了,清TI标志,以备下次发送标志,以备下次发送 http:/ SETB P1.0; 打开并行口输出打开并行口输出 ACALL DELAY; 延时一段时间延时一段时间 RR A ; 循环右移循

45、环右移 CLR P1.0; 关闭并行输出关闭并行输出 SJMP OUT0 ; 循环循环 DELAY: MOV R7, #250 ; 延时子程序延时子程序 D1: MOV R6, #250 D2: DJNZ R6, D2 DJNZ R7, D1 RET ENDhttp:/ 双机通信的硬件连接图如下图所示。双机通信的硬件连接图如下图所示。 http:/ 设设1号号机机是是发发送送方方,2号号机机是是接接收收方方。采采用用串串行行口口方方式式1进进行行通通信信,一一帧帧信信息息为为10位位,其其中中有有1个个起起始始位位、8个个数数据据位位和和1个个停停止止位位;波波特特率率为为2400bps,T1

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

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

48、后结结束束发发送送。若若收收到到的的答答复复非非零零,则则重重新新发发送送数数据据一一次次。程程序序框框图图如如下下页图所示。页图所示。http:/ 发送程序如下:发送程序如下: ORG 1000H ASTART: CLR EA MOV TMOD, #20H; 定时器定时器1置为方式置为方式2 MOV TH1, #0F4H; 装载定时器初值,波特率装载定时器初值,波特率2400 MOV TL1, #0F4H MOV PCON, #00H SETB TR1; 启动定时器启动定时器 MOV SCON, #50H ; 设定串口方式设定串口方式1,且准备接收应答信号,且准备接收应答信号 ALOOP1:

49、 MOV SBUF, #0E1H ; 发联络信号发联络信号 JNB TI, $; 等待一帧发送完毕等待一帧发送完毕 CLR TI ; 允许再发送允许再发送 JNB RI, $; 等待等待2号机的应答信号号机的应答信号 CLR RI ; 允许再接收允许再接收 MOV A, SBUF ; 2号机应答后,读至号机应答后,读至A XRL A, #0E2H; 判断判断2号机是否准备完毕号机是否准备完毕 JNZ ALOOP1; 2号机未准备好,继续联络号机未准备好,继续联络 http:/ ALOOP2: MOV R0, #40H; 2号机准备好,设定数据块地址指针初值号机准备好,设定数据块地址指针初值 M

50、OV 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, $ CLR TI JNB RI, $; 等待等待2号机的应答信号号机的应答信号 CLR RI MOV

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

52、F; 收到收到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; 清校验和单元清校验和单元http:/ BLOOP2: JNB RI, $ CLR RI MOV A, SBUF MO

53、V 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 ; 校验和不相等,发错误标志校验和不相等,发错误标志 JNB TI, $ ; 转重新接收转重新接收 CLR TI END1: M

54、OV SBUF, #00H RET ENDhttp:/ 3多机通信多机通信(1 1)硬件连接)硬件连接 单单片片机机构构成成的的多多机机系系统统常常使使串串行行口口工工作作在在方方式式2和和方方式式3,采采用用总总线线型型主主从从式式结结构构(一一个个是是主主机机,其其余余的的是是从从机机,从从机机要要服服从从主主机机的的调调度度、支支配配)。有有时时还还要要对对信信号号进进行行光光电电隔隔离离、电电平平转转换换等等。在在实实际际的的多多机机应应用用系系统统中中,常常采采用用RS-485串串行行标标准准总总线线进进行行数数据据传传输输。简简单单的的硬硬件件连连接接如如下下图图所所示示(图图中中

55、没没有有画画出出RS-485接口)。接口)。http:/ 2)通信协议)通信协议主机置主机置SM2位位0,所有从机的,所有从机的SM2位置位置1,处于接收地址帧状态。,处于接收地址帧状态。 主主机机发发送送一一地地址址帧帧,其其中中,8位位是是地地址址,第第9位位为为1表表示示该该帧帧为为地地址帧。址帧。 所所有有从从机机收收到到地地址址帧帧后后,都都将将接接收收的的地地址址与与本本机机的的地地址址比比较较。对对于于地地址址相相符符的的从从机机,使使自自己己的的SM2位位置置0(以以接接收收主主机机随随后后发发来来的的数数据据帧帧),并并把把本本站站地地址址发发回回主主机机作作为为应应答答;对

56、对于于地地址址不不符符的从机,仍保持的从机,仍保持SM2=1,对主机随后发来的数据帧不予理睬。,对主机随后发来的数据帧不予理睬。从从机机发发送送数数据据结结束束后后,要要发发送送一一帧帧校校验验和和,并并置置第第9位位(TB8)为为1,作为从机数据传送结束的标志。,作为从机数据传送结束的标志。主主机机接接收收数数据据时时先先判判断断数数据据接接收收标标志志(RB8),若若接接收收帧帧的的RB8=0,则则存存储储数数据据到到缓缓冲冲区区,并并准准备备接接收收下下帧帧信信息息。若若RB8=1,表表示示数数据据传传送送结结束束,并并比比较较此此帧帧校校验验和和,若若正正确确则则回回送送正正确确信信号

57、号00H,此此信信号号命命令令该该从从机机复复位位(即即重重新新等等待待地地址址帧帧);若若校校验验和出错,则发送和出错,则发送0FFH,命令该从机重发数据。,命令该从机重发数据。 发送数据。发送数据。http:/ 从从机机收收到到复复位位命命令令后后回回到到监监听听地地址址状状态态(SM2=1)。否否则则开开始接收数据和命令。始接收数据和命令。(3 3)应用程序)应用程序设计设计设设主主机机发发送送的的地地址址联联络络信信号号为为:00H,01H,02H,(即即从机设备地址),地址从机设备地址),地址FFH为命令各从机复位,即恢复为命令各从机复位,即恢复SM2=1。主主机机命命令令编编码码为

58、为:01H,主主机机命命令令从从机机接接收收数数据据;02H,主主机机命令从机发送数据。其他都按命令从机发送数据。其他都按02H对待。对待。程程序序分分为为主主机机程程序序和和从从机机程程序序。约约定定一一次次传传递递数数据据为为16个个字字节。节。 程序清单见教材(略)。程序清单见教材(略)。 http:/ 4单片机与单片机与PCPC的通信的通信 1台台PC既既可可以以与与1个个8051单单片片机机应应用用系系统统通通信信,也也可可以以与与多多个个8051单单片片机机应应用用系系统统通通信信;可可以以近近距距离离也也可可以以远远距距离离。单单片片机机与与PC机机通通信信时时,其其硬硬件件接接

59、口口技技术术主主要要是是电电平平转转换换、控控制制接接口口设设计计和和通通信信距距离离不不同同的的接接口口等等处处理理技技术术。 其其硬硬件件连连接接电电路路如如下下图图所所示示。在在Windows的的 环环 境境 下下 , 可可 使使 用用 VB通通 信信 控控 件件(MSComm)却却可可以以很很容容易易实实现现PC机机与与单单片片机机之之间间的通信。的通信。 http:/ ORG 3000H MAIN: MOV TMOD, #20H ; 在在11.0592MHz下,串行口波特率下,串行口波特率 MOV TH1, #0FDH ; 9600bps,方式,方式3 MOV TL1, #0FDH

60、MOV PCON, #00H SETB TR1 MOV SCON, #0D8H LOOP: JBC RI, RECEIVE ; 接收到数据后立即发出去接收到数据后立即发出去 SJMP LOOP RECEIVE: MOV A, SBUF MOV SBUF, A SEND: JBC TI, SENDEND SJMP SENDSENDEND: SJMP LOOP ENDhttp:/ Sub Form_Load()() MSComm1.CommPort=2 MSComm1.PortOpen=TURE MSComm1.Settings=9600, N, 8, 1 End Sub Sub command1_Click()() Instring as string MSComm1.InBufferCount=0 MSComm1.Output=A Do Dummy=DoEvents()() Loop Until(MSComm1.InBufferCount2) Instring=MSComm1.Input End Sub Sub command2_Click()() MSComm1.PortOpen=FALSE UnLoad Me End Subhttp:/ 20-34,35-50http:/

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号