Files
RCU_C12_Dimming/Listings/UART_Set.lst
caocong 2dd675869a fix:修复调光时间BUG
解决调光时间一样的情况下,调光亮与调光灭的实际调光时间不一致问题
2025-12-15 20:48:52 +08:00

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