微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 新人问DS18B20时序

新人问DS18B20时序

时间:10-02 整理:3721RD 点击:
最近看了看DS18B20的手册,也有对应的程序。可是有些不理解它的时序,从而程序也有些不太懂。
这是我在手册里的截图,写的时序我看明白了,可读的不是很懂。在看程序的时候会现有一个低脉冲。拉低后又拉高之后再读取数据,这是为什么?时序图上也没有那个低脉冲啊?
附上 读的程序
unsigned char Read18B20()
{
        unsigned char dat;
        unsigned char mask;
        EA = 0;
        for(mask=0x01; mask!=0; mask<<=1)
        {
                IO_18B20 = 0;
                _nop_();
                _nop_();
                IO_18B20 = 1;
                _nop_();
                _nop_();
                if(!IO_18B20)
                        dat &= ~mask;
                else
                        dat |= mask;
                DelayX10us(6);
        }
        EA = 1;
        return dat;
}


   for(mask=0x01; mask!=0; mask<<=1)
        {
                IO_18B20 = 0;   //这里拉低,出现下降沿,通知18B20准备往外输出数据,
                _nop_();
                _nop_();
                IO_18B20 = 1;  //这里拉高,把数据总线让出,准备接收18B20的数据。看看18B20到底是怎么输出的。是维持高电平,还是拉低数据线。
                _nop_();
                _nop_();
                if(!IO_18B20)
                        dat &= ~mask;
                else
                        dat |= mask;
                DelayX10us(6);
        }
        EA = 1;

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top