658 lines
36 KiB
Plaintext
658 lines
36 KiB
Plaintext
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)
|