请问,这个延时函数的延时时间是怎么算的?

[复制链接]
7386|6
 楼主| hlhfootbal 发表于 2007-6-17 14:30 | 显示全部楼层 |阅读模式
void&nbsp;delay_us(unsigned&nbsp;int&nbsp;Delay_Time){&nbsp;&nbsp;&nbsp;&nbsp;//延迟15us<br />&nbsp;&nbsp;unsigned&nbsp;char&nbsp;i;<br />&nbsp;&nbsp;while(--Delay_Time){<br />&nbsp;&nbsp;i=20;<br />&nbsp;&nbsp;while(--i);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//0.75us延时<br />&nbsp;&nbsp;};<br />}<br />说明:时钟16MHz
computer00 发表于 2007-6-17 14:44 | 显示全部楼层

试出来的。

  
 楼主| hlhfootbal 发表于 2007-6-17 20:15 | 显示全部楼层

怎么试啊,是不是用汇编写精确一些啊?

  
FREETECH_S 发表于 2007-6-18 08:54 | 显示全部楼层

我这样算

(1/系统频率)*指令周期*i*Delay_Time+调用语延时函数的指令时间
 楼主| hlhfootbal 发表于 2007-6-18 17:37 | 显示全部楼层

谢谢,LS

C语言编写的也能这样算吗?
h0uwenb0 发表于 2007-6-19 19:21 | 显示全部楼层

我的拙见

不知你用的C编译调试的时候是不是有汇编代码,如果有找到那部分,然后计算.<br /><br />如果没有,请试以下方法,不过你要有好的显波器才行:<br /><br />写段程序,控制单片机某个引脚不停的输出高低电平之间调用以个延时函数,用显波器数中间的间隔就行了,只要你的显波器够好,达到你的要求不难.<br /><br />如果没有那么好的设备,可以用这个延时写个时钟程序,让它多走一段时间然后跟据正常时钟比较,经过计算也可以修正过来,走得时间越久,计算值就越精确.
 楼主| hlhfootbal 发表于 2007-6-19 19:34 | 显示全部楼层

谢谢,LS

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

133

主题

417

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部