📄 param_save_restore.lst
字号:
32
33 void save_user_param(void) //存用户参数到fs4中
34 {
35 1 uint xdata i;
36 1 uchar xdata *s=0x1000;
37 1 uint xdata count=sizeof(L_Data)+sizeof(E_InputData)+sizeof(E_OutputData)+sizeof(TIMER);
38 1 if(m_save_flg==1){ //用户参数存储标志
39 2 mE_InputData.mDianTi[0].TongXun.bZhiShi=1;
40 2 EA=0;
41 2 erase(0xa000);
42 2 for(i=0;i<count;i++)
43 2 writef((0xa000+i),*(s+i));
44 2 m_save_flg=0; //用户参数存储标志
45 2 m_save_over_flg=1; //用户参数存储过标志
46 2 SetUserParamSaveOverFlg();
47 2 EA=1;
48 2 }
49 1 }
50
51 uchar erase(uint addr) // 擦除 flash 程序区
52 { uchar xdata *s; uchar b,c,d,e;
53 1 s=(0x555+addr); *s=0xaa;
54 1 s=(0xaaa+addr); *s=0x55;
C51 COMPILER V6.12 PARAM_SAVE_RESTORE 06/05/2005 15:44:46 PAGE 15
55 1 s=(0x555+addr); *s=0x80;
56 1 s=(0x555+addr); *s=0xaa;
57 1 s=(0xaaa+addr); *s=0x55;
58 1 s=addr; *s=0x30;
59 1 d=0; e=0;
60 1 do{b=*s; c=b&0x20; b=b&0x80;
61 2 if(b==0x80) d=1;
62 2 if(c==0x20) e=1;
63 2 }while((d==0)&&(e==0));
64 1 if(e==1)
65 1 {b=*s; b=b&0x80;
66 2 if(b==0x80) d=1;
67 2 s=0x555+addr; *s=0xf0;
68 2 }
69 1 return(d);
70 1 }
71
72 uchar writef(uint x,uchar y)
73 { uchar xdata *s; uchar xdata a,b,c,d,e;
74 1 uint addr=0;
75 1 if((x>=0x4000)&&(x<0x6000)) addr=0x4000;
76 1 if((x>=0x6000)&&(x<0x8000)) addr=0x6000;
77 1 if((x>=0x8000)&&(x<0xa000)) addr=0x8000;
78 1 if((x>=0xa000)&&(x<0xc000)) addr=0xa000;
79 1 if(x>=0xc000) addr=0xc000;
80 1 s=0x555+addr; *s=0xaa;
81 1 s=0xaaa+addr; *s=0x55;
82 1 s=0x555+addr; *s=0xa0;
83 1 s=x; *s=y;
84 1 d=e=0;
85 1 a=y;
86 1 do
87 1 { b=*s; c=b&0x20;
88 2 if(b==a) d=1;
89 2 else if(c==0x20) e=1;
90 2 }
91 1 while((d==0)&&(e==0));
92 1 if(e==1)
93 1 { b=*s;
94 2 if(b==a) d=1;
95 2 s=0x555+addr;
96 2 *s=0xf0;
97 2 }
98 1 if(d==1) return(d);
99 1 else
100 1 {s=0x555+addr; *s=0xaa;
101 2 s=0xaaa+addr; *s=0x55;
102 2 s=0x555+addr; *s=0xa0;
103 2 s=x; *s=y;
104 2 d=e=0;
105 2 a=y;
106 2 do
107 2 { b=*s; c=b&0x20;
108 3 if(b==a) d=1;
109 3 else if(c==0x20) e=1;
110 3 }
111 2 while((d==0)&&(e==0));
112 2 if(e==1)
113 2 { b=*s;
114 3 if(b==a) d=1;
115 3 s=0x555+addr;
116 3 *s=0xf0;
C51 COMPILER V6.12 PARAM_SAVE_RESTORE 06/05/2005 15:44:46 PAGE 16
117 3 }
118 2 }
119 1 return(d);
120 1 }
C51 COMPILER V6.12 PARAM_SAVE_RESTORE 06/05/2005 15:44:46 PAGE 17
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION restore_factory_param (BEGIN)
; SOURCE LINE # 3
; SOURCE LINE # 4
; SOURCE LINE # 5
0000 900000 E MOV DPTR,#m_factory_flg
0003 E0 MOVX A,@DPTR
0004 B40108 CJNE A,#01H,?C0002
; SOURCE LINE # 6
0007 120000 E LCALL orgdata_init
; SOURCE LINE # 7
000A E4 CLR A
000B 900000 E MOV DPTR,#m_factory_flg
000E F0 MOVX @DPTR,A
; SOURCE LINE # 8
; SOURCE LINE # 9
000F ?C0002:
000F 22 RET
; FUNCTION restore_factory_param (END)
; FUNCTION restore_user_param (BEGIN)
; SOURCE LINE # 11
; SOURCE LINE # 12
; SOURCE LINE # 15
0000 900000 R MOV DPTR,#count
0003 7404 MOV A,#04H
0005 F0 MOVX @DPTR,A
0006 A3 INC DPTR
0007 749F MOV A,#09FH
0009 F0 MOVX @DPTR,A
; SOURCE LINE # 17
000A 900000 E MOV DPTR,#m_restore_flg
000D E0 MOVX A,@DPTR
000E 6401 XRL A,#01H
0010 7054 JNZ ?C0008
; SOURCE LINE # 19
0012 900000 E MOV DPTR,#m_save_over_flg
0015 E0 MOVX A,@DPTR
0016 6401 XRL A,#01H
0018 704C JNZ ?C0008
; SOURCE LINE # 20
001A C2AF CLR EA
; SOURCE LINE # 21
001C 7500A0 R MOV p,#0A0H
001F F500 R MOV p+01H,A
; SOURCE LINE # 22
0021 750010 R MOV s,#010H
0024 F500 R MOV s+01H,A
; SOURCE LINE # 23
0026 F500 R MOV i,A
0028 F500 R MOV i+01H,A
002A ?C0005:
002A D3 SETB C
002B 900000 R MOV DPTR,#count+01H
002E E0 MOVX A,@DPTR
002F 9500 R SUBB A,i+01H
0031 900000 R MOV DPTR,#count
0034 E0 MOVX A,@DPTR
0035 9500 R SUBB A,i
0037 4026 JC ?C0006
C51 COMPILER V6.12 PARAM_SAVE_RESTORE 06/05/2005 15:44:46 PAGE 18
; SOURCE LINE # 24
0039 E500 R MOV A,p+01H
003B 2500 R ADD A,i+01H
003D F582 MOV DPL,A
003F E500 R MOV A,p
0041 3500 R ADDC A,i
0043 F583 MOV DPH,A
0045 E0 MOVX A,@DPTR
0046 FF MOV R7,A
0047 E500 R MOV A,s+01H
0049 2500 R ADD A,i+01H
004B F582 MOV DPL,A
004D E500 R MOV A,s
004F 3500 R ADDC A,i
0051 F583 MOV DPH,A
0053 EF MOV A,R7
0054 F0 MOVX @DPTR,A
; SOURCE LINE # 25
0055 0500 R INC i+01H
0057 E500 R MOV A,i+01H
0059 70CF JNZ ?C0005
005B 0500 R INC i
005D ?C0049:
005D 80CB SJMP ?C0005
005F ?C0006:
; SOURCE LINE # 26
005F E4 CLR A
0060 900000 E MOV DPTR,#m_restore_flg
0063 F0 MOVX @DPTR,A
; SOURCE LINE # 28
0064 D2AF SETB EA
; SOURCE LINE # 29
; SOURCE LINE # 30
; SOURCE LINE # 31
0066 ?C0008:
0066 22 RET
; FUNCTION restore_user_param (END)
; FUNCTION save_user_param (BEGIN)
; SOURCE LINE # 33
; SOURCE LINE # 34
; SOURCE LINE # 36
0000 900000 R MOV DPTR,#s
0003 7410 MOV A,#010H
0005 F0 MOVX @DPTR,A
0006 A3 INC DPTR
0007 E4 CLR A
0008 F0 MOVX @DPTR,A
; SOURCE LINE # 37
0009 A3 INC DPTR
000A 7404 MOV A,#04H
000C F0 MOVX @DPTR,A
000D A3 INC DPTR
000E 749F MOV A,#09FH
0010 F0 MOVX @DPTR,A
; SOURCE LINE # 38
0011 900000 E MOV DPTR,#m_save_flg
0014 E0 MOVX A,@DPTR
0015 6401 XRL A,#01H
0017 7062 JNZ ?C0013
; SOURCE LINE # 39
0019 900000 E MOV DPTR,#mE_InputData+053H
C51 COMPILER V6.12 PARAM_SAVE_RESTORE 06/05/2005 15:44:46 PAGE 19
001C 04 INC A
001D F0 MOVX @DPTR,A
; SOURCE LINE # 40
001E C2AF CLR EA
; SOURCE LINE # 41
0020 7F00 MOV R7,#00H
0022 7EA0 MOV R6,#0A0H
0024 120000 R LCALL _erase
; SOURCE LINE # 42
0027 E4 CLR A
0028 900000 R MOV DPTR,#i
002B F0 MOVX @DPTR,A
002C A3 INC DPTR
002D F0 MOVX @DPTR,A
002E ?C0010:
002E 900000 R MOV DPTR,#count
0031 E0 MOVX A,@DPTR
0032 FE MOV R6,A
0033 A3 INC DPTR
0034 E0 MOVX A,@DPTR
0035 FF MOV R7,A
0036 900000 R MOV DPTR,#i
0039 E0 MOVX A,@DPTR
003A FC MOV R4,A
003B A3 INC DPTR
003C E0 MOVX A,@DPTR
003D FD MOV R5,A
003E C3 CLR C
003F 9F SUBB A,R7
0040 EC MOV A,R4
0041 9E SUBB A,R6
0042 5028 JNC ?C0011
; SOURCE LINE # 43
0044 E4 CLR A
0045 2D ADD A,R5
0046 FF MOV R7,A
0047 EC MOV A,R4
0048 34A0 ADDC A,#0A0H
004A FE MOV R6,A
004B A3 INC DPTR
004C E0 MOVX A,@DPTR
004D FA MOV R2,A
004E A3 INC DPTR
004F E0 MOVX A,@DPTR
0050 2D ADD A,R5
0051 F582 MOV DPL,A
0053 EA MOV A,R2
0054 3C ADDC A,R4
0055 F583 MOV DPH,A
0057 E0 MOVX A,@DPTR
0058 FD MOV R5,A
0059 120000 R LCALL _writef
005C 900000 R MOV DPTR,#i+01H
005F E0 MOVX A,@DPTR
0060 04 INC A
0061 F0 MOVX @DPTR,A
0062 70CA JNZ ?C0010
0064 900000 R MOV DPTR,#i
0067 E0 MOVX A,@DPTR
0068 04 INC A
0069 F0 MOVX @DPTR,A
006A ?C0050:
C51 COMPILER V6.12 PARAM_SAVE_RESTORE 06/05/2005 15:44:46 PAGE 20
006A 80C2 SJMP ?C0010
006C ?C0011:
; SOURCE LINE # 44
006C E4 CLR A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -