void delay(unsigned int ms) { int i, j; for(i=ms;i>0;i--) for(j=110;j--;j>0); }

2025-01-05 07:06:06
推荐回答(3个)
回答1:

1.我夸张点说吧,如果执行一条语句i=0; cpu需要用时1s,那么你需要系统延时10s时,循环执行i = 0 10遍就可以了。你后面的代码自然就10s后再执行了。 CPU执行每个代码都是有耗时的只是很短。

2.观察这个延时程序你可以发现,总循环次数是ms*110次,就像上面说的如果循环一次耗时1毫秒,如果你想达到你延时某段时长的目的,只能由传入的ms决定了。ms越大延时越久。

3.关于这段代码,其中的 for(j=110;j--;j>0); 运行时正常的,但是部分就没有意义了。要么改成
for(j=110;j--;);,或者和前面的代码一致改为 for(j=110;j>0;j--);

回答2:

后面for循环判断语句j--无法跳出,i = ms,就是把调用函数时传过来的参数赋给i。换句话说,i就 等于你调用这个函数传来的参数。

回答3:

(unsigned int k){unsigned int i,j;for(i=0;i<k;i++)for(j=0;j<00;j++);}//延时函数main(){unsigned char i;unsigned char temp;unsigned char a,b;void delay(void)//延时s{unsigned char m,n,s;for(m=0;m>0;m--)