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