大虾帮我看一下这个延时程序对不对?

[复制链接]
2706|9
 楼主| zhujunqi 发表于 2007-5-21 17:36 | 显示全部楼层 |阅读模式
void delay(unsigned char i)
{
    for(i=0;i<200;i++)
        for(i=0;i<200;i++)
           for(i=0;i<200;i++)
}

就这么多,看一下是不是延长200*200*200个机器时间,
谢谢了,
turmary 发表于 2007-5-21 18:14 | 显示全部楼层

I变量怎么用于三重循环

再定义j,k就好了。
ww4u 发表于 2007-5-21 20:29 | 显示全部楼层

不对

你只用了一个局部变量i,也就是说在下一层循环中改变了上一层的计数值,当i为200时退出了最下面的循环,同时也退出了上面两层循环,所以实际上只执行了近200次。另外还有一个问题,最后一个循环后需要加上分号.
寒雨飞扬 发表于 2007-5-21 22:17 | 显示全部楼层

哈哈,肯定不对了!!

5880527 发表于 2007-5-22 10:01 | 显示全部楼层

我一直不喜欢这样延时

我一直不喜欢这样延时
huweiping 发表于 2007-5-22 13:50 | 显示全部楼层

不可以的

一次循环不只是一个机器周期,反汇看看吧.那样循环也是不对的
prcxf 发表于 2007-5-22 18:01 | 显示全部楼层

要习惯于这样写:

void delay(unsigned char i)
{
    for(i=200;i>0;i--)
        ...
}
用于延时程序可能无所谓,用于其它程序,可能效率会好些!

还有,问问题之前,建议先看反汇编,自己找到途径解决问题才会更长进!
jhx19807 发表于 2007-5-22 23:04 | 显示全部楼层

to

1、缺少变量,只用了i,实际只运行200次;
2、最好用递减
王紫豪 发表于 2007-5-23 01:40 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

3

帖子

0

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