《51单片机定时器-计数器.ppt》由会员分享,可在线阅读,更多相关《51单片机定时器-计数器.ppt(32页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、89C51 单片机原理及应用单片机原理及应用89C51单片机定时器/计数器 单片机的定时计数器单片机的定时计数器 单片机应用系统中定时计数的需求:单片机应用系统中定时计数的需求:如用单片机控制的打铃器、空调的定时开关、啤酒自动生产如用单片机控制的打铃器、空调的定时开关、啤酒自动生产线上对酒瓶的计数装置等。线上对酒瓶的计数装置等。89C51单片机片内的定时单片机片内的定时/计数器:计数器:两个位可编程的定时计数器:两个位可编程的定时计数器:T0和和T1,都能定时和对,都能定时和对外部事件进行计数。外部事件进行计数。此外,此外,T1还可以作为串行接口的波特率发生器。还可以作为串行接口的波特率发生器
2、。定时计数器的结构定时计数器的结构.定时和计数的原理定时和计数的原理(1)计数)计数 定时计数器的实质是在处置基础上的加计数定时计数器的实质是在处置基础上的加计数器(位),器(位),16位定时位定时/计数器的计数容量是计数器的计数容量是65536单片机是对脉冲个数计数,计数器每单片机是对脉冲个数计数,计数器每接收到一个脉冲,计数值加接收到一个脉冲,计数值加1,当接收满当接收满65535个脉冲后,再个脉冲后,再来一个脉冲,计数值清来一个脉冲,计数值清0表明表明这一轮计数结束,同时将标这一轮计数结束,同时将标志位志位TF0或或TF1置置1。(2)定时)定时 单片机内部的计数器用作定时器时,是对标准
3、的单片机内部的计数器用作定时器时,是对标准的时钟进行了计数,每来一个时钟脉冲,计数器加时钟进行了计数,每来一个时钟脉冲,计数器加1,只要保证计数脉冲的间隔相等,则计数值就代表了只要保证计数脉冲的间隔相等,则计数值就代表了时间的流逝。时间的流逝。计数器如何能作为定时计数器如何能作为定时计数器如何能作为定时计数器如何能作为定时器使用呢?器使用呢?器使用呢?器使用呢?单片机中的定时器和计数器其实是一个器件:单片机中的定时器和计数器其实是一个器件:计数器:计数器:是对外部发生的事件进行计数,是对外部发生的事件进行计数,定时器:定时器:是对单片机内部的标准时钟脉冲进行是对单片机内部的标准时钟脉冲进行计数
4、。计数。单片机内部的标准时钟单片机内部的标准时钟单片机内部的标准时钟单片机内部的标准时钟脉冲是如何获得的呢?脉冲是如何获得的呢?脉冲是如何获得的呢?脉冲是如何获得的呢?由单片机的晶振经过由单片机的晶振经过12分频后得到。由于晶振的频率很准,分频后得到。由于晶振的频率很准,所以这个时钟脉冲的时间间隔也很准。当单片机采用所以这个时钟脉冲的时间间隔也很准。当单片机采用12的晶振时,它提供给计数器的脉冲频率是的晶振时,它提供给计数器的脉冲频率是,脉冲周期就是微秒。,脉冲周期就是微秒。定时定时/计数器计数器T0的结构示意图的结构示意图获得标准时间 单片机内部的单片机内部的16位定时计数器由高位定时计数器
5、由高8位和低位和低8位两个寄存位两个寄存器组成:器组成:l T0由由TH0和和TL0组成,组成,l T1由由TH1和和TL1组成,组成,定时计数器的计数值就存放在这里面。定时定时计数器的计数值就存放在这里面。定时/计数器计数器T1的的结构与结构与T0相同。相同。定时器定时器/计数器的控制寄存器计数器的控制寄存器TMOD:选择定时器选择定时器/计数器计数器T0、T1的工作模式和工作的工作模式和工作 方式。方式。TCON:控制控制T0、T1的启动和停止计数,同时包含了的启动和停止计数,同时包含了 T0、T1的状态。的状态。定时定时/计数器的结构计数器的结构单片机复位时,两个寄存器的所有位都被清单片
6、机复位时,两个寄存器的所有位都被清0 0。定时器定时器/计数器控制寄存器计数器控制寄存器TCONTCON 低低4 4位与外部中断有关,已介绍。高位与外部中断有关,已介绍。高4 4位的功能如下:位的功能如下:(1)TF1(1)TF1、TF0TF0计数溢出标志位计数溢出标志位 (2)TR1(2)TR1、TR0TR0计数运行控制计数运行控制位位 1 1:启动定时器启动定时器/计数器工作计数器工作 0 0:停止定时器停止定时器/计数器工作计数器工作 工作方式控制寄存器工作方式控制寄存器TMODTMOD8 8位分为两组,高位分为两组,高4 4位控制位控制T1T1,低低4 4位控制位控制T0T0。(1 1
7、)GATEGATE门控位门控位 0 0:以:以TRXTRX(X=0,1X=0,1)来启动定时器来启动定时器/计数器运行。计数器运行。1 1:用用外外中中断断引引脚脚(INT0INT0*或或INT1INT1*)上上的的高高电电平平和和TRXTRX来来启启动动定定时器时器/计数器运行。计数器运行。(2 2)M1M1、M0M0工作方式选择位工作方式选择位 M1 M0 M1 M0 工工 作作 方方 式式 0 0 0 0 方式方式0 0,1313位定时器位定时器/计数器。计数器。0 1 0 1 方式方式1 1,1616位定时器位定时器/计数器。计数器。1 0 1 0 方式方式2 2,8 8位常数自动重新
8、装载位常数自动重新装载 1 1 1 1 方式方式3 3,仅适用于,仅适用于T0T0,T0T0分成分成 两个两个8 8 位计数器,位计数器,T1T1停止计数。停止计数。(3)(3)C/TC/T*计计数数器器模模式式和和定定时时器器模模式式选选择择位位0 0:定时器模式。定时器模式。1 1:计数器模式。计数器模式。定时定时/计数器的工作方式计数器的工作方式一方式一方式0方式0是13位的定时/计数方式,因而最大计数值为 2的13次幂,等于8192。如计数值为N,则置入的初值X为:X=8192-N例如定时/计数器T0的计数值为1000,则初值为7192,转换成二进制数为1110000011000B,则
9、TH0=11100000B,TL0=00011000B。工作方式工作方式0 0为为1313位的计数器位的计数器 ,C/TC/T*位决定工作模式:位决定工作模式:0 0:开关打在上面,为定时器工作模式;开关打在上面,为定时器工作模式;1 1:开关打在下面,为计数器工作模式,计数脉冲为开关打在下面,为计数器工作模式,计数脉冲为P3.4P3.4、P3.5P3.5引脚上的外部输入脉冲,当引脚上发生负跳变时,引脚上的外部输入脉冲,当引脚上发生负跳变时,计数器加计数器加1 1。GATEGATE位:决定定时器位:决定定时器/计数器的计数器的运行取决于运行取决于TRxTRx一个条件还是一个条件还是TRxTRx
10、和和INTxINTx*引脚两个条件引脚两个条件。(1 1)0 0:A A点是否计数点是否计数,仅取决于仅取决于TRxTRx的状态。的状态。(2 2)1 1:B B点点电电位位由由INTXINTX*的的输输入入电电平平和和TRXTRX的的状状态态这这两两个个条条件件来确定。来确定。是否计数是由是否计数是由TRxTRx和和INTxINTx*二个条件来控制的。二个条件来控制的。二、方式二、方式1方式1是16位的定时/计数方式,因而最大计数值为 2的16次幂,等于65536。如计数值为N,则置入的初值X为:X=65536-N如定时/计数器T0的计数值为1000,则初值为65536-1000=64536
11、,转换成二进制数为1111110000011000B,则TH0=11111100B,TL0=00011000B。三方式三方式2 方式2,16位的计数器只用了8位来计数,用的是TL0(或TL1)的8位来进行计数,而TH0(或TH1)用于保存初值。当TL0(或TL1)计满时则溢出,一方面使TF0(或TF1)置位,另一方面溢出信号又会触发三态门,使三态门导通,TH0(或TH1)的值就自动装入TL0(或TL1)。TLX作为常数缓冲器,当作为常数缓冲器,当TLX计数溢出时,在置计数溢出时,在置“1”溢出标志溢出标志TFX的同时,还自动的将的同时,还自动的将THX中的初值送至中的初值送至TLX,使使TLX
12、从初值开始重新计数。从初值开始重新计数。特别适合于产生比较精特别适合于产生比较精确的连续脉冲信号。确的连续脉冲信号。由于是8位的定时/计数方式,因而最大计数值为 2的8次幂,等于256。如计数值为N,则置入的初值X为:X=256-N 如定时/计数器T0的计数值为100,则初值为256-100=156,转换成二进制数为10011100B,则TH0=TL0=10011100B。注意:由于方式2计满后,溢出信号会触发三态门自动地把TH0(或TH1)的值装入TL0(或TL1)中,因而如果要重新实现N个单位的计数,不用重新置入初值。方式3只有定时/计数器T0才有,当M1M0两位为11时,定时/计数器T0
13、工作于方式3,定时/计数器T0被分为两个部分TL0和TH0,其中,TL0可作为定时/计数器使用,占用T0的全部控制位:GATE、C/T、TR0和TF0;而TH0固定只能作定时器使用,对机器周期进行计数,这时它占用定时/计数器T1的TR1位、TF1位和T1的中断资源。四、方式四、方式3 工作方式工作方式3 3相当于增加一个附加的相当于增加一个附加的8 8位定时器位定时器/计数器,从计数器,从而具有而具有3 3个定时器个定时器/计数器。计数器。只适用于定时器只适用于定时器/计数器计数器T0T0。T1T1不能工作在方式不能工作在方式3 3,T1 T1方式方式3 3时相当于时相当于TR1=0TR1=0
14、,停止计数(此时停止计数(此时T1T1可用来作串可用来作串行口波特率产生器)。行口波特率产生器)。1 1工作方式工作方式3 3下的下的T0T0T0T0分为两个独立的分为两个独立的8 8位计数器位计数器:TL0TL0和和TH0 TH0。TL0TL0使用使用T0T0的状态的状态控制位控制位C/T*C/T*、GATEGATE、TR0TR0、,、,而而TH0TH0被固定为一个被固定为一个8 8位定时器位定时器(不能作外部计数模式),并使用定时器(不能作外部计数模式),并使用定时器T1T1的状态控制位的状态控制位TR1TR1和和TF1TF1,同时占用定时器同时占用定时器T1T1的中断请求源的中断请求源T
15、F1TF1。2T0工作在方式工作在方式3下下T1的各种工作方式的各种工作方式 当当T1T1用作串行口的波特率发生器时,用作串行口的波特率发生器时,T0T0才工作才工作在方式在方式3 3。T0 T0处于方式处于方式3 3时,时,T1T1可定为方式可定为方式0 0、方式、方式1 1和方和方式式2 2,用来作为串行口的波特率发生器,或不需要,用来作为串行口的波特率发生器,或不需要中断的场合。中断的场合。定时器定时器/计数器对输入信号的要求计数器对输入信号的要求 外部计数脉冲的最高频率为系统振荡器频率的外部计数脉冲的最高频率为系统振荡器频率的1/241/24,例如选用例如选用1212MHzMHz频率的
16、晶体,则可输入频率的晶体,则可输入500500KHzKHz的外部脉冲。的外部脉冲。输入信号的高、低电平至少要保持一个机器周期。输入信号的高、低电平至少要保持一个机器周期。如图所示,图中如图所示,图中TcyTcy为机器周期。为机器周期。定时器定时器/计数器的初始化计数器的初始化定时定时/计数器的方式寄存器计数器的方式寄存器TMOD其中:M1、M0为工作方式选择位,用于对T0的四种工作方式,T1的三种工作方式进行选择,选择情况如下 C/T:定时或计数方式选择位,当C/T=1时工作于计数方式;当C/T=0时工作于定时方式。GATE:门控位,用于控制定时/计数器的启动是否受外部中断请求信号的影响。定时
17、定时/计数器的控制寄存器计数器的控制寄存器TCON其中:TF1:定时/计数器T1的溢出标志位,当定时/计数器T1计满时,由硬件使它置位,如中断允许则触发T1中断。进入中断处理后由内部硬件电路自动清除。TR1:定时/计数器T1的启动位,可由软件置位或清零,当TR1=1时启动;TR1=0时停止。16位定时计数器计满位定时计数器计满65536个脉冲时,也会发生溢出。个脉冲时,也会发生溢出。定时计数器溢出后标志位定时计数器溢出后标志位TF0(或(或TF1)由)由0变变1,由此能,由此能够引发定时中断(在中断定时方式下),这就像定时的时间一够引发定时中断(在中断定时方式下),这就像定时的时间一到,闹钟就
18、会响一样到,闹钟就会响一样。如果采用如果采用12的晶振,对应的脉冲周期是微秒,计的晶振,对应的脉冲周期是微秒,计满满65536个脉冲所对应的时间就是个脉冲所对应的时间就是65.536ms。定时定时/计数值的设置计数值的设置 计数器的道理是一样的,只要用预置数的方法先在计数计数器的道理是一样的,只要用预置数的方法先在计数容器内存入一个初值容器内存入一个初值,如我们要计如我们要计100,那就存入,那就存入65436,只要再来只要再来100个脉冲,就刚好会溢出,引发中断。个脉冲,就刚好会溢出,引发中断。在时钟频率为在时钟频率为12MHz的情况下,每个时钟脉冲是的情况下,每个时钟脉冲是1微秒,微秒,则
19、计满则计满65536个脉冲需个脉冲需65.536毫秒,如要定时毫秒,如要定时10毫秒则存毫秒则存入初值入初值55536,(,(10毫秒是毫秒是10000微秒,需计数微秒,需计数10000个个脉冲)。可见,脉冲)。可见,定时器的定时时间长短与系统时钟和定时器初值有关定时器的定时时间长短与系统时钟和定时器初值有关。说明说明 1.当定时计数器用作当定时计数器用作计数器计数器时,通过引脚时,通过引脚P3.4、P3.5对外部输入脉冲计数。对外部输入脉冲计数。2.定时计数器定时计数器T0(T1)启动运行后,会按设定的工作方启动运行后,会按设定的工作方式独立进行计数,不再占用式独立进行计数,不再占用CPU时
20、间。当计数器时间。当计数器T0(T1)计计满溢出时,满溢出时,TF0(TF1)置置1,向,向CPU发出中断请求信号。发出中断请求信号。定时器初值的设置定时器初值的设置定时器计数器初值计算l定时器计数器用于定时或计数时,必须按照需要给计数器设置初值。定时器计数器在计数初值的基础上以加1的方式进行计数,在计数器从全1变为全0时,将自动产生溢出中断请求。(1)计数初值计算)计数初值计算l 假设要计数的值为X,由于计数器是加工计数器,所以定时器计数器的初值为 2 X:其中n的值依赖于工作方式,对于方式 0,n=13;即初值=8192-X对于方式 1,n=16;即初值=65536-X对于方式 2和方式
21、3,n=8;即初值=256-Xn2)定时初值计算)定时初值计算 定时就是定时间,假设晶振频率为f,定时时间为T,对应的计数值为X,此时计数器是将系统时钟12分频后作为计数脉冲,则以下等式成立。要装入的计数器初值 CI=2 Tfosc/12。例如:已知晶振的频率为 6 MHz,要求定时为2 ms,则 当为方式0时,应装入的计数初值为;8192210 610 /12=8192-1000=7192n36u 定时时间常数初值定时时间常数初值X:方式方式0 X=8192-T(fosc/12)方式方式1 X=65536-T(fosc/12)方式方式2、方式、方式3 X=256-T(fosc/12)其中其中
22、T是需要定时的时间,单位是微秒;是需要定时的时间,单位是微秒;fosc是晶振是晶振u 计数时间常数计数时间常数X:方式方式0 X=8192-S 方式方式1 X=65536-S 方式方式2、方式、方式3 X=256-S 说明:式中说明:式中S是需要计数的次数是需要计数的次数 定财器计数器初始化步骤 1)确定工作方式:把工作方式控制字写入到TMOD中;2)设置定时或计数的初值:根据问题要求,求出定时或计数的初值,写入到寄存器THO、TLO或THI、TLI中。3)如果需要中断,使定时器中断允许位ET0或ETI置位,如果要求中断嵌套,还应设置相应的中断优先级,然后置位EA,使CPU开放中断;如果不需要
23、中断,仅以软件方式对计数器溢出标志TFO或TFI进行查询,则可略去此步骤;4)启动定时器计数器:将 TRO或 TRI置 1即可启动定时器计数器。定时器定时器/计数器的编程和应用计数器的编程和应用 4 4种工作方式中,方式种工作方式中,方式0 0与方式与方式1 1基本相同,由于方式基本相同,由于方式0 0是为是为兼容兼容MCS-48MCS-48而设,初值计算复杂,在实际应用中,一般不用而设,初值计算复杂,在实际应用中,一般不用方式方式0 0,而采用方式,而采用方式1 1。方式方式1 1应用应用 例例1 1 假设系统时钟频率采用假设系统时钟频率采用6 6MHzMHz,要在要在P1.0P1.0上输出
24、一个周上输出一个周期为期为2 2msms的方波,如图所示。的方波,如图所示。方波的周期用方波的周期用T0T0来确定,让来确定,让T0T0每隔每隔1 1msms计数溢出计数溢出1 1次次(每每1 1msms产生一次中断产生一次中断),CPUCPU响应中断后,在中断服务程序中对响应中断后,在中断服务程序中对P1.0P1.0取反。取反。(1)(1)计算初值计算初值X X 设初值为设初值为X X,则有则有:(2 (21616-X)210X)210-6-6=110=110-3-3 2 21616-X=500 X=65036-X=500 X=65036 X X化为化为1616进制,即进制,即 所以,所以,
25、T0T0的初值为:的初值为:TH0=0FEH TL0=0CHTH0=0FEH TL0=0CH 例例2 2 假设系统时钟为假设系统时钟为6 6MHzMHz,编写定时器编写定时器T0T0产生产生1 1秒定时的程序。秒定时的程序。(1 1)T0T0工作方式的确定工作方式的确定 定时时间较长,采用哪一种工作方式?定时时间较长,采用哪一种工作方式?由各种工作方式的特性,可计算出:由各种工作方式的特性,可计算出:方式方式0 0最长可最长可定时定时16.38416.384ms;ms;方式方式1 1最长可定时最长可定时131.072131.072ms;ms;方式方式2 2最长可定时最长可定时512512 s
26、s。选方式选方式1 1,每隔,每隔100100msms中断一次,中断中断一次,中断1010次为次为1 1s s。(2 2)计算计数初值)计算计数初值 因为:因为:(216-(216-X)210-6=10-1X)210-6=10-1 所以:所以:X=15536=3CB0HX=15536=3CB0H 因此:因此:TH0=3CHTH0=3CH,TL0=B0H TL0=B0H (3 3)1010次计数的实现次计数的实现 采用循环程序法。采用循环程序法。方式方式2 2的应用的应用 省省去去程程序序中中重重装装初初值值的的指指令令,并并可可产产生生相相当当精精确确的的定定时时时时间。间。例例3 3 当当T
27、0T0(P3.4P3.4)引引脚脚上上发发生生负负跳跳变变时时,从从P1.0P1.0引引脚脚上上输输出一个周期为出一个周期为1 1msms的方波的方波,如图所示。(系统时钟为如图所示。(系统时钟为6 6MHzMHz)(1 1)工作方式选择)工作方式选择 T0 T0为方式为方式1 1计数,初值计数,初值 0 0FFFFHFFFFH,即外部计数输入端即外部计数输入端T0T0(P3.4P3.4)发生一次负跳变时,发生一次负跳变时,T0T0加加1 1且溢出,溢出标志且溢出,溢出标志TF0TF0置置“1”“1”,发中断请求。在进入,发中断请求。在进入T0T0中断程序后,把中断程序后,把F0F0标标志置志置“1”“1”,说明,说明T0T0脚已接收了负跳变信号。脚已接收了负跳变信号。T1 T1定义为方式定义为方式2 2定时。在定时。在T0T0脚发生一次负跳变后,启动脚发生一次负跳变后,启动T1T1每每500500 s s产生一次中断,在中断服务程序中对产生一次中断,在中断服务程序中对 P1.0P1.0求反,求反,使使P1.0P1.0产生周期产生周期1 1msms的方波。的方波。(2 2)计算)计算T1T1初值初值 设设T1T1的初值为的初值为X X:则则 (2 (28 8-X)210X)210-6-6=510=510-4-4 X=2 X=28 8-250=6=06H-250=6=06H
限制150内