延时程序耗费时间的精确算法
2016-01-25 11:30
169 查看
软件延时的基本方法是调用延时子程序。
延时子程序所耗费的时间,很多人都是粗略的计算,这对于延时时间要求不高的情况下,还是适用的。
但是有时候,延时的时间要求比较精确,这就需要进行仔细的计算。计算耗费时间,不仅要计算子程序本身的,还要包括上主程序的调用指令。
下图给出了一个计算耗费时间的例子。
![](http://img.bimg.126.net/photo/KGAnSaqziuiwIZZtdXglOg==/4562427897520157013.jpg)
上述程序,共有三重循环。
其中红线框内的部分,共循环了215遍,每一遍只有一条2T的指令,所以耗用时间为430T。
兰线框内,共循环了128遍,每一遍的时间为:1+1+430+2,共用了55552T。
黑线框内,耗用时间的算法,和上面的计算方法相同,共用了499995T。
最后加上循环外边的指令,以及调用指令的时间,共用500 000T。
T的时间,取决于系统的晶振频率,在12MHz的条件下,延时时间为500 000us,即500ms。
延时子程序所耗费的时间,很多人都是粗略的计算,这对于延时时间要求不高的情况下,还是适用的。
但是有时候,延时的时间要求比较精确,这就需要进行仔细的计算。计算耗费时间,不仅要计算子程序本身的,还要包括上主程序的调用指令。
下图给出了一个计算耗费时间的例子。
![](http://img.bimg.126.net/photo/KGAnSaqziuiwIZZtdXglOg==/4562427897520157013.jpg)
上述程序,共有三重循环。
其中红线框内的部分,共循环了215遍,每一遍只有一条2T的指令,所以耗用时间为430T。
兰线框内,共循环了128遍,每一遍的时间为:1+1+430+2,共用了55552T。
黑线框内,耗用时间的算法,和上面的计算方法相同,共用了499995T。
最后加上循环外边的指令,以及调用指令的时间,共用500 000T。
T的时间,取决于系统的晶振频率,在12MHz的条件下,延时时间为500 000us,即500ms。
相关文章推荐
- 部署SharePoint 2013
- 单片机实现灯左右移动和闪烁的程序
- 编写51单片机程序,输出方波,at89s52的单片机
- 数据库索引的实现原理
- js的创建多维数组的方法
- BusyBox - The Swiss Army Knife of Embedded Linux
- AngularJS中的$http深入分析
- Javascript 正确用法 二
- 一些取整方法
- 实现每隔1秒计一个数,显示00到99
- 利用8031的定时/计数器T1对外部事件进行计数
- Socket 短连接、长连接
- 在7000H--700FH中查出“00”的个数
- 关于8279的实例
- 利用单片机的定时器中断,周期性输出矩形波
- C程序翻译成汇编语言
- 关于 BCD 码减数求补的问题
- java基础篇--05<java集合>
- PHP设置头信息及取得返回头信息的方法
- 关于SM2的应用方法