标题: 单片机程序 为什么在这里必须把ds18b20释放掉,不释放掉接受的y信号“1”不还是可... [打印本页]

作者: 小白大佬轻点喷    时间: 2023-1-31 18:34
标题: 单片机程序 为什么在这里必须把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
黑线表示主机拉低总线,灰线是18b20拉低总线,单主机拉低总线一定后,释放总线然后等待18b20,可以判断18
作者: adject    时间: 2023-1-31 19:58
B20是否存在,
作者: lkc8210    时间: 2023-1-31 22:17
传统51单片机的准双向IO结构
准双向IO置1时是弱上拉,只能输出很小的电流(150~270uA),外部容易拉低
准双向IO置0时是对地短路,能接受比较大的电流(6~20mA),外部很难拉高
所以要读取外部信号前要把IO置1
令外部电路有必要时可以拉低电平

作者: 小白大佬轻点喷    时间: 2023-2-1 11:46
lkc8210 发表于 2023-1-31 22:17
传统51单片机的准双向IO结构
准双向IO置1时是弱上拉,只能输出很小的电流(150~270uA),外部容易拉低
准双 ...

感谢您的回答




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1