打印

为啥我把20000 改成别的 效果都是一样的啊

[复制链接]
947|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhenykun|  楼主 | 2018-1-7 13:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include "msp430g2553.h"
#define uchar unsigned char
#define uint  unsigned int

void Delay(uint t)
{
        uint x,y;
        for(x=t; x>0; x--)
                for(y=1000; y>0; y--);
}
void main(void)
{
        WDTCTL = WDTPW + WDTHOLD;
        P1DIR |= BIT0;
        P1OUT |= BIT0;
        while(1)
        {
                Delay(20000);
                Delay(20000);
                P1OUT ^= BIT0;
        }
}

相关帖子

沙发
zhanghqi| | 2018-1-7 14:01 | 只看该作者

延时程序本身时间就很短   小小的时间延时  一般看不出效果

使用特权

评论回复
板凳
jlyuan| | 2018-1-7 14:02 | 只看该作者
嗯,   另外一定要防止数值溢出

使用特权

评论回复
地板
yszong| | 2018-1-7 14:05 | 只看该作者

你加上一个nop()  试一试

使用特权

评论回复
5
dengdc| | 2018-1-7 14:07 | 只看该作者
在xmega遇到这个问题的,加上nop就管用了

使用特权

评论回复
6
heweibig| | 2018-1-7 14:11 | 只看该作者

楼上说的很有道理

需要看看编译器的优化选项,一个不做任何事情的FOR循环,是很有可能被编译器优化掉的

使用特权

评论回复
7
jiahy| | 2018-1-7 14:13 | 只看该作者
用C代码来控制延迟,很不可靠,而且程序不可移植,换个优化选项进行编译,也许定时结果就不一样了,要谨慎使用

使用特权

评论回复
8
lizye| | 2018-1-7 14:15 | 只看该作者

建议楼主用示波器测量一下, Delay(100)或Delay(10)的实际延时周期,以此为参考来,建立延时函数。

使用特权

评论回复
9
shimx| | 2018-1-7 14:17 | 只看该作者
软件延时,通常Delay(1)和Delay(10) 差别比较大,如果你测算好了,实现毫秒级延时就能看出明显效果了

使用特权

评论回复
10
zhenykun|  楼主 | 2018-1-7 14:19 | 只看该作者
什么优化选项啊

使用特权

评论回复
11
jiaxw| | 2018-1-7 14:22 | 只看该作者
编译器提供不同的优化选项

比如不优化,编译器就不会对你的代码做任何优化,即使发现无用的代码,比如一个不做任何事情的FOR循环,或者给一个不使用的变量赋值,编译器都会照常编译。这些代码都会生成在你的项目中。

使用特权

评论回复
12
spark周| | 2018-1-7 14:24 | 只看该作者
如果选择较低优化等级,可能会把无用代码都去掉,因为给一个不使用的变量赋值,会占用CPU资源,而不产生任何价值。所以你最终生成的代码将不包含这些无用的程序,你的FOR循环根本没有被编译进最终程序,当然也就不会有时延。

使用特权

评论回复
13
liliang9554| | 2018-1-7 14:26 | 只看该作者

如果选择较高等级,除了做较低优化等级的事情外,还会多做很多事情。比如把很多同样跳转的IF判断语句编译到一起,或者合并同类项之类的。

作为一个软件工程师,还是很有必要搞懂这些的。

使用特权

评论回复
14
spark周| | 2018-1-7 14:29 | 只看该作者

很有可能是FOR循环编译器优化掉了

使用特权

评论回复
15
午夜粪车| | 2018-1-7 14:32 | 只看该作者
换个优化选项进行编译试试

使用特权

评论回复
16
jiajs| | 2018-1-7 14:35 | 只看该作者
空的FOR循环,可能被编译器优化掉了

使用特权

评论回复
17
zhenykun|  楼主 | 2018-1-7 14:36 | 只看该作者
嗯,预料中的结果,先结贴吧,多谢大家啦

使用特权

评论回复
18
uiint| | 2018-1-7 15:30 | 只看该作者
延时吗?

使用特权

评论回复
19
uptown| | 2018-1-7 15:30 | 只看该作者
这个是什么编译器

使用特权

评论回复
20
uiint| | 2018-1-7 15:31 | 只看该作者
使用NOP__试试

使用特权

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

本版积分规则

868

主题

11535

帖子

3

粉丝