新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > ds18b20c程序與匯編程序

        ds18b20c程序與匯編程序

        作者: 時間:2012-06-23 來源:網絡 收藏

        LCALLWRITE_1820
        MOVA,#00H; TL(報警下限)中寫入00H
        LCALLWRITE_1820
        MOVA,#1FH; 選擇9位溫度分辨率
        LCALLWRITE_1820
        RET
        ;//*****************************************//

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

        ; 讀出轉換后的溫度值
        ;//*****************************************//
        GET_TEMPER:
        SETBDQ; 定時入口

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

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

        ; 讀DS18B20的,從DS18B20中讀出一個字節的數據
        ;//*****************************************//
        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中讀出兩個字節的溫度數據
        ;//*****************************************//
        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中讀出的溫度數據進行轉換
        ;//*****************************************//
        TEMPER_COV:
        MOVA,#0F0H
        ANLA,TEMPER_L; 舍去溫度低位中小數點后的四位溫度數值
        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; 保存變換后的溫度數據
        LCALLBIN_BCD
        RET
        ;//*****************************************//

        ; 將16進制的溫度數據轉換成壓縮BCD碼
        ;//*****************************************//
        BIN_BCD:
        MOVDPTR,#TEMP_TAB
        MOVA,TEMPER_NUM
        MOVCA,@A+DPTR
        MOVTEMPER_NUM,A
        RET



        關鍵詞: 程序 匯編 ds18b20c

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 垣曲县| 清新县| 蒙阴县| 烟台市| 泽库县| 天津市| 永安市| 四子王旗| 灵武市| 内江市| 喜德县| 休宁县| 隆林| 莱州市| 乌鲁木齐县| 襄樊市| 长治县| 中山市| 永济市| 祥云县| 徐州市| 祁阳县| 酒泉市| 元氏县| 宜都市| 威信县| 阳高县| 敖汉旗| 黎川县| 来凤县| 西乡县| 云林县| 行唐县| 慈溪市| 德令哈市| 昭通市| 东莞市| 囊谦县| 钟山县| 会东县| 苍南县|