📄 lcd2402.lst
字号:
0158 C0F0 224 PUSH B
015A 852FF0 225 MOV B,X
015D 912B 226 ACALL LCDP2
015F D0F0 227 POP B
0161 740A 228 MOV A,#0AH
0163 C5F0 229 XCH A,B
0165 84 230 DIV AB
0166 2430 231 ADD A,#30H
0168 052F 232 INC X
016A C0F0 233 PUSH B
016C 852FF0 234 MOV B,X
016F 912B 235 ACALL LCDP2
0171 D0F0 236 POP B
0173 052F 237 INC X
0175 E5F0 238 MOV A,B
0177 852FF0 239 MOV B,X
017A 2430 240 ADD A,#30H
017C 912B 241 ACALL LCDP2
017E 22 242 RET
243 ;-----------------------------
017F 244 SHOW_LINE2L: ;在 LCD 的第二行显示数字
017F 75F064 245 MOV B,#100
A51 MACRO ASSEMBLER LCD2402 01/05/2007 14:57:13 PAGE 5
0182 84 246 DIV AB
0183 740A 247 MOV A,#0AH
0185 C5F0 248 XCH A,B
0187 84 249 DIV AB
0188 2430 250 ADD A,#30H
018A C0F0 251 PUSH B
018C 852FF0 252 MOV B,X
018F 912B 253 CALL LCDP2
0191 D0F0 254 POP B
0193 052F 255 INC X
0195 E5F0 256 MOV A,B
0197 852FF0 257 MOV B,X
019A 2430 258 ADD A,#30H
019C 912B 259 ACALL LCDP2
019E 22 260 RET
261 ;--------------------------------
262
263 ;----------- 温度值比较子程序------------
264
265 ;实际温度值与标记温度值比较子程序
019F 266 TEMP_COMP:
019F E527 267 MOV A,TEMP_TH
01A1 9524 268 SUBB A,TEMP_ZH ;减数>被减数,则
01A3 400E 269 JC TCL1 ;借位标志位C=1,转
01A5 E524 270 MOV A,TEMP_ZH
01A7 9528 271 SUBB A,TEMP_TL ;减数>被减数,则
01A9 4012 272 JC TCL2 ;借位标志位C=1,转
01AB 9001D9 273 MOV DPTR,#BJ5
01AE 31C5 274 ACALL TEMP_BJ3
01B0 C2A0 275 CLR RELAY ;继电器吸合
01B2 22 276 RET
01B3 277 TCL1:
01B3 9001D5 278 MOV DPTR,#BJ3 ;存入#BJ3表
01B6 31C5 279 ACALL TEMP_BJ3 ;调用显示高、低温度及加热标记子程序
01B8 D2A0 280 SETB RELAY ;继电器关闭
01BA 916A 281 ACALL SPK_BZ
01BC 22 282 RET
01BD 283 TCL2:
01BD 9001D7 284 MOV DPTR,#BJ4 ;存入#BJ4表
01C0 31C5 285 ACALL TEMP_BJ3 ;调用显示高、低温度及加标记子程序
01C2 916A 286 ACALL SPK_BZ ;调用鸣响子程序
01C4 22 287 RET
288
289 ;--- 显示高、低温度及加热标记程序----
01C5 290 TEMP_BJ3:
01C5 74CE 291 MOV A,#0CEH
01C7 9138 292 ACALL WR_COMM
01C9 7900 293 MOV R1,#0
01CB 7802 294 MOV R0,#2
295
01CD E9 296 BJJ: MOV A,R1
01CE 93 297 MOVC A,@A+DPTR
01CF 9145 298 ACALL WR_DATA
01D1 09 299 INC R1
01D2 D8F9 300 DJNZ R0,BJJ
01D4 22 301 RET
01D5 302 BJ3:
01D5 3E48 303 DB ">H"
01D7 304 BJ4:
01D7 3C4C 305 DB "<L"
01D9 306 BJ5:
01D9 2021 307 DB " !"
308
309 ;--------- 报警上下线写入暂存器子程序 ----------
310
01DB 311 WR_THL:
A51 MACRO ASSEMBLER LCD2402 01/05/2007 14:57:13 PAGE 6
01DB 200001 312 JB FLAG,WR_T ;
01DE 22 313 RET
01DF 314 WR_T:
01DF 51C3 315 ACALL RESET_1820
01E1 74CC 316 MOV A,#0CCH ;跳过ROM匹配
01E3 1202ED 317 LCALL WRITE_1820
01E6 744E 318 MOV A,#4EH ;写暂存寄存器
01E8 1202ED 319 LCALL WRITE_1820
01EB E527 320 MOV A,TEMP_TH ;TH(报警上限)
01ED 1202ED 321 LCALL WRITE_1820
01F0 E528 322 MOV A,TEMP_TL ;TL(报警下限)
01F2 1202ED 323 LCALL WRITE_1820
01F5 747F 324 MOV A,#7FH ;12位精确度
01F7 1202ED 325 LCALL WRITE_1820
01FA 22 326 RET
327
328 ;--------- 报警值拷贝到EEROM子程序 -----------
329
01FB 330 WRITE_E2:
01FB 51C3 331 ACALL RESET_1820
01FD 74CC 332 MOV A,#0CCH ;跳过ROM匹配
01FF 1202ED 333 LCALL WRITE_1820
0202 7448 334 MOV A,#48H ;[48H]为拷贝到EEROM的指令代码
0204 1202ED 335 LCALL WRITE_1820
0207 22 336 RET
337
338 ;---------- 报警值拷贝回暂存器子程序 ----------
339
0208 340 RE_THL:
0208 51C3 341 ACALL RESET_1820
020A 74CC 342 MOV A,#0CCH ;跳过ROM匹配
020C 1202ED 343 LCALL WRITE_1820
020F 74B8 344 MOV A,#0B8H ;把EEROM里的温度报警值拷贝回暂存器
0211 51ED 345 ACALL WRITE_1820
0213 22 346 RET
347
348 ;---------- 处理温度 BCD 码子程序 -----------
349
350 ; 处理温度 BCD 码子程序
0214 E526 351 CONV_TEMP: MOV A,TEMPH ;判温度是否零下
0216 5480 352 ANL A,#80H
0218 6011 353 JZ TC1 ;温度零上转
021A C3 354 CLR C
021B E525 355 MOV A,TEMPL ;二进制数求补(双字节)
021D F4 356 CPL A ;取反加1
021E 2401 357 ADD A,#01H
0220 F525 358 MOV TEMPL,A
0222 E526 359 MOV A,TEMPH
0224 F4 360 CPL A
0225 3400 361 ADDC A,#00H
0227 F526 362 MOV TEMPH,A
0229 8003 363 SJMP TC2
364
022B 75290A 365 TC1: MOV TEMPHC,#0AH
022E E529 366 TC2: MOV A,TEMPHC
0230 C4 367 SWAP A
0231 F529 368 MOV TEMPHC,A
0233 E525 369 MOV A,TEMPL
0235 540F 370 ANL A,#0FH ;乘0.0625
0237 90027F 371 MOV DPTR,#DOTTAB
023A 93 372 MOVC A,@A+DPTR
023B F52A 373 MOV TEMPLC,A ;TEMPLC LOW=小数部分 BCD
374
023D E525 375 MOV A,TEMPL ;整数部分
023F 54F0 376 ANL A,#0F0H ;取出高四位
0241 C4 377 SWAP A
A51 MACRO ASSEMBLER LCD2402 01/05/2007 14:57:13 PAGE 7
0242 F525 378 MOV TEMPL,A
0244 E526 379 MOV A,TEMPH ;取出低四位
0246 540F 380 ANL A,#0FH
0248 C4 381 SWAP A
0249 4525 382 ORL A,TEMPL ;重新组合
024B F524 383 MOV TEMP_ZH,A
024D 120271 384 LCALL HEX2BCD1
0250 F525 385 MOV TEMPL,A
0252 54F0 386 ANL A,#0F0H
0254 C4 387 SWAP A
0255 4529 388 ORL A,TEMPHC ;TEMPHC LOW = 十位数 BCD
0257 F529 389 MOV TEMPHC,A
0259 E525 390 MOV A,TEMPL
025B 540F 391 ANL A,#0FH
025D C4 392 SWAP A ;TEMPLC HI = 个位数 BCD
025E 452A 393 ORL A,TEMPLC
0260 F52A 394 MOV TEMPLC,A
0262 EC 395 MOV A,R4
0263 600B 396 JZ TC3
0265 540F 397 ANL A,#0FH
0267 C4 398 SWAP A
0268 FC 399 MOV R4,A
0269 E529 400 MOV A,TEMPHC ;TEMPHC HI = 百位数 BCD
026B 540F 401 ANL A,#0FH
026D 4C 402 ORL A,R4
026E F529 403 MOV TEMPHC,A
0270 22 404 TC3: RET
405 ;--------------------------
0271 406 HEX2BCD1:
0271 75F064 407 MOV B,#064H ;十六进制-> BCD
0274 84 408 DIV AB ;B= A % 100
0275 FC 409 MOV R4,A ;R7 = 百位数
0276 740A 410 MOV A,#0AH
0278 C5F0 411 XCH A,B
027A 84 412 DIV AB ;B = A % B
027B C4 413 SWAP A
027C 45F0 414 ORL A,B
027E 22 415 RET
416
417 ;-------------------------
418 ; 小数部分码表
027F 419 DOTTAB:
027F 00000101 420 DB 00H,00H,01H,01H,02H,03H,03H,04H
0283 02030304
0287 05050606 421 DB 05H,05H,06H,06H,07H,08H,08H,09H
028B 07080809
422 ;-------------------------
423
424 ;--------- 显示区BCD 码温度值刷新子程序 ----------
425
426 ;显示区 BCD 码温度值刷新
028F 427 DISP_BCD:
028F E52A 428 MOV A,TEMPLC
0291 540F 429 ANL A,#0FH
0293 F570 430 MOV 70H,A ;小数位
0295 E52A 431 MOV A,TEMPLC
0297 C4 432 SWAP A
0298 540F 433 ANL A,#0FH
029A F571 434 MOV 71H,A ;个位
029C E529 435 MOV A,TEMPHC
029E 540F 436 ANL A,#0FH
02A0 F572 437 MOV 72H,A ;十位
02A2 E529 438 MOV A,TEMPHC
02A4 C4 439 SWAP A
02A5 540F 440 ANL A,#0FH
02A7 F573 441 MOV 73H,A ;百位
A51 MACRO ASSEMBLER LCD2402 01/05/2007 14:57:13 PAGE 8
02A9 E529 442 MOV A,TEMPHC
02AB 54F0 443 ANL A,#0F0H
02AD B41002 444 CJNE A,#010H,DI0
02B0 8010 445 SJMP DI2
446
02B2 E529 447 DI0: MOV A,TEMPHC
02B4 540F 448 ANL A,#0FH
02B6 700A 449 JNZ DI2 ;十位数是0
02B8 E529 450 MOV A,TEMPHC
02BA C4 451 SWAP A
02BB 540F 452 ANL A,#0FH
02BD 75730A 453 MOV 73H,#0AH ;符号位不显示
02C0 F572 454 MOV 72H,A ;十位数显示符号
02C2 22 455 DI2: RET
456
457 ;------------------- DS18B20复位初始化子程序 ----------------------
458
02C3 459 RESET_1820: ;复位(有具体的时序要求)
02C3 D2A5 460 SETB DQ
02C5 00 461 NOP
02C6 C2A5 462 CLR DQ
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -