LM71使用读取问题

Other Parts Discussed in Thread: LM71

在使用LM71时,我写的驱动测试时发现只能读取到全0或者全1(开始的几次测试读到的都是全0,后来的测试中不知道为什么都读到的是全1),我不是很理解为什么我的代码不能正常运行,难道是我时序问题?

以下是我的部分代码:

u8 LM71_ReadByte()
{
    GPIO_PinModeSet(LM71_Port, LM71_SIO, gpioModeInputPullFilter, 0);
    u8 i = 0;
    u8 tmp = 0;
    u8 SDI;
    for (i = 0; i < 8; ++i) {
        GPIO_PinOutSet(LM71_Port, LM71_SC); //上升沿
        delay(100);
        SDI = (u8)GPIO_PinInGet(LM71_Port, LM71_SIO);
        tmp <<= 1;
        if (SDI) {
            ++tmp;
        }
        GPIO_PinOutClear(LM71_Port, LM71_SC); //下降沿
        delay(100);
    }
    return tmp;
}