📄 ds18b20.lst
字号:
0013 2560 141 ADD A,TEMPER_NUM
0015 F560 142 MOV TEMPER_NUM,A ; 保存变换后的温度数据
0017 120000 F 143 LCALL BIN_BCD
001A AF60 144 mov R7,TEMPER_NUM
001C 22 145 RET
146
147 ;-------将16进制的温度数据转换成压缩BCD码
001D 148 BIN_BCD:
001D 900000 F 149 MOV DPTR,#TEMP_TAB
0020 E560 150 MOV A,TEMPER_NUM
0022 93 151 MOVC A,@A+DPTR
0023 F560 152 MOV TEMPER_NUM,A
0025 22 153 RET
154
0026 155 TEMP_TAB:
0026 00010203 156 DB 00H,01H,02H,03H,04H,05H,06H,07H
002A 04050607
002E 08091011 157 DB 08H,09H,10H,11H,12H,13H,14H,15H
0032 12131415
0036 16171819 158 DB 16H,17H,18H,19H,20H,21H,22H,23H
003A 20212223
003E 24252627 159 DB 24H,25H,26H,27H,28H,29H,30H,31H
0042 28293031
0046 32333435 160 DB 32H,33H,34H,35H,36H,37H,38H,39H
004A 36373839
004E 40414243 161 DB 40H,41H,42H,43H,44H,45H,46H,47H
0052 44454647
0056 48495051 162 DB 48H,49H,50H,51H,52H,53H,54H,55H
005A 52535455
005E 56575859 163 DB 56H,57H,58H,59H,60H,61H,62H,63H
0062 60616263
0066 64656667 164 DB 64H,65H,66H,67H,68H,69H,70H,71H
006A 68697071
006E 72737475 165 DB 72H,73H,74H,75H,76H,77H,78H,79H
0072 76777879
0076 80818283 166 DB 80H,81H,82H,83H,84H,85H,86H,87H
007A 84858687
007E 88899091 167 DB 88H,89H,90H,91H,92H,93H,94H,95H
0082 92939495
0086 96979899 168 DB 96H,97H,98H,99H
169
170 ;-------DS18B20初始化程序
008A 171 INIT_1820:
008A D2B3 172 SETB DQ
008C 00 173 NOP
008D C2B3 174 CLR DQ
008F 7880 175 MOV R0,#80H
0091 D8FE 176 TSR1: DJNZ R0,TSR1 ; 延时
0093 D2B3 177 SETB DQ
0095 7825 178 MOV R0,#25H ;96US-25H
A51 MACRO ASSEMBLER DS18B20 11/15/2006 20:46:33 PAGE 4
0097 D8FE 179 TSR2: DJNZ R0,TSR2
0099 30B303 180 JNB DQ,TSR3
009C 020000 F 181 LJMP TSR4 ; 延时
009F D200 182 TSR3: SETB FLAG1 ; 置标志位,表示DS1820存在
00A1 020000 F 183 LJMP TSR5
00A4 C200 184 TSR4: CLR FLAG1 ; 清标志位,表示DS1820不存在
00A6 020000 F 185 LJMP TSR7
00A9 786B 186 TSR5: MOV R0,#06BH ;200US
00AB D8FE 187 TSR6: DJNZ R0,TSR6 ; 延时
00AD D2B3 188 TSR7: SETB DQ
00AF 22 189 RET
190
191 ;-------重新写DS18B20暂存存储器设定值
00B0 192 RE_CONFIG:
00B0 200001 193 JB FLAG1,RE_CONFIG1 ; 若DS18B20存在,转RE_CONFIG1
00B3 22 194 RET
00B4 195 RE_CONFIG1:
00B4 74CC 196 MOV A,#0CCH ; 发SKIP ROM命令
00B6 120000 F 197 LCALL WRITE_1820
00B9 744E 198 MOV A,#4EH ; 发写暂存存储器命令
00BB 120000 F 199 LCALL WRITE_1820
200
00BE 7400 201 MOV A,#00H ; TH(报警上限)中写入00H
00C0 120000 F 202 LCALL WRITE_1820
00C3 7400 203 MOV A,#00H ; TL(报警下限)中写入00H
00C5 120000 F 204 LCALL WRITE_1820
00C8 747F 205 MOV A,#7FH ; 选择12位温度分辨率
00CA 120000 F 206 LCALL WRITE_1820
00CD 22 207 RET
208
209 ;------------------延时子程序
00CE 210 DELAY:
00CE 7F00 211 MOV R7,#00H
00D0 DF01 212 MIN: DJNZ R7,YS500
00D2 22 213 RET
00D3 120000 F 214 YS500: LCALL YS500US
00D6 020000 F 215 LJMP MIN
00D9 7E00 216 YS500US:MOV R6,#00H
00DB DEFE 217 DJNZ R6,$
00DD 22 218 RET
00DE 7F20 219 DELAY1: MOV R7,#20H
00E0 DFFE 220 DJNZ R7,$
00E2 22 221 RET
222
223 END
A51 MACRO ASSEMBLER DS18B20 11/15/2006 20:46:33 PAGE 5
XREF SYMBOL TABLE LISTING
---- ------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES / REFERENCES
?PR?GET_TEMPER?DS18B20. C SEG 0095H REL=UNIT 7# 9
?PR?_TEMPER_COV?DS18B20 C SEG 00E3H REL=UNIT 114# 125
ABC . . . . . . . . . . C ADDR 0028H R SEG=?PR?GET_TEMPER?DS18B20 38 40#
ACC . . . . . . . . . . D ADDR 00E0H A 134
BCD . . . . . . . . . . C ADDR 0002H R SEG=?PR?GET_TEMPER?DS18B20 26# 28
BIN_BCD . . . . . . . . C ADDR 001DH R SEG=?PR?_TEMPER_COV?DS18B20 143 148#
CBA . . . . . . . . . . C ADDR 001FH R SEG=?PR?GET_TEMPER?DS18B20 37# 39
DELAY . . . . . . . . . C ADDR 00CEH R SEG=?PR?_TEMPER_COV?DS18B20 35 36 210#
DELAY1. . . . . . . . . C ADDR 00DEH R SEG=?PR?_TEMPER_COV?DS18B20 29 40 219#
DQ. . . . . . . . . . . B ADDR 00B0H.3 A 5# 25 54 57 61 64 75 79 82 85 94 97 101 104 172 174 177 180 188
FLAG1 . . . . . . . . . B ADDR 0020H.0 A 4# 27 38 182 184 193
GET_TEMPER. . . . . . . C ADDR 0000H R SEG=?PR?GET_TEMPER?DS18B20 8 24#
INIT_1820 . . . . . . . C ADDR 008AH R SEG=?PR?_TEMPER_COV?DS18B20 26 37 171#
MIN . . . . . . . . . . C ADDR 00D0H R SEG=?PR?_TEMPER_COV?DS18B20 212# 215
P3. . . . . . . . . . . D ADDR 00B0H A 5
RE00. . . . . . . . . . C ADDR 0075H R SEG=?PR?GET_TEMPER?DS18B20 92# 111
RE01. . . . . . . . . . C ADDR 0077H R SEG=?PR?GET_TEMPER?DS18B20 93# 108
RE1 . . . . . . . . . . C ADDR 003FH R SEG=?PR?GET_TEMPER?DS18B20 53# 68
READ_1820 . . . . . . . C ADDR 003DH R SEG=?PR?GET_TEMPER?DS18B20 51#
READ_18200. . . . . . . C ADDR 0071H R SEG=?PR?GET_TEMPER?DS18B20 45 89#
RE_CONFIG . . . . . . . C ADDR 00B0H R SEG=?PR?_TEMPER_COV?DS18B20 192#
RE_CONFIG1. . . . . . . C ADDR 00B4H R SEG=?PR?_TEMPER_COV?DS18B20 193 195#
S22 . . . . . . . . . . C ADDR 000BH R SEG=?PR?GET_TEMPER?DS18B20 27 29#
TEMPER_COV1 . . . . . . C ADDR 000EH R SEG=?PR?_TEMPER_COV?DS18B20 134 137#
TEMPER_H. . . . . . . . N NUMB 0035H A 2# 46 138
TEMPER_L. . . . . . . . N NUMB 0036H A 1# 47 130 133
TEMPER_NUM. . . . . . . N NUMB 0060H A 3# 132 135 141 142 144 150 152
TEMP_TAB. . . . . . . . C ADDR 0026H R SEG=?PR?_TEMPER_COV?DS18B20 149 155#
TSR1. . . . . . . . . . C ADDR 0091H R SEG=?PR?_TEMPER_COV?DS18B20 176# 176
TSR2. . . . . . . . . . C ADDR 0097H R SEG=?PR?_TEMPER_COV?DS18B20 179# 179
TSR3. . . . . . . . . . C ADDR 009FH R SEG=?PR?_TEMPER_COV?DS18B20 180 182#
TSR4. . . . . . . . . . C ADDR 00A4H R SEG=?PR?_TEMPER_COV?DS18B20 181 184#
TSR5. . . . . . . . . . C ADDR 00A9H R SEG=?PR?_TEMPER_COV?DS18B20 183 186#
TSR6. . . . . . . . . . C ADDR 00ABH R SEG=?PR?_TEMPER_COV?DS18B20 187# 187
TSR7. . . . . . . . . . C ADDR 00ADH R SEG=?PR?_TEMPER_COV?DS18B20 185 188#
WR1 . . . . . . . . . . C ADDR 005CH R SEG=?PR?GET_TEMPER?DS18B20 75# 84
WRITE_1820. . . . . . . C ADDR 0059H R SEG=?PR?GET_TEMPER?DS18B20 31 33 42 44 72# 197 199 202 204 206
YS500 . . . . . . . . . C ADDR 00D3H R SEG=?PR?_TEMPER_COV?DS18B20 212 214#
YS500US . . . . . . . . C ADDR 00D9H R SEG=?PR?_TEMPER_COV?DS18B20 214 216#
_TEMPER_COV . . . . . . C ADDR 0000H R SEG=?PR?_TEMPER_COV?DS18B20 117 128#
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -