408 lines
19 KiB
Plaintext
408 lines
19 KiB
Plaintext
|
C51 COMPILER V9.01 MCUFLASH 02/06/2025 15:28:45 PAGE 1
|
|||
|
|
|||
|
|
|||
|
C51 COMPILER V9.01, COMPILATION OF MODULE MCUFLASH
|
|||
|
OBJECT MODULE PLACED IN .\output\McuFlash.obj
|
|||
|
COMPILER INVOKED BY: D:\Tool\Keil\C51\BIN\C51.EXE code_drv\McuFlash.c LARGE OPTIMIZE(7,SIZE) REGFILE(.\output\MCUCore_Lo
|
|||
|
-ad.ORC) BROWSE INTVECTOR(0X1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage;.\code_classb\iec60730_lib\include;.\c
|
|||
|
-ode_classb\iec60730_proc\Include;.\code_classb\config) DEBUG OBJECTEXTEND PRINT(.\output\McuFlash.lst) OBJECT(.\output\M
|
|||
|
-cuFlash.obj)
|
|||
|
|
|||
|
line level source
|
|||
|
|
|||
|
1 /********************************************************************************
|
|||
|
2 Copyright (C), Sinowealth Electronic. Ltd.
|
|||
|
3 Author: Sino
|
|||
|
4 Version: V0.0
|
|||
|
5 Date: 2020/04/26
|
|||
|
6 History:
|
|||
|
7 V2.0 2020/04/26 Preliminary
|
|||
|
8 ********************************************************************************/
|
|||
|
9 #include "Main.h"
|
|||
|
10
|
|||
|
11
|
|||
|
12 BOOL bMcuFlashWrWaitFlg;
|
|||
|
13 BOOL bMcuFlashWrFlg;
|
|||
|
14 BOOL bMcuFlashErr;
|
|||
|
15 U8 xdata ucMcuFlashWrValid;
|
|||
|
16 U8 xdata bMcuFlashWrWaitCnt;
|
|||
|
17
|
|||
|
18 /*************************************************************************************************
|
|||
|
19 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: McuFlashWrOneByte
|
|||
|
20 * <20><> <20><>: McuFlashAddr<64><72><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ַ<EFBFBD><D6B7>WrData<74><61>д<EFBFBD><D0B4><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>
|
|||
|
21 * <20><><EFBFBD><EFBFBD>ֵ: <20><>
|
|||
|
22 * <20><> <20><>: д1<D0B4><31><EFBFBD>ֽ<EFBFBD>
|
|||
|
23 *************************************************************************************************/
|
|||
|
24 void McuFlashWrOneByte(U16 McuFlashAddr, U8 WrData)
|
|||
|
25 {
|
|||
|
26 1 IrqDis();
|
|||
|
27 1 McuFlashEn();
|
|||
|
28 1
|
|||
|
29 1 XPAGE = McuFlashAddr>>8;
|
|||
|
30 1 IB_OFFSET = McuFlashAddr % 256;
|
|||
|
31 1 IB_DATA = WrData;
|
|||
|
32 1
|
|||
|
33 1 IB_CON1 = 0x6E;
|
|||
|
34 1 IB_CON2 = 0x05;
|
|||
|
35 1 IB_CON3 = 0x0A;
|
|||
|
36 1 IB_CON4 = 0x09;
|
|||
|
37 1 if(XPAGE == (McuFlashAddr>>8))
|
|||
|
38 1 {
|
|||
|
39 2 IB_CON5 = 0x06;
|
|||
|
40 2 _nop_();
|
|||
|
41 2 _nop_();
|
|||
|
42 2 _nop_();
|
|||
|
43 2 _nop_();
|
|||
|
44 2 _nop_();
|
|||
|
45 2 }
|
|||
|
46 1
|
|||
|
47 1 McuFlashDis();
|
|||
|
48 1 IrqEn();
|
|||
|
49 1 }
|
|||
|
50
|
|||
|
51
|
|||
|
52 /*************************************************************************************************
|
|||
|
C51 COMPILER V9.01 MCUFLASH 02/06/2025 15:28:45 PAGE 2
|
|||
|
|
|||
|
53 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: McuFlashBlankCheck
|
|||
|
54 * <20><> <20><>: McuFlashAddr<64><72><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ַ
|
|||
|
55 * <20><><EFBFBD><EFBFBD>ֵ: 0<><30><EFBFBD><EFBFBD>ȫ0<C8AB><30>Eraseʧ<65>ܣ<EFBFBD>1<EFBFBD><31>ȫ0<C8AB><30>Erase<73>ɹ<EFBFBD>
|
|||
|
56 * <20><> <20><>: <20><>Erase<73><65>1<EFBFBD><31>Sector<6F><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>ȫΪ0
|
|||
|
57 *************************************************************************************************/
|
|||
|
58 BOOL McuFlashBlankCheck(U16 McuFlashAddr)
|
|||
|
59 {
|
|||
|
60 1 BOOL Result = 1;
|
|||
|
61 1 U16 i;
|
|||
|
62 1
|
|||
|
63 1 for(i=0; i<MCUFLASH_SECTOR_SIZE; i++)
|
|||
|
64 1 {
|
|||
|
65 2 if(CBYTE[McuFlashAddr+i] != 0x00)
|
|||
|
66 2 {
|
|||
|
67 3 Result = 0;
|
|||
|
68 3 break;
|
|||
|
69 3 }
|
|||
|
70 2 }
|
|||
|
71 1
|
|||
|
72 1 return Result;
|
|||
|
73 1 }
|
|||
|
74
|
|||
|
75
|
|||
|
76 /*************************************************************************************************
|
|||
|
77 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: McuFlashDataCheck
|
|||
|
78 * <20><> <20><>: McuFlashAddr<64><72><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ַ
|
|||
|
79 * <20><><EFBFBD><EFBFBD>ֵ: 0<><30>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31>У<EFBFBD><D0A3><EFBFBD><EFBFBD>ȷ
|
|||
|
80 * <20><> <20><>: У<>鱻д<E9B1BB><D0B4>Sector<6F><72><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>XRAM<41><4D>һ<EFBFBD><D2BB>
|
|||
|
81 *************************************************************************************************/
|
|||
|
82 BOOL McuFlashDataCheck(U16 McuFlashAddr, U16 XramAddr)
|
|||
|
83 {
|
|||
|
84 1 BOOL Result = 1;
|
|||
|
85 1 U8 xdata *ptr = (U8 xdata *)XramAddr; //ǿ<>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>Ϊ<EFBFBD><CEAA>ַ<EFBFBD><D6B7>ֵ<EFBFBD><D6B5>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
86 1 U16 i;
|
|||
|
87 1
|
|||
|
88 1 for(i=0; i<MCUFLASH_SECTOR_SIZE; i++)
|
|||
|
89 1 {
|
|||
|
90 2 if(CBYTE[McuFlashAddr+i] != *(ptr+i))
|
|||
|
91 2 {
|
|||
|
92 3 Result = 0;
|
|||
|
93 3 break;
|
|||
|
94 3 }
|
|||
|
95 2 }
|
|||
|
96 1
|
|||
|
97 1 return Result;
|
|||
|
98 1 }
|
|||
|
99
|
|||
|
100
|
|||
|
101 /*************************************************************************************************
|
|||
|
102 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: McuFlashWrSector
|
|||
|
103 * <20><> <20><>: <20><>
|
|||
|
104 * <20><><EFBFBD><EFBFBD>ֵ: <20><>
|
|||
|
105 * <20><> <20><>: д1<D0B4><31>Sector<6F><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
106 *************************************************************************************************/
|
|||
|
107 BOOL McuFlashWrSector(U16 McuFlashAddr, U16 XramAddr)
|
|||
|
108 {
|
|||
|
109 1 BOOL Result = 0;
|
|||
|
110 1 U16 i;
|
|||
|
111 1 U8 xdata *ptr = (U8 xdata *)XramAddr; //ǿ<>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>Ϊ<EFBFBD><CEAA>ַ<EFBFBD><D6B7>ֵ<EFBFBD><D6B5>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
112 1
|
|||
|
113 1 for(i=0; i<MCUFLASH_SECTOR_SIZE; i++)
|
|||
|
114 1 {
|
|||
|
C51 COMPILER V9.01 MCUFLASH 02/06/2025 15:28:45 PAGE 3
|
|||
|
|
|||
|
115 2 IB_OFFSET = McuFlashAddr+i;
|
|||
|
116 2 XPAGE = (McuFlashAddr+i)>>8;
|
|||
|
117 2 IB_DATA = *(ptr+i);
|
|||
|
118 2 IB_CON1 = 0x6E;
|
|||
|
119 2 if(!EA)
|
|||
|
120 2 {
|
|||
|
121 3 IB_CON2 = 0x05;
|
|||
|
122 3 if(FLASHCON)
|
|||
|
123 3 {
|
|||
|
124 4 IB_CON3 = 0x0A;
|
|||
|
125 4 if(ucMcuFlashWrValid == 0x55)
|
|||
|
126 4 {
|
|||
|
127 5 IB_CON4 = 0x09;
|
|||
|
128 5 if(XPAGE == ((McuFlashAddr+i)>>8))
|
|||
|
129 5 {
|
|||
|
130 6 IB_CON5 = 0x06;
|
|||
|
131 6 _nop_();
|
|||
|
132 6 _nop_();
|
|||
|
133 6 _nop_();
|
|||
|
134 6 _nop_();
|
|||
|
135 6 _nop_();
|
|||
|
136 6 Result = 1;
|
|||
|
137 6 }
|
|||
|
138 5 else
|
|||
|
139 5 {
|
|||
|
140 6 Result = 0;
|
|||
|
141 6 break;
|
|||
|
142 6 }
|
|||
|
143 5 }
|
|||
|
144 4 else
|
|||
|
145 4 {
|
|||
|
146 5 Result = 0;
|
|||
|
147 5 break;
|
|||
|
148 5 }
|
|||
|
149 4 }
|
|||
|
150 3 else
|
|||
|
151 3 {
|
|||
|
152 4 Result = 0;
|
|||
|
153 4 break;
|
|||
|
154 4 }
|
|||
|
155 3 }
|
|||
|
156 2 else
|
|||
|
157 2 {
|
|||
|
158 3 Result = 0;
|
|||
|
159 3 break;
|
|||
|
160 3 }
|
|||
|
161 2 }
|
|||
|
162 1
|
|||
|
163 1 return Result;
|
|||
|
164 1 }
|
|||
|
165
|
|||
|
166
|
|||
|
167 /*************************************************************************************************
|
|||
|
168 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: McuFlashWrite
|
|||
|
169 * <20><> <20><>: McuFlashAddr<64><72>д<EFBFBD><D0B4><EFBFBD>ĵ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ȹ̶<C8B9>Ϊ1<CEAA><31>Sector
|
|||
|
170 * <20><><EFBFBD><EFBFBD>ֵ: 0<><30>д<EFBFBD><D0B4>ʧ<EFBFBD>ܣ<EFBFBD>1<EFBFBD><31>д<EFBFBD><D0B4><EFBFBD>ɹ<EFBFBD>
|
|||
|
171 * <20><> <20><>: дMCU Flash<73><68>1<EFBFBD><31>Sector:
|
|||
|
172 1.Erase Sector
|
|||
|
173 2.<2E><><EFBFBD>鵱ǰSector<6F>Ƿ<EFBFBD>ȫΪ0
|
|||
|
174 3.<2E><>XRAM<41><4D><EFBFBD><EFBFBD>д<EFBFBD><D0B4>
|
|||
|
175 4.У<><D0A3>XRAM<41><4D>MCU Flash<73><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>һ<EFBFBD><D2BB>
|
|||
|
176 *************************************************************************************************/
|
|||
|
C51 COMPILER V9.01 MCUFLASH 02/06/2025 15:28:45 PAGE 4
|
|||
|
|
|||
|
177 BOOL McuFlashWrite(U16 McuFlashAddr, U16 XramAddr)
|
|||
|
178 {
|
|||
|
179 1 BOOL Result = 0;
|
|||
|
180 1
|
|||
|
181 1 McuWDTClear(); //<2F>忴<EFBFBD>Ź<EFBFBD>
|
|||
|
182 1 IrqDis(); //<2F>ر<EFBFBD><D8B1>ж<EFBFBD>Դ
|
|||
|
183 1 McuFlashEn();
|
|||
|
184 1
|
|||
|
185 1 XPAGE = McuFlashAddr >> 8;
|
|||
|
186 1 IB_CON1 = 0xE6;
|
|||
|
187 1 if(!EA)
|
|||
|
188 1 {
|
|||
|
189 2 IB_CON2 = 0x05;
|
|||
|
190 2 if(FLASHCON)
|
|||
|
191 2 {
|
|||
|
192 3 IB_CON3 = 0x0A;
|
|||
|
193 3 if(ucMcuFlashWrValid == 0x55)
|
|||
|
194 3 {
|
|||
|
195 4 IB_CON4 = 0x09;
|
|||
|
196 4 if(XPAGE == (McuFlashAddr >> 8))
|
|||
|
197 4 {
|
|||
|
198 5 IB_CON5 = 0x06;
|
|||
|
199 5 _nop_();
|
|||
|
200 5 _nop_();
|
|||
|
201 5 _nop_();
|
|||
|
202 5 _nop_();
|
|||
|
203 5 _nop_();
|
|||
|
204 5
|
|||
|
205 5 if(McuFlashBlankCheck(McuFlashAddr)) //<2F><><EFBFBD><EFBFBD>
|
|||
|
206 5 {
|
|||
|
207 6 if(McuFlashWrSector(McuFlashAddr, XramAddr)) //д<><D0B4>
|
|||
|
208 6 {
|
|||
|
209 7 if(McuFlashDataCheck(McuFlashAddr, XramAddr)) //У<><D0A3>
|
|||
|
210 7 {
|
|||
|
211 8 Result = 1;
|
|||
|
212 8 }
|
|||
|
213 7 }
|
|||
|
214 6 }
|
|||
|
215 5 }
|
|||
|
216 4 }
|
|||
|
217 3 }
|
|||
|
218 2 }
|
|||
|
219 1
|
|||
|
220 1 IB_CON1 = 0;
|
|||
|
221 1 IB_CON2 = 0;
|
|||
|
222 1 IB_CON3 = 0;
|
|||
|
223 1 IB_CON4 = 0;
|
|||
|
224 1 IB_CON5 = 0;
|
|||
|
225 1
|
|||
|
226 1 McuFlashDis();
|
|||
|
227 1 XPAGE = 0x00;
|
|||
|
228 1 IrqEn();
|
|||
|
229 1
|
|||
|
230 1 return Result;
|
|||
|
231 1 }
|
|||
|
232
|
|||
|
233
|
|||
|
234
|
|||
|
235
|
|||
|
236
|
|||
|
237
|
|||
|
238 /*************************************************************************************************
|
|||
|
C51 COMPILER V9.01 MCUFLASH 02/06/2025 15:28:45 PAGE 5
|
|||
|
|
|||
|
239 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: McuFlashProcess
|
|||
|
240 * <20><> <20><>: <20><>
|
|||
|
241 * <20><><EFBFBD><EFBFBD>ֵ: <20><>
|
|||
|
242 * <20><> <20><>: дMCU Flash<73><68>ͬʱ<CDAC><CAB1><EFBFBD>±<EFBFBD><C2B1><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD>2<EFBFBD><32>
|
|||
|
243 *************************************************************************************************/
|
|||
|
244 void McuFlashProcess(void)
|
|||
|
245 {
|
|||
|
246 1 BOOL McuFlashBk1WrFailFlg = 0, McuFlashBk2WrFailFlg = 0;
|
|||
|
247 1 U16 VoltageMin;
|
|||
|
248 1
|
|||
|
249 1 if(bMcuFlashWrFlg)
|
|||
|
250 1 {
|
|||
|
251 2 bMcuFlashWrFlg = 0;
|
|||
|
252 2
|
|||
|
253 2 ucMcuFlashWrValid = 0x55; //<2F><><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
|
|||
|
254 2 if(ucCellNum > 5) //6~10<31><30>Ӧ<EFBFBD>ã<EFBFBD><C3A3><EFBFBD>Ҫ<EFBFBD>ܵ<EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>10V
|
|||
|
255 2 {
|
|||
|
256 3 VoltageMin = 10000;
|
|||
|
257 3 }
|
|||
|
258 2 else //3~5<><35>Ӧ<EFBFBD>ã<EFBFBD><C3A3><EFBFBD>Ҫ<EFBFBD>ܵ<EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>5V
|
|||
|
259 2 {
|
|||
|
260 3 VoltageMin = 5000;
|
|||
|
261 3 }
|
|||
|
262 2
|
|||
|
263 2 if((Info.ulVoltage>=VoltageMin) && (E2uiCheckFlag==0x5AA5))
|
|||
|
264 2 {
|
|||
|
265 3 if(!McuFlashWrite(MCUFLASH_BK1_ADDR, XRAM_MAP_ADDR)) //<2F><><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>Σ<EFBFBD><CEA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
|
|||
|
266 3 {
|
|||
|
267 4 if(!McuFlashWrite(MCUFLASH_BK1_ADDR, XRAM_MAP_ADDR))
|
|||
|
268 4 {
|
|||
|
269 5 McuFlashBk1WrFailFlg = 1;
|
|||
|
270 5 E2uiCheckFlag = 0xFFFF;
|
|||
|
271 5 McuFlashWrOneByte(MCUFLASH_BK1_ADDR+510,0xFF);
|
|||
|
272 5 McuFlashWrOneByte(MCUFLASH_BK1_ADDR+511,0xFF);
|
|||
|
273 5 }
|
|||
|
274 4 }
|
|||
|
275 3
|
|||
|
276 3 if(!McuFlashWrite(MCUFLASH_BK2_ADDR, XRAM_MAP_ADDR))
|
|||
|
277 3 {
|
|||
|
278 4 if(!McuFlashWrite(MCUFLASH_BK2_ADDR, XRAM_MAP_ADDR))
|
|||
|
279 4 {
|
|||
|
280 5 McuFlashBk2WrFailFlg = 1;
|
|||
|
281 5 E2uiCheckFlag = 0xFFFF;
|
|||
|
282 5 McuFlashWrOneByte(MCUFLASH_BK2_ADDR+510,0xFF);
|
|||
|
283 5 McuFlashWrOneByte(MCUFLASH_BK2_ADDR+511,0xFF);
|
|||
|
284 5 }
|
|||
|
285 4 }
|
|||
|
286 3 }
|
|||
|
287 2 else
|
|||
|
288 2 {
|
|||
|
289 3 McuFlashBk1WrFailFlg = 1;
|
|||
|
290 3 McuFlashBk2WrFailFlg = 1;
|
|||
|
291 3 }
|
|||
|
292 2 ucMcuFlashWrValid = 0x00;
|
|||
|
293 2
|
|||
|
294 2 if(McuFlashBk1WrFailFlg && McuFlashBk2WrFailFlg) //<2F><><EFBFBD><EFBFBD>Flash<73><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λFlash<73><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
|
|||
|
295 2 {
|
|||
|
296 3 bMcuFlashErr = 1;
|
|||
|
297 3 }
|
|||
|
298 2 }
|
|||
|
299 1 }
|
|||
|
300
|
|||
|
C51 COMPILER V9.01 MCUFLASH 02/06/2025 15:28:45 PAGE 6
|
|||
|
|
|||
|
301
|
|||
|
302 /*************************************************************************************************
|
|||
|
303 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: McuFlashRead
|
|||
|
304 * <20><> <20><>: SourceAddr<64><72>Դ<EFBFBD><D4B4>ַ<EFBFBD><D6B7>TargetAddr<64><72>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>Length<74><68><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
|||
|
305 * <20><><EFBFBD><EFBFBD>ֵ: 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>
|
|||
|
306 * <20><> <20><>: <20>ж<EFBFBD>MCU Flash<73><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ֽ<EFBFBD><D6BD>Ƿ<EFBFBD>Ϊ0x5AA5<41><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ƻ<EFBFBD>
|
|||
|
307 *************************************************************************************************/
|
|||
|
308 BOOL McuFlashRead(U16 SourceAddr, U8 xdata *TargetAddr, U16 Length)
|
|||
|
309 {
|
|||
|
310 1 U16 i;
|
|||
|
311 1 BOOL Result = 1;
|
|||
|
312 1 U8 xdata *data TargetAddr1 = TargetAddr; //*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>data<74>ؼ<EFBFBD><D8BC>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>ã<EFBFBD><C3A3>ǰ<EFBFBD>ָ<EFBFBD><D6B8>TargetAddr1
|
|||
|
-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>data<74><61><EFBFBD><EFBFBD>
|
|||
|
313 1
|
|||
|
314 1 IrqDis();
|
|||
|
315 1 McuFlashEn();
|
|||
|
316 1 McuWDTClear();
|
|||
|
317 1 for(i=0; i<Length; i++)
|
|||
|
318 1 {
|
|||
|
319 2 *TargetAddr1 = CBYTE[SourceAddr+i];
|
|||
|
320 2 TargetAddr1++;
|
|||
|
321 2 }
|
|||
|
322 1 McuFlashDis();
|
|||
|
323 1 IrqEn();
|
|||
|
324 1
|
|||
|
325 1 return Result;
|
|||
|
326 1 }
|
|||
|
327
|
|||
|
328
|
|||
|
329 /*************************************************************************************************
|
|||
|
330 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: McuFlashWrWaitCheck
|
|||
|
331 * <20><> <20><>: <20><>
|
|||
|
332 * <20><><EFBFBD><EFBFBD>ֵ: <20><>
|
|||
|
333 * <20><> <20><>: <20><><EFBFBD><EFBFBD>ҪдMCU Flash<73><68><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ʱ2Sִ<53><D6B4>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD>IJ<DEB8><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д
|
|||
|
334 *************************************************************************************************/
|
|||
|
335 void McuFlashWrWaitCheck(void)
|
|||
|
336 {
|
|||
|
337 1 if(bMcuFlashWrWaitFlg)
|
|||
|
338 1 {
|
|||
|
339 2 if(++bMcuFlashWrWaitCnt >= MCU_FLASH_WATI_DELAY)
|
|||
|
340 2 {
|
|||
|
341 3 bMcuFlashWrWaitFlg = 0;
|
|||
|
342 3 bMcuFlashWrWaitCnt = 0;
|
|||
|
343 3 bMcuFlashWrFlg = 1;
|
|||
|
344 3 }
|
|||
|
345 2 }
|
|||
|
346 1 }
|
|||
|
347
|
|||
|
348
|
|||
|
349 /*************************************************************************************************
|
|||
|
350 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: McuFlashCheckFlg
|
|||
|
351 * <20><> <20><>: McuFlashAddr<64><72>MCU Flash<73><68><EFBFBD>ĵ<EFBFBD>ַ
|
|||
|
352 * <20><><EFBFBD><EFBFBD>ֵ: 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>
|
|||
|
353 * <20><> <20><>: <20>ж<EFBFBD>MCU Flash<73><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ֽ<EFBFBD><D6BD>Ƿ<EFBFBD>Ϊ0x5AA5<41><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ƻ<EFBFBD>
|
|||
|
354 *************************************************************************************************/
|
|||
|
355 BOOL McuFlashCheckFlg(U16 McuFlashAddr)
|
|||
|
356 {
|
|||
|
357 1 BOOL Result = 0;
|
|||
|
358 1
|
|||
|
359 1 McuFlashEn();
|
|||
|
360 1 if(CWORD[McuFlashAddr/2] == 0x5AA5)
|
|||
|
361 1 {
|
|||
|
C51 COMPILER V9.01 MCUFLASH 02/06/2025 15:28:45 PAGE 7
|
|||
|
|
|||
|
362 2 Result = 1;
|
|||
|
363 2 }
|
|||
|
364 1 McuFlashDis();
|
|||
|
365 1
|
|||
|
366 1 return Result;
|
|||
|
367 1 }
|
|||
|
368
|
|||
|
|
|||
|
|
|||
|
MODULE INFORMATION: STATIC OVERLAYABLE
|
|||
|
CODE SIZE = 820 ----
|
|||
|
CONSTANT SIZE = ---- ----
|
|||
|
XDATA SIZE = 2 18
|
|||
|
PDATA SIZE = ---- ----
|
|||
|
DATA SIZE = ---- 2
|
|||
|
IDATA SIZE = ---- ----
|
|||
|
BIT SIZE = 3 8
|
|||
|
END OF MODULE INFORMATION.
|
|||
|
|
|||
|
|
|||
|
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|