51单片机定时器

详见:http://wenku.baidu.com/view/918d323067ec102de2bd89d3.html

1  定时器的TMODTCON寄存器

         工作方式寄存器 TMOD 用于设置定时器的 工作模式和工作方式
        控制寄存器TCON:用于启动和停止定时器的计数,并控制定时器的状态;
        51单片机定时器_第1张图片
        51单片机定时器_第2张图片
        51单片机定时器_第3张图片
2    定时器的工作方式
          方式 0
         方式 1
         方式 2
         方式 3
两种工作模式 :
(1) 计数器 工作模式
就是对外部事件进行计数。 计数脉冲来自相应的外部输入 引脚T0(P3.4)或 T1(P3.5)。当输入信号发生由1至0的 负跳变(下降沿) 时,计数器(TH0,TL0 或TH1,TL1)的值增1。 计数的最高频率一般为振荡频率的 1/24 Why?
(2) 定时器 工作模式
也是通过计数实现的。 计数脉冲来自内部时钟脉冲 每个机器周期计数值增 1 ,每个机器周期=12个振荡周期,因此计数频率为振荡频率的1/12。所以 时时间=计数值 × 机器周期
4 种工作方式 ( 方式 0- 方式 3)
n 当设置了定时器的工作方式并启动定时器工作后,定时 器就按被设定好的工作方式独立工作, 不再占用 CPU 只有在计数器计满溢出时才向 CPU 申请中断,占用 CPU
n MCS-51的定时器T0有4种工作方式:
   即: 方式 0 ,方式 1 ,方式 2 ,方式 3
   n MCS-51 的定时器 T1 3 种工作方式:
   即: 方式 0 ,方式 1 ,方式 2
   方式0:
n C/T=0 时,为 定时 工作模式,开关接到振荡器的 12 频器输出上,计数器对机器周期脉冲计数。其定时时间 为:
(2 13 - 初值 ) ×振荡周期× 12
例如:若晶振频率为 12MHz ,则最长的定时时间为 (2 13 -0) × (1/12) × 12us=8.191ms
n C/T=1 时,为 计数 工作模式,开关与外部引脚 T1(P3.5) 接通,计数器对来自外部引脚的输入脉冲计数。 当外部信号发生负跳变时计数器加 1
   方式1:
n 其定时时间为:
(2 16 - 初值 ) ×振荡周期× 12
例如:若晶振频率为 12MHz ,则最长的定时时间为
(2 16 -0) × (1/12) × 12us=65.536ms
   方式2:
M1 M0=10 ,为 自动恢复初值的 8 计数器。
优点:
THx 作为常数缓冲器 ,当 TLx 计数溢出时,在置 1 溢出标志 TFx 的同时,还 自动的将 THx 中的初值送至 TLx ,使 TLx 从初值开始重新计数。
方式 0 和方式 1 用于循环重复定时或计数时,在 每次计数器挤满溢 出后,计数器复 0 。若要进行新一轮的计数,就得重新装入计数初 值。这样一来不仅造成 编程麻烦 ,而且 影响定时精度 。而方式 2 有初值自动装入的功能,避免了这个缺点, 可实现精确的定时
缺点:
只有 8 位计数器,定时时间短、计数范围小。 其定时时间为:
 (2 8 - 初值 ) ×振荡周期× 12
若晶振频率为 12MHz ,则最长的定时时间为
(2 8 -0) × (1/12) × 12us=0.256ms
   方式3:
只适用于定时器 / 计数器 T0 T1 不能工作在方式 3
如果将 T1 置为方式 3 ,则相当于 TR1=0 ,停止计数 ( 此时 T1 可用 来作串行口波特率产生器 )
T0 在方式 3 时被拆成两个 独立的 8 位计数器: TH0 TL0
n 8 位计数器 TL0 使用 T0 的状态控制位 C/T * GATE TR0 INT0 ,它既可以工作在 定时方式 ,也可以工作在 计数方式
n 8 位定时器 TH0 被固定为一个 8 位定时器 ( 不能作外部计数模式 ) 并使用定时器 T1 的状态控制位 TR1 ,同时占用定时器 T1 的中断请 求源 TF1 。此时,定时器 TH0 的启动或停止只受 TR1 控制
TR1=1 时,启动 TH0 的计数; TR1=0 时,停止 TH0 的计数

   

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