📄 push_box.lst
字号:
059A 2582 +1 561 ADD A,DPL
059C F582 +1 562 MOV DPL,A
059E C5F0 +1 563 XCH A,B
05A0 3583 +1 564 ADDC A,DPH
05A2 F583 +1 565 MOV DPH,A
+1 566
05A4 7A40 +1 567 MOV R2,#40H ;
05A6 7980 +1 568 MOV R1,#lcd_ram_addr
05A8 7400 +1 569 STORE1: MOV A, #00H
05AA 93 +1 570 MOVC A,@A+DPTR
05AB B40402 +1 571 CJNE A,#04H,STORE2 ;
05AE 8937 +1 572 MOV MAN_POSITION,R1
05B0 F7 +1 573 STORE2: MOV @R1,A
05B1 09 +1 574 INC R1
05B2 A3 +1 575 INC DPTR
05B3 DAF3 +1 576 DJNZ R2,STORE1
+1 577
05B5 D202 +1 578 SETB DISPLAY_FLAG
05B7 1205E1 +1 579 LCALL ENABLE_TIMER1
05BA +1 580 START_GAME_RTN:
05BA 22 +1 581 RET
+1 582 ;===========================================================
05BB +1 583 CHECK_STAGE_UPGRADE:
05BB A203 +1 584 MOV C,CHECK_UPGRADE
05BD 5021 +1 585 JNC CHECK_STAGE_UPGRADE_RTN
05BF C203 +1 586 CLR CHECK_UPGRADE
05C1 C3 +1 587 CLR C
A51 MACRO ASSEMBLER PUSH_BOX 12/01/2007 13:29:27 PAGE 12
+1 588
05C2 7F40 +1 589 MOV R7,#data_num ;
05C4 7D00 +1 590 MOV R5,#00H ;
05C6 7880 +1 591 MOV R0,#lcd_ram_addr
05C8 +1 592 CHECK_NEXT:
05C8 E6 +1 593 MOV A,@R0
05C9 B42301 +1 594 CJNE A,#23H,NO_MATCH
05CC 0D +1 595 INC R5
05CD +1 596 NO_MATCH:
05CD 08 +1 597 INC R0
05CE DFF8 +1 598 DJNZ R7,CHECK_NEXT
+1 599
05D0 9000DB +1 600 MOV DPTR,#BOXNUM_TAB
05D3 E536 +1 601 MOV A,STAGE_INDEX ;
05D5 93 +1 602 MOVC A,@A+DPTR ;
05D6 6D +1 603 XRL A,R5 ;
05D7 7007 +1 604 JNZ CHECK_STAGE_UPGRADE_RTN
+1 605
05D9 0536 +1 606 INC STAGE_INDEX ;
05DB 1205F6 +1 607 LCALL DELAY40MS ;
05DE D201 +1 608 SETB STAGE_UPGRADE ;
+1 609
05E0 +1 610 CHECK_STAGE_UPGRADE_RTN:
05E0 22 +1 611 RET
+1 612 ;==========================================================
+1 613 ;4ms
05E1 +1 614 ENABLE_TIMER1:
05E1 758910 +1 615 MOV TMOD,#10H ;
05E4 758DF0 +1 616 MOV TH1,#0F0H
05E7 758B60 +1 617 MOV TL1,#060H
05EA D2AF +1 618 SETB EA
05EC D2AB +1 619 SETB ET1
05EE D28E +1 620 SETB TR1
05F0 22 +1 621 RET
+1 622 ;==========================================================
05F1 +1 623 DISABLE_TIMER1:
05F1 C2AB +1 624 CLR ET1
05F3 C28E +1 625 CLR TR1
05F5 22 +1 626 RET
+1 627 ;==========================================================
05F6 +1 628 DELAY40MS:
05F6 753EC8 +1 629 MOV DELAY_CT2,#0C8H
05F9 +1 630 DELAY40MS_LOOP:
05F9 753D64 +1 631 MOV DELAY_CT1,#64H
05FC D53DFD +1 632 DJNZ DELAY_CT1,$
05FF D53EF7 +1 633 DJNZ DELAY_CT2,DELAY40MS_LOOP
0602 22 +1 634 RET
+1 635 ;===========================================================
+1 636
637
638 ;#include <_normal_key_function.a51>
+1 639
+1 640 ;===============================================
0603 +1 641 KEY_FUNCTION:
0603 A200 +1 642 MOV C,KEY_FLAG
0605 501D +1 643 JNC KEY_FUNCTION_RET
0607 C200 +1 644 CLR KEY_FLAG
+1 645
0609 853435 +1 646 MOV KEY_VALUE_BUF,KEY_VALUE
060C 900625 +1 647 MOV DPTR,#KEY_FUNC_TABLE
060F E535 +1 648 MOV A,KEY_VALUE_BUF
0611 C3 +1 649 CLR C
0612 23 +1 650 RL A
0613 F535 +1 651 MOV KEY_VALUE_BUF,A
0615 93 +1 652 MOVC A,@A+DPTR
0616 C0E0 +1 653 PUSH ACC
A51 MACRO ASSEMBLER PUSH_BOX 12/01/2007 13:29:27 PAGE 13
0618 E535 +1 654 MOV A,KEY_VALUE_BUF
061A 04 +1 655 INC A
061B 93 +1 656 MOVC A,@A+DPTR
061C F582 +1 657 MOV DPL,A
061E D0E0 +1 658 POP ACC
0620 F583 +1 659 MOV DPH,A
0622 E4 +1 660 CLR A
0623 73 +1 661 JMP @A+DPTR
+1 662
0624 +1 663 KEY_FUNCTION_RET:
0624 22 +1 664 RET
+1 665 ;===============================================
0625 +1 666 KEY_FUNC_TABLE:
0625 0643 +1 667 DW NORMAL_KEY1 ,NORMAL_KEY2 ,NORMAL_KEY3 ,NORMAL_KEY4 ,NORMAL_KEY5
0627 069C
0629 06E4
062B 0730
062D 078D
062F 0798 +1 668 DW NORMAL_KEY6 ,NORMAL_KEY7 ,NORMAL_KEY8 ,NORMAL_KEY9 ,NORMAL_KEY10
0631 079B
0633 079C
0635 079D
0637 079E
0639 079F +1 669 DW NORMAL_KEY11,NORMAL_KEY12,NORMAL_KEY13,NORMAL_KEY14,NORMAL_KEY15
063B 07A0
063D 07A1
063F 07A2
0641 07A3
+1 670 ;===============================================
+1 671 ;向上键子程序
0643 +1 672 NORMAL_KEY1:
0643 A205 +1 673 MOV C,START_GAME_FLAG
0645 5054 +1 674 JNC NORMAL_KEY1_RET
+1 675
0647 A837 +1 676 MOV R0,MAN_POSITION
0649 C3 +1 677 GOUP: CLR C
064A E8 +1 678 MOV A,R0
064B 9408 +1 679 SUBB A,#08H ;
064D F8 +1 680 MOV R0,A
+1 681
064E E6 +1 682 MOV A,@R0
064F 540F +1 683 ANL A,#0FH
0651 B40102 +1 684 CJNE A,#wall_code,U111 ;
0654 C19B +1 685 AJMP NORMAL_KEY1_RET
+1 686
0656 B40331 +1 687 U111: CJNE A,#box_code,U222
0659 E8 +1 688 MOV A,R0
065A C3 +1 689 CLR C
065B 9408 +1 690 SUBB A,#08H ;
065D F8 +1 691 MOV R0,A
065E E6 +1 692 MOV A,@R0
065F 540F +1 693 ANL A,#0FH
0661 B40102 +1 694 CJNE A,#wall_code,U11 ;
0664 C19B +1 695 AJMP NORMAL_KEY1_RET
+1 696
0666 B40302 +1 697 U11: CJNE A,#box_code,U12 ;
0669 C19B +1 698 AJMP NORMAL_KEY1_RET
+1 699
066B C4 +1 700 U12: SWAP A
066C 4403 +1 701 ORL A,#box_code
066E F6 +1 702 MOV @R0,A
066F E8 +1 703 MOV A,R0
0670 2408 +1 704 ADD A,#08H
0672 F8 +1 705 MOV R0,A
0673 8837 +1 706 MOV MAN_POSITION,R0
0675 E6 +1 707 MOV A,@R0
A51 MACRO ASSEMBLER PUSH_BOX 12/01/2007 13:29:27 PAGE 14
0676 54F0 +1 708 ANL A,#0F0H
0678 4404 +1 709 ORL A,#man_code
067A F6 +1 710 MOV @R0,A
067B E8 +1 711 MOV A,R0
067C 2408 +1 712 ADD A,#08H
067E F8 +1 713 MOV R0,A
067F E6 +1 714 MOV A,@R0
0680 54F0 +1 715 ANL A,#0F0H
0682 C4 +1 716 SWAP A
0683 F6 +1 717 MOV @R0,A
0684 D202 +1 718 SETB DISPLAY_FLAG
0686 D203 +1 719 SETB CHECK_UPGRADE
0688 C19B +1 720 AJMP NORMAL_KEY1_RET
+1 721
068A C4 +1 722 U222: SWAP A
068B 4404 +1 723 ORL A,#man_code
068D F6 +1 724 MOV @R0,A
068E 8837 +1 725 MOV MAN_POSITION,R0
0690 E8 +1 726 MOV A,R0
0691 2408 +1 727 ADD A,#08H
0693 F8 +1 728 MOV R0,A
0694 E6 +1 729 MOV A,@R0
0695 54F0 +1 730 ANL A,#0F0H
0697 C4 +1 731 SWAP A
0698 F6 +1 732 MOV @R0,A
0699 D202 +1 733 SETB DISPLAY_FLAG
+1 734
069B +1 735 NORMAL_KEY1_RET:
069B 22 +1 736 RET
+1 737 ;===============================================
+1 738 ;;向左键子程序
069C +1 739 NORMAL_KEY2:
069C A205 +1 740 MOV C,START_GAME_FLAG
069E 5043 +1 741 JNC NORMAL_KEY2_RET
+1 742
06A0 A837 +1 743 MOV R0,MAN_POSITION
06A2 18 +1 744 GOLEFT: DEC R0
06A3 E6 +1 745 MOV A,@R0
06A4 540F +1 746 ANL A,#0FH
06A6 B40102 +1 747 CJNE A,#wall_code,L111
06A9 C1E3 +1 748 AJMP NORMAL_KEY2_RET
+1 749
06AB B40327 +1 750 L111: CJNE A,#box_code,L222
06AE 18 +1 751 DEC R0
06AF E6 +1 752 MOV A,@R0
06B0 540F +1 753 ANL A,#0FH
06B2 B40102 +1 754 CJNE A,#wall_code,L11
06B5 C1E3 +1 755 AJMP NORMAL_KEY2_RET
+1 756
06B7 B40302 +1 757 L11: CJNE A,#box_code,L12
06BA C1E3 +1 758 AJMP NORMAL_KEY2_RET
+1 759
06BC +1 760 L12:
06BC C4 +1 761 SWAP A
06BD 4403 +1 762 ORL A,#box_code
06BF F6 +1 763 MOV @R0,A
06C0 08 +1 764 INC R0
06C1 8837 +1 765 MOV MAN_POSITION,R0
06C3 E6 +1 766 MOV A,@R0
06C4 54F0 +1 767 ANL A,#0F0H
06C6 4404 +1 768 ORL A,#man_code
06C8 F6 +1 769 MOV @R0,A
06C9 08 +1 770 INC R0
06CA E6 +1 771 MOV A,@R0
06CB 54F0 +1 772 ANL A,#0F0H
06CD C4 +1 773 SWAP A
A51 MACRO ASSEMBLER PUSH_BOX 12/01/2007 13:29:27 PAGE 15
06CE F6 +1 774 MOV @R0,A
06CF D202 +1 775 SETB DISPLAY_FLAG
06D1 D203 +1 776 SETB CHECK_UPGRADE
06D3 C1E3 +1 777 AJMP NORMAL_KEY2_RET
+1 778
06D5 C4 +1 779 L222: SWAP A
06D6 4404 +1 780 ORL A,#man_code
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -