RSS

DS18B20的C51 程序

发布时间:2007-04-30 关键字: 程序 DQ void init18b20 wrwire ds18b20 uchar _nop_

sbit    DQ=P1^3;    /*温度检测*/
/*初始化ds18b20*/
void init18b20(void)
{
    DQ=0;
    del500us();
        DQ=1;
    delay50us();
    do{}while(DQ);
    do{}while(!DQ);
    del500us();
}
/*写ds18b20,i为操作码*/
void wrwire(uchar i)
{
    uchar j;
    for(j=0;j<8;j++)
    {
        DQ=0;
        delay10us();
        if(i%2==1)
            DQ=1;
        else
            DQ=0;
        delay80us();
        DQ=1;            /*master release bus*/
        del100us();
        i=i>>1;
    }
}
/*读ds18b20,返回读出数据*/
uint rdwire(void)
{
    uchar i;
    uint j=0;
        for(i=0;i<12;i++)
    {
        DQ=0;
                delay10us();
        DQ=1;
        _nop_();
        _nop_();
        if(DQ)
                    j=j+ercimi(i);
        DQ=1;
        del100us();
    }
        return(j);
}
void main()
{
    init18b20();
    wrwire(0Xcc);
    wrwire(0XBE);        /*read the temperature*/
    tem1=rdwire();
    init18b20();
}

最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册

外部连接