《第4章定时器与计数器》由会员分享,可在线阅读,更多相关《第4章定时器与计数器(30页珍藏版)》请在金锄头文库上搜索。
1、第第4章章 定时器定时器/计数器计数器 4.1 定时器定时器/计数器计数器T0和和T1 4.1.1 定时器定时器/计数器计数器T0和和T1的结构及功能的结构及功能 4.1.2 定时器定时器/计数器计数器T0和和T1的功能寄存器的功能寄存器 4.1.3 定时器定时器/计数器计数器T0和和T1的工作方式的工作方式 4.1.4 定时器定时器/计数器计数器T0和和T1应用举例应用举例 4.2 定时器定时器/计数器计数器T2 4.2.1 定时器定时器/计数器计数器T2的控制寄存器的控制寄存器 4.2.1 定时器定时器/计数器计数器T2的操作模式的操作模式 对于定时器对于定时器/ /计数器来说,不管是独立
2、的定时器计数器来说,不管是独立的定时器芯片还是单片机内的定时器,大都具有以下特点:芯片还是单片机内的定时器,大都具有以下特点: 定时器定时器/ /计数器有多种工作方式,可以是计数器有多种工作方式,可以是计数方计数方式式,也可以是,也可以是定时方式定时方式。 定时器定时器/ /计数器的计数器的计数值计数值是是可变可变的,计数的最大的,计数的最大值也是有限的,这取决于计数器的位数。计数的最大值也是有限的,这取决于计数器的位数。计数的最大值也就限定了定时时间的最大值。值也就限定了定时时间的最大值。 在到达设定的定时或计数值时发出在到达设定的定时或计数值时发出中断申请中断申请,以,以便实现定时控制。便
3、实现定时控制。4.1 定时器定时器/计数器计数器T0和和T1 定时器定时器/计数器计数器T0、T1的结构及功能的结构及功能 定时器定时器/计数器计数器T0、T1是由加法计数器、是由加法计数器、TMOD寄存器和寄存器和TCON寄存器等组成,其结构如下:寄存器等组成,其结构如下:4.1 定时器定时器/计数器计数器T0和和T1 定时器定时器/计数器计数器T0、T1的结构及功能的结构及功能 T0和和T1的结构的结构 定时器定时器/计数器的计数器的T0和和T1的核心是的核心是16位加法计数器位加法计数器,图中,图中用特殊功能寄存器用特殊功能寄存器TH0、TL0及及TH1、TL1表示,它们分别为表示,它们
4、分别为T0加法计数器和加法计数器和T1加法计数器的高加法计数器的高8位和低位和低8位。位。 作作计数器计数器用时,加法计数器对芯片引脚用时,加法计数器对芯片引脚T0(P3.4)或或T1 (P3.5)上的输入脉冲计数。每输入一个脉冲,加法计数器增加上的输入脉冲计数。每输入一个脉冲,加法计数器增加1。加法计数器。加法计数器溢出时溢出时可向可向CPU发出发出中断请求中断请求信号。信号。4.1 定时器定时器/计数器计数器T0和和T1 定时器定时器/计数器计数器T0、T1的结构及功能的结构及功能 T0和和T1的结构的结构 作作定时器定时器用时,加法计数器对单片机内部用时,加法计数器对单片机内部机器周期机
5、器周期脉冲脉冲Tcy计数。由于机器周期是定值,所以对计数。由于机器周期是定值,所以对Tcy的计数就相当于定的计数就相当于定时,如时,如Tcy=1s,计数值,计数值100,相当于定时,相当于定时100s。 加法计数器的初值可以由程序设定,设置的初值不同,计加法计数器的初值可以由程序设定,设置的初值不同,计数值或定时时间就不同。在定时器数值或定时时间就不同。在定时器/计数器的工作过程中,加计数器的工作过程中,加法计数器的内容可用程序读回法计数器的内容可用程序读回CPU。4.1 定时器定时器/计数器计数器T0和和T1 定时器定时器/计数器计数器T0、T1的功能寄存器的功能寄存器 定时器定时器/计数器
6、方式控制字计数器方式控制字TMOD 定时器定时器/计数器计数器T0、T1均有均有4种工作方式,可通过方式控制种工作方式,可通过方式控制字字TMOD进行设置,各位定义如下:进行设置,各位定义如下: TMOD的低四位用于的低四位用于T0,高四位用于,高四位用于T1。 位为定时位为定时或计数功能选择位,或计数功能选择位, 位为位为“1”,为计数方式;,为计数方式; 位为位为“0”,为定时方式。,为定时方式。4.1 定时器定时器/计数器计数器T0和和T1 定时器定时器/计数器计数器T0、T1的功能寄存器的功能寄存器 定时器定时器/计数器方式控制字计数器方式控制字TMOD M1、M0:定时器:定时器/计
7、数器工作方式选择位,其值与工作方计数器工作方式选择位,其值与工作方式对应关系如下表所示。式对应关系如下表所示。4.1 定时器定时器/计数器计数器T0和和T1M1M0工作方式工作方式方方 式式 说说 明明00013位定时器位定时器/计数器计数器01116位定时器位定时器/计数器计数器102具有自动重装初值功能的具有自动重装初值功能的8位定时器位定时器/计数器计数器113两个两个8位定时器位定时器/计数器计数器(T0) 定时器定时器/计数器计数器T0、T1的功能寄存器的功能寄存器 定时器定时器/计数器方式控制字计数器方式控制字TMOD GATE:门控位,用于控制定时器:门控位,用于控制定时器/计数
8、器的启动是否受外计数器的启动是否受外部中断请求信号的影响。如果部中断请求信号的影响。如果GATE=1,定时器,定时器/计数器计数器0的启的启动受芯片引脚动受芯片引脚 INT0(P3.2) 控制,定时器控制,定时器/计数器计数器1的启动受芯片的启动受芯片引脚引脚 INT1(P3.3) 控制;如果控制;如果GATE=0,则定时器,则定时器/计数器的启计数器的启动与引脚动与引脚INT0、INT1无关。无关。 一般情况下一般情况下GATE端为端为 0 。4.1 定时器定时器/计数器计数器T0和和T1 定时器定时器/计数器计数器T0、T1的功能寄存器的功能寄存器 定时器定时器/计数器控制寄存器计数器控制
9、寄存器TCON TCON控制寄存器各位定义如下:控制寄存器各位定义如下: TR0(TR1):T0(T1)运行控制位运行控制位。当。当TR0(TR1)=1时启动时启动T0(T1);TR0(TR1)=0时关闭时关闭T0(T1)。该位由软件进行设置。该位由软件进行设置。4.1 定时器定时器/计数器计数器T0和和T1 定时器定时器/计数器计数器T0、T1的功能寄存器的功能寄存器 定时器定时器/计数器控制寄存器计数器控制寄存器TCON TCON控制寄存器各位定义如下:控制寄存器各位定义如下: TF0(TF1):T0(T1)定时器定时器/计数器计数器溢出中断溢出中断标志位。当标志位。当T0(T1)计数溢出
10、时,由硬件置位,并在允许中断的情况下,向计数溢出时,由硬件置位,并在允许中断的情况下,向CPU发出中断请求信号,发出中断请求信号,CPU响应中断转向中断服务程序时,响应中断转向中断服务程序时,由硬件自动将该位清零(也可用软件清除)。由硬件自动将该位清零(也可用软件清除)。 TCON的低四位与外部中断有关。的低四位与外部中断有关。4.1 定时器定时器/计数器计数器T0和和T1 定时器定时器/计数器计数器T0、T1的四种工作方式的四种工作方式 工作方式工作方式 0 当当M1M0=00时,定时器时,定时器/计数器工作于方式计数器工作于方式0下,构成下,构成13位位定时器定时器/计数器(计数器(8位计
11、数器带位计数器带32分频的预分频器)。其逻辑结分频的预分频器)。其逻辑结构如下图所示。构如下图所示。4.1 定时器定时器/计数器计数器T0和和T1 定时器定时器/计数器计数器T0、T1的四种工作方式的四种工作方式 工作方式工作方式 0 THx是是高高8位位加法计数器,加法计数器,TLx是是低低5位位加法计数器,加法计数器,TLx的高的高3位未用。位未用。TLx加法计数溢出时向加法计数溢出时向THx进位,进位,THx加法计数加法计数溢出时置位溢出时置位TFx,最大计数值为,最大计数值为213。可用程序将。可用程序将08191(213-1)的某一数送入的某一数送入THx、TLx作为初值。作为初值。
12、THx、TLx从初值开始加从初值开始加法计数,直至溢出。所以初值不同,定时时间或计数值不同。法计数,直至溢出。所以初值不同,定时时间或计数值不同。 必须注意的是:加法计数器必须注意的是:加法计数器THx溢出后,必须用程序重新溢出后,必须用程序重新对对THx、TLx设置初值,否则下一次设置初值,否则下一次THx、TLx将从将从 0 开始重开始重新计数。(新计数。(重写初值重写初值)4.1 定时器定时器/计数器计数器T0和和T1 定时器定时器/计数器计数器T0、T1的四种工作方式的四种工作方式 工作方式工作方式 0 如果如果C/T=1,图中开关,图中开关S1自动地接到下面,定时器自动地接到下面,定
13、时器/计数器计数器工作在工作在计数状态计数状态,加法计数器对,加法计数器对 Tx (x=1,2)引脚上的外部脉引脚上的外部脉冲进行计数。冲进行计数。计数值计数值由下式确定:由下式确定:式中:式中:N 为计数值,为计数值,x 是是THx、TLx的的初值初值。x 值为值为8191时计数时计数值最小,其值为值最小,其值为1;当;当 x 值为值为0时计数值最大,其值为时计数值最大,其值为8192,即,即计数范围为计数范围为18192。4.1 定时器定时器/计数器计数器T0和和T1 定时器定时器/计数器计数器T0、T1的四种工作方式的四种工作方式 工作方式工作方式 0 定时器定时器/计数器是在每个机器周
14、期的计数器是在每个机器周期的S5P2期间采样期间采样 Tx 脚的脚的输入信号,若前一个机器周期的采样值为输入信号,若前一个机器周期的采样值为“1”,下一个机器,下一个机器周期的采样值为周期的采样值为“0”,则计数器当前值加,则计数器当前值加 1 。 由于识别一个高电平到低电平的跳变需两个机器周期,所由于识别一个高电平到低电平的跳变需两个机器周期,所以对外部计数脉冲的频率应小于以对外部计数脉冲的频率应小于 fosc / 24,且高电平与低电平的,且高电平与低电平的延续时间均不得小于延续时间均不得小于1个机器周期。个机器周期。4.1 定时器定时器/计数器计数器T0和和T1 定时器定时器/计数器计数
15、器T0、T1的四种工作方式的四种工作方式 工作方式工作方式 0 当当C/T=0时为时为定时方式定时方式,开关,开关S1自动地接到上面,加法计自动地接到上面,加法计数器对机器周期脉冲数器对机器周期脉冲 Tcy 计数,每个机器周期计数,每个机器周期 TLx 加加 1。定时定时时间时间由下式确定:由下式确定:式中:式中:Tcy为单片机的机器周期。如果振荡频率为单片机的机器周期。如果振荡频率 fosc =12MHz,则则Tcy = 1s,定时范围为,定时范围为18192s。4.1 定时器定时器/计数器计数器T0和和T1 定时器定时器/计数器计数器T0、T1的四种工作方式的四种工作方式 工作方式工作方式
16、 0 定时器定时器/计数器的启动或停止由计数器的启动或停止由TRx控制。控制。 当当GATE为为“0”时,只要用软件置时,只要用软件置 TRx=1 ,开关,开关S2闭合,闭合,定时器定时器/计数器就开始工作;当计数器就开始工作;当 TRx=0 时,时,S2打开,定时器打开,定时器/计计数器停止工作。数器停止工作。4.1 定时器定时器/计数器计数器T0和和T1 定时器定时器/计数器计数器T0、T1的四种工作方式的四种工作方式 工作方式工作方式 0 当当GATE = 1时为时为门控方式门控方式。此时,仅当。此时,仅当TRx=1且且INTx引引脚上出现高电平脚上出现高电平(即无外部中断请求信号即无外
17、部中断请求信号),S2才闭合,定时器才闭合,定时器/计数器开始工作。如果计数器开始工作。如果INTx引脚上出现低电平引脚上出现低电平(即有外部中断即有外部中断请求信号请求信号),则停止工作。所以,门控方式下,定时器,则停止工作。所以,门控方式下,定时器/计数器计数器的启动受外部中断请求的影响,可用来测量的启动受外部中断请求的影响,可用来测量INTx引脚上出现引脚上出现正正脉冲脉冲的的宽度宽度。4.1 定时器定时器/计数器计数器T0和和T1 定时器定时器/计数器计数器T0、T1的四种工作方式的四种工作方式 工作方式工作方式 1 当当 M1M0=01 时,定时器时,定时器/计数器工作于方式计数器工
18、作于方式1下,构成下,构成16位位定时器定时器/计数器。其逻辑结构图如下所示。计数器。其逻辑结构图如下所示。4.1 定时器定时器/计数器计数器T0和和T1 定时器定时器/计数器计数器T0、T1的四种工作方式的四种工作方式 工作方式工作方式 1 THx、TLx 都是都是 8 位加法计数器。在方式位加法计数器。在方式1时,计数器的时,计数器的计数值计数值由下式确定:由下式确定: 所以计数范围为所以计数范围为165536。 定时器的定时器的定时时间定时时间由下式确定:由下式确定:如果如果 fosc=12MHz,则,则Tcy=1s,定时范围为,定时范围为165536 s。4.1 定时器定时器/计数器计
19、数器T0和和T1 定时器定时器/计数器计数器T0、T1的四种工作方式的四种工作方式 工作方式工作方式 2 当当 M1M0=10 时,定时器时,定时器/计数器工作于方式计数器工作于方式2下,为下,为自动自动重装重装初值的初值的 8 位位定时器定时器/计数器。计数器。4.1 定时器定时器/计数器计数器T0和和T1 定时器定时器/计数器计数器T0、T1的四种工作方式的四种工作方式 工作方式工作方式 2 在方式在方式2下,下,TLx 作为作为 8 位加法计数器使用,位加法计数器使用,THx 作为初作为初值寄存器使用,值寄存器使用,THx、TLx 的初值由程序设定。当的初值由程序设定。当 TLx 计数计
20、数溢出溢出时,不仅置为时,不仅置为TFx,而且自动发出重装信号,使三态门打,而且自动发出重装信号,使三态门打开,将开,将THx 中的初值自动送至中的初值自动送至TLx ,并从初值开始重新计数。,并从初值开始重新计数。 重装初值后,重装初值后,THx 中的值保持不变,除非用程序重新给中的值保持不变,除非用程序重新给THx赋值。赋值。4.1 定时器定时器/计数器计数器T0和和T1 定时器定时器/计数器计数器T0、T1的四种工作方式的四种工作方式 工作方式工作方式 2 在方式在方式2时,计数器的时,计数器的计数值计数值由下式确定:由下式确定: 所以计数范围为所以计数范围为1256。 定时器的定时器的
21、定时时间定时时间由下式确定:由下式确定:如果如果 fosc=12MHz,则,则 Tcy=1s,定时范围为,定时范围为1256 s。4.1 定时器定时器/计数器计数器T0和和T1 定时器定时器/计数器计数器T0、T1的四种工作方式的四种工作方式 工作方式工作方式 3 当当 M1M0=11 时,定时器时,定时器/计数器工作于方式计数器工作于方式 3 下,构成下,构成两两个个 8 位位定时器定时器/计数器。其逻辑结构图如下所示。计数器。其逻辑结构图如下所示。4.1 定时器定时器/计数器计数器T0和和T1 定时器定时器/计数器计数器T0、T1的四种工作方式的四种工作方式 工作方式工作方式 3 工作方式
22、工作方式 3 只适用于只适用于 T0 。当。当T0工作于方式工作于方式 3 时,时,TH0和和TL0被分为被分为2个独立的定时器个独立的定时器/计数器。其中计数器。其中TL0既可以是定时既可以是定时器,也可以是计数器;器,也可以是计数器;TH0只能用于定时器使用,并且占用了只能用于定时器使用,并且占用了T1的两个控制信号的两个控制信号TR1和和TF1。在这种情况下,。在这种情况下,T1虽然仍可工虽然仍可工作于方式作于方式0、1、2,但是不能采用中断方式。此时通常将,但是不能采用中断方式。此时通常将T1用用作串行口的波特率发生器。作串行口的波特率发生器。 由于由于T1无方式无方式3,若强行将其设
23、置为工作方式,若强行将其设置为工作方式3,相当于令,相当于令其停止工作。其停止工作。4.1 定时器定时器/计数器计数器T0和和T1 定时器定时器/计数器计数器T0、T1的四种工作方式的四种工作方式 工作方式工作方式 3 在方式在方式 3 下,定时器下,定时器/计数器的定时、计数范围和定时计数器的定时、计数范围和定时/计计数值的确定与方式数值的确定与方式 2 相同。相同。计数值计数值确定如下:确定如下: 所以计数范围为所以计数范围为1256。 定时器的定时器的定时时间定时时间可由下式确定:可由下式确定:4.1 定时器定时器/计数器计数器T0和和T1 定时器定时器/计数器的启动和使用计数器的启动和
24、使用 初始化。包括工作方式字初始化。包括工作方式字TMOD设定、初值设定。设定、初值设定。 启动定时器(置位启动定时器(置位TRx)。)。 溢出处理(溢出处理(TFx = 1)。)。中断方式中断方式或或查询方式查询方式。 在中断方式下,在中断方式下,CPU响应中断时会由硬件自动复位响应中断时会由硬件自动复位 TFx,查询方式下需要用查询方式下需要用软件复位软件复位。 注意注意:为实现:为实现“定时处理定时处理”某任务或事件,某任务或事件,CPU响应中断响应中断后应该重写定时器初值,否则定时器将由后应该重写定时器初值,否则定时器将由 0 值开始计数。值开始计数。4.1 定时器定时器/计数器计数器
25、T0和和T1 例例4-1:设单片机系统时钟为:设单片机系统时钟为12MHz,试编程从,试编程从I/O端口端口P1.2输出输出周期为周期为5ms的方波(的方波(脉冲序列脉冲序列)。)。分析分析:当系统时钟为:当系统时钟为12MHz时,若选用时,若选用 T0 工作于工作于方式方式 0 下,下,则最大定时时间为则最大定时时间为213=8192s,满足周期,满足周期5ms的要求;同样,若的要求;同样,若T0也可也可 工作于方式工作于方式 1 下,则最大定时时间为下,则最大定时时间为216=65536s,亦,亦可满足周期可满足周期5ms的要求。的要求。方波脉宽方波脉宽为为2.5ms=2500 s,工作于
26、方,工作于方式式 1 时有:时有:可知:定时器可知:定时器 T0 初值为初值为5692,方式,方式 0 下用到了下用到了 TH0 的的8位和位和TL0的低的低5位,即:位,即: TH0 = 0B1H,TL0 = 1CH。4.1 定时器定时器/计数器计数器T0和和T1 例例4-1:C51程序如下。程序如下。 #include sbit p1_2 = P12; void main( ) TMOD = 0x00; TH0 = 0xb1; TL0 = 0x1c; TR0 = 1; while( 1 ); while( TF0 = 0 ); / 等待定时器等待定时器0溢出(程序溢出(程序查询方式查询方式
27、) TF0 = 0; p1_2 = !p1_2; TH0 = 0xb1; / 重写定时器初值重写定时器初值 TL0 = 0c1c; 4.1 定时器定时器/计数器计数器T0和和T1 例例4-2:利用定时器:利用定时器 T0 测量脉冲宽度测量脉冲宽度。设脉冲从。设脉冲从P3.2引脚输入,单片机系统时钟为引脚输入,单片机系统时钟为12MHz。要求将该。要求将该脉冲宽度值存入变量脉冲宽度值存入变量 pul_width 中。中。分析:分析:当定时器工作于当定时器工作于方式方式 0 时,利用门控位时,利用门控位 GATE 可以测量可以测量外部脉冲宽度。外部脉冲宽度。方法:方法:令令 GATE = 1,然后
28、软件,然后软件置位置位 TR0(或(或TR1),这时当),这时当 INT0(或(或INT1)为)为“1”时(外部脉冲上升沿),就会自动启时(外部脉冲上升沿),就会自动启动定时器;当动定时器;当 INT0(或(或INT1)为)为“0”时(外部脉冲下降沿),时(外部脉冲下降沿),会关闭定时器。因此,此时定时器的计数值就等同于外部输入会关闭定时器。因此,此时定时器的计数值就等同于外部输入脉冲的宽度。脉冲的宽度。4.1 定时器定时器/计数器计数器T0和和T1 例例4-2:C51程序如下。程序如下。 #include sbit p3_2 = P32; unsigned int pul_width; vo
29、id main( ) unsigned char a; TMOD = 0x09; / T0 工作于方式工作于方式 1,GATE为为 1 while( p3_2 = 1 ); / 等待等待INT0 为为1,以检测一个完整正脉冲,以检测一个完整正脉冲 while( 1 ); TH0 = 0x00; / 初值为初值为 0 TL0 = 0x00; TR0 = 1; / 设置设置TR0 为为1 while( p3_2 = 0 ); / 等待等待INT0 上升沿上升沿 while( p3_2 = 1 ); / 等待等待INT0 下降沿,此时为完整正脉冲下降沿,此时为完整正脉冲 TR0 = 0; / 关闭定时器关闭定时器T0 a = TH0; / 计数结果的高计数结果的高 8 位存入中间变量位存入中间变量 pul_width = a*256 + TL0; / 计算脉宽并送变量计算脉宽并送变量pul_width 4.1 定时器定时器/计数器计数器T0和和T1