延时程序耗费时间的精确算法

本文详细介绍了软件延时的基本方法,特别是如何通过调用延时子程序实现精确的延时时间计算。讨论了不同延时单位和单片机时间单位的关系,并通过实例展示了计算过程,最终给出在不同晶振频率下的延时时间结果。

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

软件延时的基本方法是调用延时子程序。

延时子程序所耗费的时间,很多人都是粗略的计算,这对于延时时间要求不高的情况下,还是适用的。

但是有时候,延时的时间要求比较精确,这就需要进行仔细的计算。

计算耗费时间,不仅要计算子程序本身的,还要包括上主程序的调用指令。

延时时间的单位,我们常用的是:us、ms、s;

而单片机所用的时间单位,则是:机器周期 T。

T 的时间,取决于单片机系统的晶振频率。

下图给出了一个计算耗费时间的例子。

上述程序,共有三重循环。

在红线框内,共循环了 215 遍,每一遍只有一条 2T 的指令,所以耗用时间为 430T。

在兰线框内,共循环了 128 遍,每一遍的时间为:1 + 1 + 430 + 2,共用了 55552T。

黑线框内,耗用时间的算法,和上面的计算方法相同,共用了 499995T。

最后加上循环外边的指令,以及调用指令的时间,共用 500 000T。

在晶振频率为 12MHz 时,延时时间为 500 000us,即 500ms。

如果采用 6MHz 的晶振频率,延时时间则为 250ms。

本文完

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值