|
本帖最后由 zzh985514474 于 2019-7-4 13:05 編輯
①DS18B20傳感器初始化程序
bit Get18B20Ack()
{
bit ack;
EA = 0; //禁止總中斷
IO_18B20 = 0; //產(chǎn)生 500us 復(fù)位脈沖
DelayX10us(50);
IO_18B20 = 1;
DelayX10us(6); //延時(shí) 60us
ack = IO_18B20; //讀取存在脈沖
while(!IO_18B20); //等待存在脈沖結(jié)束
EA = 1; //重新使能總中斷
return ack;
}
②
uchar Ds18b20Init()
{
uchar i;
DSPORT = 0; //將總線拉低480us~960us
i = 70;
while(i--);//延時(shí)642us
DSPORT = 1; //然后拉高總線,如果DS18B20做出反應(yīng)會(huì)將在15us~60us后總線拉低
i = 0;
while(DSPORT) //等待DS18B20拉低總線
{
Delay1ms(1);
i++;
if(i>5)//等待>5MS
{
return 0;//初始化失敗
}
}
return 1;//初始化成功
}
第一個(gè) 為什么第二個(gè)程序不要要定義ACK之類的 第二個(gè) 第二個(gè)程序麻煩對(duì)照時(shí)序圖詳細(xì)講下每步的意思
|
|