📄 avc2.lst
字号:
473 4 }
474 3 else
475 3 {
476 4 temp_avc=temp_u51_p;
477 4 c_sample=0;
478 4 CTCON=CTCON|0x20;
479 4 }
480 3 }
481 2 else if(pp.avc_type==SB)
482 2 {
483 3 if(pulse_base==1)
484 3 {
485 4 gate=0;
486 4 CTCON=CTCON&0xCF;
487 4 }
488 3 else
C51 COMPILER V7.06 AVC2 06/29/2005 10:04:08 PAGE 9
489 3 {
490 4 temp_avc=temp_u51_b;
491 4 c_sample=0;
492 4 CTCON=CTCON|0x20;
493 4 }
494 3 }
495 2 else
496 2 {
497 3 gate=0;
498 3 CTCON=CTCON&0xCC;
499 3 AD1=0;
500 3 AD2=0;
501 3 AD3=0;
502 3 AD4=0;
503 3 AD5=0;
504 3 new_circle=1;
505 3 if(pulse_base==1)
506 3 temp_avc=temp_u51_p;
507 3 else
508 3 temp_avc=temp_u51_b;
509 3 CTCON=CTCON|0x20;
510 3 }
511 2 }
512 1
513 1
514 1 if(pulse_base==1)
515 1 CTCON=CTCON|0X80; //CT3下降沿
516 1 else
517 1 CTCON=CTCON|0X40; //CT3上升沿
518 1 }
519
520 void ADC_int (void) interrupt 10
521 {
522 1 ADCON=ADCON&0xEF; //清ADC中断标志
523 1 c_sample++; //2005-3-3
524 1 adh=ADCH;
525 1 adl=ADCON&0xC0;
526 1 adh=adh<<2;
527 1 adl=adl>>6;
528 1 ad=adh+adl;
529 1 da=ad;
530 1 AD5=(da*5000)/0x3FF;
531 1 if(new_circle==1)
532 1 {
533 2 new_circle=0;
534 2 AD1=AD5;
535 2 AD2=AD5;
536 2 AD3=AD5;
537 2 AD4=AD5;
538 2 }
539 1 else
540 1 {
541 2 AD5=(AD5+AD1+AD2+AD3+AD4)/5;
542 2 AD1=AD2;
543 2 AD2=AD3;
544 2 AD3=AD4;
545 2 AD4=AD5;
546 2 }
547 1 AD5=AD5*6/100; //AD5*30/5
548 1
549 1 if(c_sample%5==0)
550 1 {
C51 COMPILER V7.06 AVC2 06/29/2005 10:04:08 PAGE 10
551 2 if(AD5>=temp_avc)
552 2 {
553 3 SENS=AD5-temp_avc;
554 3 avc_dir=0;
555 3 }
556 2 else
557 2 {
558 3 SENS=temp_avc-AD5;
559 3 avc_dir=1;
560 3 }
561 2 if(SENS>=1)
562 2 {
563 3 switch(SENS)
564 3 {
565 4 case 1: {
566 5 COM=0X36;
567 5 COUNT0=8000%256; //500HZ
568 5 COUNT0=8000/256;
569 5 COM=0X76;
570 5 COUNT1=4; //2p,0.0075mm
571 5 COUNT1=0;
572 5 }break;
573 4 case 2:
574 4 case 3: {
575 5 COM=0X36;
576 5 COUNT0=8000%256; //500HZ
577 5 COUNT0=8000/256;
578 5 COM=0X76;
579 5 COUNT1=10; //5p,0.01875mm 0.1v
580 5 COUNT1=0;
581 5
582 5 }break;
583 4 case 4:
584 4 case 5: {
585 5 COM=0X36;
586 5 COUNT0=8000%256; //500HZ
587 5 COUNT0=8000/256;
588 5 COM=0X76;
589 5 COUNT1=20;
590 5 COUNT1=0;
591 5 out1=0; //10p,0.0375mm 0.2v
592 5 }break;
593 4 case 6:
594 4 case 7: {
595 5 COM=0X36;
596 5 COUNT0=6757%256;
597 5 COUNT0=6757/256;
598 5 COM=0X76;
599 5 COUNT1=32;
600 5 COUNT1=0;
601 5 }break;
602 4 case 8:
603 4 case 9: {
604 5 COM=0X36;
605 5 COUNT0=5141%256; //778hz
606 5 COUNT0=5141/256;
607 5 COM=0X76;
608 5 COUNT1=42; //0.08mm 0.4v
609 5 COUNT1=0;
610 5 }break;
611 4 case 10:{
612 5 COM=0X36;
C51 COMPILER V7.06 AVC2 06/29/2005 10:04:08 PAGE 11
613 5 COUNT0=4000%256; //1000hz
614 5 COUNT0=4000/256;
615 5 COM=0X76;
616 5 COUNT1=54; //0.1mm 0.5v
617 5 COUNT1=0;
618 5 }break;
619 4 default:{
620 5 COM=0X36;
621 5 COUNT0=3376%256; //1185hz
622 5 COUNT0=3376/256;
623 5 COM=0X76;
624 5 COUNT1=64; //0.12mm 0.6v
625 5 COUNT1=0;
626 5 }break;
627 4 }
628 3
629 3 CTCON=CTCON|0x02;
630 3 IEN1=IEN1|0X01; //允许CT0,弧长调整长度
631 3 avc_enable=0;
632 3 gate=1;
633 3 }
634 2 c_sample=0;
635 2 if(pp.k1==DC||(pp.k1==PDC&&(pp.avc_type==SP&&pulse_base==1||pp.avc_type==SP&&pulse_base==1||pp.avc_type=
-=SPB||pp.avc_type==SB&&pulse_base==0)))
636 2 {
637 3 CTCON=CTCON|0x20;
638 3 // IEN1=IEN1|0X04; //允许CT2
639 3 }
640 2 }
641 1 else
642 1 {
643 2 if(pp.k1==DC||(pp.k1==PDC&&(pp.avc_type==SP&&pulse_base==1||pp.avc_type==SP&&pulse_base==1||pp.avc_type=
-=SPB||pp.avc_type==SB&&pulse_base==0)))
644 2 {
645 3 CTCON=CTCON|0x20;
646 3 // IEN1=IEN1|0X04; //允许CT2
647 3 }
648 2 }
649 1 ad_finish=1; //AD转换及处理完成
650 1 }
651
652 main()
653 {
654 1 TMOD=0x22; //定时器1,方式2;定时器0,方式3,两个8位定时器;
655 1 TL1=0XFD; //波特率9600
656 1 TH1=0XFD;
657 1 TR1=1; //启动定时器
658 1 TMOD=0x23; //定时器0,方式3,两个8位定时器;
659 1 TR1=0;
660 1 TF1=0;
661 1 S0CON=0XF8; //串口方式3,SM2=1,REN=1,TB8=1,RB8=0,TI=0,RI=0
662 1 IP1=0X01; //CT0高优先级
663 1 IP0=0X98; //S0=1,T1=1
664 1 ES0=1; //开串口中断
665 1 ET1=1;
666 1 EAD=1; //AD中断允许
667 1 EA=1; //中断总允许
668 1 start_t2();
669 1
670 1 externel_voltage=0;
671 1 COM=0XB6;
672 1 COUNT2=0x00;
C51 COMPILER V7.06 AVC2 06/29/2005 10:04:08 PAGE 12
673 1 COUNT2=0x00;
674 1 AD1=0;
675 1 AD2=0;
676 1 AD3=0;
677 1 AD4=0;
678 1 AD5=0;
679 1 U51=0;
680 1 urgent_stop=0;
681 1 avc_err=0;
682 1 err_ok=0;
683 1 err=0;
684 1
685 1 BEGIN: if(urgent_stop==1)
686 1 {
687 2 urgent_stop=0;
688 2 err_ok=0;
689 2 EX1=1;
690 2 EX0=1;
691 2 }
692 1 CTCON=0X00;
693 1 IEN1=0x00;
694 1 COM=0x36;
695 1 COUNT0=0x00;
696 1 COUNT0=0x00;
697 1 COM=0X76;
698 1 COUNT1=0x00;
699 1 COUNT1=0x00;
700 1 gate=0; //关门控
701 1 avc_enable=1;
702 1 avc_dir=1;
703 1 work=0;
704 1 called=0;
705 1 start=0;
706 1 pgj=0;
707 1 in_sector=0;
708 1 new_sector=0;
709 1 start_avc=0;
710 1 avc_ok=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -