ZDBMS/output/ExtE2PRom.lst

610 lines
29 KiB
Plaintext
Raw Normal View History

2025-02-06 07:35:32 +00:00
C51 COMPILER V9.01 EXTE2PROM 02/06/2025 15:28:45 PAGE 1
C51 COMPILER V9.01, COMPILATION OF MODULE EXTE2PROM
OBJECT MODULE PLACED IN .\output\ExtE2PRom.obj
COMPILER INVOKED BY: D:\Tool\Keil\C51\BIN\C51.EXE code_drv\ExtE2PRom.c LARGE OPTIMIZE(7,SIZE) REGFILE(.\output\MCUCore_L
-oad.ORC) BROWSE INTVECTOR(0X1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage;.\code_classb\iec60730_lib\include;.\
-code_classb\iec60730_proc\Include;.\code_classb\config) DEBUG OBJECTEXTEND PRINT(.\output\ExtE2PRom.lst) OBJECT(.\output
-\ExtE2PRom.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 BOOL bE2PProcessFlg; //EEPROM<4F><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
12 BOOL bE2PBKDsgEnd; //<2F>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>EEPROM
13 BOOL bE2PBKDsgEndValid;
14 BOOL bE2PBKChgStop; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>EEPROM
15 BOOL bE2PBKChgStart; //<2F><><EFBFBD>ʼ<E7BFAA><CABC>־<EFBFBD><D6BE><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>EEPROM
16 BOOL bE2PBKRtc; //RTC<54><43>ʱ<EFBFBD><CAB1><EFBFBD>ݱ<EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>EEPRO
-M
17 BOOL bE2PErase; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>EEPROM<4F><4D>־
18 U8 xdata bUart0E2PRdData; //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>EEPROM<4F><4D>־
19 U8 xdata bUart1E2PRdData; //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>EEPROM<4F><4D>־
20 U8 xdata bUart2E2PRdData; //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>EEPROM<4F><4D>־
21 BOOL bE2PRErr;
22 BOOL bE2PTwiRWErrFlg;
23 U8 xdata bUart0RTCRdTime; //<2F><>ȡRTCʱ<43><CAB1><EFBFBD><EFBFBD>־
24 U8 xdata bUart1RTCRdTime; //<2F><>ȡRTCʱ<43><CAB1><EFBFBD><EFBFBD>־
25 U8 xdata bUart2RTCRdTime; //<2F><>ȡRTCʱ<43><CAB1><EFBFBD><EFBFBD>־
26 BOOL bDsgToChgFlg; //<2F>ŵ<EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><E7A3AC>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
27 BOOL bChgToDsgFlg; //<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD>ŵ磬<C5B5><E7A3AC>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
28 U16 xdata uiE2PDataAddr;
29 U8 xdata ucE2PTwiRWErrDelayCnt;
30 U8 xdata ucRTCBKTime1;
31 U16 xdata uiRTCBKTime2;
32 U8 idata ucUpDataLimitTime;
33 U16 xdata uiCHGValidTime;
34 U8 xdata ucRTCBuf[7];
35
36
37 /*************************************************************************************************
38 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: AFEI2CCheck
39 * <20><> <20><>: <20><>
40 * <20><><EFBFBD><EFBFBD>ֵ: <20><>
41 * <20><> <20><>: <20><><EFBFBD><EFBFBD>5S<35><53><EFBFBD>⵽AFE<46><45>I2CͨѶ<CDA8><D1B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λbAfeErr=1
42 *************************************************************************************************/
43 void E2PRomTwiCheck(void)
44 {
45 1 if(bEnEEPRomBK)
46 1 {
47 2 if(bE2PTwiRWErrFlg)
48 2 {
49 3 if(++ucE2PTwiRWErrDelayCnt >= TIME_1S_5S)
50 3 {
51 4 bE2PRErr = 1;
C51 COMPILER V9.01 EXTE2PROM 02/06/2025 15:28:45 PAGE 2
52 4 ucE2PTwiRWErrDelayCnt = TIME_1S_5S;
53 4 }
54 3 }
55 2 else
56 2 {
57 3 ucE2PTwiRWErrDelayCnt = 0;
58 3 }
59 2 }
60 1 }
61
62
63 /*************************************************************************************************
64 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: E2PRomWrite
65 * <20><> <20><>: Addr<64><72><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>Length<74><68><EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD>WrBuf<75><66>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD>Buf
66 * <20><><EFBFBD><EFBFBD>ֵ: <20><>
67 * <20><> <20><>: д<><D0B4>EEPROm
68 *************************************************************************************************/
69 BOOL E2PRomWrite(U16 WrAddr, U8 Length, U8 xdata *WrBuf)
70 {
71 1 BOOL Result = 0;
72 1 U8 i;
73 1
74 1 if(!bE2PRErr)
75 1 {
76 2 for(i=0; i<5; i++)
77 2 {
78 3 #ifdef TWI_Hardware_Module
79 3 if(TwiWrite(E2PROM_ID, WrAddr, TWI_ADDR_2B, Length, TWI_CRC_NO, WrBuf))
80 3 {
81 4 Result = 1;
82 4 break;
83 4 }
84 3 #else
if(TwiWrite(E2PROM_ID, WrAddr, Length, WrBuf))
{
Result = 1;
break;
}
#endif
91 3 Delay1ms(1);
92 3 }
93 2 }
94 1 bE2PTwiRWErrFlg = !Result; //<2F><><EFBFBD><EFBFBD>ͨѶ<CDA8>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
95 1
96 1 return Result;
97 1 }
98
99
100 /*************************************************************************************************
101 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: E2PRomRead
102 * <20><> <20><>: Addr<64><72><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>Length<74><68><EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD>RdBuf<75><66><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ŵ<EFBFBD>Buf
103 * <20><><EFBFBD><EFBFBD>ֵ: <20><>
104 * <20><> <20><>: <20><>ȡEEPROm
105 *************************************************************************************************/
106 BOOL E2PRomRead(U16 RdAddr, U8 Length, U8 xdata *RdBuf)
107 {
108 1 BOOL Result = 0;
109 1 U8 i;
110 1
111 1 if(!bE2PRErr)
112 1 {
113 2 for(i=0; i<5; i++)
C51 COMPILER V9.01 EXTE2PROM 02/06/2025 15:28:45 PAGE 3
114 2 {
115 3 #ifdef TWI_Hardware_Module
116 3 if(TwiRead(E2PROM_ID, RdAddr, TWI_ADDR_2B, Length, TWI_CRC_NO, RdBuf))
117 3 {
118 4 Result = 1;
119 4 break;
120 4 }
121 3 #else
if(TwiRead(E2PROM_ID, RdAddr, Length, RdBuf))
{
Result = 1;
break;
}
#endif
128 3 Delay1ms(1);
129 3 }
130 2 }
131 1 bE2PTwiRWErrFlg = !Result; //<2F><><EFBFBD><EFBFBD>ͨѶ<CDA8>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
132 1
133 1 return Result;
134 1 }
135
136
137
138 /*************************************************************************************************
139 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: E2PRomErase
140 * <20><> <20><>: <20><>
141 * <20><><EFBFBD><EFBFBD>ֵ: <20><>
142 * <20><> <20><>: <20><><EFBFBD><EFBFBD>EEPROM
143 *************************************************************************************************/
144 void E2PRomErase(void)
145 {
146 1 U16 i;
147 1 U8 xdata WrBuf[8];
148 1
149 1 MemorySet(WrBuf, 0, 8); //clr Info.uiVCell[]
150 1
151 1 for(i=0; i<(E2PROM_SIZE/32-1); i++)
152 1 {
153 2 McuWDTClear();
154 2 E2PRomWrite(i*32+31, 1, WrBuf);
155 2 }
156 1
157 1 E2PRomWrite(E2PROM_BOOT_ADDR, 8, WrBuf);
158 1 uiE2PDataAddr = 0;
159 1 }
160
161
162 /*************************************************************************************************
163 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: InitE2PRom
164 * <20><> <20><>: <20><>
165 * <20><><EFBFBD><EFBFBD>ֵ: <20><>
166 * <20><> <20><>: <20><>ʼ<EFBFBD><CABC>EEPROM<4F>ĵ<EFBFBD>ַ
167 *************************************************************************************************/
168 BOOL E2PRomInit(void)
169 {
170 1 BOOL Result = 0;
171 1
172 1 U8 xdata RdBuf[8];
173 1
174 1 Result = E2PRomRead(E2PROM_BOOT_ADDR, 8, RdBuf);
175 1
C51 COMPILER V9.01 EXTE2PROM 02/06/2025 15:28:45 PAGE 4
176 1 RdBuf[2] = RdBuf[0]+RdBuf[1];
177 1 RdBuf[6] = RdBuf[4]+RdBuf[5];
178 1
179 1 if(RdBuf[2] == RdBuf[3])
180 1 {
181 2 uiE2PDataAddr = ((U16)RdBuf[0]<<8) + RdBuf[1];
182 2 }
183 1 else if(RdBuf[6] == RdBuf[7])
184 1 {
185 2 uiE2PDataAddr = ((U16)RdBuf[4]<<8) + RdBuf[5];
186 2 }
187 1 else
188 1 {
189 2 uiE2PDataAddr = 0;
190 2 }
191 1
192 1 return Result;
193 1 }
194
195
196 /*************************************************************************************************
197 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: E2PRomBKRTC
198 * <20><> <20><>: <20><>
199 * <20><><EFBFBD><EFBFBD>ֵ: <20><>
200 * <20><> <20><>: <20><><EFBFBD><EFBFBD>RTC
201 *************************************************************************************************/
202 void E2PRomBKRTC(void)
203 {
204 1 U8 xdata WrBuf[9];
205 1 U8 i, checksum = 0;
206 1
207 1 RTCReadTime(&RTC);
208 1 MemoryCopy((U8 xdata *)&(RTC.Second), WrBuf, 7);
209 1 for(i=0; i<7; i++)
210 1 {
211 2 checksum += WrBuf[i];
212 2 }
213 1 WrBuf[7] = checksum;
214 1 WrBuf[8] = 0x5A;
215 1
216 1 E2PRomWrite(E2PROM_RTC_ADDR, 9, WrBuf);
217 1 }
218
219
220 /*************************************************************************************************
221 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: E2PRomBKBoot
222 * <20><> <20><>: <20><>
223 * <20><><EFBFBD><EFBFBD>ֵ: <20><>
224 * <20><> <20><>: <20><><EFBFBD><EFBFBD>EEPROM<4F><4D>Boot<6F><74>
225 *************************************************************************************************/
226 void E2PRomBKBoot(void)
227 {
228 1 U8 xdata WrBuf[8];
229 1
230 1 WrBuf[0] = (uiE2PDataAddr>>8);
231 1 WrBuf[1] = uiE2PDataAddr;
232 1 WrBuf[3] = WrBuf[0]+WrBuf[1]; //Calculate checksum
233 1
234 1 WrBuf[4] = WrBuf[0];
235 1 WrBuf[5] = WrBuf[1];
236 1 WrBuf[7] = WrBuf[3];
237 1
C51 COMPILER V9.01 EXTE2PROM 02/06/2025 15:28:45 PAGE 5
238 1 E2PRomWrite(E2PROM_BOOT_ADDR, 8, WrBuf);
239 1 }
240
241
242 /*************************************************************************************************
243 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: E2PRomBKData
244 * <20><> <20><>: BKType<70><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
245 * <20><><EFBFBD><EFBFBD>ֵ: <20><>
246 * <20><> <20><>: <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>EEPROM
247 *************************************************************************************************/
248 void E2PRomBKData(U8 BKType)
249 {
250 1 U8 xdata WrBuf[32];
251 1
252 1 if(BKType == E2PROM_BKTYPE_CHG_START) //<2F><><EFBFBD>ʼ
253 1 {
254 2 MemoryCopy((U8 xdata *)&ucRTCBuf[0], WrBuf, 3);
255 2 MemoryCopy((U8 xdata *)&ucRTCBuf[4], WrBuf + 3, 3);
256 2 }
257 1 else
258 1 {
259 2 RTCReadTime(&RTC);
260 2 MemoryCopy((U8 xdata *)&(RTC.Second), WrBuf, 3);
261 2 MemoryCopy((U8 xdata *)&(RTC.Date), WrBuf + 3, 3);
262 2 }
263 1
264 1 WrBuf[6] = (Info.uiPackStatus>>8);
265 1 WrBuf[7] = Info.uiPackStatus;
266 1 WrBuf[8] = (Info.uiBatStatus>>8);
267 1 WrBuf[9] = Info.uiBatStatus;
268 1 WrBuf[10] = (Info.ulFCC>>24);
269 1 WrBuf[11] = (Info.ulFCC>>16);
270 1 WrBuf[12] = (Info.ulFCC>>8);
271 1 WrBuf[13] = Info.ulFCC;
272 1 WrBuf[14] = (Info.ulRC>>24);
273 1 WrBuf[15] = (Info.ulRC>>16);
274 1 WrBuf[16] = (Info.ulRC>>8);
275 1 WrBuf[17] = Info.ulRC;
276 1 WrBuf[18] = (Info.ulVoltage>>24);
277 1 WrBuf[19] = (Info.ulVoltage>>16);
278 1 WrBuf[20] = (Info.ulVoltage>>8);
279 1 WrBuf[21] = Info.ulVoltage;
280 1 WrBuf[22] = (Info.slCurr>>24);
281 1 WrBuf[23] = (Info.slCurr>>16);
282 1 WrBuf[24] = (Info.slCurr>>8);
283 1 WrBuf[25] = Info.slCurr;
284 1 WrBuf[26] = (Info.uiTS[0]>>8);
285 1 WrBuf[27] = Info.uiTS[0];
286 1 WrBuf[28] = (Info.uiCycleCount>>8);
287 1 WrBuf[29] = Info.uiCycleCount;
288 1 WrBuf[30] = BKType;
289 1 WrBuf[31] = 0x5A;
290 1
291 1 E2PRomWrite(uiE2PDataAddr, 32, WrBuf);
292 1
293 1 uiE2PDataAddr += 32;
294 1 if(uiE2PDataAddr >= E2PROM_BOOT_ADDR)
295 1 {
296 2 uiE2PDataAddr = 0;
297 2 }
298 1
299 1 E2PRomBKBoot();
C51 COMPILER V9.01 EXTE2PROM 02/06/2025 15:28:45 PAGE 6
300 1 }
301
302
303 /*************************************************************************************************
304 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: Uart0RdE2PRom
305 * <20><> <20><>: <20><>
306 * <20><><EFBFBD><EFBFBD>ֵ: <20><>
307 * <20><> <20><>: <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>EEPROM
308 *************************************************************************************************/
309 void Uart0RdE2PRom(void)
310 {
311 1 U16 RdAddr;
312 1
313 1 RdAddr = ((U16)ucUart0Buf[UART_CMD_NO]-CMD_RD_EEPROM)*128+((U16)ucSubClassID-0x80)*4096;
314 1 E2PRomRead(RdAddr, ucUart0Buf[UART_LENGTH], &ucUart0Buf[UART_DATA]);
315 1
316 1 ucUart0Buf[UART_DATA+ucUart0Buf[UART_LENGTH]] = CRC8cal(&ucUart0Buf,ucUart0Buf[UART_LENGTH]+UART_DATA)
-;
317 1 Uart0SendData(); //Start Send Data; Set UART REG
318 1 }
319
320 /*************************************************************************************************
321 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: Uart1RdE2PRom
322 * <20><> <20><>: <20><>
323 * <20><><EFBFBD><EFBFBD>ֵ: <20><>
324 * <20><> <20><>: <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>EEPROM
325 *************************************************************************************************/
326 void Uart1RdE2PRom(void)
327 {
328 1 U16 RdAddr;
329 1
330 1 RdAddr = ((U16)ucUart1Buf[UART_CMD_NO]-CMD_RD_EEPROM)*128+((U16)ucSubClassID-0x80)*4096;
331 1 E2PRomRead(RdAddr, ucUart1Buf[UART_LENGTH], &ucUart1Buf[UART_DATA]);
332 1
333 1 ucUart1Buf[UART_DATA+ucUart1Buf[UART_LENGTH]] = CRC8cal(&ucUart1Buf,ucUart1Buf[UART_LENGTH]+UART_DATA)
-;
334 1 Uart1SendData(); //Start Send Data; Set UART REG
335 1 }
336
337 /*************************************************************************************************
338 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: Uart2RdE2PRom
339 * <20><> <20><>: <20><>
340 * <20><><EFBFBD><EFBFBD>ֵ: <20><>
341 * <20><> <20><>: <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>EEPROM
342 *************************************************************************************************/
343 void Uart2RdE2PRom(void)
344 {
345 1 U16 RdAddr;
346 1
347 1 RdAddr = ((U16)ucUart2Buf[UART_CMD_NO]-CMD_RD_EEPROM)*128+((U16)ucSubClassID-0x80)*4096;
348 1 E2PRomRead(RdAddr, ucUart2Buf[UART_LENGTH], &ucUart2Buf[UART_DATA]);
349 1
350 1 ucUart2Buf[UART_DATA+ucUart2Buf[UART_LENGTH]] = CRC8cal(&ucUart2Buf,ucUart2Buf[UART_LENGTH]+UART_DATA)
-;
351 1 Uart2SendData(); //Start Send Data; Set UART REG
352 1 }
353
354
355 /*************************************************************************************************
356 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: UartRdRTC
357 * <20><> <20><>: <20><>
358 * <20><><EFBFBD><EFBFBD>ֵ: <20><>
C51 COMPILER V9.01 EXTE2PROM 02/06/2025 15:28:45 PAGE 7
359 * <20><> <20><>: <20><>ȡRTCʱ<43><EFBFBD><EFBFBD>֡<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ա<EFBFBD><D5A1>¡<EFBFBD><C2A1><EFBFBD><EAA3AC><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD>UART
360 *************************************************************************************************/
361 void Uart0RdRTC(void)
362 {
363 1 RTCReadTime(&RTC);
364 1 MemoryCopy((U8 xdata *)&(RTC.Second), &ucUart0Buf[UART_DATA], 7);
365 1
366 1 ucUart0Buf[UART_DATA+ucUart0Buf[UART_LENGTH]] = CRC8cal(&ucUart0Buf,ucUart0Buf[UART_LENGTH]+UART_DATA);
367 1 Uart0SendData(); //Start Send Data; Set UART REG
368 1 }
369
370
371 /*************************************************************************************************
372 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: Uart1RdRTC
373 * <20><> <20><>: <20><>
374 * <20><><EFBFBD><EFBFBD>ֵ: <20><>
375 * <20><> <20><>: <20><>ȡRTCʱ<43><EFBFBD><EFBFBD>֡<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ա<EFBFBD><D5A1>¡<EFBFBD><C2A1><EFBFBD><EAA3AC><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD>UART
376 *************************************************************************************************/
377 void Uart1RdRTC(void)
378 {
379 1 RTCReadTime(&RTC);
380 1 MemoryCopy((U8 xdata *)&(RTC.Second), &ucUart1Buf[UART_DATA], 7);
381 1
382 1 ucUart1Buf[UART_DATA+ucUart1Buf[UART_LENGTH]] = CRC8cal(&ucUart1Buf,ucUart1Buf[UART_LENGTH]+UART_DATA);
383 1 Uart1SendData(); //Start Send Data; Set UART REG
384 1 }
385
386 /*************************************************************************************************
387 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: Uart2RdRTC
388 * <20><> <20><>: <20><>
389 * <20><><EFBFBD><EFBFBD>ֵ: <20><>
390 * <20><> <20><>: <20><>ȡRTCʱ<43><EFBFBD><EFBFBD>֡<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ա<EFBFBD><D5A1>¡<EFBFBD><C2A1><EFBFBD><EAA3AC><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD>UART
391 *************************************************************************************************/
392 void Uart2RdRTC(void)
393 {
394 1 RTCReadTime(&RTC);
395 1 MemoryCopy((U8 xdata *)&(RTC.Second), &ucUart2Buf[UART_DATA], 7);
396 1
397 1 ucUart2Buf[UART_DATA+ucUart2Buf[UART_LENGTH]] = CRC8cal(&ucUart2Buf,ucUart2Buf[UART_LENGTH]+UART_DATA);
398 1 Uart2SendData(); //Start Send Data; Set UART REG
399 1 }
400
401 /*************************************************************************************************
402 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: E2PRomBKProcess
403 * <20><> <20><>: <20><>
404 * <20><><EFBFBD><EFBFBD>ֵ: <20><>
405 * <20><> <20><>: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>EEPROM<4F><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>
406 *************************************************************************************************/
407 void E2PRomBKProcess(void)
408 {
409 1 U8 BKType;
410 1
411 1 if(bEnEEPRomBK && bE2PProcessFlg)
412 1 {
413 2 bE2PProcessFlg = 0;
414 2 // E2PRomInit();
415 2 // RTCInitTime(&RTC);
416 2
417 2 if(bE2PErase)
418 2 {
419 3 bE2PErase = 0;
420 3 E2PRomErase();
C51 COMPILER V9.01 EXTE2PROM 02/06/2025 15:28:45 PAGE 8
421 3 }
422 2
423 2 if(bUart0E2PRdData||bUart1E2PRdData||bUart2E2PRdData)
424 2 {
425 3 if(bUart0E2PRdData )
426 3 {
427 4 bUart0E2PRdData = 0;
428 4 Uart0RdE2PRom();
429 4 }
430 3 if(bUart1E2PRdData)
431 3 {
432 4 bUart1E2PRdData = 0;
433 4 Uart2RdE2PRom();
434 4 }
435 3 if(bUart2E2PRdData)
436 3 {
437 4 bUart2E2PRdData = 0;
438 4 Uart2RdE2PRom();
439 4 }
440 3
441 3 }
442 2
443 2 if(bUart0RTCRdTime||bUart1RTCRdTime||bUart2RTCRdTime)
444 2 {
445 3 if(bUart0RTCRdTime)
446 3 {
447 4 bUart0RTCRdTime = 0;
448 4 Uart0RdRTC();
449 4 }
450 3 if(bUart1RTCRdTime)
451 3 {
452 4 bUart1RTCRdTime = 0;
453 4 Uart1RdRTC();
454 4 }
455 3 if(bUart2RTCRdTime)
456 3 {
457 4 bUart2RTCRdTime = 0;
458 4 Uart2RdRTC();
459 4 }
460 3 }
461 2
462 2 if(bE2PBKRtc)
463 2 {
464 3 bE2PBKRtc = 0;
465 3 E2PRomBKRTC();
466 3 }
467 2
468 2 if(bE2PBKChgStart)
469 2 {
470 3 bE2PBKChgStart = 0;
471 3 BKType = E2PROM_BKTYPE_CHG_START;
472 3 E2PRomBKData(BKType);
473 3 }
474 2
475 2 if(bE2PBKChgStop)
476 2 {
477 3 bE2PBKChgStop = 0;
478 3 BKType = E2PROM_BKTYPE_CHG_END;
479 3 E2PRomBKData(BKType);
480 3 }
481 2
482 2 if(bE2PBKDsgEnd)
C51 COMPILER V9.01 EXTE2PROM 02/06/2025 15:28:45 PAGE 9
483 2 {
484 3 bE2PBKDsgEnd = 0;
485 3 BKType = E2PROM_BKTYPE_DSG_END;
486 3 E2PRomBKData(BKType);
487 3 }
488 2 }
489 1 }
490
491
492 /*************************************************************************************************
493 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: E2PRomBKCheck
494 * <20><> <20><>: <20><>
495 * <20><><EFBFBD><EFBFBD>ֵ: <20><>
496 * <20><> <20><>: ÿ1s<31><73><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>RTC<54><43>EEPROM<4F><4D><EFBFBD><EFBFBD>
497 *************************************************************************************************/
498 void E2PRomBKCheck(void)
499 {
500 1 if(bEnEEPRomBK)
501 1 {
502 2 // E2PRomInit();
503 2 // RTCInitTime(&RTC);
504 2
505 2 if(++ucRTCBKTime1 >= E2ucRTCBKDelay)
506 2 {
507 3 ucRTCBKTime1 = 0;
508 3 RTCReadTime(&RTC);
509 3 }
510 2
511 2 if(++uiRTCBKTime2 >= 3600) //1h
512 2 {
513 3 uiRTCBKTime2 = 0;
514 3 bE2PProcessFlg = 1;
515 3 bE2PBKRtc = 1;
516 3 }
517 2
518 2 if(!bCHGING)
519 2 {
520 3 bDsgToChgFlg = 1;
521 3 if(bChgToDsgFlg)
522 3 {
523 4 bChgToDsgFlg = 0;
524 4 bE2PProcessFlg = 1;
525 4 bE2PBKChgStop = 1;
526 4 }
527 3 if(bUV && bE2PBKDsgEndValid)
528 3 {
529 4 bE2PBKDsgEndValid = 0;
530 4 bE2PProcessFlg = 1;
531 4 bE2PBKDsgEnd = 1;
532 4 }
533 3 else if(!bUV)
534 3 {
535 4 bE2PBKDsgEndValid = 1;
536 4 }
537 3 }
538 2
539 2 if((bDsgToChgFlg && Info.slCurr>=E2siChgBKCur))
540 2 {
541 3 if(!uiCHGValidTime)
542 3 {
543 4 RTCReadTime(&RTC);
544 4 MemoryCopy((U8 xdata *)&RTC, ucRTCBuf, 7);
C51 COMPILER V9.01 EXTE2PROM 02/06/2025 15:28:45 PAGE 10
545 4 }
546 3
547 3 if(++uiCHGValidTime > ((U16)E2ucChgBKDelay*60)) //1<><31><EFBFBD><EFBFBD>
548 3 {
549 4 uiCHGValidTime = 0;
550 4 bChgToDsgFlg = 1;
551 4 bDsgToChgFlg = 0;
552 4 bE2PProcessFlg = 1;
553 4 bE2PBKChgStart = 1;
554 4 }
555 3 }
556 2 else
557 2 {
558 3 uiCHGValidTime = 0;
559 3 }
560 2 }
561 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1960 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 21 82
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = 1 ----
BIT SIZE = 11 3
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)