关于延时函数问题 请大神们指点一下谢谢!

2019-03-24 17:03发布

我有个延时函数
/***********************************************/

/*函数名称:delay()        */

/*函数功能:延时函数,单次 25us 左右延时        */

/*入口参数:t;        */

/*输出参数:无        */

/*调用函数:无        */

/*全局变量:无        */

/*局部变量:t;        */

/***********************************************/

void delay(uint t)
        {
        for (;t>0;t--);
        }



DS18B20读数据函数
uchar ds_read(void)
{
         uchar i;
         uchar value=0;
         for(i=8;i>0;i--)
           {
                DQ=1;_nop_();
                _nop_();
                value>>=1;
                DQ=0;
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                DQ=1;
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                if(DQ)value|=0x80;
                delay(6);             !!!问题是这部 手册上说延时60微秒即可 可是这个程序 是不是延时6*25=150微秒 所以这个不对??
       }
     DQ=1;
     return(value);
}


此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
3条回答
Li_Lei
2019-03-25 02:19
决定这种延时时间的因素有两个,一个是指令周期,不同的单片机指令周期不太一样,stc号称的百兆就是周期要比传统51短。还有一个是系统时钟频率,视你的具体情况定。
18b20手册上写要150微秒实际上也没那么特别的严格,时序对了才能行。

一周热门 更多>