论文首页哲学论文经济论文法学论文教育论文文学论文历史论文理学论文工学论文医学论文管理论文艺术论文 |
LCALL READ_18200
MOV 37H,A ; 将读出的温度数据保存
RET
; *****************************************
; 写DS18B20的程序
; *****************************************
WRITE_1820:
MOV R2,#8
CLR C
WR1:CLR P2.0
NOP
NOP
NOP
NOP
RRC A
MOV P2.0,C
MOV R3,#35
DJNZ R3,$
SETB P2.0
NOP
DJNZ R2,WR1
SETB P2.0
RET
; *****************************************
; 读DS18B20的程序,从DS18B20中读出两个字节的温度数据
; *****************************************
READ_18200:
MOV R4,#2 ; 将温度高位和低位DS18B20中读
RE00:MOV R2,#8
RE01:CLR C
SETB P2.0
NOP
; 将从DS18B20中读出的温度数据进行转换
; *****************************************
TEMPER_COV:
MOV A,#0F0H
ANL A,36H ; 舍去温度低位中小数点
SWAP A
MOV 37H,A
MOV A,36H
JNB ACC.3,TEMPER_COV1 ; 四舍五入去温度值
INC 37H
TEMPER_COV1:
MOV A,35H
ANL A,#07H
SWAP A
ADD A,37H
MOV 37H,A ; 保存变换后的温度数据
LCALL BIN_BCD
RET
; *****************************************
; 将16进制的温度数据转换成压缩BCD码
; 38H中放百位,37十位,36个位
; *****************************************
BIN_BCD:
MOV 39H,37H
MOV&nb