📄 dc1_test.lst
字号:
745
746 void CM2_INT (void) interrupt 13
747 {
748 1 CMI2=0;
749 1 c_cm2++;
750 1
751 1 if(c_cm2==n_cm2)
752 1 {
753 2 // IEN1=IEN1&0XEF; //CM0
754 2 PWM1=0;
755 2 wire_back=1;
756 2 wire_front=1;
757 2 retract_ok=1;
758 2 c_cm2=0;
759 2 }
760 1 else
761 1 {
762 2 CML2=TML2+0XD4;
763 2 if(CML2>TML2)
764 2 CMH2=TMH2+1+0X30;
765 2 else
766 2 CMH2=TMH2+0X30; //100ms
767 2 }
768 1
769 1 }
770
771 main()
772 {
773 1 TMOD=0x22; //定时器1,方式2;
774 1 TL1=0XFD; //波特率9600
775 1 TH1=0XFD;
776 1 TR1=1; //启动定时器
777 1 PCON=0X00; //SMOD=0
778 1 TMOD=0x23; //定时器0,方式3,两个8位定时器;
779 1 TR1=0;
780 1 TF1=0;
781 1 S0CON=0XF8; //串口方式3,SM2=0,REN=1,TB8=1,RB8=0,TI=0,RI=0
782 1 IP0=0X98; //S0=1,T1=1
783 1 ES0=1; //开串口中断
784 1 ET0=1;
785 1 ET1=1;
786 1 ES1=1; //I2C
787 1 EAD=1; //AD中断允许
788 1 EA=1; //中断总允许
789 1 start_t2();
790 1
791 1 urgent_stop=0;
792 1 rw_err=0;
793 1 err_ok=0;
794 1 err=0;
795 1
796 1 BEGIN: if(urgent_stop==1)
797 1 {
798 2 urgent_stop=0;
799 2 err_ok=0;
C51 COMPILER V7.06 DC1_TEST 09/14/2005 10:00:17 PAGE 14
800 2 EX1=1;
801 2 EX0=1;
802 2 }
803 1 IEN1=0X00;
804 1 work=0;
805 1 send_enable=1; //关发送使能
806 1 start=0;
807 1 start_rot=0;
808 1 start_wire=0;
809 1 stop_wire=0;
810 1 decrease=0;
811 1 need_para=0;
812 1 nonce_sec=0;
813 1 in_sector=0;
814 1 new_sector=0;
815 1 noans_ok=1;
816 1 S_ANSW=0;
817 1 // R_ANSW=0;
818 1 POINTER0=0;
819 1 SSUM=0;
820 1 POINTER1=0;
821 1 RSUM=0;
822 1 r_byte_nums=4;
823 1 send=0;
824 1 overtime=0;
825 1 receive_p_out=0;
826 1 receive_p_in=0;
827 1 demand=0;
828 1 resend=0;
829 1 ans=0;
830 1 p_b=0; //基值
831 1 temp_pulse_num=0;
832 1 temp_pulse_num1=0;
833 1 FINISH=0;
834 1 temp_FINISH=0;
835 1 rot_front=0;
836 1 rot_reverse=0;
837 1 rot_ok=0;
838 1 rot_stop=0;
839 1 rot_stop_ok=0;
840 1 wire_add=0;
841 1 wire_dec=0;
842 1 wire_ok=0;
843 1 r_slope_ok=1;
844 1 w_slope_ok=1;
845 1 motor_stop=0;
846 1 retract=0;
847 1 c_cm0=0;
848 1 c_cm1=0;
849 1 k_r_p_add=0;
850 1 k_r_b_add=0;
851 1 k_r_p_dec=0;
852 1 k_r_b_dec=0;
853 1 temp_rot_vp=0;
854 1 temp_rot_vb=0;
855 1 temp_wire_vp=0;
856 1 temp_wire_vb=0;
857 1 retract_ok=0;
858 1 auto_return=0;
859 1 return_ok=0;
860 1 ask_return_ok=0;
861 1 to_begin=0;
C51 COMPILER V7.06 DC1_TEST 09/14/2005 10:00:17 PAGE 15
862 1
863 1 PWMP=3; //23.5K
864 1 CML0=TML2+0xC8; //CM0,400us,送丝速度变化时间
865 1 if(CML0<TML2)
866 1 CMH0=TMH2+1+0X00;
867 1 else
868 1 CMH0=TMH2+0X00;
869 1 CML1=TML2+0XC8;
870 1 if(CML1<TML2) //CM1,400us,旋转速度变化时间
871 1 CMH1=TMH2+1+0X00;
872 1 else
873 1 CMH1=TMH2+0X00;
874 1
875 1 CTCON=CTCON|0X02; //CT0捕捉下降沿
876 1 tooth_num=10;
877 1 EX1=1;
878 1 EX0=1;
879 1 while(start==0)
880 1 {
881 2 if(called==1)
882 2 {
883 3 ini_sbuf(M_main,infor,com_calling,S_ANSW,0,0);
884 3 s_byte_nums=get_byte_nums(infor);
885 3 TR_noans();
886 3 called=0;
887 3 }
888 2
889 2 if(receive_p_out==1)
890 2 {
891 3 point=&pp.k2;
892 3 for(p_sec=0;p_sec<24;p_sec++)
893 3 *(point+p_sec)=rbuffer[p_sec*2+2]*256+rbuffer[p_sec*2+3];
894 3 pp.k1=rbuffer[50];
895 3
896 3 ini_sbuf(M_main,answer,S_ANSW,0,0,0);
897 3 s_byte_nums=4;
898 3 TR_noans();
899 3 demand=0;
900 3 receive_p_out=0;
901 3 }
902 2
903 2 if(receive_p_in==1)
904 2 {
905 3 point=&pp.x[nonce_sec][0];
906 3 for(p_sec=0;p_sec<10;p_sec++)
907 3 *(point+p_sec)=rbuffer[p_sec*2+3]*256+rbuffer[p_sec*2+4];
908 3
909 3 ini_sbuf(M_main,answer,S_ANSW,0,0,0);
910 3 s_byte_nums=4;
911 3 TR_noans();
912 3 demand=0;
913 3 receive_p_in=0;
914 3 }
915 2
916 2 if(rot_front==1)
917 2 {
918 3 rot_right=1;
919 3 rot_left=0;
920 3 PWM0=204;
921 3 rot_front=0;
922 3 }
923 2
C51 COMPILER V7.06 DC1_TEST 09/14/2005 10:00:17 PAGE 16
924 2 if(rot_reverse==1)
925 2 {
926 3 rot_right=0;
927 3 rot_left=1;
928 3 PWM0=204;
929 3 rot_reverse=0;
930 3 }
931 2
932 2 if(wire_add==1)
933 2 {
934 3 wire_back=0;
935 3 wire_front=1;
936 3 PWM1=204;
937 3 wire_add=0;
938 3 }
939 2
940 2 if(wire_dec==1)
941 2 {
942 3 wire_back=1;
943 3 wire_front=0;
944 3 PWM1=204;
945 3 wire_dec=0;
946 3 }
947 2
948 2 if(motor_stop==1)
949 2 {
950 3 PWM0=0;
951 3 PWM1=0;
952 3 wire_back=1;
953 3 wire_front=1;
954 3 rot_right=1;
955 3 rot_left=1;
956 3 rot_front=0;
957 3 rot_reverse=0;
958 3 wire_add=0;
959 3 wire_dec=0;
960 3 motor_stop=0;
961 3 }
962 2
963 2 if(resend==1)
964 2 {
965 3 ini_sbuf(M_main,answer,S_ANSW,0,0,0);
966 3 s_byte_nums=4;
967 3 TR_noans();
968 3 resend=0;
969 3 }
970 2
971 2 if(urgent_stop==1)
972 2 goto BEGIN;
973 2 }
974 1
975 1 get_v_r();
976 1 if(r%10>=5)
977 1 pulse_num=r/10+1;
978 1 else
979 1 pulse_num=r/10;
980 1 pulse_num=pulse_num/2;
981 1 pulse_num1=r/2;
982 1 if(pp.k1==0)
983 1 K21=OFF;
984 1 else
985 1 K21=pp.k21;
C51 COMPILER V7.06 DC1_TEST 09/14/2005 10:00:17 PAGE 17
986 1 const0=(float)(motor_v)*(float)(tooth_num);
987 1 const0=(float)(const0*3.14);
988 1 const0=(float)(const0/360/r); //motor_v*tooth_num*3.14*pp.d/360/r
989 1 temp_data0=const0*pp.d/10;
990 1 temp_data00=(float)(pp.dv21)/temp_data0;
991 1 delt_rot=255*temp_data00;
992 1 if(delt_rot==0)
993 1 delt_rot=1;
994 1 temp_data00=(float)(pp.v21_p)/temp_data0;
995 1 rot_vp=255*temp_data00;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -