• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

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

    ds18b20匯編程序與c程序

    作者: 時間:2011-05-01 來源:網絡 收藏

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

    本文引用地址:http://www.czjhyjcfj.com/article/172838.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



    關鍵詞: 程序 匯編 ds18b20

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 威宁| 永福县| 齐齐哈尔市| 江油市| 溆浦县| 通河县| 东兴市| 泰宁县| 辉县市| 花莲县| 外汇| 原阳县| 全州县| 郸城县| 天长市| 昔阳县| 永吉县| 育儿| 恩施市| 长治市| 荥经县| 保德县| 泉州市| 马山县| 来宾市| 福海县| 周至县| 嵩明县| 阳山县| 普兰店市| 宜昌市| 南皮县| 云阳县| 绥阳县| 邯郸县| 察雅县| 黄浦区| 民勤县| 莱州市| 长乐市| 无为县|