7.2.2 定时器/计数器的结构

51单片机的定时器/计数器结构如图7-7所示。
T0由特殊功能寄存器TH0、TL0构成。
T1由特殊功能寄存器TH1、TL1构成。

T0 和T1都具有定时器和计数器两种工作模式,4种工作方式(方式0~3)。属于增计数器。
特殊功能寄存器TMOD用于选择T0、T1的工作模式和工作方式。特殊功能寄存器TCON用于控制T0、T1的启动和停止计数,同时包含了T0、T1的状态。T0、 T1不论是工作在定时器模式还是计数器模式,实质是对脉冲信号进行计数,只不过计数信号的来源不同。
计数器模式是对加在T0(P3.4)和T1(P3.5)两个引脚上的外部脉冲进行计数。
定时器模式是对单片机的系统时钟信号经片内12分频后的内部脉冲信号(机器周期)计数。由于时钟频率是定值,所以可根据对内部脉冲信号的计数值可计算出定时时间。
计数器的起始计数是从初值开始。单片机复位时计数器初值为0,也可用指令给计数器装入一个新的初值。

7.2.3 定时器/计数器的控制寄存器与工作方式

1. 定时/计数器工作方式控制寄存器TMOD

TMOD是一个不可以位寻址的8位特殊功能寄存器,字节地址为89H,其高4位专供T1使用的,其低4位专供T0使用的,见表7-8。

8位分为两组,高4位控制T1,低4位控制T0。
下面对TMOD的各位给出说明。
(1)GATE—门控位
GATE=0时,仅由运行控制位TRx(x = 0,1)来控制定时器运行。
GATE=1时,用外中断引脚INT0*(或INT1* )上的电平与运行控制位TRx共同控制定时器运行。
(2)M1、M0—工作方式选择位
M1、M0的4种编码,对应于4种工作方式的选择,如表7-9所示。

(3)C/T* —计数器模式和定时器模式选择位
C/T*=0,为定时器工作模式,对单片机的晶体振荡器12分频后的脉冲进行计数。
C/T*=1,为计数器工作模式,计数器对外部输入引脚T0(P3.4)或T1(P3.5)的外部脉冲(负跳变)计数。

2. 定时器/计数器控制寄存器TCON

TCON字节地址为88H,可位寻址,位地址为88H~8FH,格式如表7-10所示。

7.1节介绍了与外部中断有关的低4位。这里仅介绍与定时器相关的高4位功能。
(1)TF1、TF0—计数溢出标志位
当计数器计数溢出时,该位置“1”。使用查询方式时,此位作为状态位供CPU查询,但应注意查询有效后,应使用软件及时将该位清“0”。使用中断方式时,此位作为中断请求标志位,进入中断服务程序后由硬件自动清“0”。
(2)TR1、TR0—计数运行控制位
TR1位(或TR0位)=1,启动定时器工作的必要条件。
TR1位(或TR0位)=0,停止定时器工作。
该位可由软件置“1”或清“0”。

3. 定时器/计数器的4种工作方式

(1) 方式0
当M1、M0为00时,定时器/计数器被设置为工作方式0,这时定时器/计数器的等效逻辑结构框图如图7-9所示(以定时器/计数器T1为例,TMOD.5、TMOD.4 = 00)。

方式0时,为13位计数器,由TLx(x = 0,1)的低5位和THx的高8位构成。TLx低5位溢出则向THx进位,THx计数溢出则把TCON中的溢出标志位TFx置“1”。计数值的范围为1~8192,当溢出时其计录脉冲的个数为:
S=8192-X ,式中X为T0(或T1) 计数初值。

TLx=(213一X) /32         //  取5位的余数
THx=(213一X)/32         //  取5位的商

图7-9中, C/T*位控制的电子开关决定了定时器/计数器的两种工作模式。
①C/T*=0,电子开关打在上面位置,T1(或T0)为定时器工作模式,把时钟振荡器12分频后的脉冲作为计数信号。
②C/T*=1,电子开关打在下面位置,T1(或T0)为计数器工作模式,计数脉冲为P3.4(或P3.5)引脚上的外部输入脉冲,当引脚上发生负跳变时,计数器加1。
GATE位状态决定定时器的运行控制取决于TRx一个条件,还是取决于TRx和INTX* (x = 0,1)引脚状态这两个条件
①GATE=0时,A点(见图6-4)电位恒为1,B点电位仅取决于TRx状态。TRx = 1,B点为高电平,控制端控制电子开关闭合,允许T1(或T0)对脉冲计数。TRx = 0,B点为低电平,电子开关断开,禁止T1(或T0)计数。
②GATE=1时,B点电位由INTX*(x = 0,1)的输入电平和TRx的状态两个条件来定。当TRx=1,且INTX*=1时,B点才为1,控制端控制电子开关闭合,允许T1(或T0)计数。故这种情况下计数器是否计数是由TRx和INTX*两个条件来共同控制。

(2) 方式1
当M1、M0为01时,工作于方式1,方式1的等效电路逻辑结构如下图所示。

方式1和方式0的差别仅仅在于计数器的位数不同,方式1为16位计数器,由THx高8位和TLx低8位构成(x = 0,1),方式0则为13位计数器,有关控制状态位的含义(GATE、C/T*、TFx、TRx)与方式0相同。
在方式1下当为定时工作方式时,定时时间的计算公式为:

T=(2^16-X)× Ts

其中X为T0(或T1) 计数初值,Ts为机器周期。当为计数工作方式时, S=216一X ,式中X为T0(或T1) 计数初值, 计数值的范围为1~65536(216)。在方式1中TLx和THx计数寄存器各使用8位,而28=256,所以把计数起点的值除以256,其余数放入TLx计数寄存器,其商放入THx寄存器中。

TLx=(2^16-X) /256   //取8位的余数
THx=(2^16-X)/256   //取8位的商

(3) 方式2
方式0和方式1的最大特点是计数溢出后,计数器为全0。因此在循环定时或循环计数应用时就存在用指令反复装入计数初值的问题。这不仅影响定时精度,也给程序设计带来麻烦。方式2就是解决此问题而设置的。
当M1、M0为10时,定时器/计数器处于工作方式2,这时定时器/计数器的等效逻辑结构如图7-10所示(以定时器T1为例,x = 1)。

定时器/计数器的方式2为自动恢复初值(初值自动装入)的8位定时器/计数器,TLx(x = 0,1)作为常数缓冲器,当TLx计数溢出时,在溢出标志TFx置“1”的同时,还自动将THx中的初值送至TLx,使TLx从初值开始重新计数。定时器/计数器的方式2工作过程如右图所示。
此工作方式可省去用户软件中
重装初值的指令的执行时间,
简化定时初值的计算方法,
可相当精确地确定定时时间。

(4) 方式3
方式3是为了增加一个附加的8位定时器/计数器而设置的,从而使AT89S51单片机具有3个定时器/计数器。方式3只适用于定时器/计数器T0,定时器/计数器T1不能工作在方式3。T1处于方式3时相当于TR1 = 0,停止计数(此时T1可用来作为串行口波特率产生器)。

①工作方式3下的T0
当TMOD的低2位为11时,T0的工作方式被选为方式3,各引脚与T0的逻辑关系如图7-11所示。
T0分为两个独立的8位计数器TL0和TH0,TL0使用T0的状态控制位C/T*、GATE、TR0,而TH0被固定为一个8位定时器(不能作为外部计数模式),并使用T1的状态控制位TR1和TF1,同时占用T1的中断请求源TF1。
当T0设置在方式3时,再把T1也设置成方式3,此时T1停止计数。

4. 对外部输入的计数信号的要求

当定时器/计数器工作在计数器模式时,计数脉冲来自外部输入引脚T0或T1。当输入信号产生由1至0的跳变(即负跳变)时,计数器值增1。每个机器周期的S5P2期间,都对外部输入引脚T0或T1进行采样。如在第一个机器周期中采得的值为1,而在下一个机器周期中采得的值为0,则在紧跟着的再下一个机器周期S3P1期间,计数器加1。
由于确认一次负跳变花2个机器周期,即24个振荡周期,因此外部输入的计数脉冲的最高频率为系统振荡器频率的1/24

51单片机的定时器/计数器相关推荐

  1. 51单片机之定时器\计数器的工作原理

    51单片机之定时器\计数器的工作原理 定时器/计数器的结构: 何时处于计数器方式?何时处于定时器方式? TCON和TMOD特殊功能寄存器: 定时器/计数器工作方式: 方式0:13位的定时器/计数器 方 ...

  2. 【51单片机】定时器/计数器的工作原理和结构(一)

    [51单片机]定时器/计数器的工作原理和结构 回看下单片机中断系统内部结构: 分析内部中断触发: 先看图 TCON:和外部中断相比少了IT位设置触发方式 :1跳沿触发 0电平触发:此处我的理解是:就好 ...

  3. 51单片机笔记:定时器/计数器

    单片机笔记 定时器/计数器 定时器/计数器的结构 AT89S51内部两个16位定时器/计数器:T0(P3.4),T1(P3.5),定时器/计数器T0由特殊寄存器TH0,TL0构成,T1由特殊功能寄存器 ...

  4. 六、51单片机之定时器/计数器_理论

    1.什么是定时器.计数器 定时器就是单片机设定一个时间间隔,时间间隔到后通知单片机.例如设置100ms的定时器,100ms后定时器通知单片机时间到了. (1)定时器是单片机的一种内部外设.(以前的单片 ...

  5. 51单片机之定时器/计数器应用实例(方式0、1、2、3)

    硬件:STC89C52RC 开发工具:Keil uVision4 对于刚接触单片机的同学来说可能会对定时器/计数器的应用很蒙圈,特别是初值的计算和各种定时方式的选择.下面希望能给你带来一个清晰的思路. ...

  6. 51单片机内部定时器/计数器实验

    51单片机内部定时器/计数器实验 一.实验内容 使用MCS-51内部定时/计数器,定时1秒钟,CPU运用定时中断方式,实现每1秒钟输出状态发生一次反转,即发光管每隔1秒钟亮一次(P1.7接LED). ...

  7. 51单片机计算定时器初值

    51单片机计算定时器初值 前言 理论分析 工作方式寄存器 TMOD GATE 门控位 C/T' 计数器模式和定时器模式选择位 M1 M0 工作方式选择位 定时器/计数器控制寄存器 TCON TCON补 ...

  8. 51单片机的定时/计数器

    51单片机的定时/计数器 实现LED灯闪烁,代码如下: #include <reg51.h> //51单片机头文件 sbit LED = P0^0; //定义特殊寄存器p0.0;注意:sb ...

  9. 51单片机学习--定时器--中断--串口通信

    51单片机学习–定时器–中断–串口通信 定时器–中断–串口通信 中断分类 定时器中断 外部中断 串口中断 基本概念 对于单片机来讲, 中断是指 CPU 在处理某一事件 A 时, 发生了另一事件 B, ...

  10. (六)51单片机基础——定时器

    定时器介绍:51单片机的定时器属于单片机的内部资源,其电路的连接和运转均在单片机内部完成. 定时器主要作用: 用于计时系统,可实现软件计时,或者使程序每隔一固定时间完成一项操作. 替代长时间的Dela ...

最新文章

  1. Linux 用户行为日志记录
  2. 进阶必备:CNN经典论文代码复现 | 附下载链接
  3. 一种在网络层清理机器假死时TCP连接的方案介绍
  4. MSVCRTD.lib(crtexe.obj) : error LNK2019
  5. mysql如何drop数据库_mysql drop database删除数据库命令实例讲解
  6. 2018-2019-2 网络对抗技术 20165305 Exp6 信息搜集与漏洞扫描
  7. 工作309:uni-获取vuex里面的值
  8. 其他-私人♂收藏(比赛记录 Mar, 2019)
  9. Veeam 发布 2022 年数据保护趋势报告,开发者需关注哪些点?
  10. python重复元素判定去除_Python去除列表中重复元素的方法
  11. manjaro设置java_manjaro 深度学习编程环境搭建
  12. 基于scikit-learn的SVM实战
  13. javaSE_06Java中的数组(array)-思维导图
  14. 什么图用什么工具画?
  15. 位运算初步入门状态压缩操作
  16. 华为手机图标怎么变小_华为手机怎么设置图标由大变小
  17. 汉字的计算机输入法发展与历史,汉字输入的发展历程
  18. 创业失败的18个原因
  19. 名帖72 颜真卿 楷书《竹山堂连句》
  20. 爬取94神马网的电影信息

热门文章

  1. threejs修改模型旋转轴
  2. Pytorch:三、数据的迭代训练(猫狗)
  3. 解读国内外园艺机器人的应用现状
  4. 135编辑器点击换图html,这5种换图姿势,只有排版高手才会!
  5. JSAAS的Activiti会签开发扩展处理
  6. 计算机与经济学:天造地设的一对
  7. android 8.0 红米note3,红米Note3抢在小米6前面升到8.0,但是bug满天飞
  8. 半次元收藏夹爬虫(残疾版,不喜勿喷)
  9. 2019冬季PAT甲级
  10. pb一步步开发APP