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

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条回答
一株草
1楼-- · 2019-03-24 20:47
加油
Li_Lei
2楼-- · 2019-03-25 02:19
决定这种延时时间的因素有两个,一个是指令周期,不同的单片机指令周期不太一样,stc号称的百兆就是周期要比传统51短。还有一个是系统时钟频率,视你的具体情况定。
18b20手册上写要150微秒实际上也没那么特别的严格,时序对了才能行。
ienglgge
3楼-- · 2019-03-25 07:16
 精彩回答 2  元偷偷看……

一周热门 更多>