完善资料让更多小伙伴认识你,还能领取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循環跳轉需要時間。 |
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
《DNESP32S3使用指南-IDF版_V1.6》第三十五章 摄像头实验
787 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第三十章 DHT11数字温湿度传感器
755 浏览 0 评论
850 浏览 0 评论
【敏矽微ME32G070开发板免费体验】之原厂2812测试例程解析
1534 浏览 0 评论
1239 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12063 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-29 20:37 , Processed in 0.697098 second(s), Total 83, Slave 67 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号