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

📄 dc1.lst

📁 基于485的51单片机多机通讯程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 244   2                      case 8: {
 245   3                                      motor_v=6600;
 246   3                                      r=15;
 247   3                                      decrease_rate=549.1;
 248   3                              }break;
 249   2                      case 9:
 250   2                      case 10:{
 251   3                                      motor_v=6600;
 252   3                                      r=16;
 253   3                                      decrease_rate=570;
 254   3                              }break;
 255   2                      case 11:
 256   2                      case 12:
 257   2                      case 13:{
 258   3                                      motor_v=6600;
 259   3                                      r=176;
 260   3                                      decrease_rate=6329.4;
 261   3                              }break;
 262   2                      case 14:{
 263   3                                      motor_v=6600;
 264   3                                      r=55;
 265   3                                      decrease_rate=1972.8;
 266   3                              }break;
 267   2                      case 15:{
 268   3                                      motor_v=6600;
 269   3                                      r=103;
 270   3                                      decrease_rate=3699;
 271   3                              }break;
 272   2                      case 16:
 273   2                      case 17:
 274   2                      case 18:
 275   2                      case 19:{
 276   3                                      motor_v=6600;
 277   3                                      r=80;
 278   3                                      decrease_rate=2877;
 279   3                              }break;
 280   2                      case 20:
 281   2                      case 21:
 282   2                      case 22:
 283   2                      case 23:
 284   2                      case 24:{
 285   3                                      motor_v=6600;
 286   3                                      r=48;
 287   3                                      decrease_rate=1726.2;
 288   3                              }break;
 289   2                      case 25:
 290   2                      case 26:
 291   2                      case 27:
 292   2                      case 28:{
 293   3                                      motor_v=6600;
 294   3                                      r=37;
 295   3                                      decrease_rate=1315.2;
 296   3                              }break;
 297   2                      case 29:
 298   2                      case 30:
 299   2                      case 31:
 300   2                      case 32:{
 301   3                                      motor_v=6600;
 302   3                                      r=25;
 303   3                                      decrease_rate=896.8;
C51 COMPILER V7.06   DC1                                                                   09/11/2006 08:21:54 PAGE 6   

 304   3                              }break;
 305   2                      case 33:{
 306   3                                      motor_v=7184;
 307   3                                      r=7;
 308   3                                      decrease_rate=261.2;
 309   3                              }break;
 310   2                      case 34:{
 311   3                                      motor_v=7480;
 312   3                                      r=22;
 313   3                                      decrease_rate=783.7;
 314   3                              }break;
 315   2                      case 35:{
 316   3                                      motor_v=7440;
 317   3                                      r=18;
 318   3                                      decrease_rate=656.6;
 319   3                              }break;
 320   2                      case 36:{
 321   3                                      motor_v=7480;
 322   3                                      r=27;
 323   3                                      decrease_rate=980.28;
 324   3                              }break;
 325   2                      case 37:{
 326   3                                      motor_v=6510;
 327   3                                      r=27;
 328   3                                      decrease_rate=980.3;
 329   3                              }break;
 330   2                      case 38:{
 331   3                                      motor_v=8380;
 332   3                                      r=131;
 333   3                                      decrease_rate=4700;
 334   3                              }break;
 335   2                      default:{
 336   3                                      common=1;
 337   3                                      motor_v=6600;
 338   3                                      r=pp.rn;        
 339   3                                      const0=(float)(motor_v)*(float)(tooth_num);
 340   3                                      const0=(float)(const0*3.14);
 341   3                                      const0=(float)(const0/360/r);           //motor_v*tooth_num*3.14*pp.d/360/r
 342   3                              }break;
 343   2              }
 344   1      }
 345          
 346          unsigned char get_PWM(float aa)
 347          {
 348   1              unsigned char bb,dd;
 349   1              unsigned int cc;
 350   1              
 351   1              cc=(unsigned int)(aa);
 352   1              dd=cc;
 353   1              bb=(aa-cc)*10;
 354   1              if(bb>=5)
 355   1                      dd=dd+1;
 356   1              return dd;
 357   1      }
 358          
 359          void EX0_INT (void) interrupt 0                 //急停
 360          {
 361   1              EX1=0;
 362   1              send_enable=1;                          //关发送使能
 363   1              POINTER0=0;
 364   1              SSUM=0;
 365   1              POINTER1=0;
C51 COMPILER V7.06   DC1                                                                   09/11/2006 08:21:54 PAGE 7   

 366   1              RSUM=0;
 367   1              r_byte_nums=4;
 368   1              PWM0=0;
 369   1              PWM1=0;
 370   1              wire_back=1;
 371   1              wire_front=1;
 372   1              rot_right=1;
 373   1              rot_left=1;
 374   1              while(err_ok==0)
 375   1              {
 376   2                      if(called==1)
 377   2                      {
 378   3                              if(rw_err==0)
 379   3                              {
 380   4                                      ini_sbuf(M_main,answer,OK,0,0,0);
 381   4                                      s_byte_nums=4;
 382   4                                      TR_noans();
 383   4                              }
 384   3                              else
 385   3                              {
 386   4                                      ini_sbuf(M_main,err_infor,M_RW,err,0,0);
 387   4                                      s_byte_nums=5;
 388   4                                      TR_noans();
 389   4                                      rw_err=0;
 390   4                                      err=0;
 391   4                                      stop=1;
 392   4                              }
 393   3                              called=0;
 394   3                      }
 395   2              }
 396   1              urgent_stop=1;
 397   1      }
 398          
 399          void EX1_INT (void) interrupt 2
 400          {
 401   1              unsigned char get_err;
 402   1              EX1=0;
 403   1              if(limit==0)
 404   1              {
 405   2                      delay(200);
 406   2                      if(limit==0)
 407   2                              err=11;                 //旋转限位
 408   2                      else
 409   2                              err=0;
 410   2              }
 411   1              else if(wire_over_i==0)
 412   1              {
 413   2                      delay(200);
 414   2                      if(wire_over_i==0)
 415   2                              err=10;
 416   2                      else
 417   2                              err=0;
 418   2              }
 419   1              else
 420   1              {
 421   2                      get_err=P5;
 422   2                      get_err=get_err&0x04;
 423   2                      if(get_err==0)
 424   2                      {
 425   3                              delay(200);
 426   3                              get_err=P5;
 427   3                              get_err=get_err&0x04;
C51 COMPILER V7.06   DC1                                                                   09/11/2006 08:21:54 PAGE 8   

 428   3                              if(get_err==0)
 429   3                                      err=9;
 430   3                              else
 431   3                                      err=0;
 432   3                      }
 433   2              }
 434   1              if(err!=0)
 435   1              {
 436   2                      rw_err=1;
 437   2                      stop=0;
 438   2              }
 439   1              else
 440   1                      EX1=1;
 441   1      }
 442          
 443          void T1_INT (void) interrupt 3
 444          {
 445   1              c_t1++;
 446   1              if(send==1)
 447   1              {
 448   2                      if(c_t1==7)
 449   2                      {
 450   3                              S0BUF=sbuffer[POINTER0];
 451   3                              c_t1=0;
 452   3                      }
 453   2              }
 454   1              else
 455   1              {
 456   2                      if(c_t1==100)
 457   2                      {
 458   3                              TR1=0;
 459   3                              overtime=1;
 460   3                      }
 461   2              }
 462   1      }
 463          
 464          void TR_INT (void) interrupt 4                                  //串行口中断
 465          {
 466   1              EA=0;                                                   //关中断
 467   1              if(TI==1)                                               //发送完成
 468   1              {
 469   2                      TI=0;
 470   2                      POINTER0++;                                     //发送缓冲指针加1
 471   2                      if(POINTER0<s_byte_nums-1)
 472   2                              SSUM=SSUM+sbuffer[POINTER0];    //6个数据字节求和
 473   2                      else
 474   2                              sbuffer[s_byte_nums-1]=SSUM+sbuffer[0]; //数据和加地址生成校验码
 475   2                      if(POINTER0==s_byte_nums)
 476   2                              REN=1;
 477   2              }
 478   1      
 479   1              if(RI==1)                                               //接收完成
 480   1              {
 481   2                      RI=0;
 482   2                      POINTER1++;                             //接收缓冲指针加1
 483   2                      rbuffer[POINTER1-1]=S0BUF;              //从接收缓冲读出数据
 484   2                      if(rbuffer[0]==M_RW||rbuffer[0]==M_ALL||rbuffer[0]==M_current_RW)
 485   2                      {
 486   3                              SM2=0;
 487   3                              if(POINTER1==2)                         //获取字节个数
 488   3                                      r_byte_nums=get_byte_nums(rbuffer[1]);
 489   3                              if(POINTER1<r_byte_nums)
C51 COMPILER V7.06   DC1                                                                   09/11/2006 08:21:54 PAGE 9   

 490   3                                      RSUM=RSUM+rbuffer[POINTER1-1];  //生成校验码
 491   3                              else
 492   3                              {
 493   4                                      SM2=1;
 494   4                                      if(RSUM==rbuffer[r_byte_nums-1])
 495   4                                      {

⌨️ 快捷键说明

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