使用DS18B20测温,C8051F500 该如何配置IO口

[复制链接]
5263|8
 楼主| shaney1985 发表于 2011-6-2 17:10 | 显示全部楼层 |阅读模式
利用C8051F500 的P3.1口连接到DS18B20的2号引脚(设为DQ),其余两个脚分别接地和VCC,VCC与P3.1间接一个上拉电阻,单步调试初始化程序,在示波器上看到了低电平的存在信号,但是presence = DQ 发现presence 并未置位0,猜想可能是IO口配置的问题,配置了半天发现还是不行,presence 没有变化,有谁也碰到过这个问题吗?应该如何配置这个P3.1引脚使得它既可作输入又可作输出?

评分

参与人数 1威望 +1 收起 理由
胡帮敏aaa + 1 很好

查看全部评分

ayb_ice 发表于 2011-6-2 17:17 | 显示全部楼层
复位状态即可
 楼主| shaney1985 发表于 2011-6-2 17:26 | 显示全部楼层
谢谢,我来试下。
 楼主| shaney1985 发表于 2011-6-2 17:42 | 显示全部楼层
不行,presence值仍旧没有变化
gx_huang 发表于 2011-6-2 18:21 | 显示全部楼层
首先配置为GPIO,再配置为OD输出,要读入数据时,先DQ=1,再读DQ管脚的值。
 楼主| shaney1985 发表于 2011-6-2 19:18 | 显示全部楼层
还是不行,DEBUG 时观察DQ的值没有任何变化,一直是0,
具体管教配置和初始化函数如下,请大家指点一下,晶振是24MHZ

SBIT(DQ, SFR_P3, 1);

P3.1口初始化配置
P3SKIP  |= 0x02;
P3MDOUT &= ~0x02;

DS18B20初始化函数
bit Init_DS18B20(void)
{           
         //P3MDOUT &= ~0x02;
      DQ = 1 ;      //DQ复位
    Delay(19) ;    //稍做延时

     DQ = 0 ;      //单片机将DQ拉低
     Delay(1500) ;   //精确延时 大于 480us

         
     DQ = 1 ;   //拉高总线
     Delay(19) ;         //延时约76us
     presence = DQ ;    //如果为0则初始化成功   为1则初始化失败
     Delay(1500) ;
     DQ = 1 ;
     
    return(presence) ; //返回信号,0=presence,1= no presence
}
感觉问题还是出在IO口做输出或输入的配置上
月下狂想曲 发表于 2011-6-2 22:11 | 显示全部楼层
数这口不必配置P3SKIP  |= 0x02;
ayb_ice 发表于 2011-6-3 08:26 | 显示全部楼层
我看是人不行
 楼主| shaney1985 发表于 2011-6-3 10:03 | 显示全部楼层
是啊,目前能力有限,只能慢慢来了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

15

帖子

0

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