MCS-51单片机的定时器计数器_第1页
MCS-51单片机的定时器计数器_第2页
MCS-51单片机的定时器计数器_第3页
MCS-51单片机的定时器计数器_第4页
MCS-51单片机的定时器计数器_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

1、第六章第六章 MCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器v实现定时常用的三种方法:实现定时常用的三种方法:软件定时:占用软件定时:占用CPU时间,效率低。时间,效率低。用用555电路:不可编程。电路:不可编程。可编程芯片:功能强,需要另外扩展。可编程芯片:功能强,需要另外扩展。 单片机内部有单片机内部有2个个16位的定时位的定时/计数器:使用计数器:使用灵活,编程方便。灵活,编程方便。优先选用优先选用6.1 6.1 定时器定时器/ /计数器结构计数器结构一一. .定时器定时器/ /计数器的结构及工作原理计数器的结构及工作原理 MCS-51单片机内部有两个单片机内部有

2、两个16位可编程的定时器位可编程的定时器/计数器,即计数器,即定时器定时器T0和定时器和定时器T1。每个定时器。每个定时器/计计数器的基本部件是两个数器的基本部件是两个8位的计数器位的计数器(其中其中TH1、TL1是是T1的计数器,的计数器,TH0、TL0是是T0的计数器的计数器)拼装拼装而成。它们是采用而成。它们是采用加加“1”方式工作的。方式工作的。 两个特殊功能寄存器两个特殊功能寄存器(TMOD和和TCON)用来对用来对定时器定时器/计数器的工作方式进行选择和控制。计数器的工作方式进行选择和控制。80518051单片机的定时器单片机的定时器/ /计数器结构如下图所示。计数器结构如下图所示

3、。内部总线工作方式工作方式TH1TL1TH0TL0TCONTMODT1T0微处理器8051单片机定时器单片机定时器/计数器结构示意图计数器结构示意图u 定时功能定时功能-计数输入信号是内部时钟脉冲,其计数计数输入信号是内部时钟脉冲,其计数脉冲来源于晶振时钟输出信号的脉冲来源于晶振时钟输出信号的12分频,即每个分频,即每个机机器周期器周期使寄存器的值加使寄存器的值加1。定时器可看做是对机器。定时器可看做是对机器周期的计数器。所以,定时计数频率是振荡频率的周期的计数器。所以,定时计数频率是振荡频率的1/12。计数功能计数功能-计数脉冲来自相应的计数脉冲来自相应的外部输入引脚,外部输入引脚,T0为为

4、P3.4,T1为为P3.5。只要。只要T0或或T1的引脚上有一的引脚上有一个个1到到0的负跳变,相应的计数器就加的负跳变,相应的计数器就加1.在在TMOD中,各有一个控制位(中,各有一个控制位(CT),分别用),分别用于控制定时于控制定时/计数器计数器T0和和T1工作在工作在定时器定时器方式还是方式还是计数器计数器方式。方式。v定时模式,对内部定时模式,对内部机器周期机器周期计数计数 定时时间定时时间 t 计数值计数值N x Tcyv计数模式,对计数模式,对外部事件脉冲外部事件脉冲计数计数 计数脉冲周期要大于计数脉冲周期要大于2 TcyvT0和和T1计数器都计数器都只能递增计数,只能递增计数,

5、当当16位计数器的位计数器的计数值增加到计数值增加到0FFFFH时,再输入时,再输入1个脉冲就会使计个脉冲就会使计数器的值数器的值回零回零,并发生,并发生溢出信号,溢出信号,置相应的标志位置相应的标志位(TCON中中TF0或或TF1置置1),), 向向CPU发出中断请求发出中断请求。v设定计数次数:设定计数次数:计数器的计数量程计数初值计数器的计数量程计数初值。二二. .定时器计数器的控制寄存器定时器计数器的控制寄存器 v与定时器计数器有关的控制寄存器有:与定时器计数器有关的控制寄存器有:1. 定时器控制寄存器定时器控制寄存器TCONvTF1:定时器定时器/计数器计数器1(T1)的溢出中断标志

6、位)的溢出中断标志位。vTF0:定时器:定时器/计数器计数器0(T0)的溢出中断标志位。)的溢出中断标志位。vTR1:定时器:定时器/计数器计数器1的运行控制位。通过的运行控制位。通过置置1或清或清0来启动或停止来启动或停止T1的计数的计数。vTR0:定时器:定时器/计数器计数器0的运行控制位。的运行控制位。v单片机复位后单片机复位后,TCON寄存器的所有位均为寄存器的所有位均为0.2. 工作方式控制寄存器工作方式控制寄存器TMOD v高高4 4位用于定时器位用于定时器1 1,低,低4 4位用于定时器位用于定时器0 0 M1 M1,M0M0:工作模式选择位。:工作模式选择位。定时器定时器/ /

7、计数器四种工作模式选择如表计数器四种工作模式选择如表6-16-1所示。所示。 C/T:定时器方式或计数器方式选择位:定时器方式或计数器方式选择位 C/T=0时,为定时器方式时,为定时器方式 C/T=1时,为计数器方式时,为计数器方式 GATE:门控位:门控位当当GATE=0时,时,TCON寄存器中的寄存器中的TR0或或TR1为为1,则可立即启动定时器则可立即启动定时器/计数器;计数器;当当GATE=1时,不但要时,不但要TR0或或TR1为为1,且单片机的,且单片机的INT0或或INT1引脚的输入要为高电平,才能启动定时引脚的输入要为高电平,才能启动定时器器/计数器。计数器。三三. .定时器定时

8、器/ /计数器计数器0 0或或1 1的工作方式的工作方式1. 方式方式013位方式位方式。由由TL0的的低低5位位和和TH0的的8位位组成。组成。TL0的的5位计数溢出后,位计数溢出后,TH0的计数加的计数加1,直到全部,直到全部的的13位计数值为全位计数值为全1后,下一个计数脉冲的到达将后,下一个计数脉冲的到达将使使TF0置位为置位为1,向,向CPU发出中断请求,同时把计数发出中断请求,同时把计数器变为全器变为全“0”。其定时时间为:其定时时间为:(213-初值)初值)机器周期机器周期2. 方式方式116位方式位方式v16位计数,由位计数,由TL0作为低作为低8位、位、TH0作为高作为高8位

9、位 ;v16位计数,由位计数,由TL1作为低作为低8位、位、TH1作为高作为高8位。位。其定时时间为:其定时时间为:(216-初值)初值)机器周期机器周期3. 3. 方式方式2828位自动装入时间常数方式位自动装入时间常数方式v TL0作为作为8位内部计数器,位内部计数器,TH0作为重装初值寄存作为重装初值寄存器,在器,在TL0计数溢出置位计数溢出置位TF0标志的同时,由硬件标志的同时,由硬件控制直接将重装初值装入控制直接将重装初值装入TL0,开始新一轮的计数,开始新一轮的计数,如此不断循环。如此不断循环。v方式方式2和方式和方式0、1最大的差别就是最大的差别就是计数器的初值是计数器的初值是由

10、硬件控制自动装入的。由硬件控制自动装入的。v方式方式0、1一旦计数溢出,就表示计数器已回一旦计数溢出,就表示计数器已回0,如,如果要按照原先的初值重新计数,就需要通过软件重果要按照原先的初值重新计数,就需要通过软件重装计数器初值。装计数器初值。方式方式2 2适合于用作较精确的脉冲信号发生器适合于用作较精确的脉冲信号发生器。4. 4. 方式方式3232个个8 8位方式位方式v仅仅T0可以工作在方式可以工作在方式3,T1处于方式处于方式3时停止计数。时停止计数。此时,此时,T0分成分成2个独立的计数器个独立的计数器TL0和和TH0,前者,前者用原来用原来T0的控制信号(的控制信号(TR0、TF0)

11、,后者用原来),后者用原来T1的控制信号(的控制信号(TR1、TF1)。)。v(1)TH0(1)TH0由由TR1TR1启动启动/ /停止,溢出停止,溢出TF1TF1v(2)TL0(2)TL0由由TR0TR0启动启动/ /停止,溢出停止,溢出TF0TF0v(3)TH0(3)TH0只能定时,只能定时,TL0TL0可以定时可以定时/ /计数,且都是计数,且都是8 8位。位。1初始化步骤初始化步骤 MCS-51内部定时器内部定时器/计数器是可编程的,其工计数器是可编程的,其工作方式和工作过程均可由作方式和工作过程均可由MCS-51通过程序对它进通过程序对它进行设定和控制。因此,行设定和控制。因此,MC

12、S-51在定时器在定时器/计数器工计数器工作前必须先对它进行初始化。初始化步骤为:作前必须先对它进行初始化。初始化步骤为:(1) 根据题目要求先给根据题目要求先给定时器方式寄存器定时器方式寄存器TMOD送一送一个方式控制字,以设定定时器个方式控制字,以设定定时器/计数器的相应工作方计数器的相应工作方式。式。(2) 根据实际需要给定时器根据实际需要给定时器/计数器选送定时器初值或计数器选送定时器初值或计数器初值,以计数器初值,以确定需要定时的时间和需要计数的确定需要定时的时间和需要计数的初值。初值。6.2 6.2 定时器定时器/ /计数器的初始化计数器的初始化(3) (3) 根据需要给中断允许寄

13、存器根据需要给中断允许寄存器IEIE选送中断控制字和选送中断控制字和给中断优先级寄存器给中断优先级寄存器IPIP选送中断优先级字,以选送中断优先级字,以开放开放相应中断和设定中断优先级。(若采用中断方式)相应中断和设定中断优先级。(若采用中断方式)(4) (4) 给定时器控制寄存器给定时器控制寄存器TCONTCON送命令字,以送命令字,以启动或禁启动或禁止定时器止定时器/ /计数器的运行计数器的运行。 2. 计数器初值的计算计数器初值的计算 定时器定时器/计数器可用软件随时随地启动和关闭,计数器可用软件随时随地启动和关闭,启动时它就自动加启动时它就自动加1计数,一直计到满,即全为计数,一直计到

14、满,即全为1,若不停止,计数值从全若不停止,计数值从全1变为全变为全0,同时将计数溢出,同时将计数溢出位置位置1并向并向CPU发出定时器溢出中断申请。对于各发出定时器溢出中断申请。对于各种不同的工作模式,最大的定时时间和计数数值不种不同的工作模式,最大的定时时间和计数数值不同。这里在使用中就会出现两个问题:同。这里在使用中就会出现两个问题:一是要产生比定时器最长的定时时间还要短的时一是要产生比定时器最长的定时时间还要短的时间和比计数器最多的计数次数还要少的计数次数;间和比计数器最多的计数次数还要少的计数次数; 二是要产生比定时器最长的定时时间还要长的时二是要产生比定时器最长的定时时间还要长的时

15、间和比计数器最多的计数次数还要多的计数次数。间和比计数器最多的计数次数还要多的计数次数。 如果计数初值设定为如果计数初值设定为C C,则计数器从初值,则计数器从初值C C开始作加开始作加1 1计数到计满为全计数到计满为全1 1所需要的计数值设定为所需要的计数值设定为D D,由此,由此便可得到如下的计算通式:便可得到如下的计算通式: C C = =M M- -D D 式中,式中,M M为计数器量程,该值和计数器工作模式有关。为计数器量程,该值和计数器工作模式有关。在在模式模式0 0时,时,M M为为2 21313;在模式;在模式1 1时,时,M M为为2 21616;在模式;在模式2 2和模式和

16、模式3 3时,时,M M为为2 28 8。3 3定时器初值的计算定时器初值的计算 在定时器方式下,计数器由单片机脉冲经在定时器方式下,计数器由单片机脉冲经1212分频后分频后计数。因此,定时器定时时间计数。因此,定时器定时时间T T的计算公式为的计算公式为式中,式中,Tc为定时器的初始常数值;为定时器的初始常数值;T为计数器从初为计数器从初值值Tc开始作加开始作加1计数到计满为全计数到计满为全1所需要的时间;所需要的时间;M为计数器量程,和定时器的工作模式有关;为计数器量程,和定时器的工作模式有关;fosc是单片机晶体振荡器的频率。是单片机晶体振荡器的频率。v在上式中,若设在上式中,若设Tc=

17、0,则定时器定时时间为最大,则定时器定时时间为最大(初值为初值为0,计数从全,计数从全0到全到全1,溢出后又为全,溢出后又为全0)。由。由于于M的值和定时器工作模式有关,因此不同工作模的值和定时器工作模式有关,因此不同工作模式下定时器的最大定时时间也不一样。例如,若设式下定时器的最大定时时间也不一样。例如,若设单片机主脉冲晶体振荡器频率单片机主脉冲晶体振荡器频率fosc为为12MHz,则最,则最大定时时间为大定时时间为v模式模式0 0时:时: T Tmaxmax= =2 213131s1s= =8.1928.192msmsv模式模式1 1时:时: T Tmaxmax= =2 21616 1s1

18、s= =65.53665.536msmsv模式模式2 2和和3 3时:时: T Tmaxmax= =2 28 8 1s1s= =0.2560.256msms例例6-5.用定时器用定时器1,方式,方式2实现实现1s的延时。的延时。 【例 6-1】 设定时器 T0 工作在模式 0 时,时钟振荡频率为6 MHz,要求定时时间为 1 ms。 解 将数据代入公式得定时器 T0 初值为 612)(cTM s = 1 ms = 1000 s Tc = 213 - 500 = 7692 = 1E0CH 化成二进制数为 Tc = 1 1110 0000 1100B (213 - Tc) 12 根据根据13位定时

19、器位定时器/计数器特性,先把低计数器特性,先把低5位位0CH送送TL0,TL0的高三位置零,高的高三位置零,高8位位F0H送至送至TH0。可用下列。可用下列指令实现定时器指令实现定时器T0初始化。初始化。MOV TMOD,#00H ;T0工作于模式工作于模式0,定,定时方式时方式MOV TL0,#0CH ;低;低5位送位送TL0寄存器寄存器MOV TH0,#0F0H ;高;高8位送位送TH0寄存器寄存器同样,先把低 5 位 10000B 送 TL0,TL0 的高 3 位置零,余下的 8 位 11000 001B 送至 TH0。这样就得到定时器工作在模式 0 时的初值 C110H,TH0 应装

20、C1H,TL0 应装 10H。 若采取模式 1,则有 Tc = 11022316 s = 63 536 = F830H TH0 应装 F8H;TL0 应装 30H。 【例 6-3】 设 T1 作定时器,以模式 1 工作,定时时间为 10 ms;T0 作计数器,工作在模式 2,T0(P3.4)引脚上发生一次事件(脉冲)即溢出。 解 T1 的时间初值为 (216 - Tc) 2 s = 10 ms Tc = EC78H T0 的计数初值常数为 FFH。 v初始化程序:初始化程序:MOV TMOD,#16H ;T1定时模式定时模式1,T0计数模式计数模式2MOV TL0,#0FFH ;T0时间常数送

21、时间常数送TL0MOV TH0,#0FFH ;T0时间常数送时间常数送TH0MOV TL1,#78H ;T1时间常数时间常数(低低8位位)送送TL1MOV TH1,#0ECH ;T1时间常数时间常数(高高8位位)送送TH1SETB TR0 ;置;置TR0为为1,允许,允许T0启动计数启动计数SETB TR1 ;置;置TR1为为1,允许,允许T1启动计启动计 【例 6-4】 设定时器 T0,工作在模式 1,试编写一个延时 1 s 的子程序。 解 若主频频率为 6 MHz,可求得 T0 的最大定时时间为 Tmax = 216 2 s = 131.072 ms 我们就用定时器获得 100 ms 的定

22、时时间再加 10 次循环得到 1 s的延时,可算得 100 ms 定时的定时初值: (216 - Tc) 2 s = 100 ms = 100 000 s Tc = 216 - 50 000 = 15 536 = 3CB0H 例例6-5.用定时器用定时器1,方式,方式2实现实现1s的延时(的延时(12MHZ)。)。解:因方式解:因方式2 2是是8 8位计数器,其最大定时时间为:位计数器,其最大定时时间为:256256* *1s=256s1s=256s,为实现,为实现1s1s的延时,可选择定时的延时,可选择定时时间为时间为250s250s,再循环,再循环40004000次次。定时时间选定后,。定

23、时时间选定后,可确定计数值为可确定计数值为250250,则定时器,则定时器1 1的初值为:的初值为:X=M-X=M-计计数值数值=256-250=6=6H=256-250=6=6H。采用。采用定时器定时器1 1,方式,方式2 2工作工作,因此,因此,TMOD=20HTMOD=20H。DELAYDELAY:MOV R7MOV R7,#40#40; ;置置25ms25ms计数循环初值计数循环初值 MOV R6MOV R6,#100#100; ;置置250s250s计数循环初值计数循环初值 MOV TMODMOV TMOD,#20H#20H; ;设定时器设定时器1 1为方式为方式2 2 MOV TH

24、1 MOV TH1,#06H#06H; ;置定时器初值置定时器初值 MOV TL1MOV TL1,#06H#06H SETB TR1 SETB TR1; ;启动启动T1T1LP1LP1: JBC TF1JBC TF1,LP2LP2 ; ;查询计数溢出查询计数溢出 SJMP LP1SJMP LP1 ; ;无溢出则继续计数无溢出则继续计数LP2LP2: DJNZ R6DJNZ R6,LP1LP1; ;未到未到25ms25ms继续循环继续循环 MOV R6MOV R6,#100#100 DJNZ R7 DJNZ R7,LP1LP1; ;未到未到1s1s继续循环继续循环 RETRET; ;返回主程序返回主程序 6.3 定时器定时器/计数器的应用计数器的应用v 定时器定时器/计数器是单片机的重要组成部分,其工作计数器是单片机的重要组成部分,其工作方式灵活,功能强大,配合中断使用可减轻方式灵活,功能强大,配合中断使用可减轻CPU的的负担,减少外围电路。本节通过实例说明定时器负担,减少外围电路。本节通过实例说

温馨提示

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

评论

0/150

提交评论