




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第7 7章章 定时器定时器/ /计数器及应用计数器及应用内容内容 定时定时/计数技术概述计数技术概述7.180C51单片机的定时器单片机的定时器/计数器计数器7.2定时器定时器/计数器的应用计数器的应用7.37.1 定时定时/计数技术概述计数技术概述定时和计数都是利用计数器对脉冲进行计数。定时是对定时和计数都是利用计数器对脉冲进行计数。定时是对周期固定的内部机器周期脉冲进行计数,定时时间为脉周期固定的内部机器周期脉冲进行计数,定时时间为脉冲周期与脉冲个数的乘积。计数是对外界产生的脉冲进冲周期与脉冲个数的乘积。计数是对外界产生的脉冲进行计数。计数器的计数方式可以是加行计数。计数器的计数方式可以
2、是加1 1计数,也可以是计数,也可以是减减1 1计数。计数。在单片机控制系统中定时在单片机控制系统中定时/ /计数的实现方法有计数的实现方法有3 3种:软件种:软件定时定时/ /计数器、数字电路定时计数器、数字电路定时/ /计数器和可编程定时计数器和可编程定时/ /计计数器。数器。7.1.1软件定时软件定时/计数器计数器软件定时是靠执行一段循环程序以实现时间延迟。如本书前面软件定时是靠执行一段循环程序以实现时间延迟。如本书前面常用的常用的void DelayMS(uint xms)延时子函数:延时子函数:void DelayMS(uint xms) uint i,j;for(i=0; ixms
3、;i+) for(j=0;j110;j+);7.1.2 数字电路定时数字电路定时/计数计数需要计数较多或定时时间较长,常使用硬件电路完成。硬件定需要计数较多或定时时间较长,常使用硬件电路完成。硬件定时时/计数的特点是定时计数的特点是定时/计数功能全部由硬件电路完成,不占用计数功能全部由硬件电路完成,不占用CPU的时间,但需要通过改变电路中的元件参数来调节定时时的时间,但需要通过改变电路中的元件参数来调节定时时间和计数长度,使用上不够灵活。间和计数长度,使用上不够灵活。7.1.3 可编程定时可编程定时/计数计数为了使用方便并增加单片机的功能,很多单片机内部都集成了为了使用方便并增加单片机的功能,
4、很多单片机内部都集成了可编程的定时可编程的定时/计数器。计数器。80C51单片机内部就有可编程的定时单片机内部就有可编程的定时/计数器,其中计数器,其中51子系列内部有子系列内部有2个,个,52子系列内部有子系列内部有3个。本章个。本章只介绍只介绍51子系列内部的定时器子系列内部的定时器/计数器。计数器。7.2 80C51单片机的定时器单片机的定时器/计数器计数器5151子系列单片机内部有两个独立的子系列单片机内部有两个独立的1616位可编程定时位可编程定时/ /计计数器,分别称为定时器数器,分别称为定时器0(0(简称简称T0)T0)和定时器和定时器1(1(简称简称T1)T1),它们可以编程选
5、择工作于定时模式或外部事件计数模它们可以编程选择工作于定时模式或外部事件计数模式,此外它们的工作方式、定时时间、计数值、启动、式,此外它们的工作方式、定时时间、计数值、启动、是否允许中断等都可以由程序设定。是否允许中断等都可以由程序设定。7.2.1 定时器定时器/计数器的结构计数器的结构定时器定时器/计数器的内部结构框图如图计数器的内部结构框图如图7-1所示。所示。图图7-1 定时器定时器/计数器计数器0、1的内部结构框图的内部结构框图7.2.2 定时器定时器/计数器的工作原理计数器的工作原理定时器定时器/计数器计数器T0、T1的工作原理图如图的工作原理图如图7-2所示。所示。图图7-2 定时
6、器定时器/计数器的工作原理图计数器的工作原理图 (a) 定时器定时器/计数器计数器0(T0)工作原理图工作原理图7.2.2 定时器定时器/计数器的工作原理计数器的工作原理定时器定时器/计数器计数器T0、T1的工作原理图如图的工作原理图如图7-2所示。所示。图图7-2 定时器定时器/计数器的工作原理图计数器的工作原理图 (b) 定时器定时器/计数器计数器1(T1)工作原理图工作原理图1.工作方式寄存器工作方式寄存器TMOD TMOD用来选择定时器用来选择定时器/计数器的工作模式和工作方式,字计数器的工作模式和工作方式,字节地址为节地址为89H,不能进行位寻址,低,不能进行位寻址,低4位用于定时器
7、位用于定时器/计数器计数器T0,高,高4位用于定时器位用于定时器/计数器计数器T1,其格式如下所示:,其格式如下所示: 8位分为位分为2组,高组,高4位控制位控制T1,低,低4位控制位控制T0。各位的含义说明如下:。各位的含义说明如下:(1) M1、M0:工作方式选择位:工作方式选择位定时器定时器/计数器有四种工作方式,由计数器有四种工作方式,由M1、M0进行设置,如表进行设置,如表7-1所示。所示。表表7-1定时器定时器/计数器计数器0、1的工作方式选择的工作方式选择M1M0工作方式工作方式00方式方式0,为,为13位定时器位定时器/计数器计数器01方式方式1,为,为16位定时器位定时器/计
8、数器计数器10方式方式2,具有自动重装初值的,具有自动重装初值的8位定时器位定时器/计数器计数器11方式方式3,仅适用于,仅适用于T0,T0分成两个独立的分成两个独立的8位计数器,位计数器,T1停止计数停止计数(2) :定时器:定时器/计数器工作模式选择位。计数器工作模式选择位。 0,为定时器工作模,为定时器工作模式;式; 1,为计数器工作模式。,为计数器工作模式。(3) GATE:门控位。:门控位。GATE=0,定时器,定时器/计数器计数器0、1的启动计数由的启动计数由TCON中的中的TR0、TR1控制,当控制,当TR0或或TR1为为1时,就可以启动定时器时,就可以启动定时器/计数器计数器0
9、或或1工作。工作。GATE=1,定时器,定时器/计数器计数器0、1的启动计数由的启动计数由TCON中的中的TR0、TR1和外部中断引脚和外部中断引脚 、 一起控制。当一起控制。当TR0或或TR1为为1,同时,同时 或或 也为高电也为高电平时,才能启动定时器平时,才能启动定时器/计数器计数器0或或1工作。工作。C/TC/TC/TC/T例例7-1 若定时器若定时器T0工作于方式工作于方式2计数模式,定时器计数模式,定时器T1工作于方式工作于方式1定定时模式,时模式,GATE=0,要求设置,要求设置TMOD。解:根据解:根据TMOD各位的定义,得各位的定义,得TMOD=01100001B=61H。2
10、控制寄存器控制寄存器TCONTCON的字节地址为的字节地址为88H,可位寻址,位地址为,可位寻址,位地址为88H8FH,TCON的格式如下:的格式如下: 低低4位与外部中断有关,已在第位与外部中断有关,已在第6章中介绍,高章中介绍,高4位的功能如下:位的功能如下:(1) TF1:定时器:定时器/计数器计数器T1溢出中断请求标志位。溢出中断请求标志位。定时器定时器/计数器计数器T1计数溢出后,硬件自动将计数溢出后,硬件自动将TF1置置1。使用查询方式。使用查询方式时,查询到时,查询到TF1=1后,应该及时用软件方法将后,应该及时用软件方法将TF1清清0。使用中断方。使用中断方式时,式时,CPU响
11、应中断后,进入中断服务程序后由硬件自动将响应中断后,进入中断服务程序后由硬件自动将TF1清清0。(2) TR1:定时器:定时器/计数器计数器T1的运行控制位。的运行控制位。TR1=1,启动定时器,启动定时器/计计数器工作;数器工作;TR1=0,停止定时器,停止定时器/计数器工作。计数器工作。(3) TF0:定时器:定时器/计数器计数器T0的溢出中断请求标志位,其功能与的溢出中断请求标志位,其功能与TF1类类似。似。(4) TR0:定时器:定时器/计数器计数器T0的运行控制位,其功能与的运行控制位,其功能与TR1类似。类似。3. 定时器定时器/计数器的工作模式选择计数器的工作模式选择定时器定时器
12、/计数器的工作模式选择由计数器的工作模式选择由 决定,如图决定,如图7-3所示所示 位控制的电子开关位控制的电子开关S1决定了定时器决定了定时器/计数器的工作模式,电子计数器的工作模式,电子开关打在上面开关打在上面 0,电子开关打在下面,电子开关打在下面 1。 0时为定时器工作模式,以系统晶振频率时为定时器工作模式,以系统晶振频率12分频后的信号,分频后的信号,即即Tcy信号作为计数器基准信号。信号作为计数器基准信号。 1时为计数器工作模式,计数脉冲为时为计数器工作模式,计数脉冲为P3.4引脚上的外部输入引脚上的外部输入脉冲,当引脚上发生负跳变时,计数器加脉冲,当引脚上发生负跳变时,计数器加1
13、。C/TC/TC/TC/TC/T4. 定时器定时器/计数器的运行控制计数器的运行控制定时器定时器/计数器的运行控制如图计数器的运行控制如图7-4所示,电子开关所示,电子开关S2闭合时闭合时定时器定时器/计数器启动计数,计数器启动计数,S2断开时定时器断开时定时器/计数器停止计数计数器停止计数。电子开关。电子开关S2由门控位由门控位GATE、运行控制位及外部中断输、运行控制位及外部中断输入引脚入引脚 共同控制。共同控制。 INT0当门控位当门控位GATE=0时,或门时,或门A输出为输出为1,定时器,定时器/计数器计数器T0启动运行受启动运行受TR0一个条件控制。当门控位一个条件控制。当门控位GA
14、TE=1时,定时器时,定时器/计数器计数器T0启动运行启动运行受受TR0和外部中断和外部中断0引脚引脚 的状态两个条件控制。此时,定时器的状态两个条件控制。此时,定时器T0的运的运行情况如表行情况如表7-2所示。所示。表表7-2 GATE=1时,与门时,与门B输出与定时器输出与定时器T0的运行情况的运行情况INT0TR0与门与门B输出输出定时器工作情况定时器工作情况111启动运行启动运行010停止运行停止运行100停止运行停止运行000停止运行停止运行7.2.3 定时器定时器/计数器的工作方式计数器的工作方式 定时器定时器/计数器的工作方式有计数器的工作方式有4种,由种,由TMOD中的中的M1
15、M0控制。控制。1. 方式方式0当当TMOD的的M1M0=00时,定时器时,定时器/计数器工作于方式计数器工作于方式0,为,为13位位的定时器的定时器/计数器方式。由计数器方式。由TL0的低的低5位和位和TH0的高的高8位构成位构成13位位的计数器,如图的计数器,如图7-5所示。所示。TL0低低5位计数溢出则向位计数溢出则向TH0进位,进位,TH0计数溢出则置位计数溢出则置位TCON中的溢出标志位中的溢出标志位TF0。单片机内部的定时器单片机内部的定时器/计数器为加法计数器,假设计数器为加法计数器,假设N是计数值,是计数值,x为计数初值,为计数初值,n为定时器为定时器/计数器的位数,它们之间的
16、关系如下:计数器的位数,它们之间的关系如下:N=2n-x 如果定时器如果定时器/计数器工作于定时器工作模式,晶振频率为计数器工作于定时器工作模式,晶振频率为fosc,要求的定时时间为要求的定时时间为T,则机器周期,则机器周期Tcy为为12/fosc,定时时间、计,定时时间、计数初值和机器周期的关系如下:数初值和机器周期的关系如下:T(2n-x)Tcy 方式方式0中初值中初值x的设置范围:的设置范围:08191(0213-1),TH0、TL0从初值从初值开始加法计数,直至溢出,所以设置的初值不同,定时时间或开始加法计数,直至溢出,所以设置的初值不同,定时时间或计数值也不同。因此方式计数值也不同。
17、因此方式0工作时计数值和定时值分别为:工作时计数值和定时值分别为: N= 213-x =8192-x T(2n-x)Tcy= (8192-x )Tcy由于为加由于为加1计数器,当计数器,当x取为取为8191时,计数值最小,为时,计数值最小,为1;当;当x取取为为0时,计数值最大,为时,计数值最大,为8192。因此方式。因此方式0的计数范围为:的计数范围为:18192,定时范围:,定时范围:(18192)Tcy。注意:方式注意:方式0加法计数器加法计数器TH0溢出后,必须用程序重新对溢出后,必须用程序重新对TH0、TL0设置初值,否则下一次设置初值,否则下一次TH0、TL0将从将从0开始加法计数
18、。开始加法计数。 例例7-2 已知晶振频率已知晶振频率fosc=12MHz,要求定时器,要求定时器0产生产生1ms的定时的定时时间,问送入时间,问送入TH0和和TL0的计数初值各为多少?试对定时器的计数初值各为多少?试对定时器进行初始化编程。进行初始化编程。解:由于晶振频率为解:由于晶振频率为12MHz,所以机器周期,所以机器周期Tcy=1s,定时器,定时器0选用方式选用方式0时最大定时时间为时最大定时时间为8192s,即,即8.192ms,而题目要,而题目要求的定时时间为求的定时时间为1ms,小于,小于8.192ms,所以可以选用方式,所以可以选用方式0。(1) 计算计算TH0、TL0的计数
19、初值的计数初值T=(2n-x)Tcy(213-x)1s =1ms=1000s,所以所以x=8192-1000=7192=1C18H=00011100 00011000B,取其低,取其低13位,放入位,放入TH0和和TL0,则,则TH0=E0H,TL0=18H。(2) TMOD寄存器初始化寄存器初始化根据题目要求,根据题目要求,GATE (TMOD.3)=0, (TMOD.2)=0,M1 (TMOD.1)=0,M0 (TMOD.0)=0,定时器,定时器/计数器计数器1没有使用,相应的各个位随意状态,均取为没有使用,相应的各个位随意状态,均取为0,则,则(TMOD)=00H。(3) 初始化程序初始
20、化程序void init_time0(void)TMOD=0 x00; /设置设置T0为定时器模式,工作在方式为定时器模式,工作在方式0TH0=0 xE0;TL0=0 x18; TR0=1; /启动启动T0方式方式0是是13位定时器位定时器/计数器,目的是为了兼容早期的计数器,目的是为了兼容早期的MCS-48单片机,计数单片机,计数初值有高初值有高8位和低位和低5位构成,确定初值比较麻烦,所以在实际应用中已应用不位构成,确定初值比较麻烦,所以在实际应用中已应用不多。多。2. 方式方式1当当TMOD的的M1M0=01时,定时器时,定时器/计数器工作于方式计数器工作于方式1,工作于,工作于16位的
21、定时器位的定时器/计数器方式。由计数器方式。由8位位TL0和和8位位TH0构成构成16位计数位计数器,如图器,如图7-6所示。所示。TL0计数溢出则向计数溢出则向TH0进位,进位,TH0计数溢出计数溢出则置位则置位TCON中的溢出标志位中的溢出标志位TF0。方式方式1和方式和方式0的差别仅在于计数器的位数不同,方式的差别仅在于计数器的位数不同,方式1是是16位定位定时器时器/计数器,由计数器,由TH0高高8位和位和TL0低低8位构成,方式位构成,方式0是是13位定时位定时器器/计数器。计数器。方式方式1中初值中初值x的设置范围:的设置范围:065535(0216-1),TH0、TL0从初从初值
22、开始加法计数,直至溢出。选择方式值开始加法计数,直至溢出。选择方式1工作时计数值和定时值工作时计数值和定时值分别为:分别为:N= 216-x=65536-x T(216-x) Tcy =(65536-x )Tcy当当x取为取为65535时,计数值最小,为时,计数值最小,为1;当;当x取为取为0时,计数值最时,计数值最大,为大,为65536。因此方式。因此方式1的计数范围为:的计数范围为:165536,定时范围:,定时范围:(165536)Tcy。注意:方式注意:方式1加法计数器加法计数器TH0溢出后,必须用程序重新对溢出后,必须用程序重新对TH0、TL0设置初值,否则下一次设置初值,否则下一次
23、TH0、TL0将从将从0开始加法计数。开始加法计数。例例7-3 已知晶振频率已知晶振频率fosc=12MHz,要求定时器,要求定时器0产生产生10ms的定时时间,试对的定时时间,试对定时器进行初始化编程。定时器进行初始化编程。解:由于晶振频率为解:由于晶振频率为12MHz,机器周期,机器周期Tcy=1s,选用方式,选用方式0时最大定时时间时最大定时时间8.192ms,选择方式,选择方式1时,最大定时时间为时,最大定时时间为65.536ms,要求的定时时间为,要求的定时时间为10ms,所以不能选择方式,所以不能选择方式0,只能选用方式,只能选用方式1。(1) 计算计算TH0、TL0的计数初值的计
24、数初值由于晶振频率为由于晶振频率为12MHz,所以机器周期,所以机器周期Tcy=1s,则定时时间为:,则定时时间为:T=(2n-x)Tcy(216-x)1s =10ms,所以所以x=65536-10000=55536=D8F0H即即TH0=D8H,TL0=F0H,或者,或者TH0=55536/256,TL0=55536%256(2) TMOD寄存器初始化寄存器初始化根据题目要求,根据题目要求,GATE (TMOD.3)=0, (TMOD.2)=0,M1 (TMOD.1)=0,M0 (TMOD.0)=1,定时器,定时器/计数器计数器1没有使用,相应的各个位状态随意,均取为没有使用,相应的各个位状
25、态随意,均取为0,则,则(TMOD)=01H。(3) 初始化程序初始化程序void init_time0(void)TMOD=0 x01; /设置设置T0为定时器模式,工作在方式为定时器模式,工作在方式1TH0=(65536-50000)/256;TL0=(65536-50000)%256; TR0=1; /启动启动T03. 方式方式2当当TMOD的的M1M0=10时,定时器时,定时器/计数器工作于方式计数器工作于方式2,工作于,工作于8位自动重装初值的位自动重装初值的8位定时器位定时器/计数器方式。方式计数器方式。方式2计数器构成计数器构成如图如图7-7所示,所示,TL0作为作为8位计数器使
26、用,位计数器使用,TH0作为初值寄存器作为初值寄存器用,用,TL0计数溢出后,将计数溢出后,将TF0置置1,同时发出自动重装初值的信,同时发出自动重装初值的信号,使三态门打开,将号,使三态门打开,将TH0中初值自动送入中初值自动送入TL0,使,使TL0从初值从初值开始重新计数。开始重新计数。方式方式2中初值中初值x的设置范围:的设置范围:0255 (028-1),TL0从初值开始加从初值开始加法计数,溢出后法计数,溢出后TH0中初值重新置入中初值重新置入TL0。方式。方式2工作时计数值工作时计数值和定时值分别为:和定时值分别为: N= 28-x=256-x T(28-x )Tcy= (256-
27、x )Tcy当当x取为取为255时,计数值为时,计数值为1;当;当x取为取为0时,计数值为时,计数值为256。因此。因此方式方式2的计数范围为:的计数范围为:1256,定时范围:,定时范围: (1256)Tcy由于工作方式由于工作方式2有自动重新装载初值的功能,因此特别适用于定有自动重新装载初值的功能,因此特别适用于定时控制。时控制。例例7-4 已知晶振频率已知晶振频率fosc=12MHz,要求每隔,要求每隔200s产生一定时信产生一定时信号,试对定时器进行初始化。号,试对定时器进行初始化。解:选择定时器解:选择定时器0,工作在方式,工作在方式2。(1) 计算计算TH0、TL0的计数初值的计数
28、初值由于晶振频率为由于晶振频率为12MHz,所以机器周期,所以机器周期Tcy=1s,则,则(2n-x)Tcy(28-x)1s =200s,所以,所以x=256-200=56=38H即即TH0=38H,TL0=38H 或者或者TH0=(256-200)/256,TL0=(256-200)%256。(2) TMOD寄存器初始化寄存器初始化GATE (TMOD.3)=0, (TMOD.2)=0,M1 (TMOD.1)=1,M0 (TMOD.0)=0,定时器,定时器/计数器计数器1没有使用,相应的各个位状态随没有使用,相应的各个位状态随意,均取为意,均取为0,则,则(TMOD)=02H。(3) 初始化
29、程序初始化程序void init_time0(void)TMOD=0 x02; /设置设置T0为定时器模式,工作在方式为定时器模式,工作在方式1TH0=0 x38;TL0=0 x38; TR0=1; /启动启动T04. 方式方式3方式方式3只适用于定时器只适用于定时器/计数器计数器T0,当,当TMOD的的M1M0=11时,定时,定时器时器/计数器计数器T0工作于方式工作于方式3,定时器,定时器/计数器计数器T1不能工作在方式不能工作在方式3。定时器。定时器/计数器计数器T0工作于方式工作于方式3的工作原理如图的工作原理如图7-8所示。所示。(a) TL0作作8位定时器位定时器/计数器计数器(b
30、) TH0作作8位定时器位定时器图图7-8 定时器定时器/计数器计数器T0方式方式3原理图原理图方式方式3时,时,T0分成两个独立的分成两个独立的8位计数器:位计数器:TL0和和TH0,TL0是是8位定时器位定时器/计数器,计数器,TH0是是8位定时器,位定时器,TL0使用使用T0的状态控制的状态控制位位 、GATE、TR0、 ,当,当TL0计数溢出时,由硬件将计数溢出时,由硬件将TF0置置1,向向CPU发出中断请求。发出中断请求。TH0固定为定时器方式,是固定为定时器方式,是8位定时器模位定时器模式,只能对机器周期式,只能对机器周期Tcy进行计数,不能作为计数器模式,对外进行计数,不能作为计
31、数器模式,对外部脉冲进行计数。由于部脉冲进行计数。由于TL0已占用了已占用了TR0和和TF0,因此,因此TH0借用借用了定时器了定时器/计数器计数器T1的的TR1和和TF1,TH0的启动和停止受的启动和停止受TR1控控制,制,TH0定时时间到,将定时时间到,将TF1置置1。定时器定时器/计数器计数器T0工作在方式工作在方式3时,定时器时,定时器/计数器计数器T1虽然还可以虽然还可以选择为方式选择为方式0、方式、方式1或方式或方式2,但是由于,但是由于TH0借用了定时器借用了定时器/计数计数器器T1的的TR1和和TF1,不能产生溢出中断请求信号,这时,不能产生溢出中断请求信号,这时T1就不就不能
32、用于需要中断方式的场合,而通常用作串行口的波特率发生能用于需要中断方式的场合,而通常用作串行口的波特率发生器。器。 定时器定时器/计数器计数器T0工作在方式工作在方式3时的计数范围为:时的计数范围为:1256,定时范,定时范围:围:(1256)Tcy。7.2.4定时器定时器/计数器对输入信号的要求计数器对输入信号的要求定时器定时器/计数器的作用是用来精确地确定某一段时间间隔计数器的作用是用来精确地确定某一段时间间隔(作为定作为定时器用时器用),或累计外部输入的脉冲个数,或累计外部输入的脉冲个数(作为计数器用作为计数器用)。当用做。当用做定时器时,在其输入端输入周期固定的脉冲,根据定时器定时器时
33、,在其输入端输入周期固定的脉冲,根据定时器/计数计数器中累计器中累计(或事先设定或事先设定)的周期固定的脉冲个数,即可计算出所定的周期固定的脉冲个数,即可计算出所定时间的长度。时间的长度。当当80C51内部的定时器内部的定时器/计数器被选定为定时器工作模式时,计计数器被选定为定时器工作模式时,计数输入信号是内部机器周期脉冲,每个机器周期产生一个脉数输入信号是内部机器周期脉冲,每个机器周期产生一个脉冲,计数器增冲,计数器增1,定时器,定时器/计数器的输入脉冲频率为时钟振荡频计数器的输入脉冲频率为时钟振荡频率的率的1/12。当采用。当采用12MHz频率的晶体时,计数速率为频率的晶体时,计数速率为1
34、MHz,输,输入脉冲的周期间隔为入脉冲的周期间隔为1s。由于定时的精度决定于输入脉冲的。由于定时的精度决定于输入脉冲的周期,因此当需要高分辨率的定时,应尽量选用频率较高的晶周期,因此当需要高分辨率的定时,应尽量选用频率较高的晶振振(80C51最高为最高为40 MHz )。对输入信号的基本要求如图对输入信号的基本要求如图7-9所示,图中所示,图中Tcy为机器周期。为机器周期。图图7-9 对输入信号的基本要求对输入信号的基本要求7.3 定时器定时器/计数器的应用计数器的应用 定时器定时器/计数器是单片机应用系统中重要的功能部件,通过灵活计数器是单片机应用系统中重要的功能部件,通过灵活应用其不同的工
35、作方式可以减轻应用其不同的工作方式可以减轻CPU的负担,简化外围电路,的负担,简化外围电路,本节通过几个典型的例子,介绍定时器的使用方法。本节通过几个典型的例子,介绍定时器的使用方法。例例7-5 已知晶振频率已知晶振频率fosc=12MHz,编程使,编程使P2.0引脚上产生引脚上产生100ms的方波程序。的方波程序。解:分析:方波的周期为解:分析:方波的周期为100ms,要求高、低电平的持续时间各为,要求高、低电平的持续时间各为50ms,采,采用定时器定时,中断工作方式。每用定时器定时,中断工作方式。每50ms时间到时,在中断服务程序中将时间到时,在中断服务程序中将P2.0引脚电平状态取反,即
36、可获得所需要的波形。引脚电平状态取反,即可获得所需要的波形。晶振频率晶振频率fosc=12MHz,Tcy12/fosc=1s ,选择定时器,选择定时器T1的方式的方式1。(1) 确定计算初值确定计算初值(2n-x)Tcy(216-x)1s =50ms,x=65536-50000=15536=3CB0H即即TH1=3CH,TL1=B0H 或者或者TH1=(65536-50000)/256,TL1=(65536-50000)%256。(2) TMOD寄存器初始化寄存器初始化GATE (TMOD.7)=0, (TMOD.6)=0,M1 (TMOD.5)=0,M0 (TMOD.4)=1,定时器,定时器
37、/计数器计数器0没有使用,相应的各个位状态随没有使用,相应的各个位状态随意,均取为意,均取为0,则,则(TMOD)=10H。(3) 程序如下:程序如下:#include#define uint unsigned intsbit fangbo=P20;void main()TMOD=0 x10; /设置设置T1为定时器模式,工作在方式为定时器模式,工作在方式1TH1=0 x3C;TL1= 0 xB0; EA=1; /开总中断开总中断ET1=1; /允许允许T1中断中断TR1=1; /启动启动T1while(1);void timer1( ) interrupt 3 /定时器定时器1中断服务程序中
38、断服务程序TH1=(65536-50000)/256;TL1=(65536-50000)%256;fangbo=fangbo;P2.0引脚上输出的周期位引脚上输出的周期位100ms的方波仿真结果如图的方波仿真结果如图7-10所示。所示。图图7-10 P2.0引脚上的引脚上的100ms方波信号仿真图方波信号仿真图(每小格为每小格为10ms)例例7-6 利用单片机的定时器设计一个秒表,使它从利用单片机的定时器设计一个秒表,使它从059s计数,计数,晶振频率晶振频率fosc=12MHz,设计秒表的,设计秒表的protes仿真电路,并编仿真电路,并编写程序。写程序。解:解:(1) 分析:已知晶振频率分
39、析:已知晶振频率fosc=12MHz,Tcy=1s,选定,选定时器时器T0或定时器或定时器T1均可,但是应该选择方式均可,但是应该选择方式0、1、2或或3中中的哪一种呢?的哪一种呢? 各种方式的定时时间计算公式为各种方式的定时时间计算公式为(2n-x)Tcy,当计数初值,当计数初值x为为0时,各种方式最长的定时时间如下:时,各种方式最长的定时时间如下: 方式方式0: 213Tcy8192 s8.192 ms;方式;方式1: 216Tcy65536 s65.536ms,方式,方式2: 28Tcy256 s,方式,方式3:28Tcy256 s。 方式方式1是定时时间最长的一种方式,它的最长定时时间
40、为是定时时间最长的一种方式,它的最长定时时间为65.536ms,也达不到,也达不到1s。因此要达到。因此要达到1s的延时,只能采用多次中的延时,只能采用多次中断的方式。选择定时器断的方式。选择定时器T0,方式,方式1,设定,设定T0的定时时间为的定时时间为50ms,每隔每隔50ms中断中断1次,中断次,中断20次即为次即为1s。(2) 确定计算初值确定计算初值(2n-x)Tcy(216-x)1s =50ms,x=65536-50000=15536=3CB0H即即TH0=3CH,TL0=B0H (3) TMOD寄存器初始化寄存器初始化GATE (TMOD.3)=0, (TMOD.2)=0,M1
41、(TMOD.1)=0,M0 (TMOD.0)=1,定时器,定时器/计数器计数器1没有使用,相应的各个位随意状没有使用,相应的各个位随意状态,均取为态,均取为0,则,则(TMOD)=01 H。(4) Proteus仿真电路设计仿真电路设计秒表的秒表的Proteus电路如图电路如图7-11所示,采用两位共阴极数码管显示秒所示,采用两位共阴极数码管显示秒数,数码管段选由数,数码管段选由P1口控制,十位数码管的位选由口控制,十位数码管的位选由P2.0控制,个控制,个位数码管的位选由位数码管的位选由P2.1控制。控制。(5) 程序设计如下:程序设计如下:#include#define uint unsi
42、gned int#define uchar unsigned charuchar temp,aa,shi,ge;uchar code table=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f; /共阴极数码管码表共阴极数码管码表 void display(uchar shi,uchar ge); /显示子程序显示子程序void delay(uint z); /延时子程序延时子程序void init(); /定时器初始化子程序定时器初始化子程序void main()init();/初始化子程序初始化子程序while(1)i
43、f(aa=20) aa=0;temp+;if(temp=59) temp=0; shi=temp/10;ge=temp%10;display(shi,ge);void delay(uint z)/延时子程序延时子程序uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void display(uchar shi,uchar ge)/显示子程序显示子程序 P2=0 xfe; /送入十位数码管位选信号,显示数字送入十位数码管位选信号,显示数字 P1=tableshi; /送入十位数码管的段选信号送入十位数码管的段选信号delay(5);P2=0 xfd; /送入个位数码
44、管位选信号,显示数字送入个位数码管位选信号,显示数字P1=tablege; /送入个位数码管的段选信号送入个位数码管的段选信号delay(5);void init()/定时器初始化程序定时器初始化程序temp=0;TMOD=0 x01; /设置设置T0为定时器模式,工作在方式为定时器模式,工作在方式1TH0=(65536-50000)/256;TL0=(65536-50000)%256; EA=1; /开总中断开总中断ET0=1; /允许允许T0中断中断TR0=1; /启动启动T0void timer0() interrupt 1/定时器定时器T0中断服务子程序中断服务子程序TH0=(6553
45、6-50000)/256;/重新设置定时器初值重新设置定时器初值TL0=(65536-50000)%256;aa+;/中断次数加中断次数加1例例7-7 利用单片机的定时器设计交通信号灯控制电路,用利用单片机的定时器设计交通信号灯控制电路,用Proteus仿真软件验证。仿真软件验证。解:解:(1) 分析:交通灯有四个方向,南北向是同样的工作模式,东分析:交通灯有四个方向,南北向是同样的工作模式,东西向是同样的工作模式,只要将交通灯的工作模式列出来,西向是同样的工作模式,只要将交通灯的工作模式列出来,采用定时器实现定时控制,当定时时间到的时候,进行模式采用定时器实现定时控制,当定时时间到的时候,进行模式切换,就可以实现交通灯的控制。设交通灯有如下四种工作切换,就可以实现交通灯的控制。设交通灯有如下四种工作模式模式(为了便于演示,切换时间较短为了便于演示,切换时间较短): 东西向绿灯与南北向红灯亮东西向绿灯与南北向红灯亮5s; 东西向绿灯灭,黄灯闪烁东西向绿灯灭,黄灯闪烁5次;次; 东西向红灯与南北向绿灯亮东西向红灯与南北向绿灯亮5s; 南北向绿灯灭,黄灯闪烁南北向绿灯灭,黄灯闪烁5次;次;定时器的四种定时方式中方式定时器的四种定时方式中方式1是定时时间最长的一种方式,但它是定时时间最长的一种方式,但它的最长定时时间也只为的最长定时时间也只为65.536
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年楚雄货运从业资格证怎么考
- 个人装修水电合同
- 2025年宜昌道路运输从业资格证考试内容是什么
- 2025年平顶山货运从业资格模拟考
- 2025年室外装修承包合同8篇
- 《数据可视化技术应用》1.2 开启数据可视化之门-教案
- 2025年陕西货运从业资格证考试题技巧
- 旋片真空泵竞争策略分析报告
- 产品订单合同范本
- 电安装施工合同范本
- 五年级下册道德与法治教学计划
- 读书分享-于永正-我怎样教语文
- 2024工贸企业重大事故隐患判定标准解读
- 高中语文(统编版)选必中册-第二单元教材分析解读课件
- 哈尔滨铁道职业技术学院单招《语文》考试复习题库(含答案)
- 华东师范大学《政治学概论》2023-2024学年第一学期期末试卷
- 1医学图像处理绪论课件
- 校园门禁系统升级方案
- 第七讲推动构建新时代的大国关系格局32024秋形势与政策
- 汽车行业职位职级管理制度实施方案
- 八年级物理上册课程纲要
评论
0/150
提交评论