ad7705读取数据的程序为什麽不行?

2020-02-05 08:47发布

/* 从AD7705读一个字 */  
uint ReadWord7705()  
{
    uchar i;  
    uint x ;  
    AdClk=1;  
    for(i=0;i<16;i++)
    {
        AdClk=0;
        x<<=1;
        Wait7705(AD_CLK_WIDTH);         
        if(AdDout)  
        x|=0x01;  
        AdClk=1;  
        Wait7705(AD_CLK_WIDTH);
        
    }  
    return x;
}
这样的程序不行。实际采到的数据的最高位改为1了。就是如果数据是0X0123,变成0X8123了。
/* 从AD7705读一个字 */  
uint ReadWord7705()  
{
    uchar i;  
    uint x ;  
    AdClk=1;  
    for(i=0;i<16;i++)
    {
        AdClk=0;  
        Wait7705(AD_CLK_WIDTH);         
        if(AdDout)  
        x|=0x01;  
        AdClk=1;  
        Wait7705(AD_CLK_WIDTH);
        x<<=1;
    }  
    return x;
}
这样是正常的,
搞不明白。向大家请教。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。