ds18b20.c

来自「DB18B20测温度的protues仿真和源代码」· C语言 代码 · 共 70 行

C
70
字号
#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 + =
减小字号Ctrl + -
显示快捷键?