《第7章 定时计数器》由会员分享,可在线阅读,更多相关《第7章 定时计数器(151页珍藏版)》请在金锄头文库上搜索。
1、1/151,第七章 定时计数器 与可编程计数器阵列 本章学习目标 掌握定时计数器的应用 掌握可编程时钟输出模块的应用 掌握可编程计数器阵列模块的应用,2/151,STC15F2K60S2单片机内部集成了以下与定时 功能有关的模块: 1)三个16位的定时/计数器,不仅可以方便地用于定时控制,而且还可以用作分频器和事件记录; 2)可编程时钟输出功能,可给外部器件提供时钟; 3)三路可编程计数器阵列(Programmable Counter Array,PCA)。可用于软件定时器、外部脉冲的捕捉、高速输出以及脉宽调制(Pulse Width Modulation ,PWM)输出。,3/151,一、定
2、时/计数器的结构及工作原理 定时/计数器的核心是一个加1计数器,加1计 数器的脉冲有两个来源,一个是外部脉冲源,另 一个是系统的时钟振荡器。,7.1定时/计数器及其应用,图7-1 定时/计数器的结构框图(x=0、1),4/151,当脉冲源为时钟振荡器(等间隔脉冲序列)时,在每个时钟周期计数器加1,由于计数脉冲为一时间基准,所以脉冲数乘以脉冲间隔时间就是定时时间,因此为定时功能。 当脉冲源为间隔不等的外部脉冲时,就是外部事件的计数器,计数器在其对应的外输入端上有一个10的跳变时加1。外部输入信号的速率是不受限制的,但必须保证给出的电平在变化前至少被采样一次。,5/151,图中有两个模拟的位开关,
3、C/T决定其工作方式:是定时还是计数。后者受控制信号的控制,决定加1计数器的开启与运行。 起这两个开关作用的是特殊功能寄存器TMOD和TCON的相应位,用户可对其进行设置,从而选择不同的工作方式(计数或定时)或是否启动计数器。另外,AUXR中的T0x12位和T1x12位决定是否对振荡时钟进行12分频。,6/151,工作原理 计数器对这两个脉冲源之一进行输入计数,每输入一个脉冲,计数值加1。当计数到计数器为全1时,再输入一个脉冲就使计数值回零,同时从最高位溢出一个脉冲使特殊功能寄存器TCON的TF0或TF1置1,作为计数器的溢出中断标志。 如果定时/计数器工作于定时状态,则表示定时时间到;若工作
4、于计数状态,则表示计数回零。,7/151,CPU与TMOD、TCON、AUXR、T0、T1的关系图 16位的加1计数器由两个8位的特殊功能寄存器THX(高8位)和TLX(低8位)组成(X=0,1,下同)。 通过改变TMOD的相应位,它们可被设置为4种不同的工作方式。,8/151,STC15F2K60S2除了定时/计数器T0和T1外,还有一个16位定时器T2(简称T2)。 T2的工作模式固定为16位自动重装载模式。T2可以当定时器使用,也可以用作串口的波特率发生器或可编程时钟输出源。,图7-3 定时器T2的原理框图,9/151,二、定时/计数器的相关寄存器 TMOD、TCON和AUXR用来确定定
5、时/计数 器的工作方式并控制其功能。其中,TMOD控 制定时/计数器0和1的工作方式;TCON控制定 时器T0、T1的启停及状态;AUXR设置定时 器的速度和T2的功能。,10/151,1、TMOD:定时器工作方式控制寄存器 TMOD(地址为89H,复位值为00H)寄存器的各位定义如下:,11/151,1)M1和M0:方式选择控制位,表7-1 定时/计数器的方式选择,12/151,2)C/ :功能选择位。 1:计数器功能(对T0或T1引脚的负跳变进行计数)。 0:定时器功能(对时钟周期进行计数)。,13/151,3)GATE:门控位。GATE用于选通控制。 1:INTX为高电平且TRX置位时,
6、启动定时器工作。 0:每当TRX置位时,就启动定时器工作。 注意:TMOD寄存器不能进行位寻址,设置时只 能对整个寄存器赋值。,14/151,2、TCON:定时器控制寄存器 TCON(地址为88H,复位值为00H)寄存器的格式如下:,15/151,1)TF1:T1溢出标志位。 T1启动计数后,最高位产生溢出时,TF1由硬件置1,向CPU请求中断,当CPU响应中断时,由硬件清0。TF1也可以由程序查询或清0。 2)TF0:定时器/计数器0溢出标志位。 含义和功能与TF1相似。,16/151,3)TR1:T1的运行控制位。可由软件置位或清0。 当GATE(TMOD.7)=0,TR1=1启动T1开始
7、计数,TR1=0时停止T1计数。 当GATE(TMOD.7)=1,TR1=1且INTX输入高电平时,才允许T1计数。 4)TR0:定时器T0的运行控制位。 含义和功能与TR1相似。,17/151,由于定时/计数器是可编程的,所以在任何一个定时/计数器开始工作之前,必须对其写入相应的控制字。 把方式控制字写入TMOD选择定时器的工作方式 把初值写入THX、TLX控制计数长度 将TCON相应位(TRX)置1或清零实现启动或停止计数。 在运行过程中,还可读出THX、TLX和TCON 的内容来随时查询T0、T1的状态。,18/151,3、AUXR:辅助寄存器 辅助寄存器AUXR主要用来设置定时器0的速
8、度和定时器2的工能以及串口UART的波特率控制。 STC15F2K60S2单片机是1T 的8051单片机,为了兼容传统8051单片机,定时器0和定时器1复位后是传统8051的速度,即12分频,但此时指令执行速度仍然是1T的速度。 通过设置特殊功能寄存器AUXR中相关的位,定时器也可不进行12分频,实现真正的1T速度。,19/151,辅助寄存器AUXR(地址为8EH,复位值为01H)各位定义如下:,1)T0x12:定时器0速度控制位。 0:定时器0的速度与传统8051单片机定时器速度相同,即12分频。 1:定时器0的速度是传统8051单片机定时器速度的12倍,即不分频。,20/151,2)T1x
9、12:(D6)定时器1速度控制位。 0:即12分频。 1:不分频。 如果UART串口用T1作为波特率发生器,T1x12位决定UART串口是12T 还是1T。,3)T2R:(D4)定时器2运行控制位。 0:不允许定时器2运行; 1:允许定时器2运行。,21/151,4)T2_C/ :(D3)定时器2工作方式选择。 0:定时器(计数脉冲从内部系统时钟输入; 1:计数器(计数脉冲从P3.1/T2引脚输入)。,5)T2x12:(D2)定时器2速度控制位。 0: 12分频,T2每12个时钟计数一次; 1:不分频,T2每1个时钟计数一次。,22/151,UART_M0x6用于控制UART串口的速度。 S1
10、S2为串行口1波特率发生器选择位。 EXTRAM用于设置是否允许使用内部1024字节的扩展RAM。,23/151,4、T2H/RL_TH2:定时器2重装值寄存器高字节 (地址为0D6H,复位值为00H),5、T2L/RL_TL2:定时器2重装值寄存器低字节 (地址为0D7H,复位值为00H),24/151,三、定时/计数器的工作方式 通过对寄存器TMOD中M1、M0的设置,定时 /计数器有4种不同的工作方式: 方式0: 16位自动重装方式 方式1: 16位定时/计数器方式 方式2: 8位自动重装方式 方式3: 留作备用,25/151,1、定时/计数器0和1的工作方式0(16位自动重装方式),图
11、7-4 定时器0和1的工作方式0的原理框图,26/151,STC15F2K60S2的定时器有两种计数速率:一种是12T模式,每12个时钟加1;另一种是1T模式,每个时钟加1。 T0和T1的速率分别由特殊功能寄存器AUXR中的T0x12和T1x12决定。 T0x12=0,T0工作在12T模式; T0x12=1,T0工作在1T模式。 T1x12=0,T1工作在12T模式; T1x12=1,T1则工作在1T模式。,27/151,如何实现16位重装载定时器。 定时器0和定时器1分别有2个隐藏的寄存器RL_THx和RL_TLx。 RL_THx与THx共有同一个地址,RL_TLx与TLx共有同一个地址。
12、当TRx=0即定时器/计数器被禁止工作时,对TLx、THx写入的内容会同时写入RL_TLx、RL_THx。 当TRx=1即定时器/计数器工作时,对TLx 、THx写入的内容不会写入RL_TLx 、RL_THx。,28/151,当定时器工作在模式0时,TLx,THx的溢出 不仅置位TFx,而且会自动将RL_TLx,RL_THx 的内容重新装入TLx,THx。 当T0CLKO=1时,T1/P3.5引脚配置为定时器0的时钟输出CLKOUT0。 当T1CLKO=1时,T0/P3.4引脚配置为定时器1的时钟输出CLKOUT1。,29/151,2、定时/计数器0和1的工作方式1(16位定时/计数器方式),
13、图7-5 定时器0和1的方式1的原理框图,30/151,此模式下,定时器配置为16位的计数器,由TLx的8位和THx的8位构成。TLx的8位溢出向THx进位,THx计数溢出置位TCON中的溢出标志位TFx。 与方式0的区别是,THx计数溢出时,不会重新装载时间常数。此外,本模式也不用于时钟输出功能。,31/151,3、定时/计数器0和1的工作方式2(8位自动重装方式),图7-6 定时/计数器的工作方式2原理框图,32/151,方式2是能自动重置初值的8位定时/计数器,计数溢出后具有自动恢复初值的功能。当TL0/TL1计数溢出时,不仅置位溢出标志TF0/TF1,还自动将TH0/TH1的内容送入T
14、L0/TL1,使TL0/TL1从初值开始重新计数。用户可以通过程序把时间常数预置在TH0/TH1中,再装入后,TH0/TH1的内容保持不变。 当T0CLKO=1时,T1/P3.5引脚配置为定时器0的时钟输出CLKOUT0。 当T1CLKO=1时,T0/P3.4引脚配置为定时器1的时钟输出CLKOUT1。,33/151,在自动装载时间常数的工作方式中,用户不需要在中断服务程序中重载定时常数,可产生高精度的定时时间,适合用作较精确的定时脉冲信号发生器,如波特率发生器等。特别是工作方式0(16位自动重装方式),实际工程中应用更加方便,因此,建议读者尽量使用方式0进行定时器的应用设计。 定时器2的工作
15、方式与定时器0或1的工作方式0类似,读者可参照上述内容自行学习。,34/151,四、定时/计数器量程的扩展 在实际应用中,需要的定时时常常超过定时/计数器的定时能力,特别是当单片机的系统时钟频率较高时,定时时长就更为有限。为了满足需要,经常需要对单片机的定时计数能力进行扩展。,35/151,1、定时器的最大定时能力 当工作于定时状态时,定时/计数器是对时钟周期进行计数,若对时钟进行12分频,则对每12个时钟周期计数一次。 当晶振频率为6MHz,采用12分频时,计数的单位时间为: 单位时间为: Tu= = s=2s 定时时间为:TC=XTu。其中,Tu为单位时间,TC为定时时间,X为所需计数次数
16、。,36/151,STC15F2K60S2单片机的定时/计数器是加1计数器。因此,不能直接将实际的计数值作为计数初值送入计数寄存器THX、TLX中,而必须将实际计数值以28、216为模求补,以补码作为计数初值设置THX和TLX。 即应装入计数/定时器的初值为: 其中,n=8或16。,37/151,例如:已知Tu2s,要求定时TC1ms,则 对方式0和方式1,时间常数为:216500=65036=FE0CH (THX装入FEH,TLX装入0CH)。 设系统时钟频率为6MHz,12分频时, 8位定时器的最大定时能力为:T(28 0)2s512s 16位定时器的最大定时能力为:T(216 0)2s131072s131.072ms,38/151,2、定时量程的扩展 定时量程的扩展分为软件扩展和硬件扩展两种 方法。 (1)软件扩展方法 软件扩展方法是在定时器中断服务程序中对定 时器中断请求进行计数,当中断请求的次数达到 要求的值时才进行相应的处理。,39/151,例如,某事件的