📄 avc3.lst
字号:
C51 COMPILER V7.06 AVC3 10/27/2005 11:09:51 PAGE 13
735 1 ET1=1;
736 1 EAD=1; //AD中断允许
737 1 EA=1; //中断总允许
738 1 start_t2();
739 1
740 1 COM=0XB6;
741 1 COUNT2=0x00;
742 1 COUNT2=0x00;
743 1 AD1=0;
744 1 AD2=0;
745 1 AD3=0;
746 1 AD4=0;
747 1 AD5=0;
748 1 U51=0;
749 1 urgent_stop=0;
750 1 avc_err=0;
751 1 err_ok=0;
752 1 err=0;
753 1
754 1 BEGIN: if(urgent_stop==1)
755 1 {
756 2 urgent_stop=0;
757 2 err_ok=0;
758 2 EX1=1;
759 2 EX0=1;
760 2 }
761 1 CTCON=0X00;
762 1 IEN1=0x00;
763 1 COM=0x36;
764 1 COUNT0=0x00;
765 1 COUNT0=0x00;
766 1 COM=0X76;
767 1 COUNT1=0x00;
768 1 COUNT1=0x00;
769 1 gate=0; //关门控
770 1 avc_enable=1;
771 1 avc_dir=1;
772 1 externel_voltage=1;
773 1 temp_voltage=1;
774 1 work=0;
775 1 called=0;
776 1 start=0;
777 1 pgj=0;
778 1 in_sector=0;
779 1 new_sector=0;
780 1 start_avc=0;
781 1 avc_ok=0;
782 1 new_circle=1;
783 1 c_sample=0;
784 1 ad_finish=1; //AD转换及处理完成标志
785 1 pulse_base=0; //峰、基值标志 0-基值、1-峰值
786 1 stop_avc=0;
787 1 decrease=0;
788 1 lift=0;
789 1 lift_ok=0;
790 1 lift_complete=0;
791 1 to_begin=0;
792 1
793 1 need_para=0;
794 1 POINTER0=0;
795 1 SSUM=0;
796 1 S_ANSW=0;
C51 COMPILER V7.06 AVC3 10/27/2005 11:09:51 PAGE 14
797 1 POINTER1=0;
798 1 RSUM=0;
799 1 ans=0;
800 1 send=0;
801 1 resend=0;
802 1 r_byte_nums=4;
803 1 send_p=0;
804 1 send_p_ok=0;
805 1
806 1 avc=0;
807 1 avc_up=0;
808 1 avc_down=0;
809 1 motor_stop=0;
810 1
811 1 PWMP=12; //采样保持脉冲,2K
812 1 PWM0=127;
813 1 COM=0X36; //弧长点动速度,1K
814 1 COUNT0=4000%256;
815 1 COUNT0=4000/256;
816 1
817 1 CML0=TML2+0X20;
818 1 if(CML0<TML2)
819 1 CMH0=TMH2+1+0X4E;
820 1 else
821 1 CMH0=TMH2+0X4E; //20ms
822 1
823 1 write_8574(0xF0);
824 1 while(start==0) //等待过程中,接受点名和参数
825 1 {
826 2
827 2 if(called==1)
828 2 {
829 3 ini_sbuf(M_main,infor,com_calling,S_ANSW,0,0);
830 3 s_byte_nums=get_byte_nums(infor);
831 3 TR_noans();
832 3 called=0;
833 3 }
834 2
835 2 if(send_p==1)
836 2 {
837 3 while(send_p_ok==0)
838 3 {
839 4 if(receive_p_out==1)
840 4 {
841 5 point=&pp.k5;
842 5 for(p_sec=0;p_sec<14;p_sec++)
843 5 *(point+p_sec)=rbuffer[p_sec*2+2]*256+rbuffer[p_sec*2+3];
844 5 ini_sbuf(M_main,answer,S_ANSW,0,0,0);
845 5 s_byte_nums=4;
846 5 TR_noans();
847 5 c_lift=80*pp.h51/3;
848 5 receive_p_out=0;
849 5 }
850 4
851 4 if(receive_p_in==1)
852 4 {
853 5 point=&pp.x[nonce_sec][0];
854 5 for(p_sec=0;p_sec<4;p_sec++)
855 5 *(point+p_sec)=rbuffer[p_sec*2+3]*256+rbuffer[p_sec*2+4];
856 5 ini_sbuf(M_main,answer,S_ANSW,0,0,0);
857 5 s_byte_nums=4;
858 5 TR_noans();
C51 COMPILER V7.06 AVC3 10/27/2005 11:09:51 PAGE 15
859 5 receive_p_in=0;
860 5 }
861 4 }
862 3 send_p_ok=0;
863 3 send_p=0;
864 3 EX1=1;
865 3 EX0=1;
866 3 }
867 2
868 2 if(avc_up==1)
869 2 {
870 3 avc_dir=1; //方向——上
871 3 avc_enable=0; //使能
872 3 gate=1;
873 3 avc_up=0;
874 3 }
875 2 if(avc_down==1)
876 2 {
877 3 avc_dir=0; //方向——下
878 3 avc_enable=0;
879 3 gate=1;
880 3 avc_down=0;
881 3 }
882 2 if(motor_stop==1)
883 2 {
884 3 gate=0; //关8254门控信号
885 3 avc_enable=1; //关弧长使能
886 3 motor_stop=0;
887 3 }
888 2
889 2 if(lift==1)
890 2 {
891 3 COM=0X76;
892 3 COUNT1=c_lift%256;
893 3 COUNT1=c_lift/256;
894 3 CTCON=CTCON|0X01; //CT0下降沿
895 3 IEN1=IEN1|0X01; //允许CT0
896 3 avc_dir=1; //弧长方向——上
897 3 externel_voltage=0;
898 3 avc_enable=0; //开弧长使能
899 3 gate=1;
900 3 while(lift_complete==0);
901 3 externel_voltage=1;
902 3 lift_complete=0;
903 3 lift=0;
904 3 if(urgent_stop==1)
905 3 goto BEGIN;
906 3 EX1=1;
907 3 }
908 2
909 2 if(pgj==1)
910 2 {
911 3 avc_dir=0; //方向——下
912 3 avc_enable=0;
913 3 gate=1;
914 3 while(lift==0);
915 3 COM=0X76;
916 3 COUNT1=c_lift%256;
917 3 COUNT1=c_lift/256;
918 3 CTCON=CTCON|0X01; //CT0下降沿
919 3 IEN1=IEN1|0X01; //允许CT0
920 3 avc_dir=1; //弧长方向——上
C51 COMPILER V7.06 AVC3 10/27/2005 11:09:51 PAGE 16
921 3 externel_voltage=0;
922 3 avc_enable=0; //开弧长使能
923 3 gate=1;
924 3
925 3 while(lift_complete==0)
926 3 {
927 4 if(urgent_stop==1)
928 4 goto BEGIN;
929 4 }
930 3 ini_sbuf(M_main,command,com_lift_ok,0,0,0);
931 3 s_byte_nums=4;
932 3 TR_ans();
933 3 externel_voltage=1;
934 3 lift_complete=0;
935 3 lift=0;
936 3 pgj=0;
937 3 EX1=1;
938 3 }
939 2 if(urgent_stop==1)
940 2 goto BEGIN;
941 2 }
942 1 temp_u51_p=pp.u51_p;
943 1 temp_u51_b=pp.u51_b;
944 1 if(pp.k1==DC)
945 1 temp_avc=temp_u51_p;
946 1 work=3;
947 1 do
948 1 {
949 2 if(start_avc==1) //开始弧长
950 2 {
951 3 ini_sbuf(M_main,answer,S_ANSW,0,0,0);
952 3 s_byte_nums=4;
953 3 TR_noans();
954 3 temp_voltage=0;
955 3 c_sample=0;
956 3 CTCON=CTCON&0X3F;
957 3 if(pp.k1==PDC)
958 3 {
959 4 if(pp.avc_type==SP||pp.avc_type==SPB)
960 4 {
961 5 pulse_base=0;
962 5 CTCON=CTCON|0X40; //CT3上升沿
963 5 }
964 4 else
965 4 {
966 5 pulse_base=1;
967 5 CTCON=CTCON|0X80; //CT3下降沿
968 5 }
969 4 IEN1=IEN1|0X08; //允许CT3
970 4 }
971 3 else if(pp.k1==DC)
972 3 {
973 4 avc_ok=1;
974 4 c_sample=0;
975 4 CTCON=CTCON|0x20; //CT2下降沿
976 4 IEN1=IEN1|0X04; //允许CT2,采样保持脉冲
977 4 }
978 3 start_avc=0;
979 3 }
980 2
981 2 if(urgent_stop==1)
982 2 goto BEGIN;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -