你好!欢迎来到深圳市颖特新科技有限公司!
语言
当前位置:首页 >> 技术中心 >> 单片机入门 >> 单片机定时器/计数器工作方式

单片机定时器/计数器工作方式

作者:admin 来源:不详 发布时间:2018-05-08  浏览:2
 (1)工作方式0

  C/T -定时 / 计数功能选择位。
  C/T =“0” ,对片内机器周期进行计数,作定时器用;
  C/T =““1” ,对片外从 T0 ( P3.4 )、 T1 ( P3.5 )引脚输入 的外部脉冲信号进行计数 , 作计数器用。
  GATE -门控位。
  GATE=0 ,允许软件控制位 TR0 或 TR1 启动定时器;
  GATE=1 ,允许外中断引脚 INT0( 或 INT1) 为高电电平,且由软件使 TR0( 或 TR1) 置 1 时,才能启动定时器工作。
  当 GATE=0 时,封锁或门输出恒为 1 ,使外部中断输入引脚 INT0 信号失效,同时又打开与门,由 TR0 控制定时器 T0 的开启和关断。若 TR0=1 ,接通控制开关,启动定时器 T0 工作,计数器被控制为允许计数。若 TR0=0 ,则断开控制开关,停止计数。
  当 GATE=1 时,与门的输出由 INT0 的输入电平和 TR0 位的状态来确定。若 TR0=1 ,则打开与门,外部信号电平通过 INT0 引脚直接开启或关断定时器 T0 。 当 INT0 为高电平时,允许计数,否则停止计数。这种工作方式可用来测量外部信号的脉冲宽度等。
  当 C/T=0 时, 控制开关接通振荡器 12 分频输出端, T0 对机器周期计数。 即定时器工作方式。
  当 C/T=1 控制开关与引脚 T0 ( P3.4 )接通,计数器 T0 对来自外部引脚 T0 的输入脉冲计数,当外部信号电平发生由 1 到 0 跳变时,计数器加 1 ,这时, T0 成为外部事件计数器。
  注意:定时计数器的计数范围与初值 X 的计算
  ① 定时器的计数规律:
  T0 从某初值 X ,对脉冲计数到 1111111111111B(2 13 D=8192D) 溢出
  计数个数: 2 13 - X
  ② 最大计数范围: 从初值 X = 0D ,计数到 1111111111111B(2 13 D)
  ③ 定时时间:
  定时值 = 计数个数×机器周期
      =( 2 13 - X )×机器周期
      = ( 2 13 - X )×晶振周期× 12
  最大定时值 =( 2 13 - 0 ) ×机器周期
  例 1 如要求计数值为 1000 ,试计算定时计数器 T0 的初值
  分析:由 213 - X = 1000
  得 X = 213 - 1000 = 8192 - 1000
    = 1C18H = 0001 1100 0001 1000B
   故 TH0 = 1 1100 000 = 0E0H
  TL0 = 1 1000B = 000 1 1000B = 18H 。
  例 2 利用 T0 方式 0 在 P1.0 引脚上输出周期 500us 的方波。设单片机 晶振频率 6MHz 。
  分析: 要在 P1.0 输出周期为 500us 的方波,只要 P1.0 每隔 250us 取反一次即可,即定时时间为 250us :
  ① TMOD 寄存器初始化:
  TMOD.1 TMOD.0 M1M0=00 , T0 为方式 0 ;
  TMOD.2 C/T=0 T0 为定时状态;
  TMOD.3 GATE=0 表示计数不受 INT0 控制;
  TMOD.4 TMOD.7 因 T1 不用,可取任意值,这里取为 0 。
  故 TMOD=00H
  ② 计算 250us 定时 T0 的初值: 设 T0 的计数初值为 X ,则
  X=8067D=1F83H=0001 1111 1000 0011B
  故 TH0= 1 1111 100 高 8 位 =FCH
  TL0=0000 0011B 低 5 位 =03H
  ③ 编写程序。采用查询 TF0 的状态来控制 P1.0 输出
  MOV TMOD , #00H ;置 T0 为方式 0
  MOV TH0 , #0FCH ;送计数初值
  MOV TL0 , #03H
  SETB TR0 ;启动 T0
  LOOP : JBC TF0 , NEXT ;查询定时时间到否 ?
  SJMP LOOP
  NEXT : CLR TF0 ; 对溢出标志位清 0
  MOV TH0 , #0FCH ;重赋计数初值
  MOV TL0 , #03H
  CPL P1.0 ;输出取反
  SJMP LOOP ; 重复循环
  采用查询方式的程序很简单,但在定时器整个计数过程中, CPU 要不断查询溢出时标志 TF0 的状态 , 这就占用了 CPU 工作时间 , 以致 CPU 的效率不高。采用定时溢出中断方式,可以提高 CPU 的效率。

  (2)工作方式1

   M1 M0=01 TH0 高 8 位和 TL0 低 8 位组成一个 16 位定时器 / 计数器
  定时器工作于方式1下,其结构与操作几乎与方式 0 完全相同,差别仅在于计数器的位数不同。
  注意:定时计数器的计数范围与初值 X 的计算
  ① 定时器的计数规律
  T0 从初值 X ,一直对脉冲计数到 1111111111111B(216D) 溢出
  计数个数: 216 - X = 65536 - X
  ② 最大计数范围 :从初值 X = 0D ,计数到 1111111111111111B(216D)
  计数个数为 216 - 0 = 65536D
  ③ 定时时间: 定时值 =( 216 - X ) ×机器周期
            =( 216 - X ) ×晶振周期× 12
  最大定时定时值 =( 216 - 0 ) ×机器周期
  例如 . 若单片机晶振为 6MHZ ,则 1 个机器周期为 2us
  最大定时定时值 =( 216 - 0 ) ×机器周期
         = 65536 × 2us = 131ms

编辑:admin  最后修改时间:2018-05-08

联系方式

0755-82591179

传真:0755-82591176

邮箱:vicky@yingtexin.net

地址:深圳市龙华区民治街道民治大道973万众润丰创业园A栋2楼A08

Copyright © 2014-2023 颖特新科技有限公司 All Rights Reserved.  粤ICP备14043402号-4