Files
RCU_C12_Dimming/Listings/UART_Set.lst
caocong 6ef7f0c503 docs:发布文件
发布生产文件:BLV_C12_Dimm_V19.hex
2025-12-16 16:59:36 +08:00

657 lines
36 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
C51 COMPILER V9.01 UART_SET 12/16/2025 16:53:47 PAGE 1
C51 COMPILER V9.01, COMPILATION OF MODULE UART_SET
OBJECT MODULE PLACED IN .\Objects\UART_Set.obj
COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE UART_Set.c OPTIMIZE(8,SPEED) BROWSE DEBUG OBJECTEXTEND PRINT(.\Listings\
-UART_Set.lst) OBJECT(.\Objects\UART_Set.obj)
line level source
1 #include "UART_Set.h"
2 #include "UART.h"
3 #include "pwm_control.h"
4 #include "string.h"
5 #include "config.h"
6 #include "timer.h"
7 #include "STC8xxxx.h"
8 #include "PWM15bit.h"
9
10 G_Usart g_Usart;
11 G_answer g_answer;
12 S_recv s_recv;
13
14 u8 debug = 0x00;
15
16 /*
17 判断接收的指令是否合法
18 */
19 void Usart_judge_Data(void)
20 {
21 1 u8 len = 0;
22 1 u8 i, sum;
23 1 sum = 0;
24 1 g_Usart.ok_flag = 0;
25 1
26 1 if((recv_start_flag==1)&&(systick_1ms-recv_time>8))
27 1 {
28 2 recv_start_flag=0;
29 2 #if DEBUG_
{
for(i=0;i<COM1.RX_Cnt;i++)
{
g_Usart.recv_buffer[i]=RX1_Buffer[i];
}
COM1.RX_Cnt = 0;
memset(RX1_Buffer,0,sizeof(RX1_Buffer));
}
#else
39 2 {
40 3 len = COM3.RX_Cnt;
41 3 for(i=0;i<COM3.RX_Cnt;i++)
42 3 {
43 4 g_Usart.recv_buffer[i]=RX3_Buffer[i];
44 4 }
45 3 COM3.RX_Cnt = 0;
46 3 memset(RX3_Buffer,0,sizeof(RX3_Buffer));
47 3 // if(debug) Printbuffer1(g_Usart.recv_buffer,11);
48 3 }
49 2 #endif
50 2
51 2 for (i = 0; i < g_Usart.recv_buffer[UART_FMT_LEN]; i++)
52 2 {
53 3 sum += g_Usart.recv_buffer[i];
54 3 }
C51 COMPILER V9.01 UART_SET 12/16/2025 16:53:47 PAGE 2
55 2 if (sum == 0xff)
56 2 {
57 3 if(len == g_Usart.recv_buffer[UART_FMT_LEN])
58 3 {
59 4 if ((g_Usart.recv_buffer[UART_FMT_ADDR_RX] == ADDR_RX) && (g_Usart.recv_buffer[UART_FMT_DEV_TYPE] == D
-EV_TYPE))
60 4 {
61 5 g_Usart.Sn = g_Usart.recv_buffer[UART_FMT_TYPE]&0x0F;
62 5
63 5 if ((g_Usart.recv_buffer[UART_FMT_TYPE] & 0x40) == 0x00) //序列号检验,首发
64 5 {
65 6 g_Usart.ok_flag = 1; //首发则处理
66 6 }
67 5 else //序列号为重发,则无论如何,
-都不应该改变序列号
68 5 {
69 6 if (g_Usart.Sn == g_Usart.lastsn)
70 6 {
71 7 g_Usart.ok_flag = 0;
72 7 g_answer.short_answer[UART_FMT_CMD]=0xF0;
73 7 g_answer.short_answer_flag=0x01;
74 7 }
75 6 else
76 6 {
77 7 g_Usart.ok_flag = 1;
78 7 }
79 6 }
80 5 g_Usart.lastsn = g_Usart.Sn;
81 5 }
82 4 }
83 3 }
84 2 }
85 1 }
86
87 void Usart_Deal_Data(void)
88 {
89 1 u8 i;
90 1 if(g_Usart.ok_flag)
91 1 {
92 2 if(debug)
93 2 {
94 3 PrintString1("data ok");
95 3 }
96 2 switch(g_Usart.recv_buffer[UART_FMT_CMD])
97 2 {
98 3 //查询状态命令
99 3 case USART_CMD_QUEST:
100 3 if(debug)
101 3 {
102 4 PrintString1("ask");
103 4 }
104 3 g_answer.long_answer[UART_FMT_CMD]=USART_CMD_QUEST_A;
105 3 g_answer.long_answer_flag=0x01;
106 3 break;
107 3 //设置百分比亮度值
108 3 case USART_CMD_SET_BRIGHTNESS:
109 3 g_answer.short_answer[UART_FMT_CMD]=USART_CMD_SET_BRIGHTNESS_A;
110 3 if(debug)
111 3 {
112 4 PrintString1("percent");
113 4 }
114 3 //第一个使能位
C51 COMPILER V9.01 UART_SET 12/16/2025 16:53:47 PAGE 3
115 3 for (i = 0; i < 8; i++)
116 3 {
117 4 if (g_Usart.recv_buffer[7] & (1 << i))
118 4 {
119 5 s_recv.flag1[i] = 1;
120 5 s_recv.flag2[i] = 0;
121 5 s_recv.B_Ch[i] = g_Usart.recv_buffer[21 - i];
122 5
123 5 if (s_recv.B_Ch[i] < s_recv.B_min)
124 5 {
125 6 s_recv.B_Ch[i] = s_recv.B_min;
126 6 }
127 5
128 5 if (s_recv.B_Ch[i] > s_recv.B_max)
129 5 {
130 6 s_recv.B_Ch[i] = s_recv.B_max;
131 6 }
132 5
133 5 s_pwm.wanttopwm[i] = PWM_MAX_VALUE - s_recv.B_Ch[i] * PWM_MAX_VALUE * s_recv.global_
-brightness / 100 / 100 * s_recv.key_status[i];
134 5 s_pwm.doublecurrpwm[i] = s_pwm.currpwm[i]; //更新调光起始点
135 5
136 5 s_recv.gradual_time[i] = g_Usart.recv_buffer[9] * 10; /*接收的渐变时间*/
137 5 /*
138 5 除数不能为零
139 5 */
140 5 if (s_recv.gradual_time[i] == 0)
141 5 {
142 6 s_recv.gradual_time[i] = 1;
143 6 }
144 5
145 5 /*计算10ms处理的pwm步进值*/
146 5 if (s_pwm.wanttopwm[i] > s_pwm.currpwm[i])
147 5 {
148 6 s_pwm.every_change_10ms[i] = (float)(s_pwm.wanttopwm[i] - s_pwm.currpwm[i]) / s_
-recv.gradual_time[i];
149 6 if (s_pwm.every_change_10ms[i] < 1)
150 6 {
151 7 s_pwm.every_change_10ms[i] = 1;
152 7 }
153 6 }
154 5
155 5 if (s_pwm.wanttopwm[i] < s_pwm.currpwm[i])
156 5 {
157 6 s_pwm.every_change_10ms[i] = (float)(s_pwm.currpwm[i] - s_pwm.wanttopwm[i]) / s_
-recv.gradual_time[i];
158 6 if (s_pwm.every_change_10ms[i] < 1)
159 6 {
160 7 s_pwm.every_change_10ms[i] = 1;
161 7 }
162 6 }
163 5 }
164 4 }
165 3
166 3 //第二个使能位
167 3 for (i = 0; i < 4; i++)
168 3 {
169 4 if (g_Usart.recv_buffer[8] & (1 << i))
170 4 {
171 5 s_recv.flag1[i+8] = 1;
172 5 s_recv.flag2[i+8] = 0;
173 5 s_recv.B_Ch[i+8] = g_Usart.recv_buffer[13 - i];
C51 COMPILER V9.01 UART_SET 12/16/2025 16:53:47 PAGE 4
174 5
175 5 if (s_recv.B_Ch[i+8] < s_recv.B_min)
176 5 {
177 6 s_recv.B_Ch[i+8] = s_recv.B_min;
178 6 }
179 5
180 5 if (s_recv.B_Ch[i+8] > s_recv.B_max)
181 5 {
182 6 s_recv.B_Ch[i+8] = s_recv.B_max;
183 6 }
184 5
185 5 s_pwm.wanttopwm[i+8] = PWM_MAX_VALUE - s_recv.B_Ch[i+8] * PWM_MAX_VALUE * s_recv.g
-lobal_brightness / 100 / 100 * s_recv.key_status[i+8];
186 5 s_pwm.doublecurrpwm[i] = s_pwm.currpwm[i]; //更新调光起始点
187 5
188 5 s_recv.gradual_time[i+8] = g_Usart.recv_buffer[9] * 10; /*接收的渐变时间*/
189 5
190 5 /*
191 5 除数不能为零
192 5 */
193 5 if (s_recv.gradual_time[i+8] == 0)
194 5 {
195 6 s_recv.gradual_time[i+8] = 1;
196 6 }
197 5
198 5 /*计算10ms处理的pwm步进值*/
199 5 if (s_pwm.wanttopwm[i+8] > s_pwm.currpwm[i+8])
200 5 {
201 6 s_pwm.every_change_10ms[i+8] = (float)(s_pwm.wanttopwm[i+8] - s_pwm.currpwm[i+
-8]) / s_recv.gradual_time[i+8];
202 6 if (s_pwm.every_change_10ms[i+8] < 1)
203 6 {
204 7 s_pwm.every_change_10ms[i+8] = 1;
205 7 }
206 6 }
207 5
208 5
209 5 if (s_pwm.wanttopwm[i+8] < s_pwm.currpwm[i+8])
210 5 {
211 6 s_pwm.every_change_10ms[i+8] = (float)(s_pwm.currpwm[i+8] - s_pwm.wanttopwm[i
-+8]) / s_recv.gradual_time[i+8];
212 6 if (s_pwm.every_change_10ms[i+8] < 1)
213 6 {
214 7 s_pwm.every_change_10ms[i+8] = 1;
215 7 }
216 6 }
217 5 }
218 4 }
219 3
220 3 g_answer.short_answer_flag=0x01;
221 3 break;
222 3
223 3
224 3 //设置模式:递增、递减和循环
225 3 case USART_CMD_SET_MODE:
226 3 g_answer.short_answer[UART_FMT_CMD]=USART_CMD_SET_MODE_A;
227 3 if(debug)
228 3 {
229 4 PrintString1("change light");
230 4 }
231 3
232 3 for (i = 0; i < 8; i++)
C51 COMPILER V9.01 UART_SET 12/16/2025 16:53:47 PAGE 5
233 3 {
234 4 if (g_Usart.recv_buffer[7] & (1 << i))
235 4 {
236 5 s_recv.flag1[i] = 0;
237 5 s_recv.flag2[i] = 1;
238 5 s_recv.mode[i] = g_Usart.recv_buffer[9];
239 5 s_recv.pwm_step[i] = g_Usart.recv_buffer[11];
240 5
241 5 if (s_recv.mode[i] == 0x00)
242 5 {
243 6 if (g_Usart.recv_buffer[10] == 0x00)
244 6 {
245 7 s_recv.forward[i] = 0;
246 7 }
247 6
248 6 if (g_Usart.recv_buffer[10] == 0x01)
249 6 {
250 7 s_recv.forward[i] = 1;
251 7 }
252 6
253 6 if (g_Usart.recv_buffer[10] == 0x02) //翻转
254 6 {
255 7 if (s_recv.forward[i] == 0x01)
256 7 {
257 8 s_recv.forward[i] = 0x00;
258 8 continue; // 为防止翻转之后直接进入下一个状态
259 8 }
260 7
261 7 if (s_recv.forward[i] == 0x00)
262 7 {
263 8 s_recv.forward[i] = 0x01;
264 8 continue;
265 8 }
266 7 }
267 6 }
268 5 }
269 4 }
270 3
271 3
272 3 for (i = 0; i < 4; i++)
273 3 {
274 4 if (g_Usart.recv_buffer[8] & (1 << i))
275 4 {
276 5 s_recv.flag1[i+8] = 0;
277 5 s_recv.flag2[i+8] = 1;
278 5 s_recv.mode[i+8] = g_Usart.recv_buffer[9];
279 5 s_recv.pwm_step[i+8] = g_Usart.recv_buffer[11];
280 5
281 5 if (s_recv.mode[i+8] == 0x00)
282 5 {
283 6 if (g_Usart.recv_buffer[10] == 0x00)
284 6 {
285 7 s_recv.forward[i+8] = 0;
286 7 }
287 6
288 6 if (g_Usart.recv_buffer[10] == 0x01)
289 6 {
290 7 s_recv.forward[i+8] = 1;
291 7 }
292 6
293 6 if (g_Usart.recv_buffer[10] == 0x02) //翻转
294 6 {
C51 COMPILER V9.01 UART_SET 12/16/2025 16:53:47 PAGE 6
295 7 if (s_recv.forward[i+8] == 0x01)
296 7 {
297 8 s_recv.forward[i+8] = 0x00;
298 8 continue; // 为防止翻转之后直接进入下一个状态
299 8 }
300 7
301 7 if (s_recv.forward[i+8] == 0x00)
302 7 {
303 8 s_recv.forward[i+8] = 0x01;
304 8 continue;
305 8 }
306 7 }
307 6 }
308 5 }
309 4 }
310 3 g_answer.short_answer_flag=0x01;
311 3 break;
312 3
313 3
314 3 //设置整体亮度
315 3 case USART_CMD_ALL_BRIGHTNESS:
316 3 g_answer.short_answer[UART_FMT_CMD]=USART_CMD_ALL_BRIGHTNESS_A;
317 3
318 3 if(debug)
319 3 {
320 4 PrintString1("global light");
321 4 }
322 3
323 3 // s_recv.changeflag = 1;
324 3 if (g_Usart.recv_buffer[7] & (1 << 5)) //全局可调下限
325 3 {
326 4 s_recv.B_min = g_Usart.recv_buffer[10];
327 4 for (i = 0; i < 12; i++)
328 4 {
329 5 if ( s_pwm.currvalue[i] < s_recv.B_min)
330 5 {
331 6 s_pwm.currvalue[i] = s_recv.B_min;
332 6 }
333 5 }
334 4 }
335 3
336 3 if (g_Usart.recv_buffer[7] & (1 << 6)) //全局可调上限
337 3 {
338 4 s_recv.B_max = g_Usart.recv_buffer[9];
339 4 for (i = 0; i < 12; i++)
340 4 {
341 5 if ( s_pwm.currvalue[i] > s_recv.B_max)
342 5 {
343 6 s_pwm.currvalue[i] = s_recv.B_max;
344 6 }
345 5 }
346 4 }
347 3
348 3 if (g_Usart.recv_buffer[7] & (1 << 7)) //全局亮度
349 3 {
350 4 s_recv.global_brightness = g_Usart.recv_buffer[8];
351 4
352 4 for (i = 0; i < 12; i++)
353 4 {
354 5 // s_pwm.wanttopwmflash[i] = PWM_MAX_VALUE - s_pwm.currvalue[i] * PWM_MAX_VALUE *
-s_recv.global_brightness / 100 / 100 * s_recv.key_status[i];
355 5
C51 COMPILER V9.01 UART_SET 12/16/2025 16:53:47 PAGE 7
356 5 s_recv.flag1[i] = 1;
357 5 s_recv.flag2[i] = 0;
358 5
359 5 s_pwm.wanttopwm[i] = PWM_MAX_VALUE - s_recv.B_Ch[i] * PWM_MAX_VALUE * s_recv.glo
-bal_brightness / 100 / 100 * s_recv.key_status[i];
360 5 s_pwm.doublecurrpwm[i] = s_pwm.currpwm[i]; //更新调光起始点
361 5 if(s_pwm.wanttopwm[i] > PWM_MAX_VALUE)
362 5 {
363 6 s_pwm.wanttopwm[i] = PWM_MAX_VALUE;
364 6 }
365 5
366 5 /*计算10ms处理的pwm步进值*/
367 5 if (s_pwm.wanttopwm[i] > s_pwm.currpwm[i])
368 5 {
369 6 s_pwm.every_change_10ms[i] = (float)(s_pwm.wanttopwm[i] - s_pwm.currpwm[i])
-/ s_recv.gradual_time[i];
370 6 if (s_pwm.every_change_10ms[i] < 1)
371 6 {
372 7 s_pwm.every_change_10ms[i] = 1;
373 7 }
374 6 }
375 5
376 5 if (s_pwm.wanttopwm[i] < s_pwm.currpwm[i])
377 5 {
378 6 s_pwm.every_change_10ms[i] = (float)(s_pwm.currpwm[i] - s_pwm.wanttopwm[i])
-/ s_recv.gradual_time[i];
379 6 if (s_pwm.every_change_10ms[i] < 1)
380 6 {
381 7 s_pwm.every_change_10ms[i] = 1;
382 7 }
383 6 }
384 5 }
385 4 }
386 3
387 3
388 3 g_answer.short_answer_flag=0x01;
389 3 break;
390 3
391 3
392 3 //设置开关状态
393 3 case USART_CMD_SWITCH_STATUS:
394 3 g_answer.short_answer[UART_FMT_CMD]=USART_CMD_SWITCH_STATUS_A;
395 3 if(debug)
396 3 {
397 4 PrintString1("switch state");
398 4 }
399 3
400 3 for (i = 0; i < 8; i++)
401 3 {
402 4 if (g_Usart.recv_buffer[7] & (1 << i))
403 4 {
404 5 if (g_Usart.recv_buffer[9 + i] == 0x01)
405 5 {
406 6 s_recv.key_status[i] = 0x01;
407 6 //s_pwm.currvalue[i] = s_pwm.thenvalue[i];
408 6 Open_Light(i);
409 6 }
410 5
411 5 if (g_Usart.recv_buffer[9 + i] == 0x00)
412 5 {
413 6 //s_pwm.thenvalue[i] = s_pwm.currvalue[i];
414 6 Close_Light(i);
C51 COMPILER V9.01 UART_SET 12/16/2025 16:53:47 PAGE 8
415 6 s_recv.flag1[i] = 0;
416 6 s_recv.flag2[i] = 0;
417 6 s_recv.mode[i] = 2;
418 6 s_recv.key_status[i] = 0x00;
419 6 }
420 5
421 5 if (g_Usart.recv_buffer[9 + i] == 0x02)
422 5 {
423 6 if (s_recv.key_status[i] == 0x00)
424 6 {
425 7 s_recv.key_status[i] = 0x01;
426 7 //s_pwm.currvalue[i] = s_pwm.thenvalue[i];
427 7 Open_Light(i);
428 7 continue;
429 7 }
430 6
431 6 if (s_recv.key_status[i] == 0x01)
432 6 {
433 7 //s_pwm.thenvalue[i] = s_pwm.currvalue[i];
434 7 Close_Light(i);
435 7 s_recv.flag1[i] = 0;
436 7 s_recv.flag2[i] = 0;
437 7 s_recv.mode[i] = 2;
438 7 s_recv.key_status[i] = 0x00;
439 7 continue;
440 7 }
441 6 }
442 5 }
443 4 }
444 3
445 3
446 3 for (i = 0; i < 4; i++)
447 3 {
448 4 if (g_Usart.recv_buffer[8] & (1 << i))
449 4 {
450 5 if (g_Usart.recv_buffer[9 + 8 + i] == 0x01)
451 5 {
452 6 s_recv.key_status[i+8] = 0x01;
453 6 //s_pwm.currvalue[i+8] = s_pwm.thenvalue[i];
454 6 Open_Light(i+8);
455 6 }
456 5
457 5 if (g_Usart.recv_buffer[9 +8 + i] == 0x00)
458 5 {
459 6 //s_pwm.thenvalue[i+8] = s_pwm.currvalue[i+8];
460 6 Close_Light(i+8);
461 6 s_recv.flag1[i+8] = 0;
462 6 s_recv.flag2[i+8] = 0;
463 6 s_recv.mode[i+8] = 2;
464 6 s_recv.key_status[i+8] = 0x00;
465 6 }
466 5
467 5 if (g_Usart.recv_buffer[9 + 8 + i] == 0x02)
468 5 {
469 6 if (s_recv.key_status[i+8] == 0x00)
470 6 {
471 7 s_recv.key_status[i+8] = 0x01;
472 7 //s_pwm.currvalue[i+8] = s_pwm.thenvalue[i];
473 7 Open_Light(i+8);
474 7 continue;
475 7 }
476 6
C51 COMPILER V9.01 UART_SET 12/16/2025 16:53:47 PAGE 9
477 6
478 6 if (s_recv.key_status[i+8] == 0x01)
479 6 {
480 7 //s_pwm.thenvalue[i+8] = s_pwm.currvalue[i+8];
481 7 Close_Light(i+8);
482 7 s_recv.flag1[i+8] = 0;
483 7 s_recv.flag2[i+8] = 0;
484 7 s_recv.mode[i+8] = 2;
485 7 s_recv.key_status[i+8] = 0x00;
486 7 continue;
487 7 }
488 6 }
489 5 }
490 4 }
491 3 g_answer.short_answer_flag=0x01;
492 3 break;
493 3 case USART_CMD_DEBUG_SET:
494 3 g_answer.short_answer[UART_FMT_CMD]=USART_CMD_DEBUG_SET_A;
495 3 if(debug)
496 3 {
497 4 PrintString1("debug");
498 4 }
499 3 debug = g_Usart.recv_buffer[7];
500 3 g_answer.short_answer_flag=0x01;
501 3 break;
502 3 case Usart_CMD_Version:
503 3 g_answer.version_answer[UART_FMT_CMD]=Usart_CMD_Version_A;
504 3 g_answer.version_answer_flag=0x01;
505 3 if(debug)
506 3 {
507 4 PrintString1("version");
508 4 }
509 3 break;
510 3 }
511 2 g_Usart.ok_flag=0;
512 2 }
513 1 }
514
515 void Usart_answer(void)
516 {
517 1 u8 i=0;
518 1 u8 checksum=0;
519 1 if(g_answer.long_answer_flag)
520 1 {
521 2 g_answer.long_answer[UART_FMT_ADDR_TX]=ADDR_RX;
522 2 g_answer.long_answer[UART_FMT_TYPE]=g_Usart.Sn;
523 2 g_answer.long_answer[UART_FMT_DEV_TYPE]=DEV_TYPE;
524 2 g_answer.long_answer[UART_FMT_ADDR_RX]=g_Usart.recv_buffer[UART_FMT_ADDR_TX];
525 2 g_answer.long_answer[UART_FMT_LEN]=0x14;
526 2 g_answer.long_answer[7] = s_recv.global_brightness;
527 2 for(i=0;i<12;i++)
528 2 {
529 3 g_answer.long_answer[8+i] = s_pwm.currvalue[11-i];
530 3 if(s_recv.key_status[i] == 0x01)
531 3 {
532 4 g_answer.long_answer[8+i] |= 0x80;
533 4 }
534 3 }
535 2 checksum=sumfunc(g_answer.long_answer,0x14);
536 2 g_answer.long_answer[UART_FMT_CKS]=checksum;
537 2
538 2 Printbuffer3(g_answer.long_answer,0x14); //串口3输出打印
C51 COMPILER V9.01 UART_SET 12/16/2025 16:53:47 PAGE 10
539 2
540 2 if(debug)
541 2 {
542 3 // PrintString1("long answer");
543 3 }
544 2 g_answer.long_answer_flag=0;
545 2 memset(g_Usart.recv_buffer,0,32);
546 2 }
547 1 if(g_answer.short_answer_flag)
548 1 {
549 2 g_answer.short_answer[UART_FMT_ADDR_TX]=ADDR_RX;
550 2 g_answer.short_answer[UART_FMT_TYPE]=g_Usart.Sn;
551 2 g_answer.short_answer[UART_FMT_DEV_TYPE]=DEV_TYPE;
552 2 g_answer.short_answer[UART_FMT_ADDR_RX]=g_Usart.recv_buffer[UART_FMT_ADDR_TX];
553 2 g_answer.short_answer[UART_FMT_LEN]=0x07;
554 2 checksum=sumfunc(g_answer.short_answer,0x07);
555 2 g_answer.short_answer[UART_FMT_CKS]=checksum;
556 2 Printbuffer3(g_answer.short_answer,0x07);
557 2 if(debug)
558 2 {
559 3 PrintString1("short answer");
560 3 }
561 2
562 2
563 2 g_answer.short_answer_flag=0;
564 2 memset(g_Usart.recv_buffer,0,32);
565 2 }
566 1
567 1 if(g_answer.version_answer_flag)
568 1 {
569 2 g_answer.version_answer[UART_FMT_ADDR_TX]=ADDR_RX;
570 2 g_answer.version_answer[UART_FMT_TYPE]=g_Usart.Sn;
571 2 g_answer.version_answer[UART_FMT_DEV_TYPE]=DEV_TYPE;
572 2 g_answer.version_answer[UART_FMT_ADDR_RX]=g_Usart.recv_buffer[UART_FMT_ADDR_TX];
573 2 g_answer.version_answer[UART_FMT_LEN]=0x09;
574 2 g_answer.version_answer[UART_FMT_CMD+1]=Version_High;
575 2 g_answer.version_answer[UART_FMT_CMD+2]=Version_Low;
576 2
577 2 checksum=sumfunc(g_answer.version_answer,0x09);
578 2 g_answer.version_answer[UART_FMT_CKS]=checksum;
579 2 Printbuffer3(g_answer.version_answer,0x09);
580 2 if(debug)
581 2 {
582 3 PrintString1("version_answer");
583 3 }
584 2 g_answer.version_answer_flag=0;
585 2 memset(g_Usart.recv_buffer,0,32);
586 2 }
587 1 memset(&g_answer,0,sizeof(g_answer));
588 1 }
589
590 u8 sumfunc(u8* answer,u8 len)
591 {
592 1 u8 m = 0;
593 1 u8 j;
594 1 for (j = 0; j < len; j++)
595 1 {
596 2 if (5 == j) continue;
597 2 m += *(answer+j);
598 2 }
599 1 return ~m;
600 1 }
C51 COMPILER V9.01 UART_SET 12/16/2025 16:53:47 PAGE 11
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 4719 ----
CONSTANT SIZE = 101 ----
XDATA SIZE = 272 ----
PDATA SIZE = ---- ----
DATA SIZE = 1 7
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)