完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
本帖最后由 T_C_Wong 于 2014-11-12 18:04 编辑
以下是一个LED流水灯的编译,大部分都明白了,就是剩下最后一部分: void Delay10ms(unsigned int c) 大概明白这是一个延时,但为何是10ms延时,为什么要出现a和b,为什么是38和130,为什么是三个for语句,而不是二个或者四个?超级不明白,曾经尝试修改过数值去影响LED的延时时间,不过还是不太明白具体数值和for的关系,在此,真心求教~~~! #include #include #define GPIO_LED P2 void Delay10ms(unsigned int); void main(void) { unsigned char n; GPIO_LED=0x01; while(1) { for(n=0;n<7;n++) { GPIO_LED=_crol_(GPIO_LED,1); Delay10ms(50); } for(n=0;n<7;n++) { GPIO_LED=_cror_(GPIO_LED,1); Delay10ms(50); } } } void Delay10ms(unsigned int c) { unsigned char a,b; for(;c>0;c--) for(b=38;b>0;b--) for(a=130;a>0;a--); } |
|
相关推荐
7个回答
|
|
|
最后一段你是指延时函数吗?!~主函数放前面感觉整洁点,把其他子函数放后面,必须在主函数前面声明下如《~void Delay10ms(unsigned int);》如果放前面就不要声明了!~
最佳答案
|
|
|
|
|
|
一个也可以!~4个也没问题,三个在软件调试的时候,通过需改A,和B两个数,湊10ms,比较方便!如果是一个的话改的不够精确!~·4个改的太麻烦!~
|
|
|
|
|
|
那是怎么知道这就能凑10ms的呢?? |
|
|
|
|
|
你要是会软件调试的时候就知道了!~在调试的时候看运行这个延时要多少时间(首先可以根据晶振和机器周期算出理论的值-----单片机运行a*b次所需要的时间),多了就减少,少了就增加,根据调整a或b看调到最接近10ms时候(或者你感觉这个精度可以满足你的要求)就OK了 |
|
|
|
|
|
本帖最后由 T_C_Wong 于 2014-11-12 18:16 编辑
衷心感谢指教,关于测试速度,是我大意忘记了,还有一个小问题,既然最下面一段语言已经做到延时,那么为什么在 void main中,仍然在Delay10ms后面的()里面填上50??是因为最后一段的延时必须做50次才能延时10ms? 那个。。。最后一段为什么不放在前面,而要放在后面,有什么玄机吗? |
|
|
|
|
|
你的延时函数是10MS但是你调用的时候需要延时500ms,就要把c设成50了!~ |
|
|
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
【瑞萨RA6E2】瑞萨E2S软件安装过程,等待过程玩下97_e2 studio_ZGZZ
140 浏览 0 评论
483 浏览 0 评论
【原创】【RA4M2-SENSOR开发板评测】低功耗+USB综合测试
815 浏览 0 评论
1346 浏览 2 评论
804 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
16904 浏览 31 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 19:27 , Processed in 0.878030 second(s), Total 86, Slave 68 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
3330