>>>在线充值<<<
【必读】通信广角各点值说明一级士官及以上在这领广角币网上购买广角币,实时充值网上支付实时获取广角币教程!!!
【跟帖有奖】挣取广角币完全指南! 这里领取每天赠送的4广角币 华为无线培训课程通信广角08年精华内容大集合
发新话题
打印

关于DS18B20的温度采样原程序(C)(转),编译通过,很好用

[标题]关于DS18B20的温度采样原程序(C)(转),编译通过,很好用

精华全集  冲广角币  获取广角币的更多方法

#define uchar unsigned char
#define  uint  unsigned int
#include<reg51.h>
#include <intrins.h> // _nop_()function

#define NOP _nop_();_nop_();_nop_()

sbit PORT_BIT_1820=P1^2;
/**********************************/
void wr_1820(uchar  val);
float get_tmpr(void);
void init_1820(void);
void wr_1820(uchar val);
float rd_1820(void);
void delay1(uchar t);
void start(void);

//********************************************
void delay1(uchar t)
{
   uchar i;
   for (i=0;i<t;i++)
         {
         _nop_();
         }

}
//********************************************
void start(void)
{
   init_1820();
wr_1820(0xcc);
        wr_1820(0x44);
  }
float get_tmpr(void)
{ float tmpr;
uchar  cnt,i;
  cnt=0;
ag: EA=0;
init_1820();
wr_1820(0xcc);
        wr_1820(0x44);
        //delay1(250);
        init_1820();
        wr_1820(0xcc);
        wr_1820(0xbe);
tmpr=rd_1820();
init_1820();
wr_1820(0xcc);
  wr_1820(0x44);   /* start convert */
EA=1;
if (tmpr<-10.0) tmpr=25.0;
   return tmpr;
}

void init_1820(void)
{ uchar  i,j;
  PORT_BIT_1820=1;       //1.6us
   PORT_BIT_1820=0; /* 1--8+7us */
for(i=0;i<100;i++);/* delay 400--960us */  //300us
PORT_BIT_1820=1;
for(i=0;i<200;i++)  /* delay 15--60us */
    { if (PORT_BIT_1820==0) break;}
for(i=0;i<=200;i++)
    { if (PORT_BIT_1820==1)  break;

     }
for(i=0;i<60;i++); /* delay 480us */
}

void wr_1820(uchar  val)
{
  uchar i,j;
   PORT_BIT_1820=1;  //1.6us
   NOP;              //3.6us
for (j=0;j<8;j++)
   { PORT_BIT_1820=0;
     NOP;
            NOP;  /* delay 5us  */
     if ((val&0x01)==1)
                     PORT_BIT_1820=1;
      else
                     PORT_BIT_1820=0;
     for(i=0;i<6;i++);    /* delay 56 us */   //20.6us
     PORT_BIT_1820=1;
     val=val>>1;
   }
}

float rd_1820(void)
{ uchar  j,i,k,tt[9],vv;
  float tmpr;
  vv=0;
  for(k=0;k<9;k++)
    {  for(j=0;j<8;j++)
      { PORT_BIT_1820=0;
      NOP;NOP;NOP;NOP;
      PORT_BIT_1820=1;
      vv=vv>>1;
      if(PORT_BIT_1820) vv=vv|0x80;
      for(i=0;i<6;i++);/*delay 120 us */
            PORT_BIT_1820=1;
          }
      tt[k]=vv;
     }
   i=tt[1]&0xf8;
   if( (i!=0)&&(i!=0xf8)) return -100.0;

   tmpr=tt[1]*256.0;
   tmpr=(tmpr+tt[0])/16.0;
   if(tmpr>100.0 ) return -100.0;
   return  tmpr;
}
/**********************************/

//************************************
main()
{
float tt;
uchar ds[8],i;
init_1820();
wr_1820(0x33);
start();
tt=get_tmpr();

  _nop_();
}




本贴地址:http://bbs.tong-xin.com/viewthread.php?tid=19411&fromuid=0
点击复制,把本帖地址粘贴到MSN/QQ/邮件/网络上给朋友分享,即可获得广角币!
发新话题