標(biāo)題: 單片機(jī)程序 為什么在這里必須把ds18b20釋放掉,不釋放掉接受的y信號“1”不還是可... [打印本頁]

作者: 小白大佬輕點噴    時間: 2023-1-31 18:34
標(biāo)題: 單片機(jī)程序 為什么在這里必須把ds18b20釋放掉,不釋放掉接受的y信號“1”不還是可...
//接受一個位
unsigned char onewire_receive()
{
        int i;
        unsigned char Bit;
        DS18B20_DQ=0;
        i = 2;while (--i);//延遲5微秒
        DS18B20_DQ=1;//為什么在這里必須把ds18b20釋放掉,不釋放掉接受的y信號“1”不還是可以正常接受嗎?在我的理解里,請問各位可以給個講解么
        i = 2;while (--i);//延遲5微秒
        Bit=DS18B20_DQ;
        i = 24;while (--i);//延遲50微秒
        return Bit;
}
//ds18b20讀一個位的時序圖奉上







作者: adject    時間: 2023-1-31 19:57
黑線表示主機(jī)拉低總線,灰線是18b20拉低總線,單主機(jī)拉低總線一定后,釋放總線然后等待18b20,可以判斷18
作者: adject    時間: 2023-1-31 19:58
B20是否存在,
作者: lkc8210    時間: 2023-1-31 22:17
傳統(tǒng)51單片機(jī)的準(zhǔn)雙向IO結(jié)構(gòu)
準(zhǔn)雙向IO置1時是弱上拉,只能輸出很小的電流(150~270uA),外部容易拉低
準(zhǔn)雙向IO置0時是對地短路,能接受比較大的電流(6~20mA),外部很難拉高
所以要讀取外部信號前要把IO置1
令外部電路有必要時可以拉低電平

作者: 小白大佬輕點噴    時間: 2023-2-1 11:46
lkc8210 發(fā)表于 2023-1-31 22:17
傳統(tǒng)51單片機(jī)的準(zhǔn)雙向IO結(jié)構(gòu)
準(zhǔn)雙向IO置1時是弱上拉,只能輸出很小的電流(150~270uA),外部容易拉低
準(zhǔn)雙 ...

感謝您的回答




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1