完善资料让更多小伙伴认识你,还能领取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 |
|
|
|
只有小组成员才能发言,加入小组>>
3314 浏览 9 评论
2995 浏览 16 评论
3494 浏览 1 评论
9059 浏览 16 评论
4088 浏览 18 评论
1179浏览 3评论
605浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
599浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2335浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1896浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 14:55 , Processed in 1.323989 second(s), Total 66, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号