有关atmega128的DS2431数据读回全是1的问题

2019-07-15 12:24发布

最近做了一个ATMEGA128单片机的DS2431芯片的读写,不知道为什么我读到的数全是1,而且我检查出来  是复位时没有检测到拉低信号,我是按照DATASHEET上的时序写的,时间长度我也用示波器勾过了,在它的时序范围内。请大神帮忙检查一下哪里出了问题。
复位程序:
//1-Wire器件复位,并检查应答;有应答返回0,无应答返回1     
unsigned char Reset(void)   
{   
    DS_DQ_OUT;          //设置端口为输出
        DS_DQ1;   
    NOP();   
    DS_DQ0;             //复位低脉冲保持
    delay1_nus(600);   //延时     530us
    DS_DQ1;             //释放总线
    delay1_nus(70);  //延时64us后读应答
    DS_DQ_IN;           //设置端口为输入
    if(DS_DQ)           //判断wire状态  
    {   
        return(1);   
    }   
    else   
    {   beep();         //设置蜂鸣器检查程序是否运行到这里,结果蜂鸣器并没有响
                delay1_nus(500);     //延时450us
        return(0);
    }      
}  

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