完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
以下两个延时函数,为什么延时不同呢? voidint_delay() { unsigned int m; for(m=0;m<36000;m++); } voidchar_delay() { unsigned char i,j; for(i=0;i<200;i++) for(j=0;j<180;j++) ; } |
|
相关推荐
7个回答
|
|
第一个只有一个for判断,第二个有两个for,设所用晶振为12M,则一个机器周期就是1微秒。而for指令是双周期指令,所以执行一次要2个微秒
|
|
|
|
执行指令也是要时间的,所以程序越简洁高效越好。
|
|
|
|
第一个延时比第二个延时很多,不知为什么?好像都执行36000次 |
|
|
|
你程序的语句数量不一样,及时执行的次数一样但不代表语句的执行次数是一样的,语句的执行也是要时间的
|
|
|
|
本帖最后由 蓦然回首; 于 2013-8-26 20:54 编辑
因为你的两个延时函数中变量的数据类型不同,无符号整型数据占两个字节,而无符号字符型数据仅占一个字节,因此对无符号整型数据进行操作花费的时间就要长一些。所以你会看到第一个延时函数的延时时间比第二个的要长。至于为什么第二个函数用了两个for循环,是因为无符号字符型数据它的取值范围只有0-255,为了和第一个函数都执行36000次,只能写成两个for循环,否则超出了它的范围 |
|
|
|
您將第一個m>36000改為m>30000,第二個程序J>180改為j>150,再調試一下試試看,應該是第二程序延時要比第一個延時長!因為for循環跳轉需要時間。 |
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1343 浏览 0 评论
1537 浏览 0 评论
为什么用FatFS在SD卡创建文件,在单片机上读写正常,用读卡器插到电脑上就什么都没有
2759 浏览 0 评论
2036 浏览 2 评论
《DNK210使用指南 -CanMV版 V1.0》第九章 打印输出实验
775 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11424 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-10-8 19:45 , Processed in 0.731532 second(s), Total 54, Slave 47 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号