DS18B20问题总结(驱动代码)

①检查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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值