《第六章定时器及应用精选文档.ppt》由会员分享,可在线阅读,更多相关《第六章定时器及应用精选文档.ppt(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第六章定时器及应用本讲稿第一页,共四十页教学内容教学内容基本要求基本要求:掌握计数:掌握计数/定时器的应用及编程方法定时器的应用及编程方法重点:重点:定时器定时器/计数器工作模式及应用计数器工作模式及应用难点:难点:定时器定时器/计数器的应用编程计数器的应用编程 定时器定时器/计数器的结构及功能计数器的结构及功能定时器定时器/计数器的控制计数器的控制定时器定时器/计数器的计数器的4 4种工作模式及其应用种工作模式及其应用定时器定时器/计数器的编程方法计数器的编程方法本讲稿第二页,共四十页6.1 6.1 定时器概述定时器概述v89C51单片机内有两个16位定时器/计数器,即定时器0(T0)和定时
2、器1(T1),都是16位加1计数器。v功能:定时和事件计数,可用于定时控制、延时、对外部件计数和检测等场合。vT0由两个8位特殊功能寄存器TH0和TL0构成;T1由TH1和TL1构成。本讲稿第三页,共四十页v每个定时器都可由软件设置为定时工作方式或 计数工作方式。由特殊功能寄存器TMOD和TCON所控制。v定时器工作不占用CPU时间,除非定时器/计数器溢出,才能中断CPU的当前操作。v定时器/计数器有四种工作模式。本讲稿第四页,共四十页 定时器对89C51片内振荡器输出经12分频后的脉冲进行计数,即每个机器周期使定时器(T0或T1)的数值加1直至计满溢出。当89C51采用12MHz晶振时,一个
3、机器周期为1s,计数频率为1MHz。定时工作方式定时工作方式 若89C51采用6MHz晶振,计数频率为多少?本讲稿第五页,共四十页v通过引脚T0(P3.4)和T1(P3.5)对外部脉冲信号计数。当输入脉冲信号产生由1至0的下降沿时计数器的值加1。vCPU检测一个检测一个1至至0的跳变需要两个机器周期,故最高计数的跳变需要两个机器周期,故最高计数频率为振荡频率的频率为振荡频率的1/24。v为了确保某个电平在变化之前被采样一次,要求电平保持时间至少是一个完整的机器周期Tcy。计数工作方式计数工作方式TcyTcy本讲稿第六页,共四十页 定时器共有两个控制字,由软件写定时器共有两个控制字,由软件写TM
4、OD和和TCON两个两个8位寄存器,用来设置位寄存器,用来设置T0和和T1的工作模式和控制功能。单片机系统的工作模式和控制功能。单片机系统复位时,两个寄存器所有位都被清复位时,两个寄存器所有位都被清0。6.2 定时器的控制定时器的控制 本讲稿第七页,共四十页 TMOD用于用于控制控制T0和和T1的工作模式的工作模式,其各,其各位的定义格式如下图所示。位的定义格式如下图所示。一、工作模式寄存器一、工作模式寄存器TMOD(89H)TMOD不能位寻址,只能字节寻址。不能位寻址,只能字节寻址。本讲稿第八页,共四十页 TMOD GATE GATE C/TC/T M1M1 M0M0 用于用于用于用于T0T
5、0工作模式工作模式工作模式工作模式 (89H)工作模式工作模式 00模式模式001模式模式110模式模式211模式模式3 功能选择功能选择 1计数计数0定时定时 选通控制选通控制 1受受/INT1控制控制0不受不受/INT1控制控制本讲稿第九页,共四十页M1 M0 工作模式工作模式 功能描述功能描述 0 0 模式模式0 13位计数器位计数器 0 1 模式模式1 16位计数器位计数器 1 0 模式模式2 自动装入自动装入8位计数器位计数器 1 1 模式模式3 定时器定时器0:分成两个分成两个8位计数器位计数器 定时器定时器1:停止计数停止计数M1、M0形成四种编码控制四种工作模式形成四种编码控制
6、四种工作模式本讲稿第十页,共四十页C/T:定时器:定时器/计数器方式选择位计数器方式选择位 C/T=0:定时方式:定时方式 计数片内脉冲(即对机器周期计数,计数片内脉冲(即对机器周期计数,周期确定周期确定)C/T=1:计数方式:计数方式 计数片外脉冲(即对通过计数片外脉冲(即对通过P3.4/P3.5来自片外的计数信号来自片外的计数信号计数,计数,周期不定周期不定)本讲稿第十一页,共四十页GATE:门控位:门控位 GATE=0:软件使:软件使TR0/TR1置置1,即可启动定时器,即可启动定时器 GATE=1:只有:只有INT0/INT1输入信号为高电平,软件输入信号为高电平,软件使使TR0/TR
7、1置置1,才可启动定时器,才可启动定时器定时器的使用:定时器的使用:设置工作方式设置工作方式-置初值置初值-启动启动-溢出中断溢出中断本讲稿第十二页,共四十页二、控制寄存器二、控制寄存器TCON(88H)TCON各位的作用如下:各位的作用如下:TF1(TCON.7)T1溢出标志位。溢出标志位。有溢出有溢出,TF1=1.TF0(TCON.5)T0溢出标志位。溢出标志位。有溢出有溢出,TF0=1.TR1(TCON.6)T1运行控制位运行控制位。TR1=1,启动启动T1 TR0(TCON.4)T0运行控制位运行控制位。TR0=1,启动启动T0 IE1,IT1,IE0和和IT0(TCON.3TCON.
8、0)外部中断外部中断INT1,INT0请求及请求方式控制位。请求及请求方式控制位。89C51复位后,复位后,TCON的所有位被清的所有位被清0。本讲稿第十三页,共四十页6.3 定时器的四种模式及应用定时器的四种模式及应用 89C51单单片片机机的的定定时时/计计数数器器T0和和T1的的四四种种工工作作模模式式,在在模模式式0、模模式式1和和模模式式2时时,T0和和T1的的工工作作模模式式相相同同;在在模模式式3时时,两两个个定时器的工作模式不同定时器的工作模式不同。本讲稿第十四页,共四十页一、模式一、模式 1 1 及其应用及其应用(一)模式(一)模式 1 的逻辑电路结构的逻辑电路结构(以以T0
9、为例为例)模式模式1对应的是一个对应的是一个16位的定时器位的定时器/计数器。计数器。定时计数本讲稿第十五页,共四十页 在这种模式下,寄存器(在这种模式下,寄存器(TH0TH0和和TL0TL0)以全)以全1616位参与计数。位参与计数。TH0TH0占高占高8 8位,位,TL0TL0为低为低8 8位。当位。当TL0TL0计数溢出时,向计数溢出时,向TH0TH0进位;进位;TH0TH0溢出时,向中断标志溢出时,向中断标志TF0TF0进位(硬件置位进位(硬件置位TF0TF0),并申请),并申请中断。中断。(二)模式(二)模式 1 工作特点工作特点本讲稿第十六页,共四十页(二)模式(二)模式 1 工作
10、特点工作特点计100个机器周期数所需的时间为多少?(所接晶振为12MHz)定时时间为:定时时间为:t=计数值计数值机器周期机器周期 =(216T0初值初值)振荡周期振荡周期12如何实现定时?如何得到所需的定时时间?最大可计数多少个机器周期?当当C/T=0时,控制开关接通振荡器时,控制开关接通振荡器12分频输出分频输出端,端,T0对机器周期计数。这就是定时工作方式。对机器周期计数。这就是定时工作方式。利用溢出中断利用溢出中断,并给出相应的计数初值并给出相应的计数初值本讲稿第十七页,共四十页(二)模式(二)模式 1 工作特点工作特点 当当C/T=1时,时,T0对外部输入计数。对外部输入计数。计数长
11、度为:计数长度为:L=(216T0初值初值)(个外部脉冲)(个外部脉冲)本讲稿第十八页,共四十页例例1:设晶振频率为:设晶振频率为12MHz,试计算定时器,试计算定时器T0工作于模式工作于模式1时的最大定时时间时的最大定时时间T。解:解:当当T0处于处于工作模式工作模式1时,加时,加1计数器为计数器为16位位。定时时间为:定时时间为:t=(216T0初值初值)振荡周期振荡周期12 最大定时时间为最大定时时间为“T0初值初值=0”时。时。所以:所以:T=216振荡周期振荡周期12本讲稿第十九页,共四十页例例2 2:用定时器:用定时器T1T1产生一个产生一个50Hz50Hz的方波,由的方波,由 P
12、1.1 P1.1输出。输出。fosc=6MHzfosc=6MHz。解:1)确定定时器T1初值 方波周期T=1/50=0.02s=20ms 用T1定时10ms,时间到P1.1引脚电平取反。(TH1TH1)=ECH=ECH,(,(TL1TL1)=78H=78H20ms10ms 10ms本讲稿第二十页,共四十页解:解:2 2)确定工作模式寄存器)确定工作模式寄存器TMODTMOD的值的值 定时器T1工作于模式1的定时器工作方式,高四位:高四位:GATE=0,C/T=0,M1M0=01,低四位:取,低四位:取0。(TMODTMOD)=0001 0000 B=10H=0001 0000 B=10H3)编
13、程(查询方式)编程(查询方式)#include void main()TMOD=0 x10;TH1=0 xec;TL1=0 x78;TR1=1;P1_1=1;while(1)if(TF1=1)TF1=0;TH1=0 xec;TL1=0 x78;P1_1=P1_1;本讲稿第二十一页,共四十页3)编程(定时器溢出中断方式)编程(定时器溢出中断方式)#include void main()TMOD=0 x10;TH1=0 xec;TL1=0 x78;ET1=1;EA=1;TR1=1;P1_1=1;while(1);void timer_1()interrupt 3 TH1=0 xec;TL1=0 x
14、78;P1_1=P1_1;思考:设定时器设定时器T0用于定时用于定时10ms,晶振为,晶振为6MHz。编。编程实现:程实现:P1.0输出周期为输出周期为40ms,高电平宽为高电平宽为10ms,低低电平宽为电平宽为30ms的矩形波。的矩形波。如何编程如何编程?本讲稿第二十二页,共四十页例例3 3:设定时器:设定时器T0T0选择工作模式选择工作模式1 1的计数器工作方式,其的计数器工作方式,其计数器初值为计数器初值为FFFFFFFFH H,问此时定时器,问此时定时器T0T0的实际用途是什的实际用途是什么?么?解:因其初值为解:因其初值为FFFFHFFFFH,只要随机外来一脉冲即可溢出,向,只要随机
15、外来一脉冲即可溢出,向CPUCPU申请中断,故这一内部中断源实质上已作为外部中断源申请中断,故这一内部中断源实质上已作为外部中断源使用。因此此定时器使用。因此此定时器T0T0并不用于定时或计数。并不用于定时或计数。本讲稿第二十三页,共四十页 该模式对应的是一个该模式对应的是一个13位位的定时器的定时器/计数器。计数器。在这种在这种模式下,(以模式下,(以T0T0为例)为例)1616位寄存器(位寄存器(TH0TH0和和TL0TL0)只用了)只用了1313位位。其中其中TL0TL0的高的高3 3位未用位未用,其余,其余5 5位为整个位为整个1313位的低位的低5 5位,位,TH0TH0占高占高8
16、8位。当位。当TL0TL0的低的低5 5位溢出时,向位溢出时,向TH0TH0进位;进位;TH0TH0溢出时,向中断标志溢出时,向中断标志TF0TF0进位(硬件置位进位(硬件置位TF0TF0),并申),并申请中断。请中断。TH0TL08位5位二、二、模式模式 0 及其应用及其应用本讲稿第二十四页,共四十页二、二、模式模式 0 及其应用及其应用用于定时工作方式时,定时时间为:用于定时工作方式时,定时时间为:t=(213 T0初值初值)振荡周期振荡周期12 用于计数工作方式时,计数长度为:用于计数工作方式时,计数长度为:(213T0初值初值)(个外部脉冲)(个外部脉冲)。本讲稿第二十五页,共四十页例
17、例4:设晶振频率为:设晶振频率为12MHz,试计算定时器,试计算定时器T0工作于模式工作于模式0时的最大定时时间时的最大定时时间T。解:解:当当T0处于处于工作模式工作模式0时,加时,加1计数器为计数器为13位位。定时时间为:定时时间为:t=(213T0初值初值)振荡周期振荡周期12 最大定时时间为最大定时时间为“T0初值初值=0”时。时。所以:所以:本讲稿第二十六页,共四十页 模式模式2把把TL0(或或TL1)配置成一个可以配置成一个可以自动重装载的自动重装载的8 8位位定时器定时器/计数器,逻辑电路结构如下图。计数器,逻辑电路结构如下图。三、三、模式模式 2 及其应用及其应用TL0计数溢出
18、时,不仅使溢出中断标志位计数溢出时,不仅使溢出中断标志位TF0置置1,而且,而且还自动把还自动把TH0中的内容重新装载到中的内容重新装载到TL0中。中。本讲稿第二十七页,共四十页v在程序初始化时,在程序初始化时,TL0TL0和和TH0TH0由软件赋予相同的初值由软件赋予相同的初值。v用于定时工作方式时,定时时间为:t=(28TL0初值)机器周期v用于计数工作方式时,计数长度为:用于计数工作方式时,计数长度为:(2(28 8TL0TL0初值初值)(外部脉冲的个数)(外部脉冲的个数)v该模式可省去软件中重装常数的语句,并可产生相当该模式可省去软件中重装常数的语句,并可产生相当精确的定时时间,精确的
19、定时时间,适合于作串行口波特率发生器适合于作串行口波特率发生器。本讲稿第二十八页,共四十页例例5 5:利用定时器:利用定时器T1T1的模式的模式2 2对外部信号计数。要求每计满对外部信号计数。要求每计满100100次,次,将将 P1.0 P1.0端取反。端取反。解:(1)选择模式 外部信号由T1(P3.5)引脚输入,每发生一次负跳变计数器加1,每输入100个脉冲,计数器发生溢出中断,中断服务程序将P1.0取反一次。T1计数工作方式模式2的模式字为 (TMOD)=60H。T0不用时,TMOD的低4位可任取,但不能进入模式3,一般取0。本讲稿第二十九页,共四十页(2)计算T1的计数初值 X=28
20、100=156=9CH 因此:TL1的初值为9CH,重装初值寄存器TH1=9CH。(3)程序清单v#includevmain()vv TMOD=0 x60;v TH1=0 x9c;v TL1=0 x9c;v ET1=1;v EA=1;v TR1=1;v while(1);vvvoid timer_1()interrupt 3vv P1_1=P1_1;v本讲稿第三十页,共四十页四、四、模式模式 3 3 及其应用及其应用 工作模式工作模式3对对T0和和T1大不相同。大不相同。若将若将T0设置为模式设置为模式3,TL0和和TH0被分成为两个相互独立的被分成为两个相互独立的8位计数器位计数器,逻辑图如
21、下,逻辑图如下图:图:本讲稿第三十一页,共四十页TL0:用原T0的各控制位、引脚和中断源,即C/T,GATE,TR0,TF0,T0(P3.4)引脚,INT0(P3.2)引脚。TL0可工作在定时器方式和计数器方式。其功能和操作与模式0、模式1相同(只是8位)。TH0:只可用作简单的内部定时功能。TH0占用了定时器T1的控制位TR1和T1的中断标志TF1,其启动和关闭仅受TR1的控制。定时器T1无工作模式3状态。在T0用作模式3时,T1仍可设置为模式02。本讲稿第三十二页,共四十页五、五、综合应用举例综合应用举例解:解:(1)定时器)定时器T0工作模式的确定工作模式的确定模式模式0最长可定时最长可
22、定时16.384ms;模式模式1最长可定时最长可定时131.072ms;模式模式2最长可定时最长可定时512s;LED每每1秒闪烁一次。秒闪烁一次。定时定时0.5s,可选用模式,可选用模式1,每隔,每隔100ms中断一中断一 次,中断次,中断5次从而次从而达到达到0.5s的定时。的定时。(2)求计数器初值)求计数器初值X (216X)12/(6 106)=10010-3 s X=15536=3CB0H 因此:因此:(TL0)=0B0H (TH0)=3CH例例6 6:设时钟频率为:设时钟频率为6MHz6MHz,试编写用,试编写用T0T0产生定时使产生定时使P1.0P1.0所接的所接的发光二极管每
23、发光二极管每1 1秒钟闪烁一次。秒钟闪烁一次。本讲稿第三十三页,共四十页源程序清单(使发光二极管闪烁,每源程序清单(使发光二极管闪烁,每1S1S闪烁闪烁1 1次)次)#includeunsigned char temp=5;main()TMOD=0 x01;TH0=0X3C;TL0=0XB0;ET0=1;EA=1;TR0=1;P1_0=1;while(1);void timer_0()interrupt 1 TH0=0X3C;TL0=0XB0;temp-;if(temp=0)temp=5;P1_0=P1_0;本讲稿第三十四页,共四十页例例7 7:设计实时时钟程序。时钟就是以秒、分、时为单位进行
24、计时。:设计实时时钟程序。时钟就是以秒、分、时为单位进行计时。用定时器与中断的联合应用用定时器与中断的联合应用。解:解:(1)实现时钟计时的基本方法)实现时钟计时的基本方法 计算计数初值。计算计数初值。时钟计时的最小单位是秒,可把定时器的定时时间定为时钟计时的最小单位是秒,可把定时器的定时时间定为100ms,计数溢出,计数溢出10次即得到次即得到1秒;秒;10次计数可用软件方次计数可用软件方法实现。法实现。假定使用定时器假定使用定时器T1,以工作模式,以工作模式1进行进行100ms的定时。如的定时。如fosc=6MHz,则计数初值,则计数初值X为:为:X=15536=3CB0H (TL0)=0
25、B0H (TH0)=3CH本讲稿第三十五页,共四十页例例6 6:设计实时时钟程序。时钟就是以秒、分、时为单位进行计时。:设计实时时钟程序。时钟就是以秒、分、时为单位进行计时。用定时器与中断的联合应用用定时器与中断的联合应用。采用定时方式进行溢出次数的累计,计满采用定时方式进行溢出次数的累计,计满10次即得到秒次即得到秒计时。计时。设置软件计数器初值为设置软件计数器初值为10,每,每100ms定时时间到溢出中断,使定时时间到溢出中断,使软件计数器减软件计数器减1,直到减到,直到减到0,则,则1s到。到。从秒到分和从分到时的计时是通过累计和数值比较实现的。从秒到分和从分到时的计时是通过累计和数值比
26、较实现的。设置几个累加单元分别进行对设置几个累加单元分别进行对1s,1min,1h进行计数。满进行计数。满1s,秒,秒位累加;满位累加;满60s,分位累加;满,分位累加;满60min,时位累加;满,时位累加;满24h全部全部累加单元清累加单元清0本讲稿第三十六页,共四十页(2 2)程序流程及程序清单)程序流程及程序清单 主程序流程如右主程序流程如右图图所示。所示。设设T1为模式为模式1设中断次数设中断次数清计时单元清计时单元开中断开中断启动启动T1调用显示子程序调用显示子程序时钟主程序流程时钟主程序流程开始本讲稿第三十七页,共四十页保护现场赋计数初值到1s?秒单元加1秒单元=60?秒单元清0分
27、单元加1分单元=60?分单元清0时单元加1时单元=24?时单元清0恢复现场返回入入口口aaNNNNYYYY中断服务程序流程图中断服务程序流程图 中断服务流程如右图所示:本讲稿第三十八页,共四十页 源程序如下:源程序如下:v#include vunsigned char count=0;vunsigned char second=0;vunsigned char min=0;vunsigned char hour=0;vmain()vv TMOD=0 x10;v TL1=0 xb0;v TH1=0 x3c;v ET1=1;v EA=1;v TR1=1;v while(1);v本讲稿第三十九页,共四十页中断服务程序:中断服务程序:vvoid timer_1()interrupt 3v v TL1=0 xb0;TH1=0 x3c;count+;v if(count=10)v count=0;second+;v if(second=60)v second=0;min+;v if(min=60)v min=0;hour+;v if(hour=24)hour=0;v v v v 本讲稿第四十页,共四十页