[AVR单片机] DS18B20序列号读取

[复制链接]
1144|3
 楼主| wh13651 发表于 2015-11-20 11:25 | 显示全部楼层 |阅读模式
求看一下这个程序,固定的两个18B20探头,读取序列号并且显示温度,结果总是显示-00.0625,怀疑是序列号读错了,但是找不到错误点了,求分析一下,谢谢了
 楼主| wh13651 发表于 2015-11-20 11:25 | 显示全部楼层
void ds18b20_search_ROM()
{
    unsigned char id_bit_number;
    unsigned char id_byte_number;
    unsigned char id_bit, cmp_id_bit;
    unsigned char value;
    unsigned i=0;
    unsigned j; //冲突次数
    unsigned m=0; //搜索完成一个器件
    unsigned ROM_bit=0;
    unsigned ROM_bit_number=0;
   
    // 搜索变量初始化
    id_bit_number = 0;   //ID 位数
    id_byte_number=0;
    id_bit=0;cmp_id_bit=0;
   
    for(j=0;j<2;j++)
    {
      while(ds18b20_init());
   
        ds18b20_write_date(0xF0);
        while(!((id_bit)&(cmp_id_bit)))
        {
         id_bit = ds18b20_read_bit();        //原码
         cmp_id_bit = ds18b20_read_bit();    //反码
         value=((id_bit<<1)|(cmp_id_bit));
         switch(value)
         {
         case 0x01 :                    //同为0
           {
             ROM_bit=0;      
               } break;
               
         case 0x10 :                    //同为1
           {
             ROM_bit=1;
            }  break;
            
         case 0x00 :                     //不同位
           {
              if(j==1)                    //
              {
                ROM_bit=1;
               }
               else
               {
                ROM_bit=0 ;
               }   
           }  break;
           
         case 0x11 : ROM_bit=2; break;
         }        
         
         if(ROM_bit==0)
         {
           ROM_LOT_ID[j][id_bit_number]&=(~(1<<i)); //置0
           ds18b20_write_bit(ROM_bit);
         }
         if(ROM_bit==1)
         {
           ROM_LOT_ID[j][id_bit_number]|=(1<<i);
           ds18b20_write_bit(ROM_bit);
         }
         if(ROM_bit==2)
         {
           id_bit=0;
           cmp_id_bit=0;
          }
         i++;
         ROM_bit_number++;
         if(i==8)
         {
          i=0;
          id_bit_number++;
          if((id_bit_number==8)&&(ROM_bit_number==65))
          {
           ROM_bit_number=0;
           id_bit_number=0;//搜索完一遍
           id_bit=0;cmp_id_bit=0;
           break;
           }
         }      
       }              
    }
}
hotpower 发表于 2017-5-14 10:14 来自手机 | 显示全部楼层
我正在看【HotPower超级CRC计算器(V1.23)】,分享给你,一起看吧! http://www.21ic.com/tools/HotWC3_V1.23.html
hotpower 发表于 2017-5-14 10:14 来自手机 | 显示全部楼层
我正在看【HotPower超级CRC计算器(V1.23)】,分享给你,一起看吧! http://www.21ic.com/tools/HotWC3_V1.23.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

42

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部