⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ds1820.c

📁 DS1820源程序,已经测试通过,可放心使用.供给需要的朋友
💻 C
字号:
#include "reg51.h"
#include "intrins.h"

sbit DQ = P2^7;

void delay (unsigned int us)
{
	unsigned int s;
	for (s = 0; s < us; s++);
}

unsigned char ow_reset(void)
{
	unsigned char presence;
	
	DQ = 0; //pull DQ line low
	delay(29); // leave it low for 480μs
	
	DQ = 1; // allow line to return high
	delay(3); // wait for presence
	
	presence = DQ; // get presence signal
	delay(25); // wait for end of timeslot
	
	return(presence); // presence signal returned
} // presence = 0, no part = 1

unsigned char read_bit(void)
{
	unsigned char i;
	
	DQ = 0; // pull DQ low to start timeslot
	DQ = 1; // then return high
	
	for (i = 0; i < 3; i++); // delay 15μs from	start of timeslot
	
	return(DQ); // return value of DQ line
}

void write_bit(unsigned char bitval)
{
	DQ = 0; // pull DQ low to start timeslot
	
	if(bitval==1) DQ =1; // return DQ high if write 1
	delay(5);// hold value for remainder of timeslot
	
	DQ = 1;
}

unsigned char read_byte(void)
{
	unsigned char i;
	unsigned char value = 0;
	
	for( i = 0; i < 8; i++)
	{
		if( read_bit() )value|=0x01<<i;
		delay(6);
	}
	return(value);
}

void write_byte(char val)
{
	unsigned char i;
	unsigned char temp;
	
	for (i = 0; i < 8; i++) // writes byte, one bit at a time
	{
		temp = val>>i; // shifts val right ‘i’ spaces
		temp &= 0x01; // copy that bit to temp
		write_bit(temp); // write bit in temp into
	}
	
	delay(5);
}

/*
void main(void)
{
	unsigned char cTh,cTl;
	
	while(1)
	{
		ow_reset();
		
		write_byte(0xcc);
		
		write_byte(0x44);
		
		ow_reset();
		
		write_byte(0xcc);
		
		write_byte(0xbe);
		
		cTl=read_byte();
		
		cTh=read_byte();

		_nop_();

		_nop_();

	}
}

*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -