片机原理及应用系统设计北京:电子工业出版社,200586李勋单片机实用教程2版北京:北京航空航天大学出版社,20065
21
f附
件
附件一:硬件电路原理图附件二:源程序清单附件三:主要功能部件调研统计
附件二:程序清单
赋值
TH
EQU30H
TL
EQU31H
TEMPHEQU32H
TEMPLEQU33H
TEMPNUMEQU35H
DAT
EQUP10
FLAG1BIT00H
主程序
MAINLOOP
ORGMOVMOVMOVLCALLLCALLLCALLLCALLLCALLLCALL
0000HTH25HTL19HP100HRESET
RECONFIGGETTEMPERTEMPERCOVREDKEYBD
18B20复位程序
22
fLCALLLCALLLJMP
FBDIRLOOP
18B20复位程序
RESET
SETBDAT
NOPCLRDAT
;主机发出延时537微秒的复位程序
MOVR13
TSR1
MOVR0107
DJNZR0
DJNZR1TSR1
MOVR00FFH
TSR2
SETBDATJNBDATTSR3
;然后拉高数据线;等待DS18B20回应
TSR3
DJNZR0TSR2LJMPTSR4SETBFLAG1
;延时;置标志位,表示DS18B20存在
LJMPTSR5
TSR4
CLRFLAG1
;清标志位,表示DS18B20不存在
LJMPTSR7
TSR5
MOVR0117
TSR6
DJNZR0TSR6;时序要求延时一段时间
TSR7
SETBDAT
RET
重新写DS18B20暂存存储器设定值RECONFIGJBFLAG1RECONFIG1;若DS18B20存在,转RECONFIG1
RET
RECONFIG1MOVA0CCH
;发跳过ROM命令
LCALLWRITE
MOVA4EH
;发写暂存存储器命令
LCALLWRITE
MOVA00H
;TH中写入00H
LCALLWRITE
MOVA00H
;TL中写入00H
LCALLWRITE
MOVA1FH
;选择9位温度分辨率
23
fLCALLWRITERET
DS18B20写入一个字节的程序
WRITE
MOVR28
CLRC
WR1
CLRDAT
MOVR36
DJNZR3
RRCA
MOVDATC
MOVR323
DJNZR3
SETBDAT
NOP
DJNZR2WR1
SETBDAT
RET
读出转换后的温度值
GETTEMPERSETBDAT
;定时入口
BCD
LCALLRESET
JBFLAG1S22LJMPBCD
;若DS18B20不存在则返回
S22
MOVA0CCH
;跳过ROM匹配
LCALLWRITEMOVA44H
;发出温度转换命令
LCALLWRITE
NOP
CBAABC
LCALLRESETJBFLAG1ABCLJMPCBA
MOVA0CCHLCALLWRITEMOVA0BEH
24
fLCALLWRITELCALLRDTEMPRET
读DS18B20的程序,从DS18B20中读出两个字节的温度数据RDTEMPMOVR42;将温度高位和低位从DS18B20中读出
MOVR1TEMPL;地位存入TEMPL,高位存入TEMPH
REOO
MOVR28
REO1
CLRC
SETBDAT
NOP
NOP
CLRDAT
NOP
NOP
NOP
SETBDAT
MOVR37
DJNZR3
MOVCDAT
MOVR323
DJNZR3
RRCA
DJNZR2REO1
MOVR1A
DECR1
DJNZR4REOO
RET
将从DS18B20中读出的温度数据进行转换TEMPERCOVMOVA0F0H
ANLATEMPL;舍去温度低位中小数点r