📄 system.lst
字号:
243 2 else if (uart_start_flag)
244 2 {
245 3 switch (uart_rcv_flag)
246 3 {
247 4 case 0:if (tmp == rec_buf[com_n])
248 4 {
249 5 com_n++;
250 5 }
251 4 else
252 4 {
253 5 uart_start_flag = 0;
254 5 }
255 4 if (com_n == 7)
256 4 {
257 5 uart_rcv_flag = 1;
258 5 }
259 4 break;
260 4 case 1:CID2 = tmp;
261 4 if ((CID2 == '8') || (CID2 == 'A'))
262 4 {
263 5 uart_rcv_flag = 2;
264 5 com_n = 0;
265 5 LCHKSUM = 0;
266 5 Rxsum2 = Rxsum1 + tmp;
267 5 }
268 4 else if(purview_flag)
269 4 {
270 5 if(CID2 == '9')
271 5 {
272 6 uart_rcv_flag = 2;
273 6 com_n = 0;
274 6 LCHKSUM = 0;
275 6 Rxsum2 = Rxsum1 + tmp;
276 6 }
277 5 else
278 5 {
279 6 uart_start_flag = 0;
280 6 }
281 5 }
282 4 else
283 4 {
284 5 uart_start_flag = 0;
285 5 }
286 4 break;
287 4 case 2:if(com_n < 3)
288 4 {
289 5 LTH[com_n] = asc_hex(tmp);
290 5 LCHKSUM += LTH[com_n];
291 5 Rxsum2 += tmp;
292 5 com_n++;
293 5 }
294 4 else
295 4 {
296 5 LTH[com_n] = asc_hex(tmp);
297 5 LCHKSUM += LTH[com_n];
298 5 Rxsum2 += tmp;
299 5 if((LCHKSUM & 0x0f) == 0)
300 5 {
301 6 uart_rcv_flag = 3;
302 6 uart_rcv_len = (LTH[2]<<4) + LTH[3];
303 6 com_n = 0;
C51 COMPILER V7.50 SYSTEM 02/16/2009 09:18:46 PAGE 6
304 6 }
305 5 else uart_start_flag = 0;
306 5 }
307 4 break;
308 4 case 3:if (com_n < uart_rcv_len - 1) //DATA
309 4 {
310 5 DataBuf[com_n] = asc_hex(tmp);
311 5 Rxsum2 += tmp;
312 5 com_n++;
313 5 }
314 4 else
315 4 {
316 5 uart_rcv_flag = 4;
317 5 DataBuf[com_n] = asc_hex(tmp);
318 5 com_n = 0;
319 5 Rxsum2 += tmp;
320 5 Rxsum2 = 0x10000 - Rxsum2;
321 5 sum_buf[0] = hex_asc((Rxsum2 >> 12) & 0x000f);
322 5 sum_buf[1] = hex_asc((Rxsum2 >> 8) & 0x000f);
323 5 sum_buf[2] = hex_asc((Rxsum2 >> 4) & 0x000f);
324 5 sum_buf[3] = hex_asc(Rxsum2 & 0x000f);
325 5 }
326 4 break;
327 4 case 4:if(com_n < 4)
328 4 {
329 5 if (tmp == sum_buf[com_n]) //FCS
330 5 {
331 6 com_n++;
332 6 }
333 5 else
334 5 {
335 6 uart_start_flag = 0;
336 6 }
337 5 }
338 4 else
339 4 {
340 5 if(tmp == 0x0D)
341 5 {
342 6 uart_rcv_finish = 1;
343 6 ES = 0;
344 6 uart_start_flag = 0;
345 6 //control();
346 6 }
347 5 uart_start_flag = 0;
348 5 }
349 4 break;
350 4 default:uart_start_flag = 0;
351 4 break;
352 4 }
353 3 }
354 2
355 2 }
356 1 }
357 /*
358 0123456 78 9012 34567890
359 ~100180 00 0000 FDB6\r
360 DataBuf[74] = "
361 0123456789012
362 ~100180000000FDB6\r"
363 */
364 void send_chk(UINT8 n)
365 {
C51 COMPILER V7.50 SYSTEM 02/16/2009 09:18:46 PAGE 7
366 1 UINT8 i,j;
367 1 TR = 1; //发送状态
368 1 DataBuf[0] = '~';
369 1 DataBuf[1] = '1';
370 1 DataBuf[2] = '0';
371 1 DataBuf[3] = rec_buf[2];
372 1 DataBuf[4] = rec_buf[3];
373 1 DataBuf[5] = '8';
374 1 DataBuf[6] = '0';
375 1 //DataBuf[7] = '0';
376 1 //DataBuf[8] = '0';
377 1 i = n;
378 1 if(i > 17)
379 1 {
380 2 j = i - 18;
381 2 LTH[3] = j&0x0f;
382 2 LTH[2] = (j>>4)&0x0f;
383 2 LTH[0] = (0x00 - LTH[2] - LTH[3])&0x0f;
384 2 DataBuf[9] = hex_asc(LTH[0]);
385 2 DataBuf[10] = 0x30;
386 2 DataBuf[11] = hex_asc(LTH[2]);
387 2 DataBuf[12] = hex_asc(LTH[3]);
388 2 Txsum = 0;
389 2 while(--i > 5)
390 2 Txsum += DataBuf[n - i];
391 2 Txsum = 0x10000 - Txsum;
392 2 DataBuf[n - 5] = hex_asc((Txsum >> 12) & 0x000f);
393 2 DataBuf[n - 4] = hex_asc((Txsum >> 8) & 0x000f);
394 2 DataBuf[n - 3] = hex_asc((Txsum >> 4) & 0x000f);
395 2 DataBuf[n - 2] = hex_asc(Txsum & 0x000f);
396 2 DataBuf[n - 1] = 0x0D;
397 2 uart_send1(DataBuf,n);
398 2 }
399 1 TR = 0; //接收状态
400 1 }
401 /***********************************************************************************
402 函数名称:control()
403 功能描述:控制子程序
404 参 数:无
405 ***********************************************************************************/
406 void control(void)
407 {
408 1 UINT8 i,j,l,m;
409 1 DataBuf[0] = (DataBuf[0]<<4) + DataBuf[1];
410 1 DataBuf[2] = (DataBuf[2]<<4) + DataBuf[3];
411 1 if(CID2 == '8')
412 1 {
413 2 if(DataBuf[0] == 0xF0)
414 2 {
415 3 if(DataBuf[2] == 0xE0) //权限确认
416 3 {
417 4 purview_timer = 0x4B0;
418 4 purview_flag = 1;
419 4 DataBuf[7] = 0x30;
420 4 DataBuf[8] = 0x30;
421 4 send_chk(18);
422 4 }
423 3 else if(DataBuf[2] == 0xE1) //取消权限
424 3 {
425 4 purview_flag = 0;
426 4 DataBuf[7] = 0x30;
427 4 DataBuf[8] = 0x30;
C51 COMPILER V7.50 SYSTEM 02/16/2009 09:18:46 PAGE 8
428 4 send_chk(18);
429 4 }
430 3 else if((purview_flag)&&(DataBuf[2] == 0xE2))//更改密码
431 3 {
432 4 purview_timer = 0x4B0;
433 4 DataBuf[7] = 0x30;
434 4 DataBuf[8] = 0x30;
435 4 send_chk(18);
436 4 }
437 3 }
438 2 }
439 1 else if(CID2 == '9')
440 1 {
441 2 if(DataBuf[0] == 0xF1)
442 2 {
443 3 if(DataBuf[2] == 0xE3) //增加一个用户
444 3 {
445 4 if(user_n == 0)
446 4 {
447 5 for(i=0;i<16;i++)
448 5 user_buf[0].whole[i] = (DataBuf[4 + i*2]<<4) + DataBuf[5 + i*2];
449 5 user_n++;
450 5 I2C_rcv[0] = user_n;
451 5 AT24C128_write(0x00,I2C_rcv,1);
452 5 AT24C128_write(0x10,user_buf[0].whole,16);
453 5 purview_timer = 0x4B0;
454 5 DataBuf[7] = 0x30;
455 5 DataBuf[8] = 0x30;
456 5 send_chk(18);
457 5 }
458 4 else if(user_n < 60)
459 4 {
460 5 for(i=0;i<16;i++)
461 5 user_tmp.whole[i] = (DataBuf[4 + i*2]<<4) + DataBuf[5 + i*2];
462 5 l = 0;
463 5 for(i=0;i<60;i++)
464 5 {
465 6 if(user_buf[i].class.purview != 0xFF)
466 6 {
467 7 l++;
468 7 m = 0;
469 7 for(j=0;j<5;j++)
470 7 {
471 8 if(user_buf[i].class.card[j] != user_tmp.class.card[j])
472 8 {
473 9 break;
474 9 }
475 8 else m++;
476 8 }
477 7 if(m == 5)
478 7 {
479 8 purview_timer = 0x4B0;
480 8 DataBuf[7] = 0x45;
481 8 DataBuf[8] = 0x36;
482 8 send_chk(18);
483 8 TI = 0;
484 8 ES = 1;
485 8 return;
486 8 }
487 7 else
488 7 {
489 8 m = 0;
C51 COMPILER V7.50 SYSTEM 02/16/2009 09:18:46 PAGE 9
490 8 for(j=0;j<4;j++)
491 8 {
492 9 if(user_buf[i].class.ID[j] != user_tmp.class.ID[j])
493 9 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -