在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > ds18b20c程序與匯編程序

            ds18b20c程序與匯編程序

            作者: 時間:2012-06-23 來源:網(wǎng)絡 收藏

            ds18b20 c

            本文引用地址:http://www.biyoush.com/article/171250.htm

            //DS1820 C51 子
            //這里以11.0592M晶體為例,不同的晶體速度可能需要調(diào)整延時的時間
            //sbit DQ =P2^1;//根據(jù)實際情況定義端口

            typedef unsigned char byte;
            typedef unsigned int word;

            //延時
            void delay(word useconds)
            {
            for(;useconds>0;useconds--);
            }

            //復位
            byte ow_reset(void)
            {
            byte presence;
            DQ = 0; //pull DQ line low
            delay(29); // leave it low for 480us
            DQ = 1; // allow line to return high
            delay(3); // wait for presence
            presence = DQ; // get presence signal
            delay(25); // wait for end of timeslot
            return(presence); // presence signal returned
            } // 0=presence, 1 = no part

            //從 1-wire 總線上讀取一個字節(jié)
            byte read_byte(void)
            {
            byte i;
            byte value = 0;
            for (i=8;i>0;i--)
            {
            value>>=1;
            DQ = 0; // pull DQ low to start timeslot
            DQ = 1; // then return high
            delay(1); //for (i=0; i3; i++);
            if(DQ)value|=0x80;
            delay(6); // wait for rest of timeslot
            }
            return(value);
            }

            //向 1-WIRE 總線上寫一個字節(jié)
            void write_byte(char val)
            {
            byte i;
            for (i=8; i>0; i--) // writes byte, one bit at a time
            {
            DQ = 0; // pull DQ low to start timeslot
            DQ = val0x01;
            delay(5); // hold value for remainder of timeslot
            DQ = 1;
            val=val/2;
            }
            delay(5);
            }

            //讀取溫度
            char Read_Temperature(void)
            {
            union{
            byte c[2];
            int x;
            }temp;

            ow_reset();
            write_byte(0xCC); // Skip ROM
            write_byte(0xBE); // Read Scratch Pad
            temp.c[1]=read_byte();
            temp.c[0]=read_byte();
            ow_reset();
            write_byte(0xCC); //Skip ROM
            write_byte(0x44); // Start Conversion
            return temp.x/2;
            }

            ds18b20:

            程序僅適合單個DS18B20和51單片機的連接,晶振為12MHZ左右
            DQ:DS18B20的數(shù)據(jù)總線接腳
            FLAG1:標志位,為1時表示檢測到DS18B20
            TEMPER_NUM:保存讀出的溫度數(shù)據(jù)
            TEMPER_LEQU36H
            TEMPER_HEQU35H

            DQBITP1.7

            ; DS18B20初始化程序
            ;//*****************************************//
            INIT_1820:
            SETBDQ
            NOP
            CLRDQ
            MOVR0,#06BH
            TSR1:
            DJNZR0,TSR1; 延時
            SETBDQ
            MOVR0,#25H
            TSR2:
            JNBDQ,TSR3
            DJNZR0,TSR2
            LJMPTSR4; 延時
            TSR3:
            SETBFLAG1; 置標志位,表示DS1820存在
            LJMPTSR5
            TSR4:
            CLRFLAG1; 清標志位,表示DS1820不存在
            LJMPTSR7
            TSR5:
            MOVR0,#06BH
            TSR6:
            DJNZR0,TSR6; 延時
            TSR7:
            SETBDQ
            RET
            ;//*****************************************//

            ; 重新寫DS18B20暫存存儲器設定值
            ;//*****************************************//
            RE_CONFIG:
            JBFLAG1,RE_CONFIG1; 若DS18B20存在,轉RE_CONFIG1
            RET
            RE_CONFIG1:
            MOVA,#0CCH; 發(fā)SKIP ROM命令
            LCALLWRITE_1820
            MOVA,#4EH; 發(fā)寫暫存存儲器命令
            LCALLWRITE_1820
            MOVA,#00H; TH(報警上限)中寫入00H


            上一頁 1 2 3 下一頁

            關鍵詞: 程序 匯編 ds18b20c

            評論


            相關推薦

            技術專區(qū)

            關閉