单片机18b20读不出温度

来源:百度知道 编辑:UC知道 时间:2024/06/08 03:54:43
我写的C程序读不出温度,大侠看看什么问题?
#include<reg51.h>
#include<intrins.h>

#define uchar unsigned char
#define uint unsigned int
#define BUSY1 (port==0)

sbit port = P2^6;

void time_delay(uchar time)
{

time=time-10;
time=time/6;
while(time!=0)time--;
}

void ds_reset_1(void)
{
unsigned char idata count=0;
port=0;
//延时约530us
time_delay(230);
time_delay(230);
time_delay(230);
time_delay(230);
time_delay(110);
port=1;
return;
}

void check_pre_1(void)
{

while(port);
while(~port);
//延时240us
time_delay(230);
time_delay(230);
}
void WriteByte (uchar wr) //单字节写入
{
uchar i;
for (i=0;i<8;i++)
{
port = 0;
_nop_();
_nop_();
port=wr&0x01;
//延时60us
time_delay(110);
_nop_();

//使用11.0592M
#define TMDAT P3_7
unsigned int i;
unsigned char n1,n2,n3;//依次为十位、个位、一位小数
void tmreset (void)
{
TMDAT = 0;
i = 120;
while (i>0) i--;
TMDAT = 1;
i = 2;
while (i>0) i--;
}

void tmpre (void)
{
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 = 4; while (i>0) i--;
return (dat);
}

unsigned char tmrbyte (void)
{
unsigned char i,j,dat;
dat = 0;
for (i=1;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)