深圳市华胄科技有限公司 >> MCU专题 >> 单片机教程


MCS-51定时/计数器



提交者 耕牛  在  2008-4-22 17:01:15 

上一篇 下一篇
MCS-51的单片机内有两个16位可编程的定时/计数器,它们具有四种工作方式,其控制字和状态均在相应的特殊功能寄存器中,通过对控制寄存器的编程,就可方便地选择适当的工作方式。下面我们对它们的特性进行阐述。


定时/计数器的工作方式

MCS-51单片机内部的定时/计数器的结构如图1所示,定时器T0特性功能寄存器TL0(低8位)和TH0(高8位)构成,定时器T1由特性功能寄存器TL1(低8位)和TH1(高8位)构成。特殊功能寄存器TMOD控制定时寄存器的工作方式,TCON则用于控制定时器T0和T1的启动和停止计数,同时管理定时器T0和T1的溢出标志等。程序开始时需对TL0、TH0、TL1和TH1进行初始化编程,以定义它们的工作方式和控制T0和T1的计数。


TMOD和TCON这两个特殊功能寄存器的格式参见下表:


[1]. 定时/计数器的方式控制字TMOD,字节地址为89H,其格式如表1:





图1


表1

[2]. 定时器控制积存器TCON,字节地址为88H,位地址为88H—8FH,其格式如表2:




表2

TMOD和TCON各位的意义和用途我们将在下面的章节中予以介绍,需要注意的是,TCON的D0—D3位与中断有关,我们会在中断的内容中加以说明,MCS-51的定时/计数器共有四种工作方式,我们逐个进行讨论。


工作方式0

定时/计数器0的工作方式0电路逻辑结构见图2(定时/计数器1与其完全一致),工作方式0是13位计数结构的工作方式,其计数器由TH的全部8位和TL的低5位构成,TL的高3位没有使用。当=0时,多路开关接通振荡脉冲的12分频输出,13位计数器以次进行计数。这就是定时工作方式。当=1时,多路开关接通计数引脚(To),外部计数脉冲由银南脚To输入。当计数脉冲发生负跳变时,计数器加1,这就是我们常称的计数工作方式。





图2


不管是哪种工作方式,当TL的低5位溢出时,都会向TH进位,而全部13位计数器溢出时,则会向计数器溢出标志位TF0进位。


我们讨论门控位GATA的功能,GATA位的状态决定定时器运行控制取决于TR0的一个条件还是TR0和INT0引脚这两个条件。当GATA=1时,由于GATA信号封锁了与门,使引脚INT0信号无效。而这时候如果TR0=1,则接通模拟开关,使计数器进行加法计数,即定时/计数工作。而TR0=0,则断开模拟开关,停止计数,定时/计数不能工作。


当GATA=0时,与门的输出端由TR0和INT0电平的状态确定,此时如果TR0=1,INT0=1与门输出为1,允许定时/计数器计数,在这种情况下,运行控制由TR0和INT0两个条件共同控制,TR0是确定定时/计数器的运行控制位,由软件置位或清“0”。


如上所述,TF0是定时/计数器的溢出状态标志,溢出时由硬件置位,TF0溢出中断被CPU响应时,转入中断时硬件清“0”,TF0也可由程序查询和清“0”。


在工作方式下,计数器的计数值范围是:


1—8192(213)


当为定时工作方式时,定时时间的计算公式为:


(213—计数初值)╳晶振周期╳12


或 (213—计数初值)╳机器周期


其时间单位与晶振周期或机器周期相同。


如果单片机的晶振选为6.000MHz,则最小定时时间为:


[213—(213—1)]╳1/6╳10-6╳12=2╳10-6(s)=2(us)


(213—0)╳1/6╳10-6╳12=16384╳10-6(s)=16384(us)。


工作方式1

当M1,M0=01时,定时/计数器处于工作方式1,此时,定时/及数器的等效电路如图3所示,仍以定时器0为例,定时器1与之完全相同。





图3


可以看出,方式0和方式1的区别仅在于计数器的位数不同,方式0为13位,而方式1则为16位,由TH0作为高8位,TL0为低8位,有关控制状态字(GATA、、TF0、TR0)和方式0相同。


在工作方式1下,计数器的计数值范围是:


1—65536(216)


当为定时工作方式1时,定时时间的计算公式为:


(216—计数初值)╳晶振周期╳12


或 (216—计数初值)╳机器周期


其时间单位与晶振周期或机器周期相同。


如果单片机的晶振选为6.000MHz,则最小定时时间为:


[213—(216—1)]╳1/6╳10-6╳12=2╳10-6(s)=2(us)


(216—0)╳1/6╳10-6╳12=131072╳10-6(s)=131072(us)。
工作方式2

当M1M0=10时,定时/计数器处于工作方式2.此时定时器的等效电阻如图4所示.我们还是以定时/计数器0为例,定时/计数器1与之完全一致。





图4


工作方式0和工作方式1的最大特点就是计数溢出后,计数器为全0,因而循环定时或循环计数应用时就存在反复设置初值的问题,这给程序设计带来许多不便,同时也会影响计时精度,工作方式2就针对这个问题而设置,它具有自动重装载功能,即自动加载计数初值,所以也有的文献称之为自动重加载工作方式。在这种工作方式中,16位计数器分为两部分,即以TL0为计数器,以TH0作为预置寄存器,初始化时把计数初值分别加载至TL0和TH0中,当计数溢出时,不再象方式0和方式1那样需要“人工干预”,由软件重新赋值,而是由预置寄存器TH以硬件方法自动给计数器TL0重新加载。


程序初始化时,给TL0和TH0同时赋以初值,当TL0计数溢出时,置位TF0的同时把预置寄存器TH0中的初值加载给TL0,TL0重新计数。如此反复,这样省去了程序不断需给计数器赋值的麻烦,而且计数准确度也提高了。但这种方式也有其不利的一面,就是这样一来的计数结构只有8位,计数值有限,最大只能到255。所以这种工作方式很适合于那些重复计数的应用场合。例如我们可以通过这样的计数方式产生中断,从而产生一个固定频率的脉冲。也可以当作串行数据通信的波特率发送器使用。


工作方式3

当M1M0=11时,定时/计数器处于工作方式3,此时,定时/及数器的等效电路如图3所示,仍以定时器0为例,值得注意的是,在工作方式3模式下,定时/计数器1的工作方式与之不同,下面我们分别讨论。





图5


在工作方式3模式下,定时/计数器0被拆成两个独立的8位计数器TL0和TH0。其中TL0既可以作计数器使用,也可以作为定时器使用,定时/计数器0的各控制位和引脚信号全归它使用。其功能和操作与方式0或方式1完全相同。TH0就没有那么多“资源”可利用了,只能作为简单的定时器使用,而且由于定时/计数器0的控制位已被TL0占用,因此只能借用定时/计数器1的控制位TR1和TF1,也就是以计数溢出去置位TF1,TR1则负责控制TH0定时的启动和停止。等效电路参见图6。 由于TL0既能作定时器也能作计数器使用,而TH0只能作定时器使用而不能作计数器使用,因此在方式3模式下,定时/计数器0可以构成二个定时器或者一个定时器和一个计数器。


如果定时/计数器0工作于工作方式3,那么定时/计数器1的工作方式就不可避免受到一定的限制,因为自己的一些控制位已被定时/计数器借用,只能工作在方式0、方式1或方式2下,等效电路参见图6





图6


在这种情况下,定时/计数器1通常作为串行口的波特率发生器使用,以确定串行通信的速率,因为已没有TF1被定时/计数器0借用了,只能把计数溢出直接送给串行口。当作波特率发生器使用时,只需设置好工作方式,即可自动运行。如要停止它的工作,需送入一个把它设置为方式3的方式控制字即可,这是因为定时/计数器本身就不能工作在方式3,如硬把它设置为方式3,自然会停止工作。


单片机教程,五系列(55讲)电子书全集下载

论坛精选:
单片机教程,MCS51单片机从零开始 第一讲:初识单片机
http://bbs.huazhoucn.com/Topic.aspx?id=2539
单片机教程,MCS51单片机从零开始 第二讲:MCS-51单片机简述
http://bbs.huazhoucn.com/Topic.aspx?id=2540
单片机教程,MCS51单片机从零开始 第三讲:单片机相关常用名词解释
http://bbs.huazhoucn.com/Topic.aspx?id=2541
单片机教程,MCS51单片机从零开始 第四讲:计算机中数的表示及运算
http://bbs.huazhoucn.com/Topic.aspx?id=2542
单片机教程,MCS51单片机从零开始 第五讲:常用逻辑电路
http://bbs.huazhoucn.com/Topic.aspx?id=2544
单片机教程,MCS51单片机从零开始 第六讲:51单片机的结构及其组成
http://bbs.huazhoucn.com/Topic.aspx?id=2545
单片机教程,MCS51单片机从零开始 第七讲:51单片机的引脚
http://bbs.huazhoucn.com/Topic.aspx?id=2546
单片机教程,MCS51单片机从零开始 第八讲:8051单片机I/O引脚工作原理
http://bbs.huazhoucn.com/Topic.aspx?id=2547
单片机教程,MCS51单片机从零开始 第九讲:8051单片机的存储器结构
http://bbs.huazhoucn.com/Topic.aspx?id=2548
单片机教程,MCS51单片机从零开始 第十讲:编码及译码器工作原理
http://bbs.huazhoucn.com/Topic.aspx?id=2549
单片机教程,MCS51单片机从零开始 第十一讲:存储器的存储原理
http://bbs.huazhoucn.com/Topic.aspx?id=2550
单片机教程,MCS51单片机从零开始 第十二讲:51单片机的特殊功能寄存器
http://bbs.huazhoucn.com/Topic.aspx?id=2551
单片机教程,MCS51单片机从零开始 第十三讲:51单片机CPU的内部结构
http://bbs.huazhoucn.com/Topic.aspx?id=2552
单片机教程,MCS51单片机从零开始 第十四讲:定时器/计数器的基本结构及工作原理
http://bbs.huazhoucn.com/Topic.aspx?id=2553
单片机教程,MCS51单片机从零开始 第十五讲:51单片机的中断系统
http://bbs.huazhoucn.com/Topic.aspx?id=2554
单片机教程,MCS51单片机从零开始 第十六讲:51单片机的复位
http://bbs.huazhoucn.com/Topic.aspx?id=2555
单片机教程,MCS51单片机从零开始 第十七讲:51单片机执行指令的过程
http://bbs.huazhoucn.com/Topic.aspx?id=2556
单片机教程,MCS51单片机从零开始 第十八讲:51单片机的延时及时序分析
http://bbs.huazhoucn.com/Topic.aspx?id=2557
单片机教程,MCS51单片机从零开始 第十九讲:汇编语言基础
http://bbs.huazhoucn.com/Topic.aspx?id=2558
单片机教程,MCS51单片机从零开始 第二十讲:汇编语言及汇编过程
http://bbs.huazhoucn.com/Topic.aspx?id=2556
单片机教程,MCS51单片机从零开始 第二十一讲:汇编程序的基本结构
http://bbs.huazhoucn.com/Topic.aspx?id=2560
单片机教程,MCS51单片机从零开始 第二十二讲:51单片机的寻址方式
http://bbs.huazhoucn.com/Topic.aspx?id=2561
单片机教程,MCS51单片机从零开始 第二十三讲:数据传送类指令分析
http://bbs.huazhoucn.com/Topic.aspx?id=2562
单片机教程,MCS51单片机从零开始 第二十四讲:算术运算类指令分析
http://bbs.huazhoucn.com/Topic.aspx?id=2563
单片机教程,MCS51单片机从零开始 第二十五讲:逻辑运算及移位指令分析
http://bbs.huazhoucn.com/Topic.aspx?id=2564
单片机教程,MCS51单片机从零开始 第二十六讲:控制转移类指令分析
http://bbs.huazhoucn.com/Topic.aspx?id=2565
单片机教程,MCS51单片机从零开始 第二十七讲:布尔变量操作指令分析
http://bbs.huazhoucn.com/Topic.aspx?id=2566
单片机教程,MCS51单片机从零开始 第二十八讲:伪指令分析
http://bbs.huazhoucn.com/Topic.aspx?id=2567

1 楼  提交者:Guest 在 2008-4-22 19:51:31
2 楼  提交者:zqhbb007 在 2008-4-22 20:54:52
11111
3 楼  提交者:Guest 在 2008-4-25 22:28:24
thank you very much!
4 楼  提交者:Guest 在 2008-5-1 13:08:34
无内容
5 楼  提交者:lideming 在 2008-5-2 21:09:11
?
6 楼  提交者:Guest 在 2008-5-19 17:13:09
hao
7 楼  提交者:小方 在 2008-5-22 8:23:34
方华丰
8 楼  提交者:想想 在 2008-5-22 15:25:08
回了
9 楼  提交者:Guest 在 2008-5-26 15:45:05
gokg
10 楼  提交者:许强 在 2008-6-4 9:54:04
学习中
11 楼  提交者:Guest 在 2008-6-5 11:29:24
12 楼  提交者:Guest 在 2008-6-6 2:24:53
无内容
13 楼  提交者:yanghang2009 在 2008-6-15 13:38:20
顶一下
14 楼  提交者:Guest 在 2008-7-1 21:10:33
15 楼  提交者:Guest 在 2008-7-6 15:52:26
lou yi yan
16 楼  提交者:Guest 在 2008-7-7 14:56:42
xx bu  cuo
17 楼  提交者:Guest 在 2008-7-10 17:38:50
18 楼  提交者:Guest 在 2008-8-2 10:54:13
321321
19 楼  提交者:Guest 在 2008-8-22 13:12:56
a
20 楼  提交者:絮烦 在 2008-8-25 19:02:14
drrgttg
21 楼  提交者:Guest 在 2008-8-27 12:59:08
毬球
22 楼  提交者:梁兄 在 2008-9-1 16:46:39
23 楼  提交者:Guest 在 2008-9-22 10:27:13
24 楼  提交者:Guest 在 2008-10-3 15:46:19
你的电脑说声
25 楼  提交者:Guest 在 2008-10-5 11:00:32
哼好好 饿
26 楼  提交者:ttwyong 在 2008-10-10 21:51:53
ddddddddddddddddddddddd
27 楼  提交者:wjun333 在 2008-10-15 9:47:50
0.0
28 楼  提交者:yttfc 在 2008-10-19 21:47:20
无内容
29 楼  提交者:ak-47-007 在 2008-10-30 9:14:43
hehe
30 楼  提交者:Guest 在 2008-11-20 13:51:58
上一篇 下一篇
当前第〖1〗页