标题: 利用软件循环方法进行延时的延时时间计算方法 [打印本页]

作者: 不倒翁.WZT    时间: 2016-12-4 11:48
标题: 利用软件循环方法进行延时的延时时间计算方法
利用软件循环方法进行延时的延时时间计算方法
本计算方法很简单,特别在做各种时序的延时时,非常方便和准确。
当硬件晶振实际安装和软件编程都设定为24MHz时,适合本计算方法。当硬件晶振实际安装和软件编程都设定为12MHz时,延时时间会增大一倍,计算时公式中的us量均增加一倍。
    本计算方法在循环次数在255以内,计算没有误差,当循环次数达到256时将有0.5us误差,随着循环次数继续增大,误差还将继续增加,当循环次数达到2560时将有5us误差,这个误差量是可以忍受的。
......
void Delay1us(unsigned int i)
{                       
while(i--);     
}
......
{
  Delay1us(80);
  ......
}
当晶振为24MHz时的计算公式
设:X=计划延时时间值  i=循环次数值  
已知:循环次数i=80,求:延时时间X      
解:X=12.5us+4.5us(i-1)                 
   X=12.5us+4.5us(80-1)                    
   X=12.5us+4.5us*79                     
   X=12.5us+355.5us                       
   X=368us                                
已知:延时时间X=368us,求:循环次数i
解:i=(X-12.5us)/4.5us+1
i=(368us-12.5us)/4.5us+1
i=355.5us/4.5us+1
i=79+1
i=80
当晶振为12MHz时的计算公式
设:X=计划延时时间值  i=循环次数值  
已知:循环次数i=80,求:延时时间X      
解:X=25us+9us(i-1)                 
   X=25us+9us(80-1)                  
   X=25us+9us*79                     
   X=25us+711us                       
   X=736us                                
已知:延时时间X=368us,求:循环次数i
解:i=(X-25us)/9us+1
i=(736us-25us)/9us+1
i=711us/9us+1
i=79+1
i=80

kile软件利用大循环的方法进行延时的延时时间计算方法.docx.zip

11.1 KB, 下载次数: 18, 下载积分: 黑币 -5


作者: admin    时间: 2016-12-4 15:23
谢谢分享很好  不过楼主的压缩包是空的呢?是不是搞错了?
作者: 不倒翁.WZT    时间: 2016-12-4 21:14
标题: RE: 利用软件循环方法进行延时的延时时间计算方法
admin 发表于 2016-12-4 15:23
谢谢分享很好  不过楼主的压缩包是空的呢?是不是搞错了?

看看这回怎样
作者: 不倒翁.WZT    时间: 2016-12-4 21:21
admin 发表于 2016-12-4 15:23
谢谢分享很好  不过楼主的压缩包是空的呢?是不是搞错了?

再发一遍,看看怎样?

作者: 不倒翁.WZT    时间: 2016-12-5 07:55
标题: RE: 利用软件循环方法进行延时的延时时间计算方法
admin 发表于 2016-12-4 15:23
谢谢分享很好  不过楼主的压缩包是空的呢?是不是搞错了?

真是对不起,怎么会出现这样的错误?给你连发两个压缩包还是失败的,这回连压缩包都没有,不知什么原因。在我的帖子上又发了一个,这个11K的压缩包应该是个真的。
作者: 特立独行solider    时间: 2016-12-5 11:00
同样是这个问题呀
作者: 不倒翁.WZT    时间: 2016-12-6 05:41
标题: RE: 利用软件循环方法进行延时的延时时间计算方法
特立独行solider 发表于 2016-12-5 11:00
同样是这个问题呀

11.1KB的压缩包不是个空的,我自己解压了一下,是正确的,是一个WPS文档。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1