完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
[C] 纯文本查看 复制代码
void Delay{unsigned char i, j;i = 11;j = 190;do{while (--j);} while (--i);}void Delay{unsigned char i, j;i = 11;j = 190; while(i--){while (--j);}} 请问上面这两种写法执行结果有什么区别吗,为什么用在STC单片机上得到的延时时间截然不同? |
|
相关推荐
9个回答
|
|
如果用while(--i)岂不是要比do...while(--i);少循环一次
|
|
|
|
|
|
|
|
是的呢,实际差一倍左右,把第二段代码中的11改成6效果就差不多了。
|
|
|
|
我的理解可能是单片机在执行while和do…while时的效率不同造成的,但更深层的关系就搞不明白了。
|
|
|
|
|
|
|
|
=-=刚去试了一下。。。还真是,我弱智了。。。So sorry
|
|
|
|
|
|
|
|
大哥,看不太懂,能解释一下吗
|
|
|
|
刚才发的记错了,查了之前的备注,是下面的
不过现在用51都是用stc软件计算了 //机器周期为 T us 12MHz的晶振 12T模式 则机器周期 T= 12×时钟周期=12×(1/12)μs=1μs //i最好不为0 void delay(ux i) { while(i--); } u8 i -->( 6i+11)T 精度6T i不为0时 (为0时=12 T) u16 i -->(9i+i/256+16)T 精度9T i不为0时 (为0时=16 T) void delay(ux i) { while(--i); } u8 i -->( 2i+5)T 精度2T i不能为0 u16 i -->( 8i+i/256+6)T 精度8T i不能为0 |
|
|
|
只有小组成员才能发言,加入小组>>
2997 浏览 9 评论
2712 浏览 16 评论
3229 浏览 1 评论
8485 浏览 16 评论
3795 浏览 18 评论
9396浏览 3评论
641浏览 3评论
10597浏览 2评论
335浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
336浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-5-12 18:20 , Processed in 0.915606 second(s), Total 97, Slave 77 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号