关于延时程序的问题

2019-03-24 15:31发布

请问void Delay_ms(unsigned long nValue)//毫秒为单位,8MHz为主时钟
{
    unsigned long nCount;
    int i;
    unsigned long j;
    nCount = 2667;
    for(i = nValue;i > 0;i--)
    {
     for(j = nCount;j > 0;j--);
    }
    return;
}
中2667如何得来的 ,是一条指令需要3个时钟周期么,2667=8000/3,对吗?
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
wstt
1楼-- · 2019-03-24 20:25
确定延时时间的办法是观察上面这段C代码编译成的汇编代码,
然后看每条汇编代码所用到的指令,每条汇编指令对应的周期是一定的,
这样再根据跳转次数就能够计算延时时间了。
如果是精确的延时建议用定时器
永远的不知
2楼-- · 2019-03-24 21:21
< :TI_MSP430_内容页_SA7 --> 这种写法在被不同编译器优化时,或不同的优化等级优化时,有可能会出现不同的汇编代码,导致时间有差异。所以还是用定时器好。
cat3902982
3楼-- · 2019-03-25 01:47
 精彩回答 2  元偷偷看……
yygyfjkihag
4楼-- · 2019-03-25 03:37
定时器  或者用__delay_cycles( );

一周热门 更多>

相关问题

    相关文章