C语言延时问题
时间:10-02
整理:3721RD
点击:
各位好,
现在在学习单总线编程,在时序上要求比较严格,我想问一下,
int i=10;
1.while(i--) ;
2.for(i=0;i>0;i++) ;
以上两个语句的延时是多少?
我觉得是 while 需要两个机器周期,所以时间为:2us*10=20us;
for()需要三个机器周期,故时间为3us*10=30us
请懂得的朋友指导一下,谢谢!
现在在学习单总线编程,在时序上要求比较严格,我想问一下,
int i=10;
1.while(i--) ;
2.for(i=0;i>0;i++) ;
以上两个语句的延时是多少?
我觉得是 while 需要两个机器周期,所以时间为:2us*10=20us;
for()需要三个机器周期,故时间为3us*10=30us
请懂得的朋友指导一下,谢谢!
看C语言是不怎么能看出来的,你还是要看生成的汇编了。
而汇编又与你的编译器相关。所以这个要自己在硬件上进行实验
这个可以用软件仿真得到啊,你可以试一试。
需要精确延时要用定时器,代码根据不同编译器结果不一样,更要命的是有些编译器重新编译结果不一样
楼上说的都很到位,需要精确延时的话还是硬延时,即定时器;软延时只适用于一些对延时精度要求很低的情况,比如液晶初始化时延时1s左右等待初始化完成,这个情况差个几毫秒几十毫秒都不影响的,可以用软延时,不占用定时器资源。
谢谢,明白了。
恩,好的
谢谢!我试过了
主要用定时器,或者nop语句。这种的,具体暂时多少,要用示波器量一下才确定。
你的那个for语句是个啥玩意儿?
好的,谢谢!
for语句的循环体为空
