在学习定时器/计数器之前需要明白的

51单片机有两组定时器/计数器,因为既可以定时,又可以计数,故称之为定时器/计数器。

定时器/计数器和单片机的CPU是互相独立的,定时器/计数器工作的过程是自动完成的,不需要CPU参与。

51单片机中的定时器/计数器是根据机器内部的时钟或者是外部的脉冲信号对寄存器中的数据加1.

有了定时器/计数器之后,可以增加单片机的效率,一些简单的重复加1的工作可以交给定时器/计数器处理。CPU转而处理一些复杂的事情。同时可以实现精确定时作用。

 

定时器/计数器的工作原理

定时器/计数器实质上是一个加1计数器。它随着计数器输入脉冲进行自加1,也就是每来一个脉冲,计数器就自动加1,当加到计数器全1时,再输入一个脉冲就使计数器回零,且计数器的溢出使相应的中断标志位置1,向CPU发出中断请求(定时/计数器中断允许时)。如果定时器/计数器工作与定时模式,则表示定时时间已到;如果工作与计数模式,则表示计数值已满。

可见,由溢出时计数器的值减去计数初值才是加1 计数器的计数值。

 

51单片机定时器结构

定时/计数器的实质时加1计数器(16位),由高8位和低8位两个寄存器THx和TLx组成。

TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能

TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志

定时器/计数器_51单片机

 

控制寄存器TCON

TCON的低4位用于控制外部中断,在中断系统中介绍。TCON的高4位用于控制定时/计数器的启动和中断申请

定时器/计数器_中断请求_02

TF1(TCON.7):T1溢出中断请求标志位。T1计数溢出时由硬件自动置TF为1.CPU响应中断后TF1由硬件自动清0.T1工作时,CPU可随时查询TF1的状态。所以,TF1可用作查询测试的标志。TF1也可以用软件置1或清0,同硬件置1或清0的效果一样

TR1(TCON.6):T1运行控制位。TR1置1时,T1开始工作;TR1置0时,T1停止工作。TR1由软件置1或清0。所以,用软件可控制定时/计数器的启动与停止。

 

工作方式寄存器TMOD

工作方式寄存器TMOD用于设置定时/计数器的工作方式,低四位用于T0,高四位用于T1。

定时器/计数器_初值_03

GATE是门控位,GATE=0时,用于控制定时器的启动是否受外部中断源信号的影响。只要用软件使TCON中TR0或TR1为1,就可以启动定时/计数器工作;GATE=1时,要用软件使TR0或TR1为1,同时外部中断引脚INT0/1也为高电平时,才能启动定时/计数器工作。即此时定时器的启动条件,加上INT0/1引脚为高电平这一条。

C/T:定时/计数模式选择位。C/T=0为定时模式,;C/T=1为计数模式。

M1M0:工作方式设置位。定时/计数器有四种工作方式。

定时器/计数器_寄存器_04

 

定时/计数器的工作方式

方式0

方式0为13为计数,由TL0的低5位(高3位未用)和TH0的8位组成。TL0的低5位溢出时间向TH0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求。

定时器模式时由N=t/Tcy

计数初值计算的公式为:X=2^13-N

定时器的初值还可以采用计数个数取补法获得

计数模式时,计数脉冲是T0引脚上的外部脉冲

门控位GATE具有特殊的作用。当GATE=0时,经反相后使或门输出为1,此时仅由TR0控制与门的开启,与门输出1时,控制开关接通,计数开始;当GATE=1时,由外中断引脚信号控制或门的输出,此时控制与门的开启由外中断引脚信号和TR0共同控制。当TR0=1时,外中断引脚信号引脚的高电平启动计数,外中断引脚信号引脚的低电平停止计数。这种方式常用来测量外中断引脚上正脉冲的宽度。

定时器/计数器_中断请求_05