📄 board.lst
字号:
424 8 }
425 7 case 2:
426 7 {
427 8 SBUF=send_or_number;
428 8 send_point=0;
429 8 send_over_kind=SET_FU_CMD;// 同上
430 8 send_over_flag=1;//同上
431 8 send_on_kind=0;
432 8 break;
433 8 }
434 7 default:break;
435 7 }
436 6 break;
437 6 }
438 5 case SEND_FAULT_STACK:
439 5 {
440 6 send_on_flag=1;
441 6 switch(send_point)
442 6 {
443 7 case 0:
444 7 {
445 8 SBUF=FAULT_STACK_CMD;
446 8 send_point++;
447 8 send_on_kind=FAULT_STACK_CMD;
448 8 break;
449 8 }
450 7 case 1:
451 7 {
452 8 SBUF=led_data;
453 8 send_point++;
454 8 send_or_number=FAULT_STACK_CMD^led_data;
455 8 send_on_kind=FAULT_STACK_CMD;
456 8 break;
457 8 }
458 7 case 2:
459 7 {
460 8 SBUF=send_or_number;
461 8 send_point=0;
462 8 send_over_kind=FAULT_STACK_CMD;// 同上
463 8 send_over_flag=1;//同上
464 8 send_on_kind=0;
465 8 break;
466 8 }
467 7 default:break;
468 7 }
469 6 break;
470 6 }
471 5 case SEND_HEART:
472 5 {
473 6 send_on_flag=1;
474 6 SBUF=HEART_CMD;
475 6 send_over_kind=HEART_CMD;//同上
476 6 send_over_flag=1;//同上
477 6 send_on_kind=0;
478 6 break;
479 6 }
480 5 case SEND_FAULT:
481 5 {
482 6 send_on_flag=1;
483 6 SBUF=FAULT_CMD;
484 6 send_over_kind=FAULT_CMD;//同上
485 6 send_over_flag=1;//同上
C51 COMPILER V7.06 BOARD 03/19/2009 21:23:59 PAGE 9
486 6 send_on_kind=0;
487 6 break;
488 6 }
489 5 case SEND_KEY:
490 5 {
491 6 send_on_flag=1;
492 6 SBUF=RESET_KEY_CMD;
493 6 send_over_kind=RESET_KEY_CMD;//同上
494 6 send_over_flag=1;//同上
495 6 send_on_kind=0;
496 6 break;
497 6 }//case
498 5 default:break;
499 5 }//switch
500 4 }//if
501 3 }//else
502 2 }//if
503 1 }
504
505 //===========================================================
506 //程序说明:这里有两类中断:一是发送中断;二是接收中断
507 //===========================================================
508 void receive(void) interrupt 4 //外中断,接收中断子程序
509 {
510 1 if(TI==1)
511 1 {
512 2 TI=0;
513 2 send_on_flag=0;//每次8位字发送完成后,清楚正在发送标志位
514 2 }
515 1 else
516 1 {
517 2 RI=0;
518 2 rx_buffer[rx_point]=SBUF;//接收数据,接收指针加一
519 2 rx_point++;
520 2 reveive_pro();
*** WARNING C206 IN LINE 520 OF BOARD.C: 'reveive_pro': missing function-prototype
521 2 }
522 1 }
523 //============================================================
524 //程序说明:接收程序根据数据类别进行接收,必须与前面发送的数据
525 //一一对应接收,否则将不出错,根据心跳数据来断开通讯
526 //============================================================
527 reveive_pro()
528 {
529 1 char kind,temp_data;
530 1 kind=rx_buffer[0];
531 1 switch(kind)
532 1 {
533 2 case HAND_CMD:
534 2 {
535 3 rx_point=0;
536 3 send_success_flag=1;//置联网成功标志
537 3 send_over_kind=0;
538 3 send_over_flag=0;
539 3 break;
540 3 }
541 2 case SET_CMD:
542 2 {
543 3 rx_point=0;
544 3 if(send_over_kind==SET_CMD)
545 3 {
546 4 send_over_kind=0;
C51 COMPILER V7.06 BOARD 03/19/2009 21:23:59 PAGE 10
547 4 send_over_flag=0;//清除一类数据发送完标志位
548 4 send_kind=send_kind&0xfb;//清除本次设置命令标志位
549 4 if(function_key_kind==2)//参数粘帖键处理程序
550 4 {
551 5 led_data++;
552 5 }
553 4 }
554 3 break;
555 3 }
556 2 case SHOW_CMD:
557 2 {
558 3 if(rx_point>=5)
559 3 {
560 4 rx_point=0;
561 4 if(send_over_kind==SHOW_CMD)
562 4 {
563 5 send_over_kind=0;
564 5 send_over_flag=0;//清除一类数据发送完标志位
565 5 send_kind=send_kind&0xbf;//清除本次显示命令标志位
566 5 temp_data=rx_buffer[0]^rx_buffer[1]^rx_buffer[2]^rx_buffer[3];
567 5 if(temp_data==rx_buffer[4])
568 5 {
569 6 show_data=(rx_buffer[2]<<8)|rx_buffer[3];
570 6 switch(led_data)
571 6 {
572 7 case 24:case 25:
573 7 {
574 8 show_data=(long)show_data/30;//3000表示T1周期寄存器最大值
575 8 break;
576 8 }
577 7 default:break;
578 7 }
579 6 }
580 5 }
581 4 }
582 3 break;
583 3 }
584 2 case FAULT_STACK_CMD:
585 2 {
586 3 if(rx_point>=4)
587 3 {
588 4 rx_point=0;
589 4 if(send_over_kind==FAULT_STACK_CMD)
590 4 {
591 5 send_over_kind=0;
592 5 send_over_flag=0;//清除一类数据发送完标志位
593 5 send_kind=send_kind&0xdf;//清除本次显示命令标志位
594 5 temp_data=rx_buffer[0]^rx_buffer[1]^rx_buffer[2];
595 5 if(temp_data==rx_buffer[3])
596 5 {
597 6 error_data=rx_buffer[2];
598 6 }
599 5 }
600 4 }
601 3 break;
602 3 }
603 2 case HEART_CMD:
604 2 {
605 3 rx_point=0;
606 3 if(send_over_kind==HEART_CMD)
607 3 {
608 4 send_over_kind=0;
C51 COMPILER V7.06 BOARD 03/19/2009 21:23:59 PAGE 11
609 4 send_over_flag=0;//清除一类数据发送完标志位
610 4 send_heart_last_count=0;
611 4 send_kind=send_kind&0x7f;//清除本次心跳命令标志位
612 4 }
613 3 break;
614 3 }
615 2 case FAULT_CMD:
616 2 {
617 3 if(rx_point>=5)
618 3 {
619 4 rx_point=0;
620 4 if(send_over_kind==FAULT_CMD)
621 4 {
622 5 send_over_kind=0;
623 5 send_over_flag=0;//清除一类数据发送完标志位
624 5 send_kind=send_kind&0xef;//清除本次故障显示命令标志位
625 5 temp_data=rx_buffer[0]^rx_buffer[1]^rx_buffer[2]^rx_buffer[3];
626 5 if(temp_data==rx_buffer[4])
627 5 {
628 6 fault_data=(rx_buffer[1]<<8)|rx_buffer[2];
629 6 sys_state=rx_buffer[3];
630 6 }
631 5 }
632 4 }
633 3 break;
634 3 }
635 2 case RESET_KEY_CMD:
636 2 {
637 3 rx_point=0;
638 3 if(send_over_kind==RESET_KEY_CMD)
639 3 {
640 4 send_over_kind=0;
641 4 send_over_flag=0;//清除一类数据发送完标志位
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -