89C51单片机有两个计数器T0和T1,每个计数器由两个8位RAM单元组成。 也就是说,每个计数器都是16位计数器,最大的计数容量为216=65536,请从0-65535开始记住。
其次,为计时器提供的计数来源来自哪里呢? 单片机晶体振动经过12分频得到的脉冲源。 12M的晶体振动,提供给计数器的脉冲的时间间隔为1us。
最后,预置计数法。 如果一个脉冲为1微秒,则计数65536脉冲需要65.536毫秒。 但是如果10毫秒就可以了,我该怎么办? 如果在计数器中输入55536,则只需计数65536-55536=10000次,即10毫秒。
51单片机定时器设置初探
STC单片机计时器的使用非常简单,掌握原理,只要有一点c语言的基础就可以了。 要点如下。
1 .为了不用记住寄存器的名字,一定要知道英文缩写的真面目。
理解是最好的记忆方法。 好的教材一定会展示所有缩写的原形。
2 .尽量用形象记忆
例如,在教程中,TCON和TMOD两个寄存器的每个位中的功能通常都有一个图表,您在学习过程中会一直记住该图表的形状
TMOD :计时器/计数器模式控制寄存器(timer/countermodecontrolregister ) () ) ) ) )。
定时器/计数器模式控制寄存器TMOD是按位定义的8位寄存器,但只能使用字节寻址,其字节地址为89H。
其形式如下。
其中,后4位定义计时器/计数器C/T0,前4位定义计时器/计数器C/T1,各位说明:
GATE——车门控制。
GATE=1时,从外部中断端子INT0、INT1启动计时器T0、T1。
INT0端子为高电平时设定TR0,启动计时器T0;
INT1端子为高电平时TR1被设定,计时器T1开始。
GATE=0时,仅通过TR0、TR1套分别启动计时器T0、T1。
C/T——功能选择位
C/T=0时为计时器功能,C/T=1时为计数功能。
设置时选择计数功能,清除时选择计时器功能。
M0、M1——方式选择功能
因为有两个人,所以有四种工作方法:
M1M0动作模式计数器模式TMOD (计时器模式的设定) ) ) ) ) ) ) ) )。
0方式0 13位计数器TMOD=0x00
0方式1 16位计数器TMOD=0x01
1方式2自动重载8位计数器TMOD=0x02
1方式3 T0分为两个8位独立计数器,T1为无中断重载8位计数器TMOD=0x03
单片机0的动作模式1设定为TMOD=0x01
其中,要知道TMOD的t是TIMER/COUNTER的意思,MOD是MODE的意思。 关于各个功能,只要记住图表,知道各个缩写的原型就可以了。
在程序中使用TMOD时,首先要马上想起图表,从缩写的原形中整理各自的意思。 如果意思不清楚,查一下手册,几次下来,TMOD的图表就会进入脑海。
8位GATE位,本身就是门的意思。
7位c/t计数器/timer
6位m1模式1
5位M0 Mode 0
TCON :定时器/计数器控制寄存器(timer/counter控制寄存器) )。
TMOD分为2级,TCON控制更精细,分为4级,本文使用到4级高度。
TF0(TF1 ) ——对溢出标志的比特计数,并且当计数器溢出时其位置为1。
tr0(tr1 ) ——计时器运行控制位
tr0(tr1 )=0时停止计时器/计数器的动作
tr0(tr1 )=1开始计时器/计数器工作
ie0(ie1 ) ——外部中断请求标志位
如果CPU对p3.2(p3.3 )进行采样并发出有效的中断请求,则硬件将此位设置为1。 中断响应完成并迁移到中断服务后,硬件将自动清除0。
it0(it1 ) ——外部中断请求信号方式控制位
it0(it1 )=1脉冲方式(后端负跳跃有效)时
it0(it1电平方法)启用低电平)时,该位由软件设置为1或0。
TF0(TF1 ) ——计数溢出标志
如果计数器发生计数溢出,则此位由硬件设置为1。 中断服务时,硬件将自动清除为0。 计数超过的标志位的使用有采用中断方式、作为中断请求标志位使用和采用中断方式两种。 采用查询方式时,用作查询的状态位。
只要注意记忆方法,理解单词的原形,就绝对不会把TF和TR混淆。 TF的f是溢出溢出的f。 国外知名的IT知识问答q&; a有一个社区,网站单击关于堆栈溢出的com
TR的r是运行Run。 默认值不在0处执行。 当然请放1后再执行。