📄 ds18b20-dsy.lst
字号:
00E6 74CC 196 MOV A,#0CCH ;跳过ROM匹配
00E8 120088 197 LCALL WRITE
00EB 744E 198 MOV A,#4EH ;写暂存寄存器
00ED 120088 199 LCALL WRITE
00F0 E528 200 MOV A,TEMP_TH ;TH(报警上限)
00F2 120088 201 LCALL WRITE
00F5 E529 202 MOV A,TEMP_TL ;TL(报警下限)
00F7 120088 203 LCALL WRITE
00FA 747F 204 MOV A,#7FH ;12位精确度
00FC 120088 205 LCALL WRITE
00FF 22 206 RET
207
208 ;====================================================
209 ;功能键扫描子程序
210 ;====================================================
0100 211 SCANKEY:
0100 7590F0 212 MOV P1,#0F0H
0103 209414 213 JB K1,SCAN_K2
0106 71BB 214 CALL BEEP_BL
0108 7132 215 SCAN_K1: CALL ALERT_TL
010A 7180 216 CALL ALERT_PLAY
010C 2094F9 217 JB K1,SCAN_K1
010F 71BB 218 CALL BEEP_BL
0111 7159 219 SCAN_K11: CALL ALERT_TH
0113 7180 220 CALL ALERT_PLAY
0115 2094F9 221 JB K1,SCAN_K11
0118 71BB 222 CALL BEEP_BL
011A 209502 223 SCAN_K2: JB K2,SCAN_K3
011D 71BB 224 CALL BEEP_BL
011F 20960B 225 SCAN_K3: JB K3,SCAN_K4
0122 71BB 226 CALL BEEP_BL
0124 120133 227 LCALL RESET_ALERT
0127 1200E0 228 LCALL RE_18B20
012A 120226 229 LCALL WRITE_E2
012D 209702 230 SCAN_K4: JB K4,SCAN_END
0130 71BB 231 CALL BEEP_BL
0132 22 232 SCAN_END: RET
233
234 ;================================================
235 ;设置温度报警值
236 ;================================================
0133 237 RESET_ALERT:
0133 7132 238 CALL ALERT_TL
0135 7180 239 CALL ALERT_PLAY
0137 3096FD 240 JNB K3,$ ;K3为位移键
013A D28C 241 SETB TR0
013C 242 RESET_TL:
013C 7180 243 CALL ALERT_PLAY
013E 30010A 244 JNB FLAG2,R_TL01
0141 857F75 245 mov 75H,7fh ;送入熄灭符
0144 857F76 246 mov 76H,7fh
0147 7180 247 CALL ALERT_PLAY
0149 800A 248 JMP R_TL02
014B 7132 249 R_TL01: CALL ALERT_TL
014D 857E75 250 mov 75h,7Eh ;送设定值
0150 857D76 251 mov 76h,7Dh
0153 7180 252 CALL ALERT_PLAY ;显示设定值
0155 309408 253 R_TL02: JNB K1,K011A
0158 309513 254 JNB K2,K011B
015B 30961E 255 JNB K3,RESET_TH
015E 80DC 256 JMP RESET_TL
A51 MACRO ASSEMBLER DS18B20_DSY 03/29/2005 16:14:10 PAGE 5
0160 257 K011A:
0160 0529 258 INC TEMP_TL
0162 E529 259 MOV A,TEMP_TL
0164 B47803 260 CJNE A,#120,K012A ;没有到设定上限值,转
0167 752900 261 MOV TEMP_TL,#0
016A 31C6 262 K012A: CALL TL_DEL
016C 80CE 263 JMP RESET_TL
016E 264 K011B:
016E 1529 265 DEC TEMP_TL
0170 E529 266 MOV A,TEMP_TL
0172 B40003 267 CJNE A,#00H,K012B ;没有到设定下限值,转
0175 752977 268 MOV TEMP_TL,#119
0178 31C6 269 K012B: CALL TL_DEL
017A 80C0 270 JMP RESET_TL
271 ;-------------------------------------------------------
017C 272 RESET_TH:
017C 71BB 273 CALL BEEP_BL
017E 3096FD 274 JNB K3,$
0181 275 RESET_TH1:
0181 7180 276 CALL ALERT_PLAY
0183 30010A 277 JNB FLAG2,R_TH01
0186 857F75 278 mov 75H,7fh ;送入熄灭符
0189 857F76 279 mov 76H,7fh
018C 7180 280 CALL ALERT_PLAY
018E 800A 281 JMP R_TH02
0190 7159 282 R_TH01: CALL ALERT_TH
0192 857E75 283 mov 75h,7Eh ;
0195 857D76 284 mov 76h,7Dh
0198 7180 285 CALL ALERT_PLAY
019A 309408 286 R_TH02: JNB K1,K021A
019D 309513 287 JNB K2,K021B
01A0 30961E 288 JNB K3,K002
01A3 80DC 289 JMP RESET_TH1
01A5 290 K021A:
01A5 0528 291 INC TEMP_TH
01A7 E528 292 MOV A,TEMP_TH
01A9 B47803 293 CJNE A,#120,K022A ;没有到设定上限值,转
01AC 752800 294 MOV TEMP_TH,#0
01AF 31CF 295 K022A: CALL TH_DEL
01B1 80CE 296 JMP RESET_TH1
297
01B3 298 K021B:
01B3 1528 299 DEC TEMP_TH ;减1
01B5 E528 300 MOV A,TEMP_TH
01B7 B40003 301 CJNE A,#00H,K022B ;没有到设定下限值,转
01BA 752877 302 MOV TEMP_TH,#119
01BD 31CF 303 K022B: CALL TH_DEL
01BF 80C0 304 JMP RESET_TH1
305
01C1 71BB 306 K002: CALL BEEP_BL
01C3 C28C 307 CLR TR0 ;关闭中断
01C5 22 308 RET
309 ;-----------------------------------------------------
310 ;键延时子程序
311 ;多次调用报警值显示程序来延时
312 ;-----------------------------------------------------
01C6 313 TL_DEL: ;报警低值延时
01C6 7A0A 314 MOV R2,#0AH
01C8 7132 315 TL_DEL1: CALL ALERT_TL
01CA 7180 316 CALL ALERT_PLAY
01CC DAFA 317 DJNZ R2,TL_DEL1
01CE 22 318 RET
01CF 319 TH_DEL: ;报警高值延时
01CF 7A0A 320 MOV R2,#0AH
01D1 7159 321 TH_DEL1: CALL ALERT_TH
01D3 7180 322 CALL ALERT_PLAY
A51 MACRO ASSEMBLER DS18B20_DSY 03/29/2005 16:14:10 PAGE 6
01D5 DAFA 323 DJNZ R2,TH_DEL1
01D7 22 324 RET
325 ;====================================================
326 ;实时温度值与设定报警温度值 TH、TL 比较子程序
327 ;当实际温度大于 TH 的设定值时,显示“H”,继电器关闭。
328 ;当实际温度小于 TH 的设定值时,显示“O”,继电器吸合。
329 ;当实际温度小于 TL 的设定值时,显示“L”。
330 ;闪动显示标记符 H、L、O
331 ;====================================================
01D8 332 TEMP_COMP:
01D8 D28C 333 SETB TR0 ;启动中断
01DA E528 334 MOV A,TEMP_TH
01DC 952C 335 SUBB A,TEMP_ZH ;减数>被减数,则
01DE 401C 336 JC CHULI1 ;借位标志位C=1,转
01E0 E52C 337 MOV A,TEMP_ZH
01E2 9529 338 SUBB A,TEMP_TL ;减数>被减数,则
01E4 402C 339 JC CHULI2 ;借位标志位C=1,转
01E6 300108 340 JNB FLAG2,T_COMP1 ;FLAG2=0,显示标记字符
01E9 75740A 341 MOV 74H,#0AH ;熄灭符
01EC 1202E3 342 LCALL DISP1
01EF 8006 343 JMP T_COMP2
01F1 757400 344 T_COMP1: MOV 74H,#00H
01F4 1202E3 345 LCALL DISP1 ;显示"O"
01F7 C293 346 T_COMP2: CLR RELAY ;继电器吸合
01F9 C28C 347 CLR TR0 ;关闭中断
01FB 22 348 RET
349 ;---------------------------------------------
350 ;超温处理
351 ;---------------------------------------------
01FC 352 CHULI1:
01FC D293 353 SETB RELAY ;继电器关闭
01FE 300108 354 JNB FLAG2,CHULI10
0201 75740A 355 MOV 74H,#0AH ;熄灭符
0204 1202E3 356 LCALL DISP1
0207 8006 357 JMP CHULI11
0209 75740D 358 CHULI10: MOV 74H,#0DH
020C 1202E3 359 LCALL DISP1 ;显示"H"
360 ;CALL BEEP_BL ;蜂鸣器响
020F 361 CHULI11:
020F C28C 362 CLR TR0 ;关闭中断
0211 22 363 RET
364 ;---------------------------------------------
365 ;欠温处理
366 ;---------------------------------------------
0212 367 CHULI2: ;欠温处理
0212 300108 368 JNB FLAG2,CHULI20
0215 75740A 369 MOV 74H,#0AH ;熄灭符
0218 1202E3 370 LCALL DISP1
021B 8006 371 JMP CHULI21
021D 75740C 372 CHULI20: MOV 74H,#0CH
0220 1202E3 373 LCALL DISP1 ;显示"L"
374 ;CALL BEEP_BL ;蜂鸣器响
0223 C28C 375 CHULI21: CLR TR0 ;关闭中断
0225 22 376 RET
377 ;------------------------------------------------------------
378 ;把 DS18B20 暂存器里的温度报警值拷贝到EEROM
379 ;------------------------------------------------------------
0226 380 WRITE_E2:
0226 115E 381 CALL RESET
0228 74CC 382 MOV A,#0CCH ;跳过ROM匹配
022A 120088 383 LCALL WRITE
022D 7448 384 MOV A,#48H ;温度报警值拷贝到EEROM
022F 120088 385 LCALL WRITE
0232 22 386 RET
387 ;--------------------------------------------------------------
388 ;把 DS18B20 EEROM 里的温度报警值拷贝回暂存器
A51 MACRO ASSEMBLER DS18B20_DSY 03/29/2005 16:14:10 PAGE 7
389 ;-------------------------------------------------------------
0233 390 READ_E2:
0233 115E 391 CALL RESET
0235 74CC 392 MOV A,#0CCH ;跳过ROM匹配
0237 120088 393 LCALL WRITE
023A 74B8 394 MOV A,#0B8H ;温度报警值拷贝回暂存器
023C 1188 395 CALL WRITE
023E 22 396 RET
397
398 ;*****************************************************
399 ; 处理温度 BCD 码子程序
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -