📄 avc3.lst
字号:
C51 COMPILER V7.06 AVC3 10/27/2005 11:09:51 PAGE 9
490
491 void CT0_int (void) interrupt 6
492 {
493 1 CTI0=0;
494 1 CTCON=CTCON&0xFC;
495 1 gate=0;
496 1 if(lift==1) //衰减过程
497 1 {
498 2 avc_enable=1; //关弧长使能
499 2 IEN1=IEN1&0XFE; //禁止CT0
500 2 lift_complete=1;
501 2 lift=0;
502 2 }
503 1 else
504 1 {
505 2 if(decrease==0&&pp.k5==ON)
506 2 {
507 3 if(pp.k1==DC||(pp.k1==PDC&&pp.avc_type==SP&&pulse_base==1))//(pp.avc_type==SP&&pulse_base==1||pp.avc_ty
-pe==SPB||pp.avc_type==SB&&pulse_base==0)))
508 3 CTCON=CTCON|0x20;
509 3 }
510 2 }
511 1
512 1 }
513
514 void CT2_int (void) interrupt 8 //电压采样保持脉冲
515 {
516 1 CTI2=0;
517 1 CTCON=CTCON&0xCF;
518 1 if(decrease==0)
519 1 {
520 2 ad_finish=0; //AD转换及处理过程
521 2 ADCON=0X08; //启动AD采样
522 2 }
523 1 }
524
525 void CT3_int (void) interrupt 9 //电流脉冲
526 {
527 1 CTI3=0;
528 1 pulse_base=~pulse_base;
529 1 CTCON=CTCON&0X3F;
530 1
531 1 if(avc_ok==0) //开始弧长
532 1 {
533 2 if(pp.avc_type==SB)
534 2 temp_avc=temp_u51_b;
535 2 else
536 2 temp_avc=temp_u51_p;
537 2 avc_ok=1;
538 2 CTCON=CTCON|0x20; //CT2下降沿
539 2 IEN1=IEN1|0X04; //允许CT2,采样保持脉冲
540 2 }
541 1 else
542 1 {
543 2 if(pp.avc_type==SP)
544 2 {
545 3 if(pulse_base==0) //进入基值
546 3 {
547 4 gate=0;
548 4 CTCON=CTCON&0xCF;
549 4 }
550 3 else
C51 COMPILER V7.06 AVC3 10/27/2005 11:09:51 PAGE 10
551 3 {
552 4 temp_avc=temp_u51_p;
553 4 c_sample=0;
554 4 CTCON=CTCON|0x20;
555 4 }
556 3 }
557 2 else if(pp.avc_type==SB)
558 2 {
559 3 if(pulse_base==1)
560 3 {
561 4 gate=0;
562 4 CTCON=CTCON&0xCF;
563 4 }
564 3 else
565 3 {
566 4 temp_avc=temp_u51_b;
567 4 c_sample=0;
568 4 CTCON=CTCON|0x20;
569 4 }
570 3 }
571 2 else
572 2 {
573 3 gate=0;
574 3 CTCON=CTCON&0xCC;
575 3 AD1=0;
576 3 AD2=0;
577 3 AD3=0;
578 3 AD4=0;
579 3 AD5=0;
580 3 new_circle=1;
581 3 if(pulse_base==1)
582 3 temp_avc=temp_u51_p;
583 3 else
584 3 temp_avc=temp_u51_b;
585 3 CTCON=CTCON|0x20;
586 3 }
587 2 }
588 1
589 1
590 1 if(pulse_base==1)
591 1 CTCON=CTCON|0X80; //CT3下降沿
592 1 else
593 1 CTCON=CTCON|0X40; //CT3上升沿
594 1 }
595
596 void ADC_int (void) interrupt 10
597 {
598 1 ADCON=ADCON&0xEF; //清ADC中断标志
599 1 c_sample++; //2005-3-3
600 1 adh=ADCH;
601 1 adl=ADCON&0xC0;
602 1 adh=adh<<2;
603 1 adl=adl>>6;
604 1 ad=adh+adl;
605 1 da=ad;
606 1 AD5=(da*5000)/0x3FF;
607 1 if(new_circle==1)
608 1 {
609 2 new_circle=0;
610 2 AD1=AD5;
611 2 AD2=AD5;
612 2 AD3=AD5;
C51 COMPILER V7.06 AVC3 10/27/2005 11:09:51 PAGE 11
613 2 AD4=AD5;
614 2 }
615 1 else
616 1 {
617 2 AD5=(AD5+AD1+AD2+AD3+AD4)/5;
618 2 AD1=AD2;
619 2 AD2=AD3;
620 2 AD3=AD4;
621 2 AD4=AD5;
622 2 }
623 1 AD5=AD5*6/100; //AD5*30/5
624 1
625 1 if(c_sample%5==0)
626 1 {
627 2 if(AD5>=temp_avc)
628 2 {
629 3 SENS=AD5-temp_avc;
630 3 avc_dir=0;
631 3 }
632 2 else
633 2 {
634 3 SENS=temp_avc-AD5;
635 3 avc_dir=1;
636 3 }
637 2 if(SENS>=1)
638 2 {
639 3 switch(SENS)
640 3 {
641 4 case 1: {
642 5 COM=0X36;
643 5 COUNT0=8000%256; //500HZ
644 5 COUNT0=8000/256;
645 5 COM=0X76;
646 5 COUNT1=4; //2p,0.0075mm
647 5 COUNT1=0;
648 5 }break;
649 4 case 2:
650 4 case 3: {
651 5 COM=0X36;
652 5 COUNT0=8000%256; //500HZ
653 5 COUNT0=8000/256;
654 5 COM=0X76;
655 5 COUNT1=10; //5p,0.01875mm 0.1v
656 5 COUNT1=0;
657 5
658 5 }break;
659 4 case 4:
660 4 case 5: {
661 5 COM=0X36;
662 5 COUNT0=8000%256; //500HZ
663 5 COUNT0=8000/256;
664 5 COM=0X76;
665 5 COUNT1=20;
666 5 COUNT1=0;
667 5 out1=0; //10p,0.0375mm 0.2v
668 5 }break;
669 4 case 6:
670 4 case 7: {
671 5 COM=0X36;
672 5 COUNT0=6757%256;
673 5 COUNT0=6757/256;
674 5 COM=0X76;
C51 COMPILER V7.06 AVC3 10/27/2005 11:09:51 PAGE 12
675 5 COUNT1=32;
676 5 COUNT1=0;
677 5 }break;
678 4 case 8:
679 4 case 9: {
680 5 COM=0X36;
681 5 COUNT0=5141%256; //778hz
682 5 COUNT0=5141/256;
683 5 COM=0X76;
684 5 COUNT1=42; //0.08mm 0.4v
685 5 COUNT1=0;
686 5 }break;
687 4 case 10:{
688 5 COM=0X36;
689 5 COUNT0=4000%256; //1000hz
690 5 COUNT0=4000/256;
691 5 COM=0X76;
692 5 COUNT1=54; //0.1mm 0.5v
693 5 COUNT1=0;
694 5 }break;
695 4 default:{
696 5 COM=0X36;
697 5 COUNT0=3376%256; //1185hz
698 5 COUNT0=3376/256;
699 5 COM=0X76;
700 5 COUNT1=64; //0.12mm 0.6v
701 5 COUNT1=0;
702 5 }break;
703 4 }
704 3
705 3 CTCON=CTCON|0x02;
706 3 IEN1=IEN1|0X01; //允许CT0,弧长调整长度
707 3 avc_enable=0;
708 3 gate=1;
709 3 }
710 2 c_sample=0;
711 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)))
712 2 CTCON=CTCON|0x20;
713 2 }
714 1 else
715 1 {
716 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)))
717 2 CTCON=CTCON|0x20;
718 2 }
719 1 ad_finish=1; //AD转换及处理完成
720 1 }
721
722 main()
723 {
724 1 TMOD=0x22; //定时器1,方式2;定时器0,方式3,两个8位定时器;
725 1 TL1=0XFD; //波特率9600
726 1 TH1=0XFD;
727 1 TR1=1; //启动定时器
728 1 TMOD=0x23; //定时器0,方式3,两个8位定时器;
729 1 TR1=0;
730 1 TF1=0;
731 1 S0CON=0XF8; //串口方式3,SM2=1,REN=1,TB8=1,RB8=0,TI=0,RI=0
732 1 IP1=0X01; //CT0高优先级
733 1 IP0=0X98; //S0=1,T1=1
734 1 ES0=1; //开串口中断
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -