久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > DS18B20延時函數版

DS18B20延時函數版

作者: 時間:2016-11-30 來源:網絡 收藏
程序運行效果圖:



//晶振12MHZ 常溫下測量0--99.9度

本文引用地址:http://cqxgywz.com/article/201611/323912.htm

#include
#include
#define uchar unsigned char
#define uint unsigned int
sfr wdtrst=0xa6;
uchar code seg7[]={0x28, 0x7E, 0xA2, 0x62, 0x74, 0x61, 0x21, 0x7A, 0x20, 0x60}; //數碼管整數
sbit dec=P0^5;//數碼管小數位
sbit Dq=P3^4; //DS18B20讀寫口
sbit alarm=P3^3; //喇叭報警位
uint warning=0;//報警溫度變量
//-------------------
void rst() //看門狗系統復位函數晶振是12MHZ則看門狗自動復位時間為16ms
{
wdtrst=0x1e;
wdtrst=0xe1;
}
//----------------------------
void alarmstart()interrupt 3 //報警中斷子函數
{
if(warning>270)//溫度大于27度喇叭報警
{alarm=~alarm;}
TH1=0xff;
TL1=0x60;
TF1=0;
EA=1;
ET1=1;
}

//-----------------------------延時函數集---------------------
void delay10us() //延時10us
{
_nop_(); _nop_(); _nop_(); _nop_();
_nop_(); _nop_();
}
//----------
void delay610us() //延時610us
{
uchar i,j;
for(i=0;i<2;i++)
for(j=0;j<100;j++);
}

//----------
void delay34us() //延時34us
{
uchar i,j;
for(i=0;i<2;i++)
for(j=0;j<3;j++);
}
//----------
void delay(uint k) //常用延時函數
{
uchar i,j;
for(i=0;ifor(j=0;j<100;j++);
}

//-----------------DS18B20初始化函數----------
uchar init18b20()
{
uint k=0;
Dq=0;
delay610us(); //延時610us
Dq=1; //釋放總線
delay10us(); //延時10us
while(Dq==1) //18b20應答信號判斷是否超時
{
if(k<800)k++;
else return 1;
}
k=0;
while(Dq==0) //18b20是否釋放判斷
{
if(k<800)k++;
else return 2;
}
return 3; //啟動成功返回 3
}


上一頁 1 2 下一頁

關鍵詞: DS18B20延時函

評論


技術專區

關閉