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

下载本文档

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

文档简介

1、定时器工作原理通电延时型。只要在定时的时间段内(即1分钟)定时器一直得电,则常开触电就会闭合,只要定时器不断电常开触电就会一直闭合。定时器断电则常开触电断开1,定时器/计数器的结构与功能主要介绍定时器0(T0)和定时器1(T1)的结构与功能。图6.1是定时器/计数器的结构框图。由图可知,定时器/计数器由定时器0、定时器1、定时器方式寄存器TMOD和定时器控制寄存器TCON组成。定时器0,定时器1是16位加法计数器,分别由两个8位专用寄存器组成:定时器0由TH0和TL0组成,定时器1由TH1和TL1组成。  图6.1  定时器/计数器结构框图 T

2、L0、TL1、TH0、TH1的访问地址依次为8AH8DH,每个寄存器均可单独访问。定时器0或定时器1用作计数器时,对芯片引脚T0(P3.4)或T1(P3.5)上输入的脉冲计数,每输入一个脉冲,加法计数器加1;其用作定时器时,对内部机器周期脉冲计数,由于机器周期是定值,故计数值确定时,时间也随之确定。TMOD、TCON与定时器0、定时器1间通过内部总线及逻辑电路连接,TMOD用于设置定时器的工作方式,TCON用于控制定时器的启动与停止。6.1.1        计数功能计数方式时,T的功能是计来自T0(P3.4)T1

3、(P3.5)的外部脉冲信号的个数。输入脉冲由1变0的下降沿时,计数器的值增加1直到回零产生溢出中断,表示计数已达预期个数。外部输入信号的下降沿将触发计数,识别一个从“1”到“0”的跳变需2个机器周期,所以,对外部输入信号最高的计数速率是晶振频率的1/24。若晶振频率为6MHz,则计数脉冲频率应低于1/4MHz。当计数器满后,再来一个计数脉冲,计数器全部回0,这就是溢出。脉冲的计数长度与计数器预先装入的初值有关。初值越大,计数长度越小;初值越小,计数长度越大。最大计数长度为65536(216)个脉冲(初值为0)。6.1.2      &

4、#160; 定时方式定时方式时,T记录单片机内部振荡器输出的脉冲(机器周期信号)个数。    每一个机器周期使T0或T1的计数器增加1,直至计满回零自动产生溢出中断请求。定时器的定时时间不仅与定时器的初值有关,而且还与系统的时钟频率有关。在机器周期一定的情况下,初值越大,定时时间越短;初值越小,定时时间越长。最长的定时时间为65536(216)个机器周期(初值为0)。6.2  定时器/计数器控制寄存器与对定时器/计数器有关的控制寄存器共有4个:TMOD、TCON、IE、IP。IE、IP已在中断一节中介绍,这里不再赘述。6.2

5、.1        定时器/计数器控制寄存器TCON特殊功能寄存器TCON用于控制定时器的操作及对定时器中断的控制。其各位定义格式如下。其中D0D3位与外部中断有关,已在中断系统一节中介绍。 TF0和TF1:定时器/计数器溢出标志位。当定时器/计数器0(或定时器/计数器1)溢出时,由硬件自动使TF0(或TF1)置1,并向CPU申请中断。CPU响应中断后,自动对TF1清零。TF1也可以用软件清零。TR0和TR1:定时器/计数起运行控制位。TR0(或TR1)=0,停止定时器/计数器0(或定时器/计数器1)工作

6、。TR0(或TR1)=1,启动定时器/计数器0(或定时器/计数器1)工作。可由软件置1(或清0)来启动(或关闭)定时器/计数器,使定时器/计数器开始计数。用指令SETB (或CLR)使运行控制位置1(或清0)。6.2.2        工作方式寄存器TMODTMOD用于控制定时器/计数器的工作方式。字节地址为89H,不可位寻址,只能用字节设置其内容。其格式如下:  定时器/计数器1定时器/计数器0位序D7D6D5D4D3D2D1D0位标志GATEC/M1M0GATEC/M1M0

7、0;其中,低4位用于T0,高4位用于T1的。GATE:门控位。GATE0,只要用软件使TR0(或TR1)置1就能启动定时器/计数器0(或定时器/计数器1);GATE1,只有在 (或 )引脚为高电平的情况下,且由软件使TR0(或TR1)置1时,才能启动定时器/计数器0(或定时器/计数器1)工作。不管GATE处于什么状态,只要TR0(或TR1)=0定时器/计数器便停止工作。C/ :定时器/计数器工作方式选择位。C/ 0,为定时工作方式;C/ 1,为计数工作方式。M0、M1:工作方式选择位,确定4种工作方式。如表6.1所示。  表

8、6.1  定时器/计数器工作方式选择M1M0工作方式功 能 说 明00113位计数器01216位计数器103自动再装入8位计数器114定时器0:分成两个8位计数器定时器1:停止计数 【例6.1】 设置定时器1工作于方式1,定时工作方式与外部中断无关,则M1=0,M0=1,GATE=0,因此,高4位应为0001;定时器0未用,低4位可随意置数,但低两位不可为11(因方式3时,定时器1停止计数),一般将其设为0000。因此,指令形式为:MOV  TMOD,#10H定时器/计数器工作方式与程序设计通过对特殊功能

9、寄存器TMOD中的设置M1、M0两位的设置来选择四种工作方式,定时器/计数器0、1和2的工作方式相同,方式3的设置差别较大。6.3.1        工作方式0工作方式寄存器TMOD中的M1M0为:00。定时器/计数器T0工作在方式0时,16位计数器只用了13位,即TH0的高8位和TL0的低5位,组成一个13位定时器/计数器。当TL0的低5位计满溢出时,向TH0进位,TH0溢出时,对中断标志位TF0置位,向CPU申请中断。定时器/计数器0方式0的逻辑结构如图6.2所示。   1工作在定

10、时方式C/ 0,定时器对机器周期计数。定时器在工作前,应先对13位的计数器赋值,开始计数时,在初值的基础上进行减1计数。定时时间的计算公式为:定时时间(213 计数初值)×晶振周期×12或             定时时间(213 计数初值)×机器周期若晶振频率为12MHz,则最短定时时间为213(2131)×(1/12)×106×121 s最长定时时间为(2130)×

11、;(1/12)×106×128 192 s2工作在计数方式C/ 1,13位计数器对外部输入信号进行加1计数。利用 由0变为1时,开始计数, 由1变为0时,停止计数,可以测量在 端出现的正脉冲的宽度。计数值的范围是1213=8192 (个外部脉冲)。【例6.2】假设AT89S52单片机晶振频率为12MHz,要求定时时间8ms,使用定时器T0,工作方式0,计算定时器初值X。解: t = (213 X)×机器周期       当单片

12、机晶振频率为12MHz时,机器周期=1s     8×103 = (213 X)×1       X = 8192-8000 = 192       转换成二进制数为:11000000B【例6.3】假设AT89S52单片机晶振频率为12MHz,所需定时时间为250s,当T0工作在方式0时T0计数器的初值是多少?解: t = (213

13、60;X)×机器周期       当单片机晶振频率为12MHz时,机器周期=1s     250 = (213 X0)×1       X 0= 8192-250 = 7942       转换成二进制数为:1111100000110B【例6.4】利用T0方式0产生1ms的定时,在P1.2

14、引脚上输出周期为2ms的方波。设单片机晶振频率fosc12MHz。解:(1)解题思路要在P1.2引脚输出周期为2ms的方波,只要使P1.2每隔1ms取反一次即可。执行指令为CPL  P1.2。(2)确定工作方式 :  方式0  TMOD=00H  C/ 0:T0为定时功能;(D2位)GATE0,只要用软件使TR0(或TR1)置1就能启动定时器T0(或T1);    M1M0 = 00,工作方式0     T

15、MOD的值为 = 00H    TMOD.4TMOD.7可取任意值,因T1不用,这里取0值。    使用 MOV  TMOD , #00H 即可设定T0的工作方式(3)计算1 ms定时时T0的初值机器周期  T = 1fosc×12 = 1s计数个数:X =1ms/ls = 1000设T0的计数初值为x0,则 x0 (213一X)s       &

16、#160;                  81921000                          7192D  转换成二进制

17、数为:11100000  11000B                                       高8位   低5位  &

18、#160;将高8位11100000 = 0E0H装入TH0   将低5位11000 = 18H装入TL0                  1                    

19、0;                  1    EA = 1 ,CPU开放中断;    ET0 = 1,允许T0中断;(4)编程可采用中断和查询两种方式编写程序。方法一:中断方式ORG  0000H          

20、     AJMP  MAIN         ;转主程序MAIN               ORG  000BH             

21、;  AJMP  IT0P           ;转T0中断服务程序IT0P                      ORG  1000H MAIN:MOV   SP,

22、#60H     ;设堆栈指针               MOV  TH0 , #0E0H      ;给定时器T0送初值        MOV TMOD,#00H    ;设置T0为方式0,定时&

23、#160;       MOV  TL0 , #18H     ;送定时初值        MOV TH0,#0E0HSETB  EA            ;CPU开中断     

24、0;  SETB  ET0           ;T0允许中断        SETB TR0             ;启动T0定时HERE: SJMP   HERE  

25、0;      ;等待中断中断服务程序:IT0P:  ORG   1200H         ;T0中断入口       MOV   TL0,#18H     ;重新装入计数初值      

26、   MOV  TH0,#0E0H         CPL   P1.2             ;输出方波        RETI       &#

27、160;           ;中断返回 END方法二:查询方式            MOV  TMOD,#00H   ;设置T0为方式0,定时            MOV &

28、#160;TL0,#18H      ;送初值            MOV  TH0,#0E0H             SETB  TR0         

29、   ;启动T0定时LOOP: JBC   TF0,NEXT     ;查询定时时间到否?            SJMP  LOOPNEXT:MOV  TL0,#18H      ;重新装入计数初值     

30、      MOV TH0,#0E0H           CPL   P1.2             ;输出方波       SJMP  LOOP  

31、60;        ;重复循环6.3.2        工作方式1工作方式寄存器TMOD中的M1M0为:01。定时器T0工作方式1与工作方式0类同,差别在于其中的计数器的位数。工作方式1以16位计数器参与计数。定时器/计数器0方式1的逻辑结构如图6.3所示。 1工作在定时方式C/ 0,定时器对机器周期计数。定时时间的计算公式为:定时时间(213 计数初值)×晶振周期×12或 

32、            定时时间(213 计数初值)×机器周期若晶振频率为12MHz,则最短定时时间为216(2161)×(1/12)×106×121 s最长定时时间为(2160)×(1/12)×106×1265 536 s65.5 ms2工作在计数方式C/ 1,16位计数器对外部输入信号进行加1计数。计数值的范围是1216=65 536 (个外部脉冲)。【例6.5】假设AT89S52单

33、片机晶振频率为12MHz,所需定时时间为10ms,当T0工作在方式1时T0计数器的初值是多少?解: t = (216 X0)×机器周期       当单片机晶振频率为12MHz时,机器周期=1s     10×103 = (213 X0)×1       X = 65536-10000 = 55536 

34、60;  转换成二进制数为:1101100011110000 B = 0D8F0H【例6.6】假设AT89S52单片机晶振频率为12MHz,定时器T0的定时初值为9800,计算T0工作在方式1时的定时时间。解: t = (216 X0)×机器周期       当单片机晶振频率为12MHz时,机器周期=1s     t = (216 9800)×1   

35、60;   t = 65536-9800 = 55736s【例6.7】 用定时器T0产生50HZ的方波。由P1.0输出此方波(设时钟频率为12MHZ)。采用中断方式。解:50HZ的方波周期T为  T = 1/50 = 20ms    可以用定时器产生10ms的定时,每隔10ms改变一次P1.0的电平,即可得到50HZ的方波。定时器T0应工作在方式1。(1)工作在方式1时的T0初值,根据下式计算:     t = (216 X)

36、×机器周期       时钟频率为12MHz,则机器周期 = 1µs     10×103 = (216 X)× 1     X = 65536 10000 = 55536转换为二进制数:11011000   11001100B       

37、0;           高8位     低8位高8位 = 0D8H装入TH0,低8位 = 0CCH装入TL0。(2)程序ORG  0000H                     

38、60;        AJMP  MAIN                 ORG  000BH                  

39、;   ;T0的中断入口地址AJMP  T0INT                 ORG  0100HMAIN: MOV  TMOD , #01H      ;设置T0为工作方式1MOV  TH0 , #0D8 H   

40、;    ;装入定时器初值MOV  TL0 , #0CC HSETB  ET0                     ;设置T0允许中断SETB  EA            &

41、#160;;CPU开中断SETB  TR0                     ;启动T0SJMP  $                    &

42、#160;    ;等待中断 中断服务程序;ORG  0300HT0INT:CPL  P1.0                 ;P1.0取反MOV  TH0 , #0D8H ;重新装入定时初值MOV  TL0 , #0CCHRETI 注:  SETB

43、0; ET0                     ;设置T0允许中断SETB  EA             ;CPU开中断这两条指令可以等效为  MOV  IE , #82H。6.3.3

44、0;       工作方式2定时器/计数器0方式2的逻辑结构如图6.4所示。工作方式寄存器TMOD中的M1M0为:10定时器/计数器在工作方式2时,16位的计数器分成了两个独立的8位计数器TH和TL。此时,定时器/计数器构成了一个能重复置初值的8位计数器。其中,TL用作8位计数器,TH用来保存计数的初值。每当TL计满溢出时,自动将TH的初值再次装入TL。1工作在定时方式C/ 0,定时器对机器周期计数。定时时间的计算公式为:定时时间(28 计数初值)×晶振周期×12或 

45、0;           定时时间(28 计数初值)×机器周期若晶振频率为12MHz,则最短定时时间为28(281)×(1/12)×106×121 s最长定时时间为(280)×(1/12)×106×12256 s  2工作在计数方式C/ 1,8位计数器对外部输入信号进行加1计数。计数值的范围是128=256 (个外部脉冲)。【例6.8】利用T0方式2实现以下功能:当T0(P3.

46、4)引脚每输入一个负脉冲时,使P1.0输出一个500s的同步脉冲。设晶振频率为6MHz,请编程实现该功能。其波形如图6.5所示。 图6.5  例6.6波形图(1) 确定工作方式首先选T0为方式2,外部事件计数方式。当P3.4引脚上的电平发生负跳变时,T0计数器加1,溢出标志TF0置1;然后改变T0为500s定时工作方式,并使P1.0输出由1变为0。T0定时到产生溢出,使P1.0引脚恢复输出高电平。T0先计数,后定时,分时操作。根据题目要求方式控制字TMOD是:计数时:(TMOD) = 0000 0110B = 06H定时时:(TMOD) = 0000 0

47、010B = 02H(2)计算初值机器周期T = 12fosc = 12/6MHZ =2s计数时:计数个数  X = 1计数初值 = (256X) = (2561) =255=0FFH,(TH0)=(TL0)=0FFH定时时:计数个数  X =/ Tm= 500s2s =250定时初值 = 256X = 256250 = 6,(TH0) = (TL0) = 06H    (3)编程方法采用查询方法START:MOV  TMOD,#06H   &#

48、160;   ;T0方式2,外部计数方式            MOV  TH0,#0FFH        ;T0计数初值            MOV  TL0,#0FFH   

49、         SETB  TR0                ;启动T0计数LOOPl:JBC  TF0,PTF01    ;查询T0溢出标志,TF01时转移,且TF00(查P3.4负跳变)      &

50、#160;     SJMP LOOPlPTF01:CLR TR0             ;停止计数            MOV  TMOD,#02H  ;T0方式2,定时       

51、     MOV  TH0,#06H    ;T0定时500s初值            MOV  TL0,#06H            CLR   P1.0   &#

52、160;       ;P1.0清0            SETB  TR0           ;启动定时500sLOOP2:JBC  TF0,PTF02     ;查询溢出标志,定时到TF0=l 

53、;转移,且TF00(第一个500s到否?)            SJMP  LOOP2PTF02:SETB  P1     ;P1.0置1(到了第一个500s)            CLR  TR0    

54、                   ;停止计数            SJMP  START6.3.4        工作方式3工作方式寄存器TMOD中的M1M0为:11。工作方式3仅对定时器/计数器0有效,此时,将16位的计数器分为两个独立的8位计数器TH0和TL0。当定时器/计数器0工作在方式3时,定时器/计数器1只能工作在方式02,并且工作在不需要中断的场合。在一般情况下,当定时器/计数器1用作串行口波特率发生器时,定时器/计数器0才设置为工作方式

温馨提示

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

评论

0/150

提交评论