新聞中心

        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 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 大竹县| 海南省| 黎川县| 兰坪| 多伦县| 财经| 陆良县| 高州市| 南充市| 青冈县| 铁岭县| 尚志市| 卓资县| 张家口市| 历史| 西丰县| 石嘴山市| 花莲市| 临潭县| 平乐县| 东宁县| 双江| 自治县| 日照市| 西城区| 漯河市| 新巴尔虎右旗| 华安县| 宜君县| 南通市| 恩平市| 库尔勒市| 成武县| 铜梁县| 英吉沙县| 开阳县| 习水县| 万山特区| 肃北| 东乡| 天津市|