定时器工作原理_第1页
定时器工作原理_第2页
定时器工作原理_第3页
定时器工作原理_第4页
定时器工作原理_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

1、定时器工作原理vised as of 23 November 2020定时器工作原理通电延时型。只要在定时的时间段内(即1分钟)定时器一直得电,则常开触电就会闭合,只要 定时器不断电常开触电就会一直闭合。定时器断电则常开触电断开b定时器/计数器的结构与功能主要介绍定时器0 (TO)和定时器1 (T1)的结构与功能。图是定时器"I数器的 结构框图。山图可知,定时器/计数器山定时器0、定时器1、定时器方式寄存器TMOD 和定时器控制寄存器TCON组成。定时器0,定时器1是16位加法计数器,分别曲两个8位专用寄存器组成:定时 器0 III THO和TLO组成,定时器1 III TH1和TL

2、1组成。图定时器/计数器结构框图TLO、TL1、THO、TH1的访问地址依次为8AH、8DH,每个寄存器均可单独访问。定 时器0或定时器1用作计数器时,对芯片引脚T0 ()或Tl ()上输入的脉冲计数, 每输入一个脉冲,加法计数器加1:其用作定时器时,对内部机器周期脉冲计数,山 于机器周期是定值,故计数值确定时,时间也随之确定。TMOD、TCON与定时器0、定时器1间通过内部总线及逻辑电路连接,TMOD用于设 置定时器的工作方式,TCON用于控制定时器的启动与停止。计数功能计数方式时,T的功能是计来自T0T1的外部脉冲信号的个数。输入脉冲山1变0的下降沿时,计数器的值增加1直到回零产生溢出中断

3、,表示 计数已达预期个数。外部输入信号的下降沿将触发计数,识别一个从到“0”的 跳变需2个机器周期,所以,对外部输入信号最高的讣数速率是晶振频率的1/24。若 晶振频率为6MHz,则计数脉冲频率应低于1/4MHZ。当计数器满后,再来一个计数脉 冲,计数器全部回0,这就是溢出。脉冲的计数长度与计数器预先装入的初值有关。初值越大,计数长度越小;初值 越小,计数长度越大。最大计数长度为65536 (21$)个脉冲(初值为0) o定时方式定时方式时,T记录单片机内部振荡器输出的脉冲(机器周期信号)个数。 每一个机器周期使T0或T1的计数器增加1,直至计满回零自动产生溢岀中断请求。定时器的定时时间不仅与

4、定时器的初值有关,而且还与系统的时钟频率有关。在 机器周期一定的情况下,初值越大,定时时间越短;初值越小,定时时间越长。最长 的定时时间为65536 (216)个机器周期(初值为0) o定时器/计数器控制寄存器与对定时器/计数器有关的控制寄存器共有4个:TMOD、TCON、IE、IP。IE、IP 已在中断一节中介绍,这里不再赘述。定时器/计数器控制寄存器TCON特殊功能寄存器TCON用于控制定时器的操作及对定时器中断的控制。其各位定义 格式如下。其中D0'D3位与外部中断有关,已在中断系统一节中介绍。TFO和TF1:定时器/计数器溢出标志位。当定时器/il数器0 (或定时器/计数器 1

5、)溢出时,山硬件自动使TFO (或TF1)置1,并向CPU申请中断。 CPU响应中断后,自动对TF1清零。TF1也可以用软件清零。TRO和TR1:定时器/计数起运行控制位。TRO (或TR1) =0,停止定时器/计数器0 (或定时器/计数器1)工作。(或TR1)二1.川动M时器il数器0 (或疋时器HI嗷器1) 1】 作。可山软件置1 (或清0)来启动(或关闭)定时器/计数器,使定时器/计数器开始计数。用指令SETB (或CLR)使运行控制位置1 (或清0) o工作方式寄存器TMODTMOD用于控制定时器/汁数器的工作方式。字节地址为89H,不可位寻址,只能用 字节设置其内容。其格式如下:定时

6、器/计数器1定时器/计数器0位序D7D6D5D4D3D2DIDO位标 志GATEC/MlMOGATEc/MlMO其中,低4位用于T0,高4位用于T1的。GATE: fl控位。IGATE=0,只要用软件使TRO (或TR1)置1就能启动定时器/计数器0 (或 定时器/计数器1);GATE=1,只有在(或)引脚为高电平的悄况下,且山软件使TRO (或 TR1)置1时,才能启动定时器/计数器0 (或定时器/il数器1)工作。不管GATE处于什么状态,只要TRO (或TR1)二0定时器/计数器便停止工 作。C/:定时器/计数器工作方式选择位。C/=0,为定时工作方式;C/=l,为计数工作方式。MO、M

7、l:工作方式选择位,确定4种工作方式。如表所示。表定时器川数器丄作方式选择MlMO工作方 式功能说明00113位计数器01216位计数器103自动再装入8位计数器114定时器0:分成两个8位计数器定时器1:停止计数【例】设置定时器1丄作于方式1,定时工作方式与外部中断无关,则M1=O, MO二1, GATE二0,因此,高4位应为0001;定时器0未用,低4位可随意置数,但低两 位不可为11 (因方式3时,定时器1停止讣数),一般将其设为0000。因此,指令 形式为:MOV?TMOD, #10H定时器/计数器工作方式与程序设计通过对特殊功能寄存器TMOD中的设置Ml. M0两位的设置来选择四种工

8、作方式,定时器/计数器0、1和2的工作方式相同,方式3的设置差别较大。工作方式0工作方式寄存器TMOD中的M1M0为:00。定时器/计数器T0工作在方式0时,16位计数器只用了 13位,即TH0的高8位和TLO的低5位,组成一个13位定时器/计数器。当TL0的低5位计满溢出时,向TH0进位,TH0溢出时,对中断标志位TFO置位,向CPU申请中断。定时器/计数器0方式0的逻辑结构如图所示。1工作在定时方式C/二0,定时器对机器周期计数。定时器在工作前,应先对13位的计数器赋值,定时时间二(2,3-i+数初值)x晶振周期X12或定时时间二(2口一计数初值)x机器周期若晶振频率为12MHz,则最短定

9、时时间为213 - (213 一 1)x(1/12)x10_6x12 = 1 ps最长定时时间为(213-0) x (1/12) xl0'6xl2 = 8 192 ps2工作在计数方式C/=l, 13位计数器对外部输入信号进行加1计数。利用由0变为1时,开始计数,由1变为0时,停止计数,可以测量在端出现的 正脉冲的宽度。计数值的范围是12亠8192(个外部脉冲)。【例】假设AT89S52单片机晶振频率为12MHz,要求定时时间8ms,使用定时器 TO,工作方式0,计算定时器初值X。解:. t= (2,3-X) x机器周期当单片机晶振频率为12MHz时,机器周期=1卩s.-.8xlO3=

10、 (2b-X) xlX = 8192-8000= 192转换成二进制数为:【例】假设AT89S52单片机晶振频率为12MHz,所需定时时间为250* 当TO 工作在方式0时TO计数器的初值是多少解:. t= (213-X) x机器周期当单片机晶振频率为12MHz时,机器周期=1卩s.-.250= (2,3-Xo) xlXo= 8192-250 = 7942转换成二进制数为:【例】利用TO方式0产生1ms的定时,在引脚上输出周期为2ms的方波。设单 片机晶振频率fosc二12MHz。解:(1)解题思路要在引脚输出周期为2ms的方波,只要使每隔1ms取反一次即可。执行指令为CPL?。(2)确定工作

11、方式:方式 0?TMOD=OOHc/ = o : TO为定时功能;(D2位)GATE二0,只要用软件使TRO (或TR1)置1就能启动定时器TO (或T1);MlM0 = 00,工作方式0/.TMOD 的值为=00H可取任意值,因T1不用,这里取0值。使用MOV7TMOD , #00H即可设定TO的工作方式机器周期 T = 1 /dscxl2 = Ips十数个数:X =lms/ljis = 1000设TO的计数初值为xo,则xo = (213 X)s =81921000二 7192D转换成二进制数为:高8位低5位将高8位装入TH0将低5位11000 = 18H装入TLO HEA = 1 ,CP

12、U开放中断;ETO= 1,允许TO中断;编程可采用中断和查询两种方式编写程序。方法一:中断方式 oRGOOOBHHaJMPITOP ;转TO中断服务程序ITOP? ORGIOOOH MAIN : MOV7SP, #60H?;设堆栈指针 movtho, #OEOH ;给定时器TO送初值 mov TMOD, #()()H?;设置TO为方式0,定时 mOVTLO,#18H ;送定时初值mov tho, #oeohIsETB TRO;启动TO定时 here : SJMPHERE ;等待中断中断服务程序:Hitop : orgi2ooh ; to 中断入口.CPLH;输出方波Hreti方法二:查询方式M

13、OVTMOD, #00H?;设置TO为方式0,定时MOVTLO, #18H?;送初值MOVTHO, #0E0H?SETBTRO ;启动TO定时LOOP : JBC7TF0. NEXT?;查询定时时间到否SJMPLOOPNEXT : MOV7TLO, #18H?;重新装入计数初值MOV THO, #OEOHCPL;输出方波SJMPLOOP ;重复循环工作方式1工作方式寄存器TMOD中的M1M0为:01。定时器T0工作方式1与工作方式0 类同,差别在于其中的计数器的位数。工作方式1以16位计数器参与计数°定时器/计数器0方式1的逻辑结构如图所示。1工作在定时方式C/二0,定时器对机器周期

14、计数。定时时间的计算公式为:或定时时间二(2一计数初值)x机器周期若晶振频率为12MHz,则最短定时时间为2,6-(216 - 1)x(1/12)x10'6x12=1 ps最长定时时间为(216-0) x (1/12) x10_6x12 = 65 536 ps= ms2.工作在计数方式C/= 1, 16位计数器对外部输入信号进行加1计数。计数值的范围是1-2,6=65 536 (个外部脉冲)。【例】假设AT89S52单片机晶振频率为12MHz,所需定时时间为10ms,当TO 工作在方式1时TO计数器的初值是多少解:. t= (2,6-Xo) x机器周期当单片机晶振频率为12MHz时,机

15、器周期=1阴A 10xl03= (2,3-Xo) xlX = 65536-10000 = 55536转换成二进制数为:【例】假设AT89S52单片机晶振频率为12MHz,定时器TO的定时初值为9800, 计算TO工作在方式1时的定时时间。解:. t= (2,6-Xo) x机器周期当单片机晶振频率为12MHz时,机器周期=1阴/.t= (2,6-9800) xlt = 65536-9800 = 55736ps【例】用定时器TO产生50HZ的方波。由输出此方波(设时钟频率为12MHZ)。采用中断方式。解:50HZ的方波周期T为T二1/50 = 20ms可以用定时器产生10ms的定时,每隔10ms改

16、变一次的电平,即可得到50HZ的方波。定时器T0应工作在方式io(1) 工作在方式1时的T0初值,根据下式计算:t= (2,6-X) x机器周期时钟频率为12MHz,则机器周期二lp10xl03= (216-X) x 1X = 65536- 10000 = 55536转换为二进制数:高8位低8位高8位=0D8H装入TH0,低8位二OCCH装入TL0。(2) 程序ORGOOOOHAJMPMAINORGOOOBH ; T0的中断入口地址AJMP7T0INTORG0100HMAIN : MOVTMOD,#01H ;设置T0为工作方式1MOVTH0, #0D8 H;装入定时器初值MOV7TL0 , #

17、0CC HSETBETO;设置TO允许中断SETBEA;CPU开中断SETBTRO;启动T0SJMPS;等待中断中断服务程序;ORG70300HTOINT : CPL?;取反MOV7THO , #0D8H ;重新装入定时初值MOV7TLO , #OCCHRETI注:SETBETO;设置TO允许中断SETBEA;CPU开中断这两条指令可以等效为MOVIE , #82HO工作方式2定时器/计数器0方式2的逻辑结构如图所示。工作方式寄存器TMOD中的M1M0为:10定时器/计数器在工作方式2时,16位的计数器分成了两个独立的8位计数器TH 和TL。此时,定时器/计数器构成了一个能重复置初值的8位计数

18、器。其中,TL用作8位计数器,TH用来保存计数的初值。每当TL计满溢出时,自 动将TH的初值再次装入TLO1工作在定时方式C/二0,定时器对机器周期计数。定时时间的计算公式为:或定时时间二(2*-计数初值)x机器周期若晶振频率为12MHz,则最短定时时间为28 - (28 - 1)x(1/12)x10'6x12 = 1 ps最长定时时间为(28-0) x (1/12) xl0_6xl2 = 256psC/二1, 8位计数器对外部输入信号进行加1计数。计数值的范围是12匚256(个 外部脉冲)。【例】利用TO方式2实现以下功能:当TO引脚每输入一个负脉冲时,使输出一个500阴的同步脉冲。

19、设晶振频率为 6MHz,请编程实现该功能。其波形如图所示。图例波形图(1)确定工作方式首先选TO为方式2,外部事件计数方式。当引脚上的电平发生负跳变时,TO计 数器加1,溢岀标志TFO置1 ;然后改变TO为500Ms定时工作方式,并使输出由1变 为0。TO定时到产生溢出,使引脚恢复输出高电平。TO先计数,后定时,分时操 作。计数时:(TMOD) = 0000 0110B = 06H定时时:(TMOD)二 0000 0010B = 02H计算初值机器周期 T= 12 /fosc = 12/6MHZ =2ps计数时:计数个数X=1计数初值二(256 - X) = (256 - 1) =255=0F

20、FH, (THO)=(TLO)=OFFH定时时:计数个数X =17 Tm= 500ps / 2ps =250定时初值二 256 - X = 256 - 250 = 6,(TH0)二(TL0)二 06H?(3) 编程方法采用查询方法START : MOV7TMOD, #O6H? ; TO 方式 2,外部计数方式MOVTHO, #OFFH? ; TO 计数初值MOVTLO, #0FFHSETBTRO ;启动TO计数I且TF0二0(查负跳变)RjMP LOOP1PTF01 : CLR TR0?;停止计数MOVTMOD, #02H? ; TO 方式 2,定时MOVTHO, #06H? ; TO 定时

21、500ps 初值MOVTLO, #06HCLR;清0SETBTRO ;启动定时 500psLOOP2 : JBC7TF0, PTF02?;查询溢出标志,定时到TFO=I转移, 且TF0 = 0(第一个500ps到否)SJMPLOOP2PTF02 : SETBP 1 ;置 1(到了第一个 500ps) CLRTRO ;停止计数工作方式3工作方式寄存器TMOD中的M1M0为:11。工作方式3仅对定时器/计数器0有 效,此时,将16位的计数器分为两个独立的8位计数器THO和TLO。当定时器/计数 器0工作在方式3时,定时器/计数器1只能工作在方式0 2,并且工作在不需要中 断的场合。在一般情况下,当定时器/计数

温馨提示

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

评论

0/150

提交评论