📄 para.ls1
字号:
0121 93 641 MOVC A,@A+DPTR
0122 2402 642 ADD A,#02H
0124 FF 643 MOV R7,A
0125 E4 644 CLR A
0126 93 645 MOVC A,@A+DPTR
0127 3400 646 ADDC A,#00H
0129 FE 647 MOV R6,A
012A 900000 F 648 MOV DPTR,#StartAddr?045
012D E0 649 MOVX A,@DPTR
012E 6E 650 XRL A,R6
012F 7003 651 JNZ ?C0054
0131 A3 652 INC DPTR
0132 E0 653 MOVX A,@DPTR
0133 6F 654 XRL A,R7
0134 655 ?C0054:
0134 700F 656 JNZ ?C0017
657 ; {
658 ; SOURCE LINE # 125
659 ; ParaCopy(1);
660 ; SOURCE LINE # 126
0136 D200 F 661 SETB ?ParaCopy?BIT
0138 120000 F 662 LCALL ParaCopy
663 ; StartAddr = ParaStart + SECTOR_SIZE + 2;
664 ; SOURCE LINE # 127
013B 900000 F 665 MOV DPTR,#ParaStart
013E 7401 666 MOV A,#01H
0140 93 667 MOVC A,@A+DPTR
0141 2482 668 ADD A,#082H
669 ; }
670 ; SOURCE LINE # 128
0143 800D 671 SJMP ?C0067
0145 672 ?C0017:
673 ; else
674 ; {
675 ; SOURCE LINE # 130
676 ; ParaCopy(0);
677 ; SOURCE LINE # 131
0145 C200 F 678 CLR ?ParaCopy?BIT
0147 120000 F 679 LCALL ParaCopy
680 ; StartAddr = ParaStart + 2;
681 ; SOURCE LINE # 132
014A 900000 F 682 MOV DPTR,#ParaStart
A51 MACRO ASSEMBLER PARA 03/13/2009 15:44:57 PAGE 12
014D 7401 683 MOV A,#01H
014F 93 684 MOVC A,@A+DPTR
0150 2402 685 ADD A,#02H
0152 686 ?C0067:
0152 FE 687 MOV R6,A
0153 E4 688 CLR A
0154 93 689 MOVC A,@A+DPTR
0155 3400 690 ADDC A,#00H
0157 900000 F 691 MOV DPTR,#StartAddr?045
015A F0 692 MOVX @DPTR,A
015B A3 693 INC DPTR
015C CE 694 XCH A,R6
015D F0 695 MOVX @DPTR,A
696 ; }
697 ; SOURCE LINE # 133
015E 698 ?C0018:
699 ;
700 ; // update redo flag
701 ; fRedo = 1;
702 ; SOURCE LINE # 136
015E D200 F 703 SETB fRedo?046
704 ; // again
705 ; goto Redo;
706 ; SOURCE LINE # 138
0160 020000 F 707 LJMP ?_ParaWrite?Redo
708 ; END OF _ParaWrite
709
710 ; }
711 ;
712 ; // read a pafameter value
713 ; // para: parameter to be read
714 ; // return: positive value for reading, -1 for error
715 ; int ParaRead(unsigned char para)
716
---- 717 RSEG ?PR?_ParaRead?PARA
0000 718 _ParaRead:
719 USING 0
720 ; SOURCE LINE # 144
0000 900000 F 721 MOV DPTR,#para?147
0003 EF 722 MOV A,R7
0004 F0 723 MOVX @DPTR,A
724 ; {
725 ; SOURCE LINE # 145
726 ; unsigned int i;
727 ; unsigned int StartAddr;
728 ; unsigned char oldpara;
729 ;
730 ; // find which sector is in use now
731 ; if(FlashRdByte(ParaStart+1) == H_USING)
732 ; SOURCE LINE # 151
0005 900000 F 733 MOV DPTR,#ParaStart
0008 7401 734 MOV A,#01H
000A 93 735 MOVC A,@A+DPTR
000B 2401 736 ADD A,#01H
000D FF 737 MOV R7,A
000E E4 738 CLR A
000F 93 739 MOVC A,@A+DPTR
0010 3400 740 ADDC A,#00H
0012 FE 741 MOV R6,A
0013 120000 F 742 LCALL _FlashRdByte
0016 BFF00A 743 CJNE R7,#0F0H,?C0019
744 ; StartAddr = ParaStart + 2;
745 ; SOURCE LINE # 152
0019 900000 F 746 MOV DPTR,#ParaStart
001C 7401 747 MOV A,#01H
001E 93 748 MOVC A,@A+DPTR
A51 MACRO ASSEMBLER PARA 03/13/2009 15:44:57 PAGE 13
001F 2402 749 ADD A,#02H
0021 801C 750 SJMP ?C0070
0023 751 ?C0019:
752 ; else if(FlashRdByte(ParaStart+SECTOR_SIZE+1) == H_USING)
753 ; SOURCE LINE # 153
0023 900000 F 754 MOV DPTR,#ParaStart
0026 7401 755 MOV A,#01H
0028 93 756 MOVC A,@A+DPTR
0029 2481 757 ADD A,#081H
002B FF 758 MOV R7,A
002C E4 759 CLR A
002D 93 760 MOVC A,@A+DPTR
002E 3400 761 ADDC A,#00H
0030 FE 762 MOV R6,A
0031 120000 F 763 LCALL _FlashRdByte
0034 BFF016 764 CJNE R7,#0F0H,?C0021
765 ; StartAddr = ParaStart + SECTOR_SIZE + 2;
766 ; SOURCE LINE # 154
0037 900000 F 767 MOV DPTR,#ParaStart
003A 7401 768 MOV A,#01H
003C 93 769 MOVC A,@A+DPTR
003D 2482 770 ADD A,#082H
003F 771 ?C0070:
003F FE 772 MOV R6,A
0040 E4 773 CLR A
0041 93 774 MOVC A,@A+DPTR
0042 3400 775 ADDC A,#00H
0044 900000 F 776 MOV DPTR,#StartAddr?149
0047 F0 777 MOVX @DPTR,A
0048 A3 778 INC DPTR
0049 CE 779 XCH A,R6
004A F0 780 MOVX @DPTR,A
004B 8002 781 SJMP ?C0020
004D 782 ?C0021:
783 ; else
784 ; return -1;
785 ; SOURCE LINE # 156
004D 8067 786 SJMP ?C0072
004F 787 ?C0020:
788 ;
789 ; // search parameter
790 ; for(i=StartAddr; i<StartAddr+SECTOR_SIZE-2; i+=2)
791 ; SOURCE LINE # 159
004F 900000 F 792 MOV DPTR,#StartAddr?149
0052 E0 793 MOVX A,@DPTR
0053 FF 794 MOV R7,A
0054 A3 795 INC DPTR
0055 E0 796 MOVX A,@DPTR
0056 900000 F 797 MOV DPTR,#i?148
0059 CF 798 XCH A,R7
005A F0 799 MOVX @DPTR,A
005B A3 800 INC DPTR
005C EF 801 MOV A,R7
005D F0 802 MOVX @DPTR,A
005E 803 ?C0024:
005E 900000 F 804 MOV DPTR,#StartAddr?149+01H
0061 E0 805 MOVX A,@DPTR
0062 247E 806 ADD A,#07EH
0064 FD 807 MOV R5,A
0065 900000 F 808 MOV DPTR,#StartAddr?149
0068 E0 809 MOVX A,@DPTR
0069 3400 810 ADDC A,#00H
006B FC 811 MOV R4,A
006C 900000 F 812 MOV DPTR,#i?148
006F E0 813 MOVX A,@DPTR
0070 FE 814 MOV R6,A
A51 MACRO ASSEMBLER PARA 03/13/2009 15:44:57 PAGE 14
0071 A3 815 INC DPTR
0072 E0 816 MOVX A,@DPTR
0073 FF 817 MOV R7,A
0074 C3 818 CLR C
0075 9D 819 SUBB A,R5
0076 EE 820 MOV A,R6
0077 9C 821 SUBB A,R4
0078 503C 822 JNC ?C0025
823 ; {
824 ; SOURCE LINE # 160
825 ; oldpara = FlashRdByte(i);
826 ; SOURCE LINE # 161
007A 120000 F 827 LCALL _FlashRdByte
007D 900000 F 828 MOV DPTR,#oldpara?150
0080 EF 829 MOV A,R7
0081 F0 830 MOVX @DPTR,A
831 ; if(oldpara == para)
832 ; SOURCE LINE # 162
0082 900000 F 833 MOV DPTR,#para?147
0085 E0 834 MOVX A,@DPTR
0086 6F 835 XRL A,R7
0087 7014 836 JNZ ?C0027
837 ; return FlashRdByte(i+1);
838 ; SOURCE LINE # 163
0089 900000 F 839 MOV DPTR,#i?148+01H
008C E0 840 MOVX A,@DPTR
008D 2401 841 ADD A,#01H
008F FF 842 MOV R7,A
0090 900000 F 843 MOV DPTR,#i?148
0093 E0 844 MOVX A,@DPTR
0094 3400 845 ADDC A,#00H
0096 FE 846 MOV R6,A
0097 120000 F 847 LCALL _FlashRdByte
009A 7E00 848 MOV R6,#00H
009C 22 849 RET
009D 850 ?C0027:
851 ; else if(oldpara == PARA_EMPTY)
852 ; SOURCE LINE # 164
009D 900000 F 853 MOV DPTR,#oldpara?150
00A0 E0 854 MOVX A,@DPTR
00A1 B4FF02 855 CJNE A,#0FFH,?C0026
856 ; return -1;
857 ; SOURCE LINE # 165
00A4 858 ?C0071:
00A4 8010 859 SJMP ?C0072
860 ; }
861 ; SOURCE LINE # 166
00A6 862 ?C0026:
00A6 900000 F 863 MOV DPTR,#i?148+01H
00A9 E0 864 MOVX A,@DPTR
00AA 2402 865 ADD A,#02H
00AC F0 866 MOVX @DPTR,A
00AD 900000 F 867 MOV DPTR,#i?148
00B0 E0 868 MOVX A,@DPTR
00B1 3400 869 ADDC A,#00H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -