第5章定时器计数器_第1页
第5章定时器计数器_第2页
第5章定时器计数器_第3页
第5章定时器计数器_第4页
第5章定时器计数器_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

1、第5章 MCS-51定时器/计数器,本章主要介绍51系列单片机定时器和计数器问题,本章将介绍以下具体内容:,定时/计数器-定时/计数器的定时和计数功能、定时器计数器的控制寄存器、定时器计数器的工作方式、定时计数器用作外部中断扩展、定时中断联合举例。,基本概念 (1)计数:计数是指对外部事件的个数进行计量。其实质就是对外部输入脉冲的个数进行计量。实现计数功能的器件称为计数器。 (2)定时:8051单片机中的定时器和计数器是一个部件,只不过计数器记录的是外界发生的事件,而定时器则是由单片机内部提供一个非常稳定的计数源进行定时的。这个计数源是由单片机的晶振经过12分频后获得的一个脉冲源。所以定时器计

2、数脉冲的时间间隔与晶振有关。,5.1 MCS-51单片机的定时/计数器,(3)定时的种类 软件定时:利用执行一个循环程序进行时间延迟。其特点是定时时间精确,不需外加硬件电路,但占用CPU时间。因此软件定时的时间不宜过长。 不可编程硬件定时:利用硬件电路实现定时。其特点是不占用CPU时间,通过改变电路元器件参数来调节定时,但使用不够灵活方便。对于时间较长的定时,常用硬件电路来实现。 可编程定时:通过专用的定时器/计数器芯片实现。其特点是通过对系统时钟脉冲进行计数实现定时,定时时间可通过程序设定的方法改变,使用灵活方便。也可实现对外部脉冲的计数功能。,MCS-51单片机内部有两个16位可编程的定时

3、器/计数器,简称为T0和T1,均可作定时器用也可计数器,它们均是二进制加法计数器,当计数器计满回零时能自动产生溢出中断请求,表示定时时间已到或计数已终止。适用于定时控制、延时、外部计数和检测等。 计数器:对引脚T0(P 3.4 )和T1(P3.5.)输入的外部脉冲信号计数,当输入脉冲信号从1到0的负跳变时,计数器就自动加1。计数的最高频率一般为振荡频率的1/24。 定时器:对系统晶振振荡脉冲的12分频输出进行计数。 定时器/计数器的结构 组成:16位加法计数器、工作方式寄存器TMOD和控制寄存器TCON。 T0: TL0(低8位)和TH0(高8位) T1: TL1(低8位)和TH1(高8位),

4、8051单片机内部的定时器/计数器的结构如下图所示。,一、定时/计数器的定时和计数功能,在TMOD中,各有一个控制位(CT),分别用于控制定时/计数器T0和T1是工作在定时器方式还是计数器方式。,1. 定时功能-计数输入信号是内部时钟脉冲,每个机器周期使寄存器的值加1。所以,计数频率是振荡频率的1/12。,2. 计数功能-计数脉冲来自相应的外部输入引脚,T0为P3.4,T1为P3.5。,定时/计数器的核心部件是二进制加1计数器(TH0、TL0或TH1、TL1) 。,二、定时器计数器的控制寄存器,与定时器计数器有关的控制寄存器有:,2定时器控制寄存器TCON,1工作方式控制寄存器TMOD,1工作

5、方式控制寄存器TMOD,T1控制,T0控制,GATE门控位,M1 M0工作方式选择,TMOD用于控制定时器/计数器的工作模式及工作方式,其字节地址为89H,格式如下。其中,低4位用于决定T0的工作方式,高4位用于决定T1的工作方式。,(1)、M1和M0工作方式控制位 M0和M1为工作方式控制位,确定4种工作方式,如表4-1所示。,(2)、C/T定时器/计数器方式选择位 C/T=0,设置为定时方式,对机器周期进行计数; C/T=1,设定为计数方式,对外部信号进行计数,外部信号接至T0(P3.4)或T1(P3.5)引脚。 (3)、GATE门控位 GATE=0时,只要用软件使TR0(或TR1)置1就

6、能启动定时器T0(或T1); GATE=1时,只有在INT0(或INT1)引脚为高电平的情况下,且由软件使TR0(或TR1)置1时,才能启动定时器T0(或T1)工作。,2.定时器/计数器的控制寄存器TCON 设定好了定时器/计数器的工作方式后,它还不能进入工作状态,必须通过设置控制寄存器TCON中的某些位来启动它工。要使定时器/计数器停止运行,也必须通过设置TCON中的某些位来实现。当定时器/计数器计满溢出,或有外部中断请求时,TCON能标明溢出和中断情况。下面介绍控制寄存器TCON每位的含义:,TF0/TF1:定时器溢出中断申请标志位(由硬件自动置位)。 =0:定时器未溢出; =1:定时器溢

7、出(由全“1”变成全“0”)时由硬件自动置位,申请中断,中断被CPU响应后由硬件自动清零。 TR0/TR1:定时器运行启停控制位(可由用户通过软件设置 )。 =0:定时器停止运行; =1:定时器启动运行。,中断请求标志,触发方式选择,启动定时/计数器,0 低电平1 下降沿,0 停止 1 启动,IE0/IE1:外部中断申请标志位(由硬件自动置位 ,中断响应后转向中断服务程序时,由硬件自动清0 )。 =0:没有外部中断申请; =1:有外部中断申请。 IT0/IT1:外部中断请求的触发方式控制位(可由用户通过软件设置 )。 =0:在INT0/INT1端申请中断的信号低电平有效; =1:在INT0/I

8、NT1端申请中断的信号负跳变有效。,计数脉冲输入,三、定时器计数器的工作方式,定时器计数器共有四种工作方式,1. 方式013位方式,13位计数器,定时器,计数器,工作方式0( M1M0=00 ,13位定时器/计数器) 由TH0的全部8位和TL0的低5位(TL0的高3位未用)构成13位加1计数器,当TL0低5位计数满时直接向TH0进位,并当全部13位计数满溢出时,溢出标志位TF0置“1”。,2. 方式116位方式,工作方式1 ( M1M0=01 ,16位定时器/计数器) 由TH0和TL0构成16位加1计数器,其他特性与工作方式0相同。,3. 方式28位自动装入时间常数方式,工作方式2 (M1M0

9、=10 ,自动重装计数初值的8位定时器/计数器) 16位定时器/计数器被拆成两个8位寄存器TH0和TL0,CPU在对它们初始化时必须装入相同的定时器/计数器初值。以TL0作计数器,而TH0作为预置寄存器。当计数满溢出时,TF0置“1”,同时TH0将计数初值以硬件方法自动装入TL0。这种工作方式很适合于那些重复计数的应用场合(如串行数据通信的波特率发生器)。,TR0,+,GATE门,INT0引脚,控制,TH0(8位),TF1,中断,1/12f,TR1,4. 方式32个8位方式,当定时器T0工作在方式3时,定时器T1只能工作在方式02,并且工作在不需要中断的场合。,仅T0可以工作在方式3此时T0分

10、成2个独立的计数器TL0和TH0 ,前者用原来T0的控制信号(TR0、TF0),后者用原来T1的控制信号(TR1、TF1)。TL0:8位定时器/计数器,使用T0原有控制资源TR0和TF0,其功能和操作与方式0或方式1完全相同。 TH0:只能作为8位定时器,借用T1的控制位TR1和TF1,只能对片内机器周期脉冲计数。 在方式3模式下,定时器/计数器0可以构成两个定时器或者一个定时器和一个计数器。,工作方式3 ( M1M0=11 , 2个8位定时器/计数器,仅适用于T0),当CPU用软件给定时器设置了某种工作方式之后,定时器就会按设定的工作方式独立运行,不再占用CPU的操作时间,除非定时器计满溢出

11、,才可能中断CPU 当前操作。CPU也可以重新设置定时器工作方式,以改变定时器的操作。由此可见,定时器是单片机中效率高而且工作灵活的部件。 综上所述,定时器/计数器是一种可编程部件,所以在定时器/计数器开始工作之前,CPU必须将一些命令(称为控制字)写入定时/计数器。将控制字写入定时/计数器的过程叫定时器/计数器初始化。在初始化过程中,要将工作方式控制字写入方式寄存器,工作状态字(或相关位)写入控制寄存器,赋定时/计 数初值。,由于定时器/计数器的功能是由软件编程确定的,所以一般在使用定时/计数器前都要对其进行初始化,使其按设定的功能工作。初始化的步骤一般如下: 1、确定工作方式(即对TMOD

12、赋值); 2、预置定时或计数的初值(可直接将初值写入TH0、TL0或TH1、TL1); 3、根据需要开放定时器/计数器的中断(直接对IE位赋值); 4、启动定时器/计数器(若已规定用软件启动,则可把TR0或TR1置“1”;若已规定由外中断引脚电平启动,则需给外引脚步加启动电平。当实现了启动要求后,定时器即按规定的工作方式和初值开始计数或定时)。,四 、定时器/计数器的初始化,确定时时/计数器初值的具体方法。 因为在不同工作方式下计数器位数不同,因而最大计数值也不同。 现假设最大计数值为M,那么各方式下的最大值M值如下: 方式0:M=213=8 192 方式1:M=216=65 536 方式2:

13、M=28=256 方式3:定时器0分成两个8位计数器,所以两个M均为256。 因为定时器/计数器是作“加1”计数,并在计数满溢出时产生中断,因此初值可以这样计算:,方法:用最大计数量减去需要的计数次数。即: TC=MC 其中:TC计数器需要预置的初值; M计数器的模值(最大计数值); 方式0时,M=213;方式1时,M=216;方式2, 3时,M=28; C计数器计满回0所需的计数值,即设计任务要求的计数值。 例如:流水线上一个包装是12盒,要求每到12盒就产生一个动作,用单片机的工作方式0来控制,则应当预置的初值为: TC = M C = 213 12=8180,定时时间的计算公式为: T=

14、(MTC)T0 (或TC=MT/T0 ) 其中:T定时器的定时时间,即设计任务要求的定时时间; T0计数器计数脉冲的周期,即单片机系统主频周期的12倍; M计数器的模值; TC定时器需要预置的初值。 若设初值TC=0,则定时器定时时间为最大。若设单片机系统主频为12MHz,则各种工作方式定时器的最大定时时间为: 工作方式0: Tmax=2131s=8.192ms 工作方式1: Tmax=2161s=65.536ms 工作方式2和3:Tmax=281s=0.256ms,五 、定时器/计数器对输入信号的要求,当定时器/计数器为定时工作方式时,计数器的加1信号由振荡器的12分频信号产生,即每过一个机

15、器周期,计数器加1,直至计满溢出为止。显然,定时器的定时时间与系统的振荡频率有关。因一个机器周期等于12个振荡周期,所以计数频率fcount=1/12osc。如果晶振为12MHz,则计数周期为:T=1/(12106)Hz12=1s 由于定时的精度取决于输入脉冲的周期,因此当需要高分辨率的定时时,应尽量选用频率较高的晶振(MCS-51最高为12MHz)。,当定时器/计数器为计数工作方式时,通过引脚T0和T1对外部信号计数,外部脉冲的下降沿将触发计数。计数器在每个机器周期的S5P2期间采样引脚输入电平。若一个机器周期采样值为1,下一个机器周期采样值为0,则计数器加1。所以检测一个由1至0的跳变需要

16、两个机器周期,故外部事件的最高计数频率为振荡频率的1/24。例如,如果选用12MHz晶振,则最高计数频率为0.5MHz。虽然对外部输入信号 的占空比无特殊要求,但为了确保某给定电平在变化前至少被采样一次,外部计数脉冲的高电平与低电平保持时间均需在一个机器周期以上。 由于确认一次下跳变要花两个机器周期的时间,因此外部输入的计数脉冲的最高频率为振荡器频率的1/24。,例1、选择T1方式0用于定时,在P1.1输出周期为1ms方波,晶振fosc=6MHz。 解:根据题意,只要使P1.1每隔500us取反一次即可得到1ms的方波,因而T1的定时时间为500us,因定时时间不长,取方式0即可。则M1 M0

17、=0;因是定时器方式,所以C/T=0;在此用软件启动T1,所以GATE=0。T0不用,方式字可任意设置,只要不使其进入方式3即可,一般取0, 故TMOD=00H。系统复位后TMOD为0,可不对TMOD重新清0。,六、定时器/计数器的编程和应用,下面计算500us定时T1初始值: 机器周期T=12/fosc=12/(6106)Hz=2s 设初值为X,则: (213X)210-6s=50010-6s X=7942D=1111100000110B=1F06H 因为在作13位计数器用时,TL1的高3位未用,应填写0,TH1占用高8位,所以X的实际填写应为: X=111100000000110B=F80

18、6H 结果:TH1=F8H,TL1=06H,源程序1如下: SETB TR1 LOOP: MOV TH1, 0F8H MOV TL1,#06H LOOP1:JNB TF1,LOOP1 CLR TF1 CPL P1.1 SJMP LOOP,源程序2如下: ORG 2000H MOV TL1,#06H ;给TL1置初值 MOV TH1,#0F8H ;给TH1置初值 SETB TR1 ;启动T1 LP1:JBC TF1,LP2 ;查询计数溢出否? AJMP LP1 LP2:MOV TL1,#06H ;重新设置计数初值 MOV TH1,#0F8H CPL P1.1 ;输出取反 AJMP LP1 ;重复

19、循环,【例2】利用定时器T0产生定时脉冲。每隔2ms产生宽度为1个机器周期的正脉冲,由P1.0输出此定时序列脉冲信号(设时钟频率为6MHZ)。 解:首先求出定时器T0初值。由于时钟频率为6MHZ,所以,机器周期为2s。 因为:t=(213-T0初值) 机器周期 所以,当t=2ms时,则:(213-T0初值) 210-6=210-3,解得:T0初值=7096=11011101 11000B,其中将高8位11011101 B=DDH赋给TH0,低5位11000B=18H赋给TL0。 方法一: 采用查询工作方式,编程如下: ORG 0000H AJMP MAIN ORG 0100H MAIN: CL

20、R P1.0 MOV TMOD , #00H ;设定T0的工作方式 MOV TH0 , #0DDH ;给定时器T0送初值 MOV TL0 , #18H SETB TR0;启动T0工作 LOOP: JNB TF0 , $;$为当前指令指针地址 CLR TF0 SETB P1.0;产生2s正脉冲 CLR P1.0 MOV TH0 , #0DDH;重装载TH0和TL0 MOV TL0 , #18H SJMP LOOP END,方法二: 采用中断工作方式,编程如下: ORG 0000H AJMP MAIN ORG 000BH AJMP T0INT ORG 0100H MAIN: CLR P1.0 MO

21、V TH0 , #0DDH ;给定时器T0送初值 MOV TL0 , #18H MOV IE , #82H;允许T0中断 SETB TR0;启动T0 SJMP $ 中断服务程序: ORG 0300H T0INT: SETB P1.0 CLR P1.0 MOV TH0 , #0DDH;重装载TH0和TL0 MOV TL0 , #18H RETI,【例3】 用定时器T0产生50HZ的方波。由P1.0输出此方波(设时钟频率为12MHZ)。 解:50HZ的方波周期为20ms,可以用定时器产生10ms的定时,每隔10ms改变一次P1.0的电平,即可得到50HZ的方波。此时,应使定时器T0工作在方式1。工

22、作在方式1时的T0初值,根据下式计算:,t=(216-T0初值) 机器周期 解得t=55536= 11011000 11001100B=D8CCH,其中将高8位D8H赋给TH0,低8位CCH赋给TL0。,采用中断工作方式,编程如下: ORG 0000H AJMP MAIN ORG 000BH AJMP T0INT ORG 0100H MAIN: MOV TMOD , #01H MOV TH0 , #0D8 H MOV TL0 , #0CC H MOV IE , #82H SETB TR0 SJMP $ 中断服务程序; ORG 0300H T0INT: CPL P1.0 MOV TH0 , #0D8H M

温馨提示

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

评论

0/150

提交评论