📄 main.lst
字号:
01DE C28E 462 CLR TR1
463
01E0 12021F 464 LCALL WriterSetTempDate;控制温度写入E2PROM中
465
01E3 D28C 466 SETB TR0
01E5 D2A9 467 SETB ET0
468
01E7 750000 F 469 MOV ContrlMumber,#00H
470
01EA 7400 471 MOV A,#00H
01EC 12040A 472 LCALL SetDisplayMode ;数码管常亮
01EF 22 473 RET
474
A51 MACRO ASSEMBLER MAIN DATE 28/01/02 PAGE 9
LOC OBJ LINE SOURCE
01F0 475 SetTemp4:
01F0 020144 476 LJMP SetTemp1
01F3 00 477 NOP
01F4 00 478 NOP
479
480 ;*************************************************************
481 ;读取设定温度
01F5 482 ReadSetTempDate:
01F5 120377 483 LCALL CloseDisplay
01F8 750000 F 484 MOV Counter,#00H
485
01FB 7410 486 MOV A,#SetTempHE2PROM1
01FD 120000 F 487 LCALL ReadI2CDate
0200 F500 F 488 MOV SetTempH,A ;设定温度值存贮
489
490
0202 7411 491 MOV A,#SetTempLE2PROM1
0204 120000 F 492 LCALL ReadI2CDate
0207 F500 F 493 MOV SetTempL,A ;设定温度值存贮
494
0209 22 495 RET
496
020A 497 ErrorDisplay:
020A C2AF 498 CLR EA ;禁止中断
020C 75000A F 499 MOV Mumber0,#0AH
020F 75000A F 500 MOV Mumber1,#0AH
0212 75000B F 501 MOV Mumber2,#0BH ;错误代码(ERR)
0215 12038A 502 LCALL Display ;显示数码
0218 1204B9 503 LCALL Dealy
021B C296 504 CLR TempContrPort
021D 80EB 505 SJMP ErrorDisplay
506
507 ;保存设定温度
021F 508 WriterSetTempDate:
021F 120377 509 LCALL CloseDisplay
510
0222 120000 F 511 LCALL OpenI2c
512
0225 8500F0 F 513 MOV B,SetTempH
0228 7410 514 MOV A,#SetTempHE2PROM1
022A 120000 F 515 LCALL WriteI2CDate
022D 120000 F 516 LCALL DealyLong
517
0230 8500F0 F 518 MOV B,SetTempL
0233 7411 519 MOV A,#SetTempLE2PROM1
0235 120000 F 520 LCALL WriteI2CDate
0238 120000 F 521 LCALL DealyLong
522
023B 120000 F 523 LCALL CloseI2c
023E 22 524 RET
525 ;*************************************************************
023F 526 DINS1:
527
023F C0E0 528 PUSH ACC
0241 C0D0 529 PUSH PSW
0243 C083 530 PUSH DPH
0245 C082 531 PUSH DPL
0247 C0F0 532 PUSH B
533 ;
A51 MACRO ASSEMBLER MAIN DATE 28/01/02 PAGE 10
LOC OBJ LINE SOURCE
534 ;------------------------------------------------------------
535
0249 200025 F 536 JB DisplayStatu,DINS10
024C 758DF0 537 MOV TH1,#0F0H
024F 758BBF 538 MOV TL1,#0BFH ;8ms中断一次
539
0252 120434 540 LCALL ReadKey
0255 12038A 541 LCALL Display
542
0258 200007 F 543 JB Timerout , DINS00003 ;测量时间溢出则关加热
025B 300004 F 544 JNB TempContr,DINS00003
545
546 ; MOV A,ContrlMumber
547 ; JNZ DINS00001
548 ; CLR TempContrPort
549 ;DINS00001:
550 ; CJNE A,TempSub,DINS00002
025E D296 551 SETB TempContrPort
552 ;DINS00002:
553 ; INC ContrlMumber
554 ; MOV A,ContrlMumber
555 ; CJNE A,#23,DINS00004
556 ; MOV ContrlMumber,#00H
0260 8002 557 SJMP DINS00004
0262 558 DINS00003:
0262 C296 559 CLR TempContrPort
0264 560 DINS00004:
0264 D0F0 561 POP B
0266 D082 562 POP DPL
0268 D083 563 POP DPH
026A D0D0 564 POP PSW
026C D0E0 565 POP ACC
026E 32 566 RETI
026F 00 567 NOP
0270 00 568 NOP
569
0271 570 DINS10:
0271 758D00 571 MOV TH1,#00H
0274 758B00 572 MOV TL1,#00H ;8ms中断一次
573
0277 0500 F 574 INC Timer
0279 E500 F 575 MOV A,Timer
027B B40A05 576 CJNE A,#SetTimer,DINS11
027E 750000 F 577 MOV Timer,#00H
0281 B200 F 578 CPL XSBJ
0283 579 DINS11:
0283 0500 F 580 INC Timer1
0285 E500 F 581 MOV A,Timer1
0287 B4C807 582 CJNE A,#SetWaitTimer,DINS12
028A 750000 F 583 MOV Timer1,#00H
028D D200 F 584 SETB FHBJ
028F D200 F 585 SETB FHBJ
0291 586 DINS12:
0291 0500 F 587 INC Timer2
0293 E500 F 588 MOV A,Timer2
0295 B50005 F 589 CJNE A,ChangSpeed,DINS13
0298 750000 F 590 MOV Timer2,#00H
029B B200 F 591 CPL ChangOk
029D 592 DINS13:
A51 MACRO ASSEMBLER MAIN DATE 28/01/02 PAGE 11
LOC OBJ LINE SOURCE
029D D0F0 593 POP B
029F D082 594 POP DPL
02A1 D083 595 POP DPH
02A3 D0D0 596 POP PSW
02A5 D0E0 597 POP ACC
02A7 32 598 RETI
599
600
601 ;-------------------------------------------------------------
602 ;定时中断0子程序:
02A8 603 DINS:
02A8 C0E0 604 PUSH ACC
02AA C0D0 605 PUSH PSW
606
02AC C083 607 PUSH DPH
02AE C082 608 PUSH DPL
609
02B0 D2D3 610 SETB RS0
611
612
02B2 C28C 613 CLR TR0 ;定时器初始化
02B4 120377 614 LCALL CloseDisplay
615
02B7 200008 F 616 JB TestCon , DINS000
02BA D293 617 SETB XM2
02BC C294 618 CLR XM1
02BE C295 619 CLR XM0
02C0 41C8 620 AJMP DINS001
02C2 621 DINS000:
02C2 C293 622 CLR XM2
02C4 D294 623 SETB XM1
02C6 C295 624 CLR XM0 ;设定进行基准测量还是实际测量
02C8 625 DINS001:
626
02C8 C200 F 627 CLR Timerout
628
02CA 900000 629 MOV DPTR,#00H
630
02CD 758C00 631 MOV TH0,#0
02D0 758A00 632 MOV TL0,#0
02D3 C292 633 CLR RC ;电容开始充电
02D5 D28C 634 SETB TR0 ;开始计时
02D7 635 ADC1:
02D7 A3 636 INC DPTR
02D8 E583 637 MOV A , DPH
02DA B41B06 638 CJNE A , #27 , ADC12
02DD D200 F 639 SETB Timerout
02DF C200 F 640 CLR TempContr
02E1 8030 641 SJMP DINSE
02E3 642 ADC12:
02E3 30B6F1 643 JNB JUDE,ADC1 ;等待充电达到Vi
02E6 C28C 644 CLR TR0 ;冻结定时器
02E8 C28C 645 CLR TR0 ;冻结定时器
02EA AB8A 646 MOV R3,TL0 ;读取充电时间间隔
02EC AA8C 647 MOV R2,TH0
648
02EE 758C48 649 MOV TH0,#048H ;约38mS定时
02F1 758A00 650 MOV TL0,#000H
02F4 D28C 651 SETB TR0 ;定时器继续工作
A51 MACRO ASSEMBLER MAIN DATE 28/01/02 PAGE 12
LOC OBJ LINE SOURCE
02F6 D292 652 SETB RC ;放电,准备下次充电
02F8 D292 653 SETB RC ;放电,准备下次充电
654
02FA EB 655 MOV A,R3 ;累加采样值
02FB 2500 F 656 ADD A,TOTALL
02FD F500 F 657 MOV TOTALL,A
02FF EA 658 MOV A,R2
0300 3500 F 659 ADDC A,TOTALM
0302 F500 F 660 MOV TOTALM,A
0304 E4 661 CLR A
0305 3500 F 662 ADDC A,TOTALH
0307 F500 F 663 MOV TOTALH,A
664
0309 0500 F 665 INC CLOCK ;检测次数加一
030B E500 F 666 MOV A,CLOCK
030D 540F 667 ANL A,#0FH
030F 00 668 NOP
0310 00 669 NOP
0311 600B 670 JZ ADC2
0313 671 DINSE:
0313 D082 672 POP DPL
0315 D083 673 POP DPH
0317 D0D0 674 POP PSW
0319 D0E0 675 POP ACC
676
031B 32 677 RETI ;检测未满16次,中断返回
031C 00 678 NOP
031D 00 679 NOP
031E 680 ADC2:
031E E500 F 681 MOV A,TOTALL ;检测满16次,求平均充电时间,保存到R2R3
0320 C4 682 SWAP A
0321 540F 683 ANL A,#0FH
0323 FB 684 MOV R3,A
0324 E500 F 685 MOV A,TOTALM
0326 C4 686 SWAP A
0327 54F0 687 ANL A,#0F0H
0329 4B 688 ORL A,R3
032A FB 689 MOV R3,A
032B F500 F 690 MOV VILT,A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -