📄 ds18b20.c
字号:
#include<reg52.h>
#include<intrins.h>
#include"DS18B20.h"
void ds18_init()
{
DQ=1;_nop_();
DQ=0;
delay15us(40);
DQ=1;
delay15us(6);
if(DQ) exist=0;
else exist=1;
delay15us(30);
DQ=1;
}
void wrds18_byte(uchar byte)
{
uchar i=8;
DQ=1;
do{
DQ=0;
// delay15us(1);
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
if(byte&0x01)
DQ=1;
else DQ=0;
delay15us(3);
byte>>=1;
DQ=1;
}while(--i);
}
uchar rdds18_byte(void)
{
uchar i=8,byte;
DQ=1; _nop_();
do{
DQ=0;
byte>>=1;
DQ=1;
delay15us(1);
if(DQ)
byte=(byte|0x80);
DQ=1;
delay15us(1);
}while(--i);
return(byte);
}
uint read_ds18(void)
{
uchar a1,a2;
uint b;
wrds18_byte(0xcc);
wrds18_byte(0xbe);
a2=rdds18_byte();
a1=rdds18_byte();
b=a1;
b<<=8;
b|=a2;
return(b);
}
void delay15us(uint t)
{
do{
_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();
}while(--t);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -