打印

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

[复制链接]
4031|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值仍旧没有变化

使用特权

评论回复
5
gx_huang| | 2011-6-2 18:21 | 只看该作者
首先配置为GPIO,再配置为OD输出,要读入数据时,先DQ=1,再读DQ管脚的值。

使用特权

评论回复
6
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口做输出或输入的配置上

使用特权

评论回复
7
月下狂想曲| | 2011-6-2 22:11 | 只看该作者
数这口不必配置P3SKIP  |= 0x02;

使用特权

评论回复
8
ayb_ice| | 2011-6-3 08:26 | 只看该作者
我看是人不行

使用特权

评论回复
9
shaney1985|  楼主 | 2011-6-3 10:03 | 只看该作者
是啊,目前能力有限,只能慢慢来了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

15

帖子

0

粉丝