请教多个IO口接多个DS18B20的程序问题。

2020-01-30 13:45发布

我开始用单片机的P1.0口接了一个DS18B20,用单片机读出然后用数码管显示出来,都很正常,部分程序代码如下。(部分省略没写出来)
#include<intrins.h>
........
......
sbit DQ=P1^0;
......

void reset()
{  do{
       DQ=0;
       time500();//  延时500微妙程序
       DQ=1;
       time60();//延时60微妙程序
      }
     while(DQ!=DQ);
     DQ=1;


}
..........
....
  省略其他程序...
.....
uchar  readtemp(void)
{
   reset();
   time500();
   writebyte(0xCC);
   writebyte(0x44);
   rest();
  time500();
  writebyte(0xCC);
  writebyte(0xBE);
  c[1]=readbyte();
  c[0]=readbyte();
return (c[2]);
}
实验完全正确,能准确读出温度并显示,但当我在做如下修改时就不行了
sbit temp1=P1^0;
sbit temp2=P1^1;
....
main()
{
   DQ=temp;
  readtemp();
  ......

}

这样修改后就不能读出温度了,请各位大虾指教指教如何修改。难道每多加一个DS18B20就要多重复写一遍代码?(不采用一个IO口挂多个DS18B20的方式)
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
lmly
1楼-- · 2020-01-30 19:14
是 main()
{

    DQ=temp1;
     readtemp();
}
lmly
2楼-- · 2020-01-30 20:40
请会的朋友指教一下!
lmly
3楼-- · 2020-01-31 00:47
没人会么?
lmly
4楼-- · 2020-01-31 06:17
是这个问题太难,目前没有人知道还是太简单大家都不屑一回啊?
lmly
5楼-- · 2020-01-31 11:01
 精彩回答 2  元偷偷看……
amazing030
6楼-- · 2020-01-31 16:51
你 Reset函数里面有没有改DQ

一周热门 更多>