在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > DS18b20和51單片機連接的匯編程序

            DS18b20和51單片機連接的匯編程序

            作者: 時間:2013-01-15 來源:網(wǎng)絡(luò) 收藏

            TEMP_TAB:
            DB00H,01H,02H,03H,04H,05H,06H,07H
            DB08H,09H,10H,11H,12H,13H,14H,15H
            DB16H,17H,18H,19H,20H,21H,22H,23H
            DB24H,25H,26H,27H,28H,29H,30H,31H
            DB32H,33H,34H,35H,36H,37H,38H,39H
            DB40H,41H,42H,43H,44H,45H,46H,47H
            DB48H,49H,50H,51H,52H,53H,54H,55H
            DB56H,57H,58H,59H,60H,61H,62H,63H
            DB64H,65H,66H,67H,68H,69H,70H
            ;//*****************************************//

            下面還介紹一個ds18b20
            ;**********************************
            FLAG1 BIT F0 ;DS18B20存在標(biāo)志位
            DQ BIT P1.7
            TEMPER_L EQU 29H
            TEMPER_H EQU 28H
            A_BIT EQU 35H
            B_BIT EQU 36H
            ;************ds18b20起始********************
            ORG 0000H
            AJMP MAIN
            ORG 0100H
            ;**************主程序開始************
            MAIN:
            LCALL INIT_18B20
            ;LCALL RE_CONFIG
            LCALL GET_TEMPER
            AJMP CHANGE

            ;**********DS18B20復(fù)位程序*****************
            INIT_18B20: SETB DQ
            NOP
            CLR DQ
            MOV R0,#0FBH
            TSR1: DJNZ R0,TSR1 ;延時
            SETB DQ
            MOV R0,#25H
            TSR2: JNB DQ ,TSR3
            DJNZ R0,TSR2
            TSR3: SETB FLAG1 ;置標(biāo)志位,表明DS18B20存在
            CLR P2.0 ;二極管指示
            AJMP TSR5
            TSR4: CLR FLAG1
            LJMP TSR7
            TSR5: MOV R0,#06BH
            TSR6: DJNZ R0,TSR6
            TSR7:SETB DQ ;表明不存在
            RET
            ;********************設(shè)定DS18B20暫存器設(shè)定值**************
            ;RE_CONFIG:
            ;JB FLAG1,RE_CONFIG1
            ;RET
            ;RE_CONFIG1: MOV A,#0CCH ;放跳過ROM命令
            ;LCALL WRITE_18B20
            ;MOV A,#4EH
            ;LCALL WRITE_18B20 ;寫暫存器命令
            ;MOV A,#00H ;報警上限中寫入00H
            ;LCALL WRITE_18B20
            ;MOV A,#00H ;報警下限中寫入00H
            ; LCALL WRITE_18B20
            ;MOV A,#1FH ;選擇九位溫度分辨率
            ; LCALL WRITE_18B20
            ; RET
            ;*****************讀轉(zhuǎn)換后的溫度值****************
            GET_TEMPER:
            SETB DQ
            LCALL INIT_18B20
            JB FLAG1,TSS2
            RET ;若不存在則返回
            TSS2: MOV A,#0CCH ;跳過ROM
            LCALL WRITE_18B20
            MOV A,#44H ;發(fā)出溫度轉(zhuǎn)換命令
            LCALL WRITE_18B20

            LCALL DISPLAY ;延時
            LCALL INIT_18B20
            MOV A,#0CCH ;跳過ROM
            LCALL WRITE_18B20
            MOV A,#0BEH ;發(fā)出讀溫度換命令
            LCALL WRITE_18B20
            LCALL READ2_18B20 ;讀兩個字節(jié)的溫度
            RET
            ;***************寫ds18b20************
            WRITE_18B20:
            MOV R2,#8
            CLR C
            WR1:
            CLR DQ

            MOV R3,#6
            DJNZ R3,$
            RRC A
            MOV DQ,C
            MOV R3,#23
            DJNZ R3,$
            SETB DQ
            NOP
            DJNZ R2,WR1
            SETB DQ
            RET


            ;***********讀18B20程序,讀出兩個字節(jié)的溫度*********
            READ2_18B20:
            MOV R4,#2 ;低位存在29 H,高位存在28H

            MOV R1,#29H
            RE00: MOV R2,#8
            RE01: CLR C
            SETB C
            NOP
            NOP

            CLR DQ
            NOP
            NOP
            NOP
            SETB DQ
            MOV R3,#7
            DJNZ R3,$
            MOV C,DQ
            MOV R3,#23
            DJNZ R3,$
            RRC A
            DJNZ R2,RE01
            MOV @R1,A
            DEC R1
            DJNZ R4,RE00
            RET
            ;************讀出的溫度進行數(shù)據(jù)轉(zhuǎn)換**************

            CHANGE: MOV A,29H
            MOV C,28H.0 ;將28H中的最低位移入C
            RRC A
            MOV C,28H.1
            RRC A
            MOV C,28H.2
            RRC A
            MOV C,28H.3
            RRC A
            MOV 29H,A
            ;setb p2.0
            LCALL DISPLAY ;調(diào)用數(shù)碼管顯示子程序

            ; setb P2.0
            LJMP MAIN
            ;*******************DISPLAY******
            DISPLAY: mov a,29H;將29H中的十六進制數(shù)轉(zhuǎn)換成10進制
            mov b,#10 ;10進制/10=10進制
            div ab
            mov b_bit,a ;十位在a
            mov a_bit,b ;個位在b
            mov dptr,#TAB ;指定查表啟始地址
            mov r0,#4
            dpl1: mov r1,#250 ;顯示1000次
            dplop: mov a,a_bit ;取個位數(shù)
            MOVC A,@A+DPTR ;查個位數(shù)的7段代碼
            mov p0,a ;送出個位的7段代碼
            clr p2.5;開個位顯示
            acall d1ms ;顯示1ms
            setb p2.5
            mov a,b_bit ;取十位數(shù)
            MOVC A,@A+DPTR ;查十位數(shù)的7段代碼
            mov p0,a ;送出十位的7段代碼
            clr p2.4;開十位顯示
            acall d1ms ;顯示1ms
            setb p2.4
            djnz r1,dplop ;100次沒完循環(huán)
            djnz r0,dpl1 ;4個100次沒完循環(huán)
            ret

            ;***********************************
            D1MS: MOV R7,#80 ;1MS延時(按12MHZ算)
            DJNZ R7,$
            RET
            ;*************************
            TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H

            51單片機相關(guān)文章:51單片機教程



            上一頁 1 2 下一頁

            關(guān)鍵詞: DS18b20 51單片機 匯編程序

            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉