ds1822.c
来自「51系列单片机控制DS1822器件的C语言程序」· C语言 代码 · 共 92 行
C
92 行
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit tmdat=P3^3;
void dmsec(uint count) //delay
{ uint i;
while(count--)
for(i=0;i<125;i++)
;
}
void tmreset(viod)
{uint i;
tmdat=0;
i=104;while(i>0) i--;
tmdat=1;
i=4; while(i>0) i--;
}
void tmpre(void)
{ uint i;
while(tmdat);
while(~tmdat);
i=4;while(i>0) i--;
}
bit tmrbit(void)
{ unsigned int i;
bit dat;
tmdat=0; i++;
tmdat=1; i++; i++;
dat=tmdat;
i=9; while(i>0) i--;
return(dat);
}
unsigned char tmrbyte()
{ unsigned char i,j,dat;
dat=0;
for(i=1;i<=8;i++)
{j=tmrbit();
dat=(j<<7)|(dat>>1);
}
return(dat);
}
void tmwbyte(uchar dat)
{ unsigned int i;
unsigned char j;
bit testb;
for(j=1; j<=8;j++)
{ testb=dat & 0x01;
dat=dat>>1;
if(testb)
{tmdat=0; i++;i++;
tmdat=1;
i=8;while(i>0) i--;
}
else
{tmdat=0;
i=8;while(i>0) i--;
tmdat=1;
i++; i++;
}
}
}
// ------------------------------------
void tmstart()
{ tmrest();
tmpre();
dmsec(2);
tmwbyte(0xcc); //skip rom
tmwbyte(0x44); // convert
}
unsigned char tmrtemp()
{ unsigned char a,b,y1,y2,y3;
tmreset();
tmpre();
dmsec(1);
tmwbyte(oxcc);
tmwbyte(oxbe);
a=tmrbyte(); //l
b=tmrbyte(); // msb
y1=a>>4;
y2=b<<4;
y3=y1|y2;
return(y3);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?