当前位置:首页 > 单片机 > 单片机
[导读]计时器记录单片机外部发生的事情;而定时器是单片机自身提供的计数器,51单片机经过12分频后提供给单片机的只有1MHZ的脉冲,脉冲时间间隔1微秒。MC51外接12M晶振(11.0592MHZ),12MHZ/12=1MHZ=1000000次/秒=1000000次

计时器记录单片机外部发生的事情;而定时器是单片机自身提供的计数器,51单片机经过12分频后提供给单片机的只有1MHZ的脉冲,脉冲时间间隔1微秒。MC51外接12M晶振(11.0592MHZ),12MHZ/12=1MHZ=1000000次/秒=1000000次/1000000微秒=1次/1微秒=1指令/1微秒。晶体每震荡1次就产生1个脉冲,花费1微秒,执行一次指令。

单片机中的时间概念就是根据脉冲数量得出来的。1脉冲=1微秒=1机器周期=1指令。

MCS-51单片机定时器/计数器的简单结构图:

8051有2个定时器T0、T1,分别由寄存器TL0,TH0和TH1,TL1构成。作为定时器使用时,定时器计数8051单片机片内振荡器输出经过12分频后的脉冲个数,即:每个机器周期使定时器T0/T1的寄存器值自动累加1,直到溢出,溢出后继续从0开始循环计数;

计数器使用时:通过引脚T0(P3.4)或T1(P3.5)对外部脉冲信号进行计数,当输入的外部脉冲信号发生从1到0的负跳变时,计数器的值就自动加1;计数器的最高频率一般是时钟振荡频率的1/24;

每个定时器/计数器工作模式有4种。

在模式0、1和2时,T0和T1的工作模式相同;在模式3时,两个定时器/计数器的工作模式不同;

模式0:TL0低5位,TH0全部8位构成13位计数器/定时器。定时或计数脉冲个数加到TL0上,从预先设置的初值(时间常数)开始累加,不断递增1;当 TL0计满后,向TH0进位,直到13位寄存器计满溢出;溢出时自动清零,切中断标记TF0置1;若需重新计数,则启动相关指令重置质检常数,且中断标记TF0置0;

模式1:

由TL0和TH1共同构成的16位计数器/定时器。

工作模式3:
由于定时器/计数器T1没有工作模式3,如果把定时器/计数器T0设置为工作模式3,那么TL0和TH0将被分割成两个相互独立的8位定时器/计数器;工作模式3的结构如下图:

四、定时器/计数器的定时/计数范围
工作方式0——13位定时器 / 计数器 工作 模式,最多可计数2的13次方 次,即:8192次,[0,8191];
工作方式1——16位定时器/计数器 工作 模式,最多可计数2的16次方 次,即:65536次,[0,65535];
工作方式2——8位定时器/计数器工作模式,计算次数最多为2^8,即256,,[0,255];
工作方式3——8位定时器/计数器工作模式 ,计算次数最多为2^8,即256,,[0,255];
预置数的计算公式:预置数=最大值-需要计数的次数;

五、计数/定时器的控制寄存器分别是TMOD H和TCON,它们都在特殊寄存器区;

1、工作模式控制寄存器TMOD(89h):

2、工作状态控制寄存器TCON(88H):

IT0:外部中断0触发控制位,1表示边沿,0表示电平;

IE0:外部中断申请标志位,1表示有;

EX0:外部中断0允许位,1表示允许,

ET0:定时/计数器0中断允许位,1表示允许溢出中断

六、定时器/计数器的初始化
注:由于8051单片机的定时器/计数器使用的时钟脉冲是外部晶振(12MHZ)经过12分频(12MHZ/12=1MHZ)之后的频率,所以,一个时钟脉冲就是1微秒;所以,8192个脉冲=8192微秒=8.192毫秒; 65536个脉冲=65536微秒=65.536毫秒; 256个脉冲=256微秒=0.256毫秒;

1、设置定时器/计数器的工作模式TMOD(常用的是模式1:TMOD=0x01);
2、装入预置数到THx和TLx中(THx=TLx=MAX(8192/65536/256)-计数次数);
3、如果工作在中断方式,则需要开定时器/计数器的中断TCON中的标志位:TF0/TF1=0/1;
4、启动定时器/计数器:TR0/TR1=1;


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

GD32系列MCU的定时器体系按功能复杂度分为三类:高级定时器(TIMER0/TIMER7)、通用定时器(TIMER1~TIMER4)和基础定时器(TIMER5/TIMER6)。三者共享相同的底层时钟树结构,但外围功能逐...

关键字: GD32 定时器

大约两周前,我决定购买一张2026年在加州圣马特奥举行的Open Sauce大会的门票。我最近搬到了湾区,所以我想这将是一个很好的机会,可以看看一些很酷的项目,并看到一些我最喜欢的制造商在行动!

关键字: 运算放大器 ADC 定时器

嵌入式系统中的并发性允许多个任务在同一系统内运行。在本项目中,使用RT-Spark开发板上的定时器中断和任务调度机制来管理不同任务,并高效响应各种事件。

关键字: 嵌入式系统 定时器 RT-Spark开发板

你有没有过这样的经历:在进行DIY项目时,设备突然因电池耗尽而自动关机?数字显示屏和微控制器固然出色,但有时你更希望得到一个简单、纯粹的模拟解决方案,它功耗极低,能即时显示状态。在这个项目中,我们使用NE555定时器和两...

关键字: 电池 定时器 BC547晶体管

本项目记录了将一块基于STM32F407的空开发板,通过将其内部12位数模转换器(DAC)连接至PA4引脚,成功改造为功能完整的模拟信号发生器的过程。从完全零基础构建的裸机模板出发,在调试固件配置方面积累了极为丰富的学习...

关键字: CPU 信号发生器 定时器 STM32F407

在这次实验活动中,我学习了如何在STM32F407ZGT6微控制器上使用定时器、中断和任务调度。主要目标是理解中断的工作原理、多个任务如何在系统中运行,以及不同的调度方法对任务性能的影响。

关键字: 定时器 中断 微控制器 STM32F407ZGT6

很多嵌入式开发者天天写单片机代码、烧录程序调试功能,却很少真正把它的完整运行逻辑串起来。你可能知道单片机里有CPU、RAM、ROM,也知道写的C代码会被编译成机器指令,但你未必清楚从按下复位键的那一刻开始,芯片内部的每一...

关键字: 单片机 芯片

在2000年到2010年的单片机黄金时代,消费电子、工业控制设备里跑的几乎都是8位、16位的早期MCU芯片。那时候没有现在成熟的硬件加密核、OTA固件签名这类方案,开发者却要面对固件被轻易破解、山寨产品快速抄板的行业痛点...

关键字: 单片机 MCU

很多单片机开发者在调试通信功能时,都遇到过类似的“玄学”问题:同样的代码在实验室里跑完全正常,拿到量产设备里就随机丢包;I2C传感器偶尔返回乱码,用示波器抓波形却看不出明显异常;UART串口在高波特率下,只要设备靠近电机...

关键字: 单片机 传感器

在汽车电子、石油钻探和工业控制领域,单片机往往需要在-40℃至125℃的极端温差下持续工作。片内SRAM通常只有几十KB,难以满足数据采集和缓冲需求,而外部SRAM提供了容量扩展的可能,但高温环境对其稳定性构成了严峻挑战...

关键字: 工业高温场景 单片机
关闭