51单片机 自动重装载值计算

单片机在不同的方式下,有不同的最大值。咱们现在针对单片机的方式1,设最大值为M。那么M的值应该是:

M=2^16 = 65535

因为定时器是在一直加1计数的,并且在达到并且超过M的值的时候产生一个中断,因此咱们的初值可以这样定义:

X=M-计数值

何为计数值。可以这样理解,我们如果想定时1ms,那么在这1ms内,计数值就是单片机定时器一直加1的次数(加了多少个1)。

 

在举一个具体的例子:

单片机频率F=11059200,利用定时器0,模式1产生一个5ms定时中断。

 

首先咱们应该得到单片机的实际运行的频率,咱们知道,默认是经过了12分频的,所以:

f = F / 12 = 921600 (Hz)

f下,单片机定时器每次加1的时间是

T = 1/ f = 1.085 X 10-6(S)

已知总的时间(5ms),已知定时器每次加1的时间(T),那么在5ms内,定时器可以加多少个1呢?

G = 5ms / T = 4608 (个)

这个G=4608就是计数值,初值

X= 65535 – 4608 = 60927

然后:

TH0 = X >> 8

TL0 = X

 

至此关于自动重装载值(TH0,TL0)的计算已经全部计算完了。

 

下面咱们再来验证一下,初值为60927是否真的可以定时5ms

 

首先,计算需要加多少个1,才会产生溢出。

Y = 65535 – 60927 = 4608(个)

然后,根据前面的计算,已知每次加1的时间为

T = 1/ f = 1.085 X 10-6(S)

那么初值为60927产生的定时时间应该是:

Time = T X Y

   = 4608 X 1.085 X 10-6 (S

   = 4.999 ms

 

 

综上所述,前面推论完全正确

  • 14
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lucas_zgp

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值