昨晚熬到2点,做了一个DS18B20的单总线,终于可以在一条总线上自动搜索ROM和读取多个温度了,不过有个Bug请大家帮忙看看

2019-07-21 01:34发布

昨晚熬到2点,做了一个DS18B20的单总线,终于可以在一条总线上自动搜索ROM和读取多个温度了,不过有个Bug请大家帮忙看看
Bug说明:
#define MAXNUM 5
在上面的宏定义中,MAXNUM是我定义的总线上最多挂多少个DS18B20的,但是我发现,当后面的数值小于等于4的时候都可以正常读
出ROM和温度值,当后面的
数值大于等于5的时候就不行了。大家帮帮忙。

编译环境:MDK5


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
20条回答
夜君莫笑
1楼-- · 2019-07-22 20:42
cloudsunny 发表于 2016-3-14 12:05
是循环判断除了问题。要对栈顶值进行初始化。我试过了,可以完全通过。
u8 DS18B20_SearchROM(u8 (*pID)[8 ...

大神,怎么改啊,我怎么试,在串口都不能显示温度,搜索不到DS18B20
小溪小溪溪
2楼-- · 2019-07-23 02:27
我也试过这个单总线,发现有一个现象,就是在进行序列匹配的时候不能发生中断,否则读出来的就是错误数据
阳光2260
3楼-- · 2019-07-23 08:13
楼主,我使用你的程序,单总线上只接一个DS18B20的话,返回个数也为0,这是什么原因啊?
另外,我主要是想检测单总线上有没有接DS18B20,请问有没有什么好的方法啊?
Acuity
4楼-- · 2019-07-23 10:07
 精彩回答 2  元偷偷看……
阳光2260
5楼-- · 2019-07-23 13:10
 精彩回答 2  元偷偷看……
Electronic
6楼-- · 2019-07-23 17:55
有可能是驱动能力的问题,强上拉试试,或者严格按照时序来操作

一周热门 更多>