定时器计数器

上传人:豆浆 文档编号:37444926 上传时间:2018-04-16 格式:DOC 页数:17 大小:887KB
返回 下载 相关 举报
定时器计数器_第1页
第1页 / 共17页
定时器计数器_第2页
第2页 / 共17页
定时器计数器_第3页
第3页 / 共17页
定时器计数器_第4页
第4页 / 共17页
定时器计数器_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《定时器计数器》由会员分享,可在线阅读,更多相关《定时器计数器(17页珍藏版)》请在金锄头文库上搜索。

1、1第第 7 章章 定时器定时器/计数器计数器MCS-51 单片机内部有两个 16 位可编程的定时器/计数器,即定时器 T0 和定时器 T1(8052 提供 3 个,这第三个称定时器 T2) 。它们既可用作定时器方式,又可用作计数 器方式。7 7 . 1 定时器定时器/计数器结构计数器结构定时器/计数器的基本部件是两个 8 位的计数器(其中 TH1,TL1 是 T1 的计数器, TH0,TL0 是 T0 的计数器)拼装而成。在作定时器使用时,输入的时钟脉冲是由晶体振荡器的输出经 12 分频后得到的,所 以定时器也可看作是对计算机机器周期的计数器(因为每个机器周期包含 12 个振荡周 期,故每一个

2、机器周期定时器加 1,可以把输入的时钟脉冲看成机器周期信号) 。故其频 率为晶振频率的 1/12。如果晶振频率为 12MHZ,则定时器每接收一个输入脉冲的时间为 1us。 当它用作对外部事件计数时,接相应的外部输入引脚 T0(P3.4)或 T1(P3.5)。在这种 情况下,当检测到输入引脚上的电平由高跳变到低时,计数器就加 1(它在每个机器周 期的 S5P2时采样外部输入,当采样值在这个机器周期为高,在下一个机器周期为低时, 则计数器加 1) 。加 1 操作发生在检测到这种跳变后的一个机器周期中的 S3P1,因此需要 两个机器周期来识别一个从“1”到“0”的跳变,故最高计数频率为晶振频率的 1

3、/24。 这就要求输入信号的电平要在跳变后至少应在一个机器周期内保持不变,以保证在给定 的电平再次变化前至少被采样一次。 定时器/计数器有四种工作方式,其工作方式的选择及控制都由两个特殊功能寄存器 (TMOD 和 TCON)的内容来决定。用指令改变 TMOD 或 TCON 的内容后,则在下一 条指令的第一个机器周期的 S1P1时起作用。 1、 定时器的方式寄存器定时器的方式寄存器 TMODD7 D6 D5 D4 D3 D2 D1 D0GATEC/TM1M0GATEC/TM1M0T1 方式控制字 T1 方式控制字图 7-1 TMOD 寄存器各位定义特殊功能寄存器 TMOD 为定时器的方式控制寄存

4、器,寄存器中每位的定义如图 7-12所示。高 4 位用于定时器 1,低 4 位用于定时器 0。其中 M1,M0 用来确定所选的工作 方式,如表 7-1 所示。 M1 M0 定时器/计数器四种工作方式选择,见表 7-1 所示。表 7-1 工作方式选择表M1 M0方方 式式说说 明明0 0013 位定时器/计数器0 1116 位定时器/计数器1 02自动装入时间常数的 8 位定时器/计数器1 13对 T0 分为两个 8 位独立计数器;对 T1 置方式 3 时停止工作(无中断重装 8 位计数器) C/ 定时器方式或计数器方式选择位。C/=1 时,为计数器方式;C/=0 时,TTT为定时器方式。 GA

5、TE 定时器/计数器运行控制位,用来确定对应的外部中断请求引脚(,)是否参与 T0 或 T1 的操作控制。当 GATE=0 时,只要定时器控制寄0INT1INT存器 TCON 中的 TR0(或 TR1)被置 1 时,T0(或 T1)被允许开始计数(TCON 各位 含义见后面叙述) ;当 GATE=1 时,不仅要 TCON 中的 TR0 或 TR1 置位,还需要 P3 口的或引脚为高电平,才允许计数。0INT1INT2、 定时器控制寄存器定时器控制寄存器 TCON 特殊功能寄存器 TCON 用于控制定时器的操作及对定时器中断的控制。其各位定义 如图 7-2 所示。其中 D0D3 位与外部中断有关

6、,已在中断系统一节中介绍。D7 D6 D5 D4 D3 D2 D1 D0TF1TR1TF0TR0IE1IT1IE0IT0用于外部中断图 7-2 TCON 寄存器各位定义 TR0 T0 的运行控制位。该位置 1 或清 0 用来实现启动计数或停止计数。 TF0 T0 的溢出中断标志位。当 T0 计数溢出时由硬件自动置 1;在 CPU 中断处 理时由硬件清为 0。 TR1 T1 的运行控制位,功能同 TR0。 TF1 T1 的溢出中断标志位,功能同 TF0。3TMOD 和 TCON 寄存器在复位时其每一位均清零。7 7 . 2 工作方式工作方式如前所述,MCS-51 片内的定时器/计数器可以通过对特

7、殊功能寄存器 TMOD 中的控制位 C/的设置来选择定时器方式或计数器方式;通过对 M1M0 两位的设置来选择T四种工作方式,现以 T0 为例加以说明。 1、 方式 0当 M1M0 设置为 00 时,定时器选定为方式 0 工作。在这种方式下,16 位寄存器只 用了 13 位,TL0 的高三位未用。由 TH0 的 8 位和 TL0 的低 5 位组成一个 13 位计数器。当 GATE=0 时,只要 TCON 中的 TR0 为 1,TL0 及 TH0 组成的 13 位计数器就开始计数;当 GATE=1 时,此时仅 TR0=1 仍不能使计数器计数,还需要引脚为 1 才能0INT使计数器工作。由此可知,

8、当 GATE=1 和 TR0=1 时,TH0+TL0 是否计数取决于引脚的信号,当由 0 变 1 时,开始计数;当由 1 变 0 时,停止计数,0INT0INT0INT这样就可以用来测量在端出现的脉冲宽度。0INT当 13 位计数器从 0 或设定的初值,加 1 到全“1”以后,再加 1 就产生溢出。这时, 置 TCON 的 TF0 位为 1,同时把计数器变为全“0” 。 2、 方式 1方式 1 和方式 0 的工作相同,唯一的差别是 TH0 和 TL0 组成一个 16 位计数器。 3、 方式 2方式 2 把 TL0 配置成一个可以自动恢复初值(初始常数自动重新装入)的 8 位计数 器,TH0 作

9、为常数缓冲器, TH0 由软件预置值。当 TL0 产生溢出时,一方面使溢出标 志 TF0 置 1,同时把 TH0 中的 8 位数据重新装入 TL0 中。方式 2 常用于定时控制。例如希望每隔 250s 产生一个定时控制脉冲,则可以采用12MHz 的振荡器,把 TH0 预置为 6,并使 C/=0 就能实现。方式 2 不用作串行口波特T率发生器。 4、 方式 3方式 3 对定时器 T0 和定时器 T1 是不相同的。若 T1 设置为方式 3,则停止工作 (其效果与 TR1=0 相同) 。所以方式 3 只适用于 T0。方式 3 使 MCS-51 具有三个定时器/计数器(增加了一个附加的 8 位定时器/

10、计数器) 。 当 T0 设置为方式 3 时,将使 TL0 和 TH0 成为两个相互独立的 8 位计数器, TL0 利用4了 T0 本身的一些控制(C/,GATE,TR0,和 TF0)方式,它的操作与方式 0T0INT和方式 1 类似。而 TH0 被规定为用作定时器功能,对机器周期计数,并借用了 T1 的控 制位 TR1 和 TF1。在这种情况下 TH0 控制了 T1 的中断。这时 T1 还可以设置为方式 02,用于任何不需要中断控制的场合,或用作串行口的波特率发生器。 通常,当 T1 用作串行口波特率发生器时,T0 才定义为方式 3,以增加 一个 8 位计数器。7 . 3 定时器定时器/计数器

11、的初始化计数器的初始化1、初始化步骤、初始化步骤 MCS-51 内部定时器/计数器是可编程序的,其工作方式和工作过程均可由 MCS-51 通过程序对它进行设定和控制。因此,MCS-51 在定时器/计数器工作前必须先对它进行 初始化。初始化步骤为: (1)根据题目要求先给定时器方式寄存器 TMOD 送一个方式控制字,以设定 定时器/计数器的相应工作方式。 (2)根据实际需要给定时器/计数器选送定时器初值或计数器初值,以确实需要 定时的时间和需要记数的初值。 (3)根据需要给中断允许寄存器 IE 选送中断控制字和给中断优先级寄存器 IP 选送中断优先级字,以开放相应中断和设定中断优先级。 (4)给

12、定时器控制寄存器 TCON 送命令字,以启动或禁止定时器/计数器的运 行。 2、计数器初值的计算 定时器/计数器可用软件随时随地起动和关闭,起动时它就自动加“1”记数,一直 记到满,即全为“1” ,若不停止,计数值从全“1”变为全“0” ,同时将计数溢出位置“1”并向 CPU 发出定时器溢出中断申请。对于各种不同的工作方式最大的定时时间和 计数数不同。这里在使用中就会出现两个问题: 一是要产生比定时器最大的定时时间还要小的时间和计数器最大计数次数还要小 的计数次数怎么办? 二是要产生比定时器最大的定时时间还要大的时间和计数器最大计数次数还要大 的计数次数怎么办? 解决以上第一个问题只要给定时器

13、/计数器一个非零初值,开定时器/计数器时,定 时器/计数器不从 0 开始,而是从初值开始,这样就可得到比定时器/计数器最大的定时 时间和计数次数还要小的时间和计数次数,解决第二个问题就要用到循环程序了,循环 几次就相当于乘几。例如要产生 1 秒的定时你可先用定时器产生 50MS 的定时,再循环 20 次就行了,因为 1S=1000MS,也可用其它的组合。有时也可采用中断来实现。由上 可见,解决问题的基本出路在于初值的计算,下面就来具体讨论计数器的初值计算和最5大值的计算。 我们把计数器从初值开始作加 1 计数到计满为全 1 所需要的计数值设定为 C 和计 数初值设定为 D,由此便可得到如下的计

14、算通式:D=M-C (1) 式中,M 为计数器模值,该值和计数器工作方式有关。在方式 0 时 M 为 213;在方式 1 时 M 为 216;在方式 2 和方式 3 时 M 为 28。 3、定时器初值的计算 在定时器模式下,计数器由单片机脉冲经 12 分频后计数。因此,定时器定时时间 T 的计算公式为: T=(TMTC)12/fOSC (s) (2) 式中 TM 为计数器从初值开始作加 1 计数到计满为全 1 所需要的时间, TM 为模值,和定时器的工作方式有关;fOSC是单片机晶体振荡器的频率,TC 为定时器 的定时初值。 在式(2)中,若设 TC=0,则定时器定时时间为最大(初值为 0,计

15、数从全 0 到全 1,溢出后又为全 0) 。由于 M 的值和定时器工作方式有关,因此不同工作方式下定时器 的最大定时时间也不一样。例如:若设单片机主脉冲晶体振荡器频率 fOSC为 12MHz, 则最大定时时间为: 方式 0 时 TMmax=2131S=8.192ms 方式 1 时 TMmax=216 1s=65.536ms 方式 2 和 3 时 TMmax=28 1s=0.256ms例 1、设 方式 0 工作时,定时时间为 1ms,时钟振荡频率为 6MHz, 解: 将数据代入公式(2)得:(213TC)12/6 S =1ms=1000STC=213-500=7692 化成二进制数为 TC=1111 0 0000 01100 根据 13 位定时器/计数器特性,高 8 位 F0H 送至 TH0低 5 位 0CH 送 TL0,一般 的高三位置“” ,可用下列指令实现。 MOV TL0,#0CH; 5 位送 TL0寄存器 MOV TH0,#0F0H; 位送 T0寄存器例 2 若单片机时钟频率 fOSC为 12MHz,请计算定时 2ms 所需的定时器初值。解:由于定时器工作在方式 2 和方式 3 下时的最大定时时间只有 0.256ms,因此 要想获得 2ms 的定时时间定时器必须工作在方式 0 或方式 1。若采用方式 0,则根据式(2)可得定时器初值为:TC=213-2MS/1s=

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号