历史上的今天
今天是:2025年03月09日(星期日)
2018年03月09日 | AT89S51定时器/计数器的结构
2018-03-09 来源:eefocus
AT89S51单片机的定时器/计数器结构如下图所示,定时器/计数器T0由特殊功能寄存器TH0、TL0构成,定时器/计数器Tl由特殊功能寄存器TH1、TL1构成。

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

8位分为两组,高4位控制Tl,低4位控制T0。
下面对TMOD的各位给出说明。
(1) GATE:门控位。
GATE=0时,仅由运行控制位TRx(x=0,1)来控制定时器/计数器运行。
GATE=1时,用外中断引脚(INT0(的反)INTI(的反))上的电平与运行控制位TRx共同来控制定时器/计数器运行。
(2) M1、M0:工作方式选择位。
Ml、MO共有4种编码,对应于4种工作方式的选择,见下表。
表 M1、M0工作方式选择

(3) C/T(的反):计数器模式和定时器模式选择位。
C/T(的反)=0,为定时器工作模式,对单片机的晶体振荡器12分频后的脉冲进行计数。
C/T(的反)=1,为计数器工作模式,计数器对外部输入引脚TO(P3.4)或T1(P3.5)的外部脉冲(负跳变)计数。
定时器/计数器控制寄存器TCON
TCON的字节地址为88H,可位寻址,位地址为88H~8FH。TCON的格式如下图所示。
这里介绍与定时器/计数器相关的高4位功能。
(1) TF1、TF0:计数溢出标志位。
当计数器计数溢出时,该位置1。使用查询方式时,此位作为状态位供CPU查询,但应注意查询有效后,应使用软件及时将该位清0。使用中断方式时,此位作为中断请求标志位,进入中断服务程序后由硬件自动清0。
(2) TR1、TR0:计数运行控制位。
TR1位(或TR0位)=1,启动定时器/计数器工作的必要条件。
TR1位(或TR0位)=0,停止定时器/计数器工作。
该位可由软件置1或清0。
上一篇:定时器/计数器方式1的编程和应用
史海拾趣
|
电解电容器使用上注意事项 使用电解电容器时,请注意下列事项: 电解电容器就如下列情形时,会引起特性的劣化 ◎ 逆向电压 ◎ 使用电压超出工作电压 ◎ 电流大于容许纹波电流 ◎ 急剧的充放电 此时,引起激烈的发热或气体产生会从电容器的封口处漏 ...… 查看全部问答> |
|
看完这个之后觉得作者对P521的这种用法很新颖,特地转来和大家分享! 经我们实验发现,P521这种电流型光耦原边的控制电流和副边的被控电流在1~2mA之间是成线性关系的。 Iin = (0.8~1)Iout.利用这个特性我们就可以用P521做1~2mA直流电流隔离测量 ...… 查看全部问答> |
|
您好! 我们开发了一块pci9052芯片的PCI接口板,出现怪异问题,请帮忙分析下! 开发板连接测量仪器和PC机上的测试程序(VC++), 大概每80ms左右读2048次数据,每次大概2个字节。 测试仪器实时采集数据并作图。 我们发现开机(电 ...… 查看全部问答> |
|
比如我的电脑接了一个光电开关,希望用PC 程序知道根据光电开关电路电压的高低(或通断)。请教怎么个连接实现法? 看了许多书,都是讲关于串口通信,所有演示的都是如何实现两台PC之间互相发送字符的。可是,我并不是要采集字符,我只想采集电压 ...… 查看全部问答> |
|
数控机床的数控部分和机械部分通信的串行口有问题,数控不稳定,运行一会儿就死机了,重启好几次才行. 串行口处理的电路板很难换掉,接的数据线控制线关联太多,都不知道干啥用的,也找不到这种型号的电路板. 还好这个数控机床数控部分用的就是Dos操作 ...… 查看全部问答> |
|
这是我测温度的程序,可是测出来的温度是yy.0,请大家帮我看一下 void ADC12(void) { ADC12CTL0 &= ~ENC; ...… 查看全部问答> |
|
本帖最后由 xiangyu20080803 于 2014-7-8 07:22 编辑 昨天收到开发板,怀着无比激动的心情来论坛发个开装贴,只可惜被别人抢先了,在这里不在重复。说说验货的心(吐个槽) 一、开机,我擦,怎么就一个灯亮?屏幕神马的完全没反应啊!点这么背? ...… 查看全部问答> |




