微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 关于18B20的ROM搜索函数的一些问题

关于18B20的ROM搜索函数的一些问题

时间:10-02 整理:3721RD 点击:
小弟菜鸟,最近再弄这个18B20这块,搜索ROM码,我原来在论坛里面下过一份有关程序,看的时候一些问题不懂,时间一长,给忘了从哪下得了。其他就不贴了,看不懂的程序如下:void dis_readnumber()      
{
uchar i,temp;
init_ds18b20();
write_ds18b20(0x33); //允许只有一个18B20的前提下,通过总线直接搜索ROM码
for(i=0;i<8;i++)
{
  save_number[i]=read_ds18b20();  //保存搜索到的序列号
}
    write_com(0x80);        
for(i=0;i<8;i++)
{
  temp=save_number[i]>>4;   
  if(temp<10)
  {
   write_dat(0x30+temp);
  }
  else
  {
    write_dat(0x37+temp);        //问题1:大于10为什么是0X37
  }
  temp=save_number[i]&0x0f;   
  if(temp<10)
  {
   write_dat(0x30+temp);
  }
  else
  {
    write_dat(0x37+temp);  //同问题1
  }
}
}
希望各路高手给解释解释。

   write_dat(0x37+temp);//大于10的数字显示ABCD等

好东西,我正愁这个不清楚呢?

取ASCII码呢

是这样的,谢谢。

因为阿拉伯数字和大写字母中间夹了7个其他字符,所以是0X37。   谢谢今日电子。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top