关于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
}
}
}
希望各路高手给解释解释。
{
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。 谢谢今日电子。
