时延函数

2019-07-15 21:13发布

本帖最后由 sdzd 于 2013-12-25 10:05 编辑

单片机中,用C语言进行编程时,时延函数如下编写,似乎无法确切对应,假设晶振为8Mhz,问:(1)对应1微秒(us),方式一、方式二哪个更准确呢?
(2)1毫秒(ms)的书写方式‘M*143-2’能推算出到底是怎么推理得到的么?
期待高手详细指点,谢谢~!

方式一:
void Delay1us(int i)
{
  unsigned char j;
  for(;i-->0;)
  {
     for(j=5;j-->0;)
     {}

  }
}

方式二:
void delay_us(unsigned int time)
{
    unsigned int t;
    for(t=time;t>0;t--)
    {
        asm("nop");
        asm("nop");
    }
}


ms时延:
void delay_ms( )   
{
    uint i
         for(i=1;i<M*143-2;i++);  //M=8mhz,晶振频率
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。