pic24与DS18B20

2019-03-25 19:39发布

请问一下有谁使用过pic24实现过DS18B20,我在编程的时候遇到了一点问题,对于PIC24单片机我还是初学者,请高手指教一下啊,这编程的过程中需要注意点什么啊,我的程序编译通过后总是得不到温度值,设了中断之后,发现DS18B20的复位程序(里面放了两个循环)出不来,感觉延时也是按照时序设置的,不知道哪里错了,请大家帮忙啊,谢谢啦~ 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
1条回答
zhizhuo
2019-03-26 02:41
void DS18B20_reset(void)            //DS18B20复位函数
{
   int i;
   char Exist=1;
                   //设置DS18B20存在标志
   while(Exist)    //DS18B20是否存在
   {
     while(Exist) //DS18B20是否存在
     {
     DQ=1;
     delay();  //1-WIRE总线置高2us准备写过程
     DQ=0;
     for(i=0;i<215;i++)
        {
           delay();
        }   //1-WIRE总线置低550us满足复位延长时间条件       
     DQ=1;   
     for(i=0;i<30;i++)//for(i=0;i<30;i++)
        {
           delay();
        }
        TRISA5=1;           //1-WIRE总线置高66us满足复位延长时间条件       
     Exist=DQ;                    //检测存在标志Exist=0,条件满足DS18B20存在继续下一步
      }
     
      for(i=0;i<197;i++)//for(i=0;i<197;i++)
        {
           delay();
        }
                                //延时500us,Exist消失,此时DQ已被上拉电阻置高
      Exist=~DQ;
      Exist=0;
                          //DQ置高,退出循环
    }
    TRISA5=0;
    DQ=1;                           //1-WIRE总线置高完成复位过程
}

一周热门 更多>