ds18b20.c

来自「在PROTEUS仿真实现」· C语言 代码 · 共 72 行

C
72
字号
#include<reg51.h>
#define uchar unsigned char
sbit dq=P1^7;
sbit led=P1^6;
void delay(uchar i)
{
  while(--i);
}
void init(void)
{
  uchar i=1;
  led=0;
  while(i)
  {
    dq=1;
    _nop_();
    _nop_();
    dq=0;
	delay(255);
	dq=1;
	delay(15);
	if(dq==0)i=0;
  }
  led=1;
}
void write(uchar i)
{
  uchar k;
  for(k=0;k<8;k++)
  {
    dq=1;
	_nop_();
	_nop_();
	dq=0;
    dq=i&0x01;
	delay(18);
	dq=1;
	i>>=1;
  }
}
uchar read(void)
{
  uchar i,j=0x00;
  for(i=0;i<8;i++)
  {
    dq=0;
	j>>=1;
	dq=1;
    if(dq)j|=0x80;
	delay(15);
  }
  return j;
}

uchar ds18b20(void)
{
  uchar i,j,k;
  init();
  write(0xcc);
  write(0x44);
  init();
  write(0xcc);
  write(0xbe);
  i=read();
  j=read();
  i>>=4;
  j&=0x07;
  j<<=4;
  k=i|j;
  return k;
}

⌨️ 快捷键说明

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