在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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) > 設(shè)計應(yīng)用 > DS18b20和51單片機連接的匯編程序

            DS18b20和51單片機連接的匯編程序

            作者: 時間:2013-01-15 來源:網(wǎng)絡(luò) 收藏

            僅適合單個DS18B20和的連接,晶振為12MHZ左右
            DQ:DS18B20的數(shù)據(jù)總線接腳
            FLAG1:標(biāo)志位,為"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; 置標(biāo)志位,表示DS1820存在
            LJMPTSR5
            TSR4:
            CLRFLAG1; 清標(biāo)志位,表示DS1820不存在
            LJMPTSR7
            TSR5:
            MOVR0,#06BH
            TSR6:
            DJNZR0,TSR6; 延時
            TSR7:
            SETBDQ
            RET
            ;//*****************************************//

            ; 重新寫DS18B20暫存存儲器設(shè)定值
            ;//*****************************************//
            RE_CONFIG:
            JBFLAG1,RE_CONFIG1; 若DS18B20存在,轉(zhuǎn)RE_CONFIG1
            RET
            RE_CONFIG1:
            MOVA,#0CCH; 發(fā)SKIP ROM命令
            LCALLWRITE_1820
            MOVA,#4EH; 發(fā)寫暫存存儲器命令
            LCALLWRITE_1820
            MOVA,#00H; TH(報警上限)中寫入00H
            LCALLWRITE_1820
            MOVA,#00H; TL(報警下限)中寫入00H
            LCALLWRITE_1820
            MOVA,#1FH; 選擇9位溫度分辨率
            LCALLWRITE_1820
            RET
            ;//*****************************************//

            ; 讀出轉(zhuǎn)換后的溫度值
            ;//*****************************************//
            GET_TEMPER:
            SETBDQ; 定時入口

            LCALLINIT_1820
            JBFLAG1,TSS2
            RET; 若DS18B20不存在則返回
            TSS2:
            MOVA,#0CCH; 跳過ROM匹配
            LCALLWRITE_1820
            MOVA,#44H; 發(fā)出溫度轉(zhuǎn)換命令
            LCALLWRITE_1820

            LCALLINIT_1820
            MOVA,#0CCH; 跳過ROM匹配
            LCALLWRITE_1820
            MOVA,#0BEH; 發(fā)出讀溫度命令
            LCALLWRITE_1820
            LCALLREAD_1820
            MOVTEMPER_NUM,A; 將讀出的溫度數(shù)據(jù)保存
            RET
            ;//*****************************************//

            ; 讀DS18B20的程序,從DS18B20中讀出一個字節(jié)的數(shù)據(jù)
            ;//*****************************************//
            READ_1820:
            MOVR2,#8
            RE1:
            CLRC
            SETBDQ
            NOP
            NOP
            CLRDQ
            NOP
            NOP
            NOP
            SETBDQ
            MOVR3,#7
            DJNZR3,$
            MOVC,DQ
            MOVR3,#23
            DJNZR3,$
            RRCA
            DJNZR2,RE1
            RET
            ;//*****************************************//

            ; 寫DS18B20的程序
            ;//*****************************************//
            WRITE_1820:
            MOVR2,#8
            CLRC
            WR1:
            CLRDQ
            MOVR3,#6
            DJNZR3,$
            RRCA
            MOVDQ,C
            MOVR3,#23
            DJNZR3,$
            SETBDQ
            NOP
            DJNZR2,WR1
            SETBDQ
            RET
            ;//*****************************************//

            ; 讀DS18B20的程序,從DS18B20中讀出兩個字節(jié)的溫度數(shù)據(jù)
            ;//*****************************************//
            READ_18200:
            MOVR4,#2; 將溫度高位和低位從DS18B20中讀出
            MOVR1,#36H; 低位存入36H(TEMPER_L),高位存入35H(TEMPER_H)
            RE00:
            MOVR2,#8
            RE01:
            CLRC
            SETBDQ
            NOP
            NOP
            CLRDQ
            NOP
            NOP
            NOP
            SETBDQ
            MOVR3,#7
            DJNZR3,$
            MOVC,DQ
            MOVR3,#23
            DJNZR3,$
            RRCA
            DJNZR2,RE01
            MOV@R1,A
            DECR1
            DJNZR4,RE00
            RET
            ;//*****************************************//

            ; 將從DS18B20中讀出的溫度數(shù)據(jù)進(jìn)行轉(zhuǎn)換
            ;//*****************************************//
            TEMPER_COV:
            MOVA,#0F0H
            ANLA,TEMPER_L; 舍去溫度低位中小數(shù)點后的四位溫度數(shù)值
            SWAPA
            MOVTEMPER_NUM,A
            MOVA,TEMPER_L
            JNBACC.3,TEMPER_COV1; 四舍五入去溫度值
            INCTEMPER_NUM

            TEMPER_COV1:
            MOVA,TEMPER_H
            ANLA,#07H
            SWAPA
            ORLA,TEMPER_NUM
            MOVTEMPER_NUM,A; 保存變換后的溫度數(shù)據(jù)
            LCALLBIN_BCD
            RET
            ;//*****************************************//

            ; 將16進(jìn)制的溫度數(shù)據(jù)轉(zhuǎn)換成壓縮BCD碼
            ;//*****************************************//
            BIN_BCD:
            MOVDPTR,#TEMP_TAB
            MOVA,TEMPER_NUM
            MOVCA,@A+DPTR
            MOVTEMPER_NUM,A
            RET

            51單片機相關(guān)文章:51單片機教程



            上一頁 1 2 下一頁

            關(guān)鍵詞: DS18b20 51單片機 匯編程序

            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉