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