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

ssy19951022   2018-4-20 10:29 楼主
我有个延时函数
/***********************************************/

/*函数名称: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)

加油
充放电数显全套方案,双口快充慢充检测电流电压,两线三线直流电压表,配套三个8尺寸15*8MM带AV电流电压单位专利数码屏,资料QQ2981074992 邮箱同上
点赞  2018-4-20 10:52
决定这种延时时间的因素有两个,一个是指令周期,不同的单片机指令周期不太一样,stc号称的百兆就是周期要比传统51短。还有一个是系统时钟频率,视你的具体情况定。
18b20手册上写要150微秒实际上也没那么特别的严格,时序对了才能行。
点赞  2018-4-20 13:17
最好用设备测一下实际的脉宽。跟标准的时序对比一下。尽一下量接近标准时序。你也可以改变延时。 对比一下效果。看哪个更稳定。
点赞  2018-4-20 14:07
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复