音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

為什么檢測不到DS18b20

作者:sealove518 欄目:工控天地
為什么檢測不到DS18B20.html">DS18B20
大家好,這是我的一個DS18B20.html">DS18B20測溫的程序,每個T0中斷到來,都讓進(jìn)行一次測溫并顯示.可是為什么檢測不到它的存在那?郁悶>>>我的晶振12M,還望大俠指點
代碼如下:
T0_INT:        PUSH PSW
          PUSH ACC
          CLR TF0
        ;*************** Init DS18B20 *****************
        LCALL INIT_1820        ;初始化
        JB FLAG1,DSExist    ;看是否存在
        LCALL DSNExist        ;不存在
        JMP T0_END
DSExist:    LCALL RE_CONFIG        ;寫暫存器
        LCALL GET_TEMP        ;得到溫度
...........
..........

; DS18B20初始化程序
;//*****************************************//
INIT_1820:
    SETB    DQ
    NOP
    CLR    DQ
    MOV    R0,#0FAH
TSR1:
    DJNZ    R0,TSR1        ; 延時500us,雙周期
    SETB    DQ             ;釋放總線
    MOV    R0,#10H      ;在63us內(nèi)檢測是否存在
TSR2:
    JNB    DQ,TSR3        
    DJNZ    R0,TSR2        ;在**us內(nèi)檢測是否DS1820存在
    LJMP    TSR4        ;延時
TSR3:
    SETB    FLAG1        ;置標(biāo)志位,表示DS1820存在
    LJMP    TSR5
TSR4:                                  
    CLR    FLAG1        ;清標(biāo)志位,表示DS1820不存在
    LJMP    TSR7
TSR5:
    MOV    R0,#06BH    ;延時
TSR6:
    DJNZ    R0,TSR6; 延時
TSR7:
    SETB    DQ
    RET            
;//*****************************************//
; 重新寫DS18B20暫存存儲器設(shè)定值
;//*****************************************//
RE_CONFIG:
    MOV    A,#0CCH; 發(fā)SKIP ROM命令
    LCALL    WRITE_1820
    MOV    A,#4EH; 發(fā)寫暫存存儲器命令
    LCALL    WRITE_1820
    MOV    A,#00H; TH(報警上限)中寫入00H
    LCALL    WRITE_1820
    MOV    A,#00H; TL(報警下限)中寫入00H
    LCALL    WRITE_1820
    MOV    A,#7FH; 選擇12位溫度分辨率
    LCALL    WRITE_1820
    RET
;//*****************************************//
; 讀出轉(zhuǎn)換后的溫度值
;//*****************************************//

GET_TEMP:
    MOV    A,#44H; 發(fā)出溫度轉(zhuǎn)換命令
    LCALL    WRITE_1820
    LCALL    INIT_1820
    MOV    A,#0CCH; 跳過ROM匹配
    LCALL    WRITE_1820
    MOV    A,#0BEH; 發(fā)出讀溫度命令
    LCALL    WRITE_1820
    LCALL    READ_18200
    MOV    TEMPER_NUM,A;將讀出的溫度數(shù)據(jù)保存
    RET
;//*****************************************//
; 讀DS18B20的程序,從DS18B20中讀出兩個字節(jié)的溫度數(shù)據(jù)
;//*****************************************//
READ_18200:
    MOV    R4,#2; 將溫度高位和低位從DS18B20中讀出
    MOV    R1,#36H; 低位存入36H(TEMPER_L),高位存入35H(TEMPER_H)
RE00:
    MOV    R2,#8
RE01:
    CLR    C
    SETB    DQ
    NOP
    NOP
    CLR    DQ
    NOP
    NOP
    NOP
    SETB    DQ
    MOV    R3,#7        ;延時
    DJNZ    R3,$
    MOV    C,DQ
    MOV    R3,#23        ;延時
    DJNZ    R3,$
    RRC    A        ;移到A中
    DJNZ    R2,RE01
    MOV    @R1,A        ;保存溫度值
    DEC    R1        
    DJNZ    R4,RE00        ;保存下一個高字節(jié)
    RET     
;//*****************************************//
; 寫DS18B20的程序
;//*****************************************//
WRITE_1820:
    MOV    R2,#8
    CLR    C
W1:
    CLR    DQ
    MOV    R3,#6
    DJNZ    R3,$
    RRC    A
    MOV    DQ,C
    MOV    R3,#23
    DJNZ    R3,$
    SETB    DQ
    NOP
    DJNZ    R2,W1
    SETB    DQ
    RET
;****************顯示1.2.3.4表示DS1820不存在*********************
DSNExist:
    LCALL DLY500
    MOV P1,#0FFH
    LCALL DLY1S
    LCALL WR123
    MOV P1,#0FFH
    LCALL DLY1S
2樓: >>參與討論
sealove518
頂一下
沒有人能幫幫我么

3樓: >>參與討論
xugtong
中斷有問題
  對18B20操作時要關(guān)閉中斷的.

4樓: >>參與討論
sealove518
謝謝
我試試看

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
ad771x系列ad芯片的校準(zhǔn)
銷售R型變壓器及R型鐵芯
我想請教一下PCI標(biāo)準(zhǔn)規(guī)定的信號全反射是怎么實現(xiàn)的?
有工作300V以上的步進(jìn)電機芯片嗎
使用過IR2136的幫忙分析一下
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號