⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pid.lst

📁 基于485的51单片机多机通讯程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 916   1      BEGIN:  if(urgent_stop==1)
 917   1              {
 918   2                      urgent_stop=0;
 919   2                      err_ok=0;
 920   2                      EX1=1;
 921   2                      EX0=1;
 922   2              }
 923   1              IEN1=0X00;
C51 COMPILER V7.06   PID                                                                   09/08/2005 15:02:37 PAGE 16  

 924   1              send_enable=0;
 925   1              rot_enable=0;                           //new
 926   1              PWM1=0;                                 //new
 927   1              wire_enable=0;                          //new
 928   1              PWM0=0;                                 //new
 929   1              work=0;
 930   1              start=0;
 931   1              start_rot=0;
 932   1              start_wire=0;
 933   1              stop_wire=0;
 934   1              decrease=0;
 935   1              need_para=0;
 936   1              nonce_sec=0;
 937   1              in_sector=0;
 938   1              new_sector=0;
 939   1              noans_ok=1;
 940   1              S_ANSW=0;
 941   1      //      R_ANSW=0;
 942   1              POINTER0=0;
 943   1              SSUM=0;
 944   1              POINTER1=0;
 945   1              RSUM=0;
 946   1              r_byte_nums=4;
 947   1              send=0;
 948   1              overtime=0;
 949   1              receive_p_out=0;
 950   1              receive_p_in=0;
 951   1              demand=0;
 952   1              resend=0;
 953   1              ans=0;
 954   1              p_b=0;                          //基值
 955   1              temp_pulse_num=0;
 956   1              temp_pulse_num1=0;
 957   1              FINISH=0;
 958   1              temp_FINISH=0;
 959   1              rot_front=0;
 960   1              rot_reverse=0;
 961   1              rot_ok=0;
 962   1              rot_stop=0;
 963   1              rot_stop_ok=0;
 964   1              rot_num=0;
 965   1              new_rot_num=0;
 966   1              rot_pid_ok=0;
 967   1              average_r_num=0;
 968   1              rot_difference=0;
 969   1              rot_last_difference=0;
 970   1              rot_last_last_difference=0;
 971   1              wire_add=0;
 972   1              wire_dec=0;
 973   1              wire_ok=0;
 974   1              r_slope_ok=1;
 975   1              w_slope_ok=1;
 976   1              wire_pid_num=0;
 977   1              wire_pid_ok=0;
 978   1              motor_stop=0;
 979   1              retract=0;
 980   1              c_cm0=0;
 981   1              c_cm1=0;
 982   1              k_r_p_add=0;
 983   1              k_r_b_add=0;
 984   1              k_r_p_dec=0;
 985   1              k_r_b_dec=0;
C51 COMPILER V7.06   PID                                                                   09/08/2005 15:02:37 PAGE 17  

 986   1              temp_rot_vp=0;
 987   1              temp_rot_vb=0;
 988   1              temp_wire_vp=0;
 989   1              temp_wire_vb=0;
 990   1              retract_ok=0;
 991   1              auto_return=0;
 992   1              return_ok=0;
 993   1              ask_return_ok=0;
 994   1              to_begin=0;
 995   1      
 996   1              PWMP=3;                         //23.5K
 997   1              CTCON=CTCON|0X02;               //CT0捕捉下降沿
 998   1              tooth_num=10;
 999   1              EX1=1;
1000   1              EX0=1;
1001   1              while(start==0)
1002   1              {
1003   2                      if(called==1)
1004   2                      {
1005   3                              ini_sbuf(M_main,infor,com_calling,S_ANSW,0,0);
1006   3                              s_byte_nums=get_byte_nums(infor);
1007   3                              TR_noans();
1008   3                              called=0;
1009   3                      }
1010   2      
1011   2                      if(receive_p_out==1)
1012   2                      {
1013   3                              point=&pp.k2;
1014   3                              for(p_sec=0;p_sec<24;p_sec++)
1015   3                                      *(point+p_sec)=rbuffer[p_sec*2+2]*256+rbuffer[p_sec*2+3];
1016   3                              pp.k1=rbuffer[50];
1017   3      
1018   3                              ini_sbuf(M_main,answer,S_ANSW,0,0,0);
1019   3                              s_byte_nums=4;
1020   3                              TR_noans();
1021   3                              demand=0;
1022   3                              receive_p_out=0;
1023   3                      }
1024   2      
1025   2                      if(receive_p_in==1)
1026   2                      {
1027   3                              point=&pp.x[nonce_sec][0];
1028   3                              for(p_sec=0;p_sec<10;p_sec++)
1029   3                                      *(point+p_sec)=rbuffer[p_sec*2+3]*256+rbuffer[p_sec*2+4];
1030   3      
1031   3                              ini_sbuf(M_main,answer,S_ANSW,0,0,0);
1032   3                              s_byte_nums=4;
1033   3                              TR_noans();
1034   3                              demand=0;
1035   3                              receive_p_in=0;
1036   3                      }
1037   2      
1038   2                      if(rot_front==1)
1039   2                      {
1040   3                              rot_dir=1;
1041   3                              PWM0=204;
1042   3                              rot_enable=1;
1043   3                              rot_front=0;
1044   3                      }
1045   2      
1046   2                      if(rot_reverse==1)
1047   2                      {
C51 COMPILER V7.06   PID                                                                   09/08/2005 15:02:37 PAGE 18  

1048   3                              rot_dir=0;
1049   3                              PWM0=204;
1050   3                              rot_enable=1;
1051   3                              rot_reverse=0;
1052   3                      }
1053   2      
1054   2                      if(wire_add==1)
1055   2                      {
1056   3                              wire_dir=1;
1057   3                              PWM1=204;
1058   3                              wire_enable=1;
1059   3                              wire_add=0;
1060   3                      }
1061   2      
1062   2                      if(wire_dec==1)
1063   2                      {
1064   3                              wire_dir=0;
1065   3                              PWM1=204;
1066   3                              wire_enable=1;
1067   3                              wire_dec=0;
1068   3                      }
1069   2      
1070   2                      if(motor_stop==1)
1071   2                      {
1072   3                              PWM0=0;
1073   3                              PWM1=0;
1074   3                              wire_enable=0;
1075   3                              rot_enable=0;
1076   3                              rot_front=0;
1077   3                              rot_reverse=0;
1078   3                              wire_add=0;
1079   3                              wire_dec=0;
1080   3                              motor_stop=0;
1081   3                      }
1082   2      
1083   2                      if(resend==1)
1084   2                      {
1085   3                              ini_sbuf(M_main,answer,S_ANSW,0,0,0);
1086   3                              s_byte_nums=4;
1087   3                              TR_noans();
1088   3                              resend=0;
1089   3                      }
1090   2      
1091   2                      if(urgent_stop==1)
1092   2                              goto BEGIN;
1093   2              }
1094   1      
1095   1              get_v_r();
1096   1              if(r%10>=5)
1097   1                      pulse_num=r/10+1;
1098   1              else
1099   1                      pulse_num=r/10;
1100   1              pulse_num=pulse_num/2;
1101   1              pulse_num1=r/2;
1102   1              if(pp.k1==0)
1103   1                      K21=OFF;
1104   1              else
1105   1                      K21=pp.k21;
1106   1              const0=(float)(motor_v)*(float)(tooth_num);
1107   1              const0=(float)(const0*3.14);
1108   1              const0=(float)(const0/360/r);           //motor_v*tooth_num*3.14*pp.d/360/r
1109   1              temp_data0=const0*pp.d/10;
C51 COMPILER V7.06   PID                                                                   09/08/2005 15:02:37 PAGE 19  

1110   1              temp_data00=(float)(pp.dv21)/temp_data0;
1111   1              delt_rot=255*temp_data00;
1112   1              if(delt_rot==0)
1113   1                      delt_rot=1;
1114   1              temp_data00=(float)(pp.v21_p)/temp_data0;
1115   1              rot_vp=255*temp_data00;
1116   1              temp_rot_vp=12;
1117   1              if(K21==ON)
1118   1              {
1119   2                      temp_data00=(float)(pp.v21_b)/temp_data0;
1120   2                      rot_vb=255*temp_data00;
1121   2                      temp_rot_vb=12;
1122   2              }
1123   1              if(rot_vp>12)
1124   1                      n_cm1=pp.t21*250/(rot_vp-12);
1125   1              else if(rot_vp<12)
1126   1                      n_cm1=pp.t21*250/(12-rot_vp);
1127   1      
1128   1              K3=pp.k3;
1129   1              if(pp.k1==0)
1130   1                      K31=OFF;
1131   1              else
1132   1                      K31=pp.k31;
1133   1              const1=1900;                            //6600*10*165*314
1134   1              temp_data00=(float)(pp.dv31)/(float)(const1);
1135   1              delt_wire=255*temp_data00;
1136   1              if(delt_wire==0)
1137   1                      delt_wire=1;
1138   1              temp_data00=(float)(pp.v31_p)/(float)(const1);
1139   1              wire_vp=255*temp_data00;
1140   1              temp_wire_vp=12;
1141   1              if(K31==ON)
1142   1              {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -