定时器、计数器

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

  • TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志;
  • TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能;

TCON
低四位为外部中断使用,高四位控制定时器/计数器。其中TF0、TF1为计数溢出中断标志位。TR0、TR1置1时,允许定时器/计数器运行(必要条件),如果该位为0,则一定禁止使能

符号1 符号2 名称 说明
TR0 计数运行控制位 为启动定时器/计数器0的必要条件
TR1 计数运行控制位 为启动定时器/计数器1的必要条件
GATE=0 TR0 门控位、计数运行控制位 由TR0或者TR1控制定时器/计数器运行
GATE=1 TR0 门控位、计数运行控制位 由外部中断(INT0、INT1)与TRx共同控制; GATE=1,且INT0=1时(好像是下降沿触发),TR1=1启动定时器1;即相与

GATE位在TMOD寄存器中

定时器、计数器_第1张图片
高4位控制T1,低4位控制T0,原理相同。

  • GATE :门控位
       GATE=0,仅由运行控制位TRx(x = 0,1)来控制定时器/计
    数器运行,置1开启;
        GATE=1,用外中断引脚上的电平与运行控制位TRx相与的
    结果共同来控制定时器/计数器运行。
  • C/T:计数器模式和定时器模式选择位
        C/T=0:为定时器工作模式,对单片机的晶体振荡器12分频后的脉冲
    进行计数。
        C/T=1:为计数器工作模式,计数器对外部输入引脚T0(P3.4)或T1(P3.5)的外部脉冲(负跳变)计数。
  • M1、M0:工作方式选择位
    定时器、计数器_第2张图片

1、方式0与方式1只是计数位数不同,方式1范围更大。方式0初值计算复杂,一般用方式1
2、方式0和方式1中:计数溢出后,计数器为全0。因此循环计数时,需要重新装入初值
3、方式2能自动恢复初值(初值自动装入);在这种方式下THx(x = 0,1)用来存放计数的初值, TLx (x = 0,1)用作计数,因此计数范围较小。当TLx计数溢出时,在溢出标志TFx置“1”的同时,将THx中的初值送至TLx,使TLx从初值开始重新计数
4、一般情况下,当T1用作串口波特率发生器时,T0才工作在方式3,此时T1可工作在方式0、1、2

定时初值的计算

单片机内部时钟频率是外部时钟的12分频,也就是说为外部晶振的1/12。CPU完成一个基本操作所需要的时间:机器周期=1/单片机的时钟频率。
当晶振为12MHz时,机器周期=1 /(12MHz / 12)= 1us,所以计数器每记一个数的时间为1us。若定时1ms,则计1ms / 1us = 1000个数

  • 方式0最长计时=1us*213=8.192 ms
  • 方式1最长计时=1us*216=65.536 ms
  • 方式2最长计时=1us*28=0.256 ms

若采用定时器1、方式1定时1ms,装入T0的初值为 65536 - 1000 = 64536 = 0x FC18H,故 TH0 =FCH,TL0 = 18H。

设置定时器中断

1、设置TMOD,以及确定工作方式
2、设置定时器初值
3、开放定时器中断(IE),再使能总中断EA
4、设置TCON,启动定时/计数

你可能感兴趣的:(51单片机)