新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > DS18B20讀取溫度并顯示-匯編程序

        DS18B20讀取溫度并顯示-匯編程序

        作者: 時間:2012-10-31 來源:網絡 收藏

        *
        程序效果:通過值,對應的溫度值
        程序重在理解時序,及延時時間
        */

        DS18DQ EQU P1.3 //P1.3與DS18DQ等同,便于理解
        SPEAKER EQU P2.0 //驅動蜂鳴器
        TEMPH EQU 29H //保存讀出溫度的低8位
        TEMPL EQU 28H //保存讀出溫度的高8位
        DS18FLAG EQU 40H //設置標志
        ORG 0000H
        LJMP START
        ORG 0030H
        START: MOV 30H,#00 //設置初始值
        MOV 31H,#00
        MOV 32H,#00
        START1: LCALL DS18_GF //設置的工作方式
        LCALL CONVERT_TEMPERATURE //輸出轉換溫度命令
        LCALL DELAY750MS //延時750ms
        LCALL GET_TEMPERATURE //獲?溫度數據
        LCALL CAL_TEMPERATURE //計算溫度數值
        LCALL DISPLAY //調用,防止掉顯
        LJMP START1 //無限循環
        //初始化子程序
        DS18_START:
        PUSH 07H //保存R7的值,防止改變R7的數值
        SETB DS18DQ //將數據線拉高
        NOP //延時1us
        CLR DS18DQ //將數據線拉低
        MOV R7,#0 //延時大約512us
        DJNZ R7,$
        SETB DS18DQ //將數據線拉高
        MOV R7,#40
        DS18_START1: //延時大約160us
        JNB DS18DQ,DS18_START2 //檢查是否工作正常
        DJNZ R7,DS18_START1
        SETB DS18FLAG //工作不正常
        CLR SPEAKER //驅動蜂鳴器,報警
        DS18_START2:
        CLR DS18FLAG
        MOV R7,#100 //延時月200us
        DJNZ R7,$
        POP 07H //恢復R7的值
        RET
        //設置DS18B20工作方式
        DS18_GF:CLR DS18FLAG //清除標志
        LCALL DS18_START //調用初始化子程序
        MOV A,#0CCH //跳躍ROM指令
        LCALL DS18_SEND //
        MOV A,#4EH //向RAM寫數據
        LCALL DS18_SEND
        MOV A,#75
        LCALL DS18_SEND
        MOV A,#0
        LCALL DS18_SEND
        MOV A,#7FH //設置工作方式
        LCALL DS18_SEND
        CLR DS18DQ //釋放總線
        LCALL DELAY500US //延時500us
        LOOP: LCALL CONVERT_TEMPERATURE //調用轉子程序
        MOV R5,#80
        LOOP1: LCALL DISPLAY //調用防止掉顯,同時等待轉換完成
        DJNZ R5,LOOP1
        LCALL GET_TEMPERATURE //獲?轉換值
        LCALL CAL_TEMPERATURE //計算溫度值
        LJMP LOOP
        RET

        蜂鳴器相關文章:蜂鳴器原理

        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 安庆市| 常山县| 儋州市| 朔州市| 河东区| 长武县| 界首市| 洛隆县| 五河县| 卢湾区| 柳河县| 龙南县| 海晏县| 汤原县| 滦平县| 泰顺县| 阿尔山市| 安图县| 元江| 平安县| 微山县| 喀喇沁旗| 巴彦淖尔市| 淳安县| 石景山区| 筠连县| 库伦旗| 子长县| 东海县| 垣曲县| 大足县| 乌审旗| 鹿邑县| 华阴市| 阿坝| 泗阳县| 宣城市| 彭山县| 眉山市| 长宁县| 兴安县|