📄 温度测试.c
字号:
#include<reg51.h>
typedef unsigned char uchar;
sbit TMDAT=P3^6;
void dmsec(unsigned int count)
{
unsigned int i;
while(count--)
{
for(i=0;i<125;i++){}
}
}
void tmreset(void)
{
unsigned int i;
TMDAT=0;
i=103;
while(i>0)i--;
TMDAT=1;
i=4;
while(i>0)i--;
}
void tmpre(void)
{
unsigned int 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=8;
while(i>0)i--;
return(dat);
}
unsigned char tmrbyte(void)
{
unsigned char i,j,dat;
dat=0;
for(i=0;i<=8;i++)
{
j=tmrbit();
dat=(j<<7)|(dat>>1);
}
return(dat);
}
void tmwbyte(unsigned char 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(void)
{
tmrest();
tmpre();
dmsec(1);
tmwbyte(0xcc);
tmwbyte(0x44);
}
unsigned char tmrtemp(void)
{
unsigned char a,b,y1,y2,y3;
tmrest();
tmpre();
dmsec(1);
tmwbyte(0xcc);
tmwbyte(0xbe);
a=tmrbyte();
b=tmrbyte();
y1=a>>4;
y2=b<<4;
y3=y1|y2;
return(y3);
}
void main(void)
{
unsigned int i;
unsigned char last;
uchar lsb,msb;
dmsec(1);
tmstart();
dmsec(1000);
last=tmrtemp();
msb=last/0x0a+0x30;
lsb=last%0x0a+0x30;
while(1){}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -