TEMPER_LEQU36Hr
TEMPER_HEQU35Hr
TEMPER_NUMEQU60Hr
FLAG1BIT00Hr
DQBITP33r
RSEQUP37RSP20r
RWEQUP36RWP21r
EEQUP35EP22r
LCD_DBEQUP1r
AAAMOVSP70Hr
LCALLGET_TEMPERr
LCALLTEMPER_COVr
LCALLDISPLAY调用显示子程序r
r
LJMPAAAr
NOPr
读出转换后的温度值r
GET_TEMPERr
SETBDQ定时入口r
BCDLCALLINIT_1820r
JBFLAG1S22r
LJMPCC若DS18B20不存在则返回r
r
S22LCALLDELAY1r
MOVA0CCH跳过ROM匹配0CCr
LCALLWRITE_1820r
MOVA44H发出温度转换命令r
LCALLWRITE_1820r
NOPr
LCALLDELAYr
LCALLDELAYr
CBALCALLINIT_1820r
JBFLAG1ABCr
LJMPCBAr
ABCLCALLDELAY1r
MOVA0CCH跳过ROM匹配r
LCALLWRITE_1820r
MOVA0BEH发出读温度命令r
LCALLWRITE_1820r
LCALLREAD_18200READ_1820r
RETr
读DS18B20的程序从DS18B20中读出一个字节的数据r
READ_1820r
MOVR28r
RE1r
CLRCr
SETBDQr
NOPr
NOPr
CLRDQr
NOPr
NOPr
NOPr
SETBDQr
MOVR37r
DJNZR3r
MOVCDQr
MOVR323r
DJNZR3r
RRCAr
DJNZR2RE1r
RETr
r
写DS18B20的程序r
WRITE_1820r
MOVR28r
CLRCr
WR1r
CLRDQr
MOVR36r
DJNZR3r
RRCAr
MOVDQCr
MOVR323r
DJNZR3r
SETBDQr
NOPr
DJNZR2WR1r
SETBDQr
RETr
读DS18B20的程序从DS18B20中读出两个字节的温度数据r
READ_18200r
MOVR42将温度高位和低位从DS18B20中读出r
MOVR136H低位存入36HTEMPER_L高位存入35HTEMPER_Hr
RE00r
MOVR28r
RE01r
CLRCr
SETBDQr
NOPr
NOPr
CLRDQr
NOPr
NOPr
NOPr
SETBDQr
MOVR37r
DJNZR3r
MOVCDQr
MOVR323r
DJNZR3r
RRCAr
DJNZR2RE01r
MOVR1Ar
DECR1r
DJNZR4RE00r
RETr
r
将从DS18B20中读出的温度数据进行转换r
TEMPER_COVr
MOVA0F0Hr
ANLATEMPER_L舍去温度低位中小数点后的四位温度数值r
SWAPAr
MOVTEMPER_NUMAr
MOVATEMPER_Lr
JNBACC3TEMPER_COV1四舍五入去温度值r
INCTEMPER_NUMr
r
TEMPER_COV1r
MOVATEMPER_Hr
ANLA07Hr
SWAPAr
ORLATEMPER_NUMr
MOVTEMPER_NUMA保存变换后的温度数据r
LCALLBIN_BCDr
RETr
将16进制的温度数据转换成压缩BCD码r
BIN_BCDr
MOVDPTRTEMP_TABr
MOVATEMPER_NUMr
MOVCAADPTRr
MOVTEMPER_NUMAr
RETr
r
TEMP_TABr
DB00H01H02H03H04H05H06H07Hr
DB08H09H10H11H12H13H14H15Hr
DB16H17H18H19H20H21H22H23Hr
DB24H25H26H27H28H29H30H31Hr
DB32H33H34H35H36H37H38H39Hr
DB40H41H42H43H44H45H46H47Hr
DB48H49H50H51H52H53H54H55Hr
DB56H57H58H59H60H61H62H63Hr
DB64H65H66H67H68H69H70H71Hr
DB72H73H74H75H76H77H78H79Hr
DB80H81H82H83H84H85H86H87Hr
DB88H89H90H91H92H93H94H95Hr
DB96H97H98H99Hr
r
DS18B20初始化程序r
INIT_1820r
SETBDQr
NOPr
CLRDQr
MOVR080Hr
TSR1r
DJNZR0TSR1延时r
SETBDQr
MOVR025H96US25Hr
TSR2r
DJNZR0TSR2r
JNBDQTSR3r
LJMPTSR4延时r
TSR3rr