论文首页哲学论文经济论文法学论文教育论文文学论文历史论文理学论文工学论文医学论文管理论文艺术论文 |
; *****************************************
;温度总子程序
; *****************************************
wendu: ACALL INIT_1820
ACALL RE_CONFIG
ACALL GET_TEMPER
ACALL TEMPER_COV
RET
; *****************************************
;DS18B20初始化程序
; *****************************************
INIT_1820:
SETB P2.0
NOP
CLR P2.0
MOV R0,#06BH
MOV R1,#03H
TSR1:
DJNZ R0,TSR1 ; 延时
MOV R0,#6BH
DJNZ R1,TSR1
SETB P2.0
NOP
NOP
NOP
MOV R0,#25H
TSR2:
JNB P2.0,TSR3
DJNZ R0,TSR2
LJMP TSR4 ; 延时
TSR3:
SETB 20H.1 ; 置标志位,表示DS1820存在 (科教范文网 fw.nseac.com编辑发布)
LJMP TSR5
TSR4:
CLR 20H.1 ; 清标志位,表示DS1820不存在
LJMP TSR7
TSR5:
MOV R0,#06BH
MOV R1,#03H
TSR6:DJNZ R0,TSR6 ; 延时
MOV R0,#6BH
DJNZ R1,TSR6
TSR7:SETB P2.0
RET
; *****************************************
; 重新写DS18B20暂存存储器设定值
; *****************************************
RE_CONFIG:JB 20H.1,RE_CONFIG1 ; 若DS18B20存在,转RE_CONFIG1
RET
RE_CONFIG1:
MOV A,#0CCH ; 发SKIP ROM命令
LCALL WRITE_1820
MOV A,#4EH ; 发写暂存存储器命令
LCALL WRITE_1820
MOV A,#00H ; TH(报警上限)中写入00H
LCALL WRITE_1820
MOV A,#00H ; TL(报警下限)中写入00H
LCALL WRITE_1820
MOV A,#1FH ; 选择9位温度分辨率
LCALL WRITE_1820
RET
; *****************************************
; 读出转换后的温度值
; *****************************************
GET_TEMPER:
SETB P2.0 ; 定时入口
LCALL INIT_1820
&n