RSS

DS18B20的读写程序

发布时间:2008-05-09 关键字: 程序   MOV  温度 DQ DS18B20 DJNZ  LCALL 

;//*****************************************//
GET_TEMPER:
    SETB    DQ            ; 定时入口

    LCALL    INIT_1820
    JB    FLAG1,TSS2
    RET                ; 若DS18B20不存在则返回
TSS2:
    MOV    A,#0CCH        ; 跳过ROM匹配
    LCALL    WRITE_1820
    MOV    A,#44H        ; 发出温度转换命令
    LCALL    WRITE_1820

    LCALL    INIT_1820
    MOV    A,#0CCH        ; 跳过ROM匹配
    LCALL    WRITE_1820
    MOV    A,#0BEH        ; 发出读温度命令
    LCALL    WRITE_1820
    LCALL    READ_1820
    MOV    TEMPER_NUM,A    ; 将读出的温度数据保存
    RET
;//*****************************************//

; 读DS18B20的程序,从DS18B20中读出一个字节的数据
;//*****************************************//
READ_1820:
    MOV    R2,#8
RE1:
    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
    DJNZ    R2,RE1
    RET
;//*****************************************//

; 写DS18B20的程序
;//*****************************************//
WRITE_1820:
    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
;//*****************************************//

; 读DS18B20的程序,从DS18B20中读出两个字节的温度数据
;//*****************************************//
READ_18200:
    MOV    R4,#2            ; 将温度高位和低位从DS18B20中读出
    MOV    R1,#36H        ; 低位存入36H(TEMPER_L),高位存入35H(TEMPER_H)
上一篇:DS18B20温度转换
下一篇:没有了
最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册

外部连接