基于Zigbee的无线医疗系统,用cc2530加z—stack协议加DS18B20

2020-01-27 11:38发布


求大神帮忙啊!
cc2530 时钟32M

DS18B20无法完成初始化啊!!!
求救命,我的代码如下


uint8  DS18B20_Init()           //DS18B20初始化/复位
{
  uint8 rest=1,i=3;
  while((0!=rest)&&(0!=(--i)))    //超时判断
{  
   SET_OUT();                     //设置IO口输出
   T_SENSOR=1;                    // ① 拉高
   asm("NOP");
   T_SENSOR=0;                    // ③ 拉低

   Delay_us(700);                 // ④ 延时480~960us
   T_SENSOR=1;                    // ⑤ 拉高
  
   SET_IN();                      //   IO方向为输入 DS18B20->CC2530
   Delay_us(50);                  //⑥ 等待T_SENSOR 变低(15~60us)
   asm("NOP");
   
   rest=T_SENSOR;                // rest=0 初始化成功,rest=1 失败
}  
  
  Delay_us(700);                 //⑦ 延时 至少480us
  SET_OUT();                     //设置IO口输出
  T_SENSOR=1;                    //⑧ 拉高
   
return (rest) ;
}

void  Delay_us(uint16 n)                 //延时us函数
{
while(n--);
}

是不是延时函数有问题,导致时序出问题!

用的IAR Embedded Workbench IDE 编译器

求赐延时函数!!!!!!!!!!

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。