void Delay() { unsigned char a, b; for (a = 1; a; a++) for (b = 1; b; b++) ; } for语句中b是什么限制

a = 1; a; a++ 好像没有意义呀?为什么AVR编程时却可以用它做延时?

这里的条件是b != 0
因为b = 0时, b的值就是非真。

b是unigned char, 只有一个字节,最大值是255, b=255后,如果再增加1,会变成0, 内层 循环停止。

同样a, 也是在循环到255后,再加1时变零(非真),导致循环停止。
所以这个Delay函数共有255*255个循环,如果没有被编译器优化掉,还是会产生一定的延时效果的。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-04
for(初值; 条件判断; 条件操作)

a++ b++ 不是一直加1地往上加嘛
最后会溢出吧又变为0了,这个时候
条件不就不满足了嘛,就会退出循环
可以达到延时的目的啊。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网