新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 18b20測溫c51源程序

        18b20測溫c51源程序

        作者: 時間:2010-12-09 來源:網絡 收藏

        #include reg51.h>
        #includeintrins.h>

        本文引用地址:http://www.104case.com/article/173091.htm

        #define BUSY1 (DQ1==0)
        sbit DQ1 = P0^4;

        unsigned char idata TMP;
        unsigned char idata TMP_d;
        unsigned char f;
        void wr_ds18_1(char dat);
        unsigned char rd_ds18_1();

        /***************延時程序,單位us,大于10us*************/
        void time_delay(unsigned char time)
        {

        time=time-10;
        time=time/6;
        while(time!=0)time--;
        }


        /*****************************************************/
        /* reset ds */
        /*****************************************************/
        void ds_reset_1(void)
        {
        unsigned char idata count=0;
        DQ1=0;
        time_delay(240);
        time_delay(240);
        DQ1=1;
        return;
        }

        void check_pre_1(void)
        {
        while(DQ1);
        while(~DQ1);

        time_delay(30);
        }


        void read_ROM(void)
        {
        int n;
        ds_reset_1();
        check_pre_1();
        wr_ds18_1(0x33);
        for(n=0;n8;n++){ROM[n]=rd_ds18_1();}
        }


        /*****************************************************/
        /* Read a bit from 1820 位讀取 */
        /*****************************************************/
        bit tmrbit_1(void)
        {
        idata char i=0;
        bit dat;

        DQ1=0;_nop_();

        DQ1=1;

        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();


        dat = DQ1;

        time_delay(50);

        return dat;
        }


        /*****************************************************/
        /* read a bety from ds 字節讀取 */
        /*****************************************************/
        unsigned char rd_ds18_1()
        {
        unsigned char idata i,j,dat=0;
        for(i=1;i=8;i++)
        {
        j=tmrbit_1();
        dat=(j(i-1))|dat;
        }
        return dat;
        }


        /*****************************************************/
        /* write a bety from ds 寫字節 */
        /****************************************************/
        void wr_ds18_1(char dat)
        {
        signed char idata i=0;
        unsigned char idata j;
        bit testb;


        上一頁 1 2 下一頁

        關鍵詞: 源程序 c51 測溫 18b20

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 迁安市| 呼图壁县| 宜兰市| 黄浦区| 孟州市| 修文县| 清镇市| 天台县| 宿州市| 喜德县| 武强县| 武威市| 泉州市| 公安县| 内江市| 徐水县| 新民市| 赤壁市| 桑日县| 商都县| 高阳县| 胶南市| 盐池县| 伽师县| 隆尧县| 兰州市| 阿坝县| 太和县| 颍上县| 嵩明县| 大竹县| 丰城市| 安远县| 金寨县| 定西市| 湘乡市| 辽宁省| 贵德县| 乐东| 黄大仙区| 大庆市|