1、6,定时器/计数器基础,2,广东交通职业技术学院,本讲主要内容:,6-1.实现定时的方法 6-2.定时器/计数器的结构和工作原理 6-3.定时器/计数器的控制 6-4.定时器/计数器的工作方式 6-5.定时器/计数器应用,3,广东交通职业技术学院,6-1.实现定时的方法,软件定时 软件延时不占用硬件资源,但占用了CPU时间,降低了CPU的利用率。例如延时程序。 采用时基电路定时 例如采用555电路,外接必要的元器件(电阻和电容),即可构成硬件定时电路。但在硬件连接好以后,定时值与定时范围不能由软件进行控制和修改,即不可编程,且定时时间容易漂移。 可编程定时器定时 最方便的办法是利用单片机内部的
2、定时器/计数器。结合了软件定时精确和硬件定时电路独立的特点。,定时器/计数器如何使用呢?,4,广东交通职业技术学院,6-2.定时器/计数器的结构和工作原理,定时器/计数器的结构 定时器/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。TMOD是定时器/计数器的工作方式寄存器,确定工作方式和功能;TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。,5,广东交通职业技术学院,6-2.定时器/计数器的结构和工作原理,定时器/计数器的工作原理 计数器输入的计数脉冲源 系统的时钟振荡器输出脉冲经12分频后产生; T0或T1引脚输入的外部脉冲源。 计数过程 每来一个脉冲计
3、数器加1,当加到计数器为全1(即FFFFH)时,再输入一个脉冲就使计数器回零,且计数器的溢出使TCON中TF0或TF1置1,向CPU发出中断请求(定时器/计数器中断允许时)。如果定时器/计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。,6,广东交通职业技术学院,6-2.定时器/计数器的结构和工作原理,定时应用 用作定时器:此时设置为定时器模式,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。计数值N乘以机器周期Tcy就是定时时间t 。 计数运用 用作计数器:此时设置为计数器模式,外部事件计数脉冲由T0或T1引脚输
4、入到计数器。每来一个外部脉冲,计数器加1。但单片机对外部脉冲有基本要求:脉冲的高低电平持续时间都必须大于1个机器周期。,定时与计数都是利用计数实现!,7,广东交通职业技术学院,6-3.定时器/计数器的控制,工作方式寄存器(TMOD)GATE:门控位。 GATE0时,只要用软件使TCON中的TR0或TR1为1,就可以启动定时器/计数器工作;(即需要一个启动条件) GATE1时,要用软件使TR0或TR1为1,同时外部中断引脚也为高电平时,才能启动定时器/计数器工作,即需要两个启动条件。 C/T :定时/计数模式选择位。 C/T 0为定时模式; C/T =1为计数模式。 M1M0:工作方式设置位。,
5、8,广东交通职业技术学院,6-3.定时器/计数器的控制,计数器工作方式选择,9,广东交通职业技术学院,6-3.定时器/计数器的控制,控制寄存器TCONTCON的低4位用于控制外部中断,已在前面介绍。TCON的高4位用于控制定时器/计数器的启动和中断申请。其格式如下:TF1(TCON.7):T1溢出中断请求标志位。T1计数溢出时由硬件自动置TF1为1。CPU响应中断后TF1由硬件自动清0。TR1(TCON.6):T1起/停控制位。1:启动 0:停止 TF0(TCON.5):T0溢出中断请求标志位,其功能与TF1类同。 TR0(TCON.4):T0起/停控制位。1:启动 0:停止,10,广东交通职
6、业技术学院,6-4.定时器/计数器的工作方式,方式0方式0为13位计数,由TL0的低5位(高3位未用)和TH0的8位组成TL0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求。,该方式计算不方便,建议不采用!,11,广东交通职业技术学院,6-4.定时器/计数器的工作方式,方式1方式1的计数位数是16位,由TL0(TL1)作为低8位、TH0(TH1)作为高8位,组成了16位加1计数器 。,12,广东交通职业技术学院,6-4.定时器/计数器的工作方式,方式2方式2为自动重装初值的8位计数方式。 在方式2下,当计数器计满255(FFH)溢出时,CPU自动把T
7、H 的值装入TL中,不需用户干预。因此特别适合于用作较精确的脉冲信号发生器。,13,广东交通职业技术学院,6-4.定时器/计数器的工作方式,方式3方式3只适用于定时器/计数器T0,定时器T1方式3时相当于TR1=0,停止计数。,工作方式3将T0分成为两个独立的8位计数器TL0和TH0 。,14,广东交通职业技术学院,6-5.定时器/计数器应用,例1:编写一段程序,让51MCU的P1.7输出1ms的方波,fosc=12MHz,自行选择合适的工作模式和定时器。,6-5.定时器/计数器应用,原则: 1 、计算需求计数值,首先考虑模式2,再考虑模式1。 2 、中断方式为主,少使用查询模式,6-5.定时
8、器/计数器应用,选择方式1!,C语言代码:TMOD = 0x01,初值 = 计数最大值-需求计数值= 2n t fosc/12=216-0.5ms12MHz/12=65036=0xFE0C,N,6-5.定时器/计数器应用,C语言代码: TH0 = 0xFE; TL0 = 0x0C;,定时器启动后即对选择的技术信号进行加1计数,6-5.定时器/计数器应用,C语言代码: TR0 = 1;,1、如果使用查询方式,则需要进行不间断查询 2、定时器溢出位必须进行软件清0 3、除方式2外,其他方式均不会自动重装初值,需要使用程序软件重装,6-5.定时器/计数器应用,while(1)while(!TF0);
9、/不间断查询TF0=0;/定时时间到,软件清楚溢出位P17 = !P17;/执行操作 TH0 = 0xFE;/重装初值TL0 = 0x0C;,void main(void) TMOD = 0x01;TH0 = 0xFE;TL0 = 0x0C;TR0 = 1;while(1)while(!TF0);/不间断查询TF0=0;/定时时间到,软件清楚溢出位P17 = !P17;/执行操作 TH0 = 0xFE;/重装初值TL0 = 0x0C; ,6-5.定时器/计数器应用,1、产生的方波准确度高吗? 2 、能否使用其他方式产生?如果可以,设计程序。 3 、可产生更高精确度的信号吗? 4 、使发光二极管
10、以1s的时间闪烁,分别用延时函数和定时器实现。,6-5.定时器/计数器应用,22,广东交通职业技术学院,6-5.定时器/计数器应用,例2:编写一段程序,让51MCU的P1.7输出占空比为70%,频率为100HZ的矩形波(用定时器完成),fosc=6MHz。思路:此题中,高电平时间为10ms70%=7ms,低电平为3ms。对于这种高、低电平时间不一致的波形,通常取出两个时间的相同单位时间作为定时器的定时时间,对于不同的电平采用不同的定时次数。此例中,可用1ms作为定时器的定时时间。高电平段定时7次,低电平段定时3次,即可实现矩形波输出。 定时器初值=65536-1000/2=65036=FE0CH,定时器计数器,51系列单片机的内部有两个16位的加1定时器/计数器,称为定时器T0和定时器T1。 工作为定时器时,计数脉冲为振荡器的12分频,工作为计数器时,计数脉冲为P3.4/P3.5的下降沿。 定时器T0有四种工作方式,定时器T1有三种工作方式,它们的结构和工作原理完全相同。 51系列单片机通过TMOD寄存器设置定时器的工作模式,通过TCON寄存器首先软件控制启动/停止。,