一个关于延时函数的问题

[复制链接]
3110|7
 楼主| dongjia 发表于 2007-1-22 14:27 | 显示全部楼层 |阅读模式
我是个新手,在单片机方面刚刚上路,所以问个菜鸟问题。<br />下面这个函数我看不明白,请各位告诉我,谢谢。<br />1、i,j,k都是代表什么?<br />2、i=20,j=20,k=248是怎么得来的?<br /><br />void&nbsp;delay02s(void)&nbsp;&nbsp;//延时0.2秒子程序<br />{<br />&nbsp;&nbsp;unsigned&nbsp;char&nbsp;i,j,k;<br />&nbsp;&nbsp;for(i=20;i&gt0;i--)<br />&nbsp;&nbsp;for(j=20;j&gt0;j--)<br />&nbsp;&nbsp;for(k=248;k&gt0;k--);<br />}
倚天剑 发表于 2007-1-22 16:51 | 显示全部楼层

是经验值

for(k=248;k&gt0;k--);应该延时0.5mSec&nbsp;&nbsp;200mSec&nbsp;=&nbsp;(20*20*0.5)mSec<br />k&nbsp;=&nbsp;248;&nbsp;可以是用软件仿真凑出来的,是经验值<br />
 楼主| dongjia 发表于 2007-1-23 08:58 | 显示全部楼层

还可以是这样啊

谢谢大虾,我回去还得好好看看。
c2619985 发表于 2007-1-24 15:09 | 显示全部楼层

2楼的?

不知道晶振是多大的情况下<br />没法计算延时的大小
skylinee 发表于 2007-1-25 17:53 | 显示全部楼层

怎么能说是经验值呢!

&nbsp;&nbsp;比较准确一点的办法,是用汇编,看你这段程序用到了那些指令,然后计算指令周期,根据晶体频率方可以算出!
hziee30 发表于 2007-2-7 15:15 | 显示全部楼层

要精确的话还不如直接用汇编。

  
lyqun8002 发表于 2007-2-7 15:23 | 显示全部楼层

不好!

0.2秒、200毫秒,在单片机中也算是很长时间了,而其切这段时间除了中断,什么也不能做,不好!还不如用中断计时;没有时钟参考,搂主是咋的出0.2秒的?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

38

帖子

0

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