单片机定时器学习汇总

本文详细介绍了单片机定时器的工作原理,以51单片机为例,阐述了如何根据晶振频率计算机器周期,并确定定时器在方式1下进行50ms定时的操作。通过具体的计算过程,解释了定时器初值的设置方法,包括高8位TH0和低8位TL0的计算公式。此外,还提供了基于12MHz和11.0592MHz晶振的实例,以及对应的中断服务函数timer0(),展示了如何在中断中更新定时器初值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1时钟周期=1/晶振频率M

1机器周期=12(51系列12T,若1T则为1)X时钟周期 = 12(1)X(1/晶振频率M) = 1 us(1/12 us)

1us机器周期脉冲数=晶振频率f/12

 

假设12MHZ晶振工作在51单片机12T模式下,需要使用定时器进行50MS定时操作,定时器工作在方式1;

12M的晶振每秒(s)可产生1M(10^6 us)个机器周期

50ms就需要50×1000 us × 1us(1机器周期)个机器周期 = 50000

定时器在方式1工作,是16位计数器,最大值为65536(2^16),也就是能进行最大65536次计数

50ms定时操作需要50000个机器周期,1个机器周期=1us,所以需要50000次计数操作

为了计数器定时器工作,需要预先填充定时器初值(初值=定时器计数最大计数次数 - 所需定时计数次数)

所以需设置定时器初值15536 = 65536 -50000,即3CB0H(10进制15536转换成16进制数3CB0),所以TH0=0x3c,TL0=0xb0,高位就是TH0的值,低位为TL0的值

若假设使用11.0592MHZ的晶振,其他条件不变

11.0592M的晶振每秒可产生0.9216M个机器周期,50ms就需要46080个机器周期

定时器在方式1工作,是16位计数器,最大值为65536,所以需设置初值19456 = 65536 - 46080,即4C00H

所以TH0=0x4c,TL0=0x00。

 

推导方式1 ,16位定时器/计数器初值设定高8位TH0,低TL0的公式为:
TH0=(65536- 所需计数次数)/256    = 初值/256;         
TL0=(65536 - 所需技术次数)%256 = 初值%256;

 为什么除以256,因为我们的计时

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值