打印

关于DS18B20温度传感器时序问题

[复制链接]
1894|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xl042140|  楼主 | 2008-9-12 14:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
 请教C语言高手和汇编高手帮我看下下面一段程序时序有无出错,调试DS18B20很久了,一直不能调试通

程序如下:
/**************************************************/
/*延时程序
/**************************************************/
void Delay(uint8 n)
{
   while(--n); //采用12时钟,晶振为3.6864MHZ,一个机器周期3.25us 9个指令周期+一个RET 2指令周期
}

/**************************************************/
/*DS18b20 初始化程序
/**************************************************/
void Ds_Init(void)
{   uchar x;
    Ds_Data=1; //单片机初始状态
    _nop_();
    _nop_();

    Ds_Data=0;
    Delay(20);//最小480us RESET PULSE

    Ds_Data=1;
    Delay(1);
               //15-60us WAIT PULSE 我选择32.5us等待信号
               //如果Ds_data持续0电平超过个机器周期
               //初始化成功,返回1
    while(!Ds_Data)            //初始化失败,返回0
      {
      Delay(5);//150us presence pulse (60-240)

        Ds_Data=1;  //上拉280  总计530US  TX 时间
        Delay(10);
        //return 1;
     }
    //else return 0;
}
时序资料如图.所使用的P89V51RD2FN 型号单片机,晶振的频率是3.6864MHZ

现在我主要的问题就是程序是否正确,还有就是我的延迟时间推算的准确否.

我用示波器查看delay(1) 时间约为44US
              delay(10)时间约为280US
              delay(5)  时间约为152us
              delay(3)时间约为104us
              delay(20) 时间约为600us
那位汇编高手帮我算下 是不是延迟时间是准确的?
第一次在这个分坛发帖,希望路过看过的多多捧场!!!
调试出来也会与大家分享成果,尤其是调试过程遇到的问题,


    网上有很所谓的调试成功的程序,看了是一头雾水,自己的硬件图都不给,单发程序,连晶振频率都不给,,,真郁闷这些人


相关帖子

沙发
xl042140|  楼主 | 2008-9-12 14:36 | 只看该作者

关于DS18B20温度传感器时序问题

  恰逢中秋,还望各位白忙之中抽出宝贵时间给于解答,小弟不胜感激。

祝大家中秋节 玩的快乐

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

24

帖子

0

粉丝