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

2019-07-25 15:00发布

#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;
        }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
16条回答
wyjie
1楼-- · 2019-07-25 18:47
 精彩回答 2  元偷偷看……
jlyuan
2楼-- · 2019-07-25 21:45
嗯,   另外一定要防止数值溢出
yszong
3楼-- · 2019-07-25 22:26
你加上一个nop()  试一试
dengdc
4楼-- · 2019-07-26 00:02
在xmega遇到这个问题的,加上nop就管用了
heweibig
5楼-- · 2019-07-26 04:33
楼上说的很有道理

需要看看编译器的优化选项,一个不做任何事情的FOR循环,是很有可能被编译器优化掉的
jiahy
6楼-- · 2019-07-26 06:20
用C代码来控制延迟,很不可靠,而且程序不可移植,换个优化选项进行编译,也许定时结果就不一样了,要谨慎使用

一周热门 更多>