打印

for循环的简单问题,求解答啦~~~路过的都来看看吧

[复制链接]
1779|24
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
火山LF|  楼主 | 2016-9-6 10:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
延时要嵌套for循环,请问大的数字循环在外面还是小的数字循环在外面?请问如何设置会更优化程序?

例如:我定时12s,定时器1ms记一次 ,一个定时器记12次,一个定时器记1000次 , PS:论坛的代码格式不好看
    if(Dis_NoneLoadTimer1 > 12)
                                {
                                        Dis_NoneLoadTimer2++;
                                        if(Dis_NoneLoadTimer2 > 100)
                                        {

                                                Dis_NoneLoadTimer2 = 0;
                                        }

                                        Dis_NoneLoadTimer1 = 0;
                                }
                        }


相关帖子

沙发
dirtwillfly| | 2016-9-6 11:39 | 只看该作者
mS级的延时,不建议用循环,浪费资源还费电。用定时器吧

使用特权

评论回复
板凳
dirtwillfly| | 2016-9-6 14:03 | 只看该作者
火山LF 发表于 2016-9-6 11:51
在定时器里面直接timer++ ,然后在函数里面判断timer > 12000 吗? 这样也可以达到延时。

...

直接定时1mS就好啊

使用特权

评论回复
地板
flaty| | 2016-9-6 14:32 | 只看该作者
一般单片机 都会自己给自己做个 1MS定时器 ,其他的大于1MS的 就定时器计数就可以了,,,不是要去很钟的 非的非常准确,2中方式,外边加个CPLD做个有源晶振 做个计数器,,,或者去CPU时钟计数器 也是很钟确的 。

使用特权

评论回复
5
火山LF|  楼主 | 2016-9-6 15:25 | 只看该作者
dirtwillfly 发表于 2016-9-6 14:03
直接定时1mS就好啊

我要定时的是12s呀,定时器定时1ms让Timer+1,然后一直加到12000就是12s了

现在的问题是12000是只用一个变量来计数,还是两个变量用for循环嵌套计数,哪种做法比较好?

使用特权

评论回复
6
火山LF|  楼主 | 2016-9-6 15:27 | 只看该作者
flaty 发表于 2016-9-6 14:32
一般单片机 都会自己给自己做个 1MS定时器 ,其他的大于1MS的 就定时器计数就可以了,,,不是要去很钟的  ...

定时器只开一个,但是计数有很多个变量,在中断外边进行比较变量大小,就可以进行定时了。

你上面那句话:不是要去很钟的 非的非常准确     
我没看懂(⊙o⊙)…

使用特权

评论回复
7
dirtwillfly| | 2016-9-6 15:51 | 只看该作者
火山LF 发表于 2016-9-6 15:25
我要定时的是12s呀,定时器定时1ms让Timer+1,然后一直加到12000就是12s了

现在的问题是12000是只用一个 ...

我一般用一个变量。具体看你的需求吧

使用特权

评论回复
8
angus118| | 2016-9-6 16:34 | 只看该作者
一般人不要if 或 delay来延时。

使用特权

评论回复
9
xgmmss| | 2016-9-6 16:44 | 只看该作者
在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少CPU 跨切循环层的次数。
之前见过的编程建议。

使用特权

评论回复
10
火山LF|  楼主 | 2016-9-6 17:16 | 只看该作者
xgmmss 发表于 2016-9-6 16:44
在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少CPU 跨切循环层的次 ...

对对对,我也是看过相关的这样的话,然后我忘了是大的放外面还是小的放外面

使用特权

评论回复
11
皈依| | 2016-9-6 18:22 | 只看该作者
一般来说是大的放在里面

使用特权

评论回复
12
youtome| | 2016-9-6 22:32 | 只看该作者
要精确延时,还是定时器。

使用特权

评论回复
13
youtome| | 2016-9-6 22:35 | 只看该作者
火山LF 发表于 2016-9-6 11:51
在定时器里面直接timer++ ,然后在函数里面判断timer > 12000 吗? 这样也可以达到延时。

...

定时器定时计数,这样利用率就高了。

使用特权

评论回复
14
flaty| | 2016-9-7 10:49 | 只看该作者
火山LF 发表于 2016-9-6 15:27
定时器只开一个,但是计数有很多个变量,在中断外边进行比较变量大小,就可以进行定时了。

你上面那句话 ...

恩 恩 是滴 ,,,,,不是非常准确的话,,,准确的话 比如交换机一类的 就不能这么高,,单独的做非常精确的同步时钟

使用特权

评论回复
15
flaty| | 2016-9-7 10:51 | 只看该作者
flaty 发表于 2016-9-7 10:49
恩 恩 是滴 ,,,,,不是非常准确的话,,,准确的话 比如交换机一类的 就不能这么高,,单独的做非常 ...

定时器 已经不错了,,,不占用资源,,,

使用特权

评论回复
16
typeof| | 2016-9-7 22:48 | 只看该作者
程序的for循环不是执行次数都一样?

使用特权

评论回复
17
typeof| | 2016-9-7 22:50 | 只看该作者
定时器延时推荐。

使用特权

评论回复
18
maqianqu| | 2016-9-8 16:49 | 只看该作者
楼主你测试过,这个for循环吗?

使用特权

评论回复
19
maqianqu| | 2016-9-8 16:53 | 只看该作者
for的执行次数应该都一样吧。

使用特权

评论回复
20
火山LF|  楼主 | 2016-9-8 17:16 | 只看该作者
maqianqu 发表于 2016-9-8 16:53
for的执行次数应该都一样吧。

但是有关于优化程序的说法

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

88

主题

816

帖子

16

粉丝