①检查DS18B20是否正常工作
初始化问题
如何检测初始化问题
可以通过在初始化返回的标志位,结合LED小灯或者串口,进而判断是否返回正确的标志位
bit ds_init()
{
bit i;
DQ = 1;
_nop_();
DQ = 0;
delay_us(500); //拉低总线499.45us 挂接在总线上的18B20将会全部被复位
DQ = 1; //释放总线(检测到上升沿)
delay_us(38); //延时37.95us 等待18B20发回存在信号(存在脉冲)
i = DQ;
delay_us(142); //141.95us
DQ = 1;
_nop_();
return (i); //返回一个存在信号
}
DS18B20初始化代码
可以通过判断函数返回的i值来判断DS18B20是否正常工作
主机给到DS18B20一个复位脉冲
再由DS18b20这个从机,将数据线DQ进行拉低
也就是说,如果返回i值为0,即DS18B20正常响应
void main(void)
{
WTST = 0; //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
EAXSFR(); //扩展SFR(XFR)访问使能
CKCON = 0; //提高访问XRAM速度
GPIO_config();
bit flag; //调试ds18b20初始化是否正常标志位
LED=1; //默认LED熄灭
while(1)
{
flag =ds_init(); //检查DS18B20初始化
if(flag==0)