嵌入式学习小组
直播中

杨涛

7年用户 198经验值
私信 关注

为什么使用两个for循环来定义延时

小白学习单片机中,再看教程的时候,看到这个代码:

void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i++)//i=xms 即延时约xms毫秒
for(j=110;j>0;j--)
}



在主程序中调用了延时命令。

delayms(500)

然后看到上面定义的时候,想不通为什么需要使用两个for循环来定义延时。


请大神解惑!

回帖(9)

张楠

2020-4-17 08:59:22
云汉达人
单片机的延时,都是通过让单片机一直执行某些“无用的”代码,比如,i++,每条指令的执行都会占用CPU的一段时间(具体多少时间,就看你的指令转换为汇编后,指令周期是多少)
举报

谷雪阳

2020-4-17 09:06:58
云汉达人

猫Sin 发表于 2016-10-13 16:22
换句话说 ,第二个for循环仅仅是做一个时间参照,然后再与第一个for结合来确定最终的延时时间?

这样理 ...

嗯嗯,是这么理解的~
举报

h1654155275.6347

2020-4-17 09:21:51
Eagleson 发表于 2016-10-13 16:03
单片机的延时,都是通过让单片机一直执行某些“无用的”代码,比如,i++,每条指令的执行都会占用CPU的一段 ...

换句话说 ,第二个for循环仅仅是做一个时间参照,然后再与第一个for结合来确定最终的延时时间?

这样理解?
举报

王若鸿

2020-4-17 09:41:05
你仔细看看for语句的用法,这种就是在第一for语句成立的时候执行第二个for语句,第二个执行完后,再执行一次第一个看看条件是否成立,如果成立就再执行一次第二个for循环,这个就是说第二个for要执行500次,第二个for循环自己j--循环110次,那就是说要执行500个110次的自减减。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分