ds18b20读写

2019-07-15 13:34发布

ARM系统写了几天ds18b20的程序代码,最后仿真的时候没有温度显示,经过检测后觉得是对ds18b20的读写程序有问题,请问有人能帮忙解决下么void write_ds18b20(uint8 dat) //写数据
{
        uint8 i;
        IO0DIR|=DQ;       
        for(i=0;i<8;i++)
        {       
                 IO0CLR|=DQ;
                 delay_us(2);
                if(dat&0x01)
                {
                        IO0SET|=DQ;
                        delay_us(10);
                } else
                {       
                        IO0CLR|=DQ;
                        delay_us(10);
                }       
                delay_us(3);
                dat=dat>>1;
        }
                IO0SET|=DQ;
}
uint8 read_ds18b20()  //读数据
{
        uint i=0,readat=0;
        for(i=0;i<8;i++)
        {
                IO0DIR|=DQ;
                IO0CLR|=DQ;
                delay2us;    //1us
                readat>>=1;
                IO0SET|=DQ;        //置高
                IO0DIR&=(~DQ);  //设置端口输入,让ds18b20将数据传输到总线上
                if(IO0PIN&DQ)  readat|=0x80;  //主机开始采样
                delay_us(12);
        }       
        return readat;
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。