孤独stranger 发表于 2013-7-20 11:37:17

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

{:cry:}
求大神帮忙啊!
cc2530 时钟32M

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


uint8DS18B20_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) ;
}

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

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

用的IAR Embedded Workbench IDE 编译器

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

孤独stranger 发表于 2013-7-20 12:56:58

有没有可能是中断,中断延长了延时!!!
页: [1]
查看完整版本: 基于Zigbee的无线医疗系统,用cc2530加z—stack协议加DS18B20