51单片机 —— 计时器

TMOD : 8位寄存器,不能位寻址,低四位控制定时器T0,高四位控制T1。每四位寄存器中,低两位定义定时器的工作方式(方式一与方式二),第三位是功能选择位(定义计时器为定时或计数),第四位为门控位,决定INTx引脚输入电平的影响,也可理解为是否引入外部控制定时器的启停动作。

========================================================================
    |                    ||
TMOD | D7    D6    D5    D4||   D3    D2    D1    D0
    |                    ||
对应  | GATE   C/T    M1      M0||  GATE     C/T      M1      M0
    |                    ||
从属  |      定时器1           ||          定时器0
    |                    ||
========================================================================

GATE  ->  门控制
  GATE = 1 : 当且仅当TRx=1,INTx=1,计数启动,否则停止
      INT0为高电平TR0置位 -> INT0 = 1,TR0 = 1,启动定时器0
      INT1为高电平TR1置位 -> INT1 = 1,TR1 = 1,启动定时器1
  GATE = 0 : 定时器不受INTx影响
      TR0 = 1,启动定时器T0
      TR1 = 1,启动定时器T1

C/T   ->  功能选择位
  C/T=0 : 定时功能:加1计数器对脉冲f进行计数,每来一个脉冲,计数器加1,直到计时器TFx满溢出;
  C/T=1 : 计数功能:加1计数器对来自输入引脚T0(P3^4)与T1(P3^5)的外信号脉冲进行计数,每来一个脉冲,计数器加1,直到计时器TFx满溢出;

M1、M0 ->  方式选择功能
  51定时器 T0有4种工作方式:方式0,1,2,3
       T1有3种工作方式:方式0,1,2
  0  0    方式0:13位定时器/计数器
  0  1    方式1:16位定时器/计数器
  1  0    方式2:自动重载8位定时/计数器

  1  1    方式3:T0分为2个8位独立计数器

令M为计数器最大值
  方式0:M = 2^13 = 8192
  方式1:M = 2^16 = 65536
  方式2:M = 2^8 = 256
  方式3:定时器0分成两个8位计数器,两个M均为256

//CPU开中断
EA = 1;

//确定工作方式
TMOD = 0x00; //T0为方式0,16位装载初值

//预制初值
TH0 = (65536-num)/256; // 65536为2^12(12MHz),num为延时时间(单位1微秒),256为2^8(8位寄存器)
TL0 = (65536-num)/256; // 必写,写在TH0后,取余符号(暂定)

//软件启动
TR0 = 1; // 如果TMOD设定为中断引脚启动则需加上中断引脚启动电平

猜你喜欢

转载自www.cnblogs.com/MO-OF/p/9109721.html