📄 main1_zw.lst
字号:
459 1
460 1 if(RI==1) //接收完成
461 1 {
462 2 RI=0;
463 2 POINTER1++; //接收缓冲指针加1
464 2 rbuffer[POINTER1-1]=SBUF; //从接收缓冲读出数据
465 2 if(POINTER1==2)
466 2 r_byte_nums=get_byte_nums(rbuffer[1]);
467 2 if(POINTER1<r_byte_nums)
468 2 RSUM=RSUM+rbuffer[POINTER1-1]; //生成校验码
469 2 else
470 2 {
471 3 if(rbuffer[r_byte_nums-1]==RSUM)
472 3 {
473 4 if(ans==0)
474 4 {
475 5 POINTER1=0;
476 5 RSUM=0;
477 5 }
478 4 S_ANSW=OK;
479 4 data_type();
480 4 }
481 3 else
482 3 {
483 4 S_ANSW=FAIL;
484 4 if(resend==0)
485 4 resend=1;
486 4 }
487 3 }
488 2 }
C51 COMPILER V7.06 MAIN1_ZW 10/04/2005 14:08:50 PAGE 9
489 1 EA=1; //开中断
490 1 }
491
492 main()
493 {
494 1 uchar i,j,delt;
495 1
496 1 TMOD=0x22; //定时器1,方式2;
497 1 TL1=0XFD; //波特率9600
498 1 TH1=0XFD;
499 1 TR1=1; //启动定时器
500 1 // PCON=0X80; //SMOD=1;
501 1 TMOD=0x23; //定时器0,方式3,两个8位定时器;
502 1 TR1=0;
503 1 TF1=0;
504 1 SCON=0X50; //串口方式1,SM2=0,REN=1,TB8=1,RB8=0,TI=0,RI=0
505 1 IP=0X98; //S0=1,T1=1
506 1 // EX0=1; //急停
507 1 ES=1; //开串口中断
508 1 ET1=1;
509 1 EX0=1;
510 1 EA=1; //中断总允许
511 1
512 1 temp_c=0;
513 1
514 1 pc_ok=0;
515 1 urgent_stop=0;
516 1 main1_err=0;
517 1
518 1 BEGIN:
519 1 if(urgent_stop==1)
520 1 {
521 2 urgent_stop=0;
522 2 EX0=1;
523 2 }
524 1
525 1 pc_stop=0;
526 1 urgent_stop=0;
527 1 err_ok=1;
528 1 work=0;
529 1 start=0;
530 1 err=0; //错误编号
531 1 editing=0; //正在编程
532 1 edit_finish=0; //编程结束
533 1 p_received=0;
534 1 change_prg=0;
535 1 connect=0;
536 1 break_connect=0;
537 1 in_sector=0;
538 1 nonce_sec=0; //当前区间号
539 1 FINISH=0;
540 1 CURRENT=0;
541 1 VOLTAGE=0;
542 1 AVC=0;
543 1 decrease=0;
544 1 rot_front=0;
545 1 rot_reverse=0;
546 1 wire_add=0;
547 1 wire_dec=0;
548 1 osc_l=0;
549 1 osc_r=0;
550 1 avc_up=0;
C51 COMPILER V7.06 MAIN1_ZW 10/04/2005 14:08:50 PAGE 10
551 1 avc_down=0;
552 1 temp_motor_stop=0;
553 1 motor_stop=0;
554 1 new_switch1=0;
555 1 new_switch2=0;
556 1 new_switch3=0;
557 1 start_again=0;
558 1 need_para=0;
559 1 p_changed=0;
560 1 edited=0;
561 1
562 1 POINTER0=0;
563 1 SSUM=0;
564 1 S_ANSW=0;
565 1 POINTER1=0;
566 1 RSUM=0;
567 1 ans=0;
568 1 R_ANSW=0;
569 1 r_byte_nums=4;
570 1 noans_ok=1;
571 1 overtime=0;
572 1 s_p=0; //1,发送参数
573 1
574 1
575 1 // rc_forbided=1;
576 1
577 1 while(start==0)
578 1 {
579 2 if(urgent_stop==1)
580 2 {
581 3 if(pc_stop==1)
582 3 {
583 4 ini_sbuf(M_PC,answer,S_ANSW,0,0);
584 4 s_byte_nums=4;
585 4 TR_noans();
586 4 stop=0;
587 4 while(err_ok==0);
588 4 }
589 3 goto BEGIN;
590 3 }
591 2 if(connect==1)
592 2 {
593 3 ini_sbuf(M_PC,answer,OK,0,0);
594 3 s_byte_nums=4;
595 3 TR_noans();
596 3 pc_ok=1;
597 3 connect=0;
598 3 }
599 2 if(break_connect==1)
600 2 {
601 3 ini_sbuf(M_PC,answer,OK,0,0);
602 3 s_byte_nums=4;
603 3 TR_noans();
604 3 pc_ok=0;
605 3 break_connect=0;
606 3 }
607 2 /*
608 2 if(p_forbid==1)
609 2 {
610 2 ini_sbuf(M_PC,answer,S_ANSW,0,0);
611 2 s_byte_nums=4;
612 2 TR_noans();
C51 COMPILER V7.06 MAIN1_ZW 10/04/2005 14:08:50 PAGE 11
613 2 p_forbided=1;
614 2 p_actived=0;
615 2 p_forbid=0;
616 2 }
617 2 if(rc_forbid==1)
618 2 {
619 2 ini_sbuf(M_PC,answer,S_ANSW,0,0);
620 2 s_byte_nums=4;
621 2 TR_noans();
622 2 rc_forbided=1;
623 2 rc_actived=0;
624 2 rc_forbid=0;
625 2 }
626 2 */
627 2 if(temp_motor_stop==1)
628 2 {
629 3 ini_sbuf(M_PC,answer,S_ANSW,0,0);
630 3 s_byte_nums=4;
631 3 TR_noans();
632 3 motor_stop=1;
633 3 temp_motor_stop=0;
634 3 }
635 2 if(editing==1)
636 2 {
637 3 ini_sbuf(M_PC,answer,S_ANSW,0,0);
638 3 s_byte_nums=4;
639 3 TR_noans();
640 3
641 3 while(p_received==0)
642 3 {
643 4 if(urgent_stop==1)
644 4 {
645 5 if(pc_stop==1)
646 5 {
647 6 ini_sbuf(M_PC,answer,S_ANSW,0,0);
648 6 s_byte_nums=4;
649 6 TR_noans();
650 6 stop=0;
651 6 while(err_ok==0);
652 6 }
653 5 goto BEGIN;
654 5 }
655 4 if(resend==1)
656 4 {
657 5 ini_sbuf(M_PC,answer,S_ANSW,0,0);
658 5 s_byte_nums=4;
659 5 TR_noans();
660 5 p_received=0;
661 5 resend=0;
662 5 }
663 4 }
664 3 point=&pp.pn;
665 3 delt=0;
666 3 for(i=2;i<55;i++)
667 3 {
668 4 *(point+i-2)=rbuffer[i+delt]*256+rbuffer[i+delt+1];
669 4 delt++;
670 4 }
671 3 p_received=0;
672 3 ini_sbuf(M_PC,answer,S_ANSW,0,0);
673 3 s_byte_nums=4;
674 3 TR_noans();
C51 COMPILER V7.06 MAIN1_ZW 10/04/2005 14:08:50 PAGE 12
675 3
676 3 while(p_received==0)
677 3 {
678 4 if(urgent_stop==1)
679 4 {
680 5 if(pc_stop==1)
681 5 {
682 6 ini_sbuf(M_PC,answer,S_ANSW,0,0);
683 6 s_byte_nums=4;
684 6 TR_noans();
685 6 stop=0;
686 6 while(err_ok==0);
687 6 }
688 5 goto BEGIN;
689 5 }
690 4 if(resend==1)
691 4 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -