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

[复制链接]
2474|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

粉丝
快速回复 在线客服 返回列表 返回顶部