新聞中心

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

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

        作者: 時間:2012-10-31 來源:網(wǎng)絡 收藏

        //輸出轉換溫度命令
        CONVERT_TEMPERATURE:
        LCALL DS18_START //調用初始化子程序
        MOV A,#0CCH //跳躍ROM指令
        LCALL DS18_SEND
        MOV A,#44H //溫度轉換
        LCALL DS18_SEND
        RET
        //讀?溫度數(shù)據(jù)
        GET_TEMPERATURE:
        LCALL DS18_START //調用初始化子程序
        MOV A,#0CCH //跳躍ROM指令
        LCALL DS18_SEND
        MOV A,#0BEH //從RAM中的數(shù)據(jù)
        LCALL DS18_SEND
        LCALL DELAY60US
        LCALL DS18_READ
        MOV TEMPL,A //將獲得數(shù)據(jù)的低八位存到TEMPL
        LCALL DS18_READ
        MOV TEMPH,A //將獲得數(shù)據(jù)的高八位存到TEMPH
        CLR DS18DQ //即復位。否則會一直讀到
        LCALL DELAY501US //暫存第九字節(jié)
        RET
        //計算獲得溫度值,便于現(xiàn)實
        CAL_TEMPERATURE:
        PUSH 07H //暫存,防止改變R7的數(shù)據(jù)
        CLR C //進位標志清零
        MOV R7,#04H //循環(huán)次數(shù)

        EX2: MOV A,TEMPH // 這些語句的作用是:
        RRC A // 整數(shù)位在:TEMPL中
        MOV TEMPH,A //?數(shù)位在:TEMPH中的高半
        MOV A,TEMPL
        RRC A
        MOV TEMPL,A
        DJNZ R7,EX2 //

        MOV A,TEMPH //
        RLC A //這些語句的作用是:
        RLC A //把TEMPH得高半移到低四位中
        RLC A
        RLC A //
        ANL A,#0FH //屏蔽高四位,保留低四位
        MOV DPTR,#TAB_TEMP //賦帶?數(shù)點的數(shù)值表的表首地址
        MOVC A,@A+DPTR
        MOV 30H,A //暫存該值,用于
        MOV A,TEMPL
        CLR C
        MOV B,#0AH
        DIV AB //分離整數(shù)位的高低四位
        MOV 32H,A //暫存十位
        MOV A,B
        ADD A,#10H
        MOV 31H,A //暫存?zhèn)€位
        POP 07H //恢復R7的值
        RET
        //寫數(shù)據(jù)子程序
        DS18_SEND:
        PUSH 06H //保護Rn的值
        PUSH 07H
        //以下語句是"寫 筆斃虻腦?
        SETB DS18DQ //寫時序是有DS18DQ的下降沿決定
        NOP //延時1us
        MOV R6,#08H //循環(huán)次數(shù),一個字節(jié)
        DS18_SEND1:
        CLR DS18DQ //拉低,產(chǎn)生下降沿
        MOV R7,#07 //延時大約15us
        DJNZ R7,$
        RRC A //把要寫入得數(shù)據(jù)的高位移到C中
        MOV DS18DQ,C //再把C的值賦給DS18DQ
        MOV R7,#30 //延時時間約為60us,只要大約45us即可
        DJNZ R7,$
        SETB DS18DQ //拉高準備,下次產(chǎn)生下降沿
        DJNZ R6,DS18_SEND1 //判斷循環(huán)次數(shù)夠了沒
        POP 07H //恢復Rn的數(shù)據(jù)
        POP 06H
        RET
        篇幅太大完整程序請從這里下載:http://www.51hei.com/ziliao/file/ds182051hei.asm

        本程序已經(jīng)測試成功。

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

        上一頁 1 2 下一頁

        關鍵詞: DS18B20 讀取溫度 顯示 匯編程序

        評論


        相關推薦

        技術專區(qū)

        關閉
        主站蜘蛛池模板: 饶阳县| 陵川县| 同心县| 瑞昌市| 沿河| 元谋县| 津南区| 横峰县| 龙里县| 辛集市| 牡丹江市| 陆良县| 淳化县| 紫阳县| 虹口区| 菏泽市| 灵山县| 武汉市| 永川市| 北辰区| 雷山县| 四会市| 南乐县| 泰顺县| 苏尼特右旗| 洞口县| 德保县| 吉林市| 喀什市| 老河口市| 宿州市| 宜良县| 元氏县| 西和县| 潜江市| 桃源县| 若尔盖县| 焉耆| 广昌县| 罗江县| 云林县|