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