|
TEMPER_L EQU 36H ;存放讀出溫度低位數(shù)據(jù)
TEMPER_H EQU 35H ;存放讀出溫度高位數(shù)據(jù)
TEMPER_NUM EQU 60H ;存放轉(zhuǎn)換后的溫度值
FLAG1 BIT 00H
DQ BIT P3.2 ;一線總線控制端口
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN:
MOV SP,#70H
LCALL GET_TEMPER ;從DS18B20讀出溫度數(shù)據(jù)
LCALL TEMPER_COV ;轉(zhuǎn)換讀出的溫度數(shù)據(jù)并保存
LCALL SHUJU
LCALL HEX2BCD
LCALL LOOP
LCALL DISPLAY
LCALL TAB
SJMP $ ;完成一次數(shù)字溫度采集
;-------讀出轉(zhuǎn)換后的溫度值
GET_TEMPER:
SETB DQ ; 定時入口
BCD: LCALL INIT_1820
JB FLAG1,S22
LJMP BCD ; 若DS18B20不存在則返回
S22: LCALL DELAY1
MOV A,#0CCH ; 跳過ROM匹配------0CC
LCALL WRITE_1820
MOV A,#44H ; 發(fā)出溫度轉(zhuǎn)換命令
LCALL WRITE_1820
NOP
LCALL DELAY
LCALL DELAY
|
|