用
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;
}
一周热门 更多>