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

📄 avc.lst

📁 基于485的51单片机多机通讯程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 231                                  case 7: {
 232                                                  v51=19;                 //1185
 233                                                  SENS=32;                //0.12mm 0.6v
 234                                          }break;
 235                                  case 8: {
 236                                                  v51=16;                 //1407
 237                                                  SENS=38;                //0.14mm 0.7v
 238                                          }break;
 239                                  case 9: {
 240                                                  v51=13;                 //1740
 241                                                  SENS=47;                //0.16mm 0.8v
C51 COMPILER V7.06   AVC                                                                   06/10/2005 14:33:44 PAGE 5   

 242                                          }break;
 243                                  case 10:{
 244                                                  v51=11;                 //2000
 245                                                  SENS=54;                //0.2mm 1v
 246                                          }break;
 247                                  default:{
 248                                                  v51=127;
 249                                                  SENS=5;
 250                                          }break;
 251                          }
 252          }
 253          */
 254          void get_SENS()
 255          {
 256   1              switch(pp.sens)
 257   1                      {
 258   2                              case 1: {
 259   3                                              out0=8000;              //500HZ
 260   3                                              out1=4;                 //2p,0.0075mm
 261   3                                      }break;
 262   2                              case 2: {
 263   3                                              out0=8000;              //500HZ
 264   3                                              out1=10;                //5p,0.01875mm 0.1v
 265   3                                      }break;
 266   2                              case 3: {
 267   3                                              out0=8000;              //500HZ
 268   3                                              out1=20;                //10p,0.0375mm 0.2v
 269   3                                      }break;
 270   2                              case 4: {
 271   3                                              out0=6757;              //592hz
 272   3                                              out1=32;                //0.06mm 0.3v
 273   3                                      }break;
 274   2                              case 5: {
 275   3                                              out0=5141;              //778hz
 276   3                                              out1=42;                //0.08mm 0.4v
 277   3                                      }break;
 278   2                              case 6: {
 279   3                                              out0=4000;              //1000hz
 280   3                                              out1=54;                //0.1mm 0.5v
 281   3                                      }break;
 282   2                              case 7: {
 283   3                                              out0=3376;              //1185hz
 284   3                                              out1=64;                //0.12mm 0.6v
 285   3                                      }break;
 286   2                              case 8: {
 287   3                                              out0=2843;              //1407hz
 288   3                                              out1=76;                //0.14mm 0.7v
 289   3                                      }break;
 290   2                              case 9: {
 291   3                                              out0=2299;              //1740hz
 292   3                                              out1=94;                //0.16mm 0.8v
 293   3                                      }break;
 294   2                              case 10:{
 295   3                                              out0=2000;              //2000hz
 296   3                                              out1=104;               //0.2mm 1v
 297   3                                      }break;
 298   2                      }
 299   1      }
 300          void com_type()
 301          {
 302   1              switch(rbuffer[2])
 303   1              {
C51 COMPILER V7.06   AVC                                                                   06/10/2005 14:33:44 PAGE 6   

 304   2                      case com_calling:       called=1;break;
 305   2                      case com_motor_stop:    {                               //停止点动
 306   3                                                      if(motor_stop==0)
 307   3                                                              motor_stop=1;
 308   3                                              }break;
 309   2                      case com_start:         start=1;break;                  //启动
 310   2                      case com_decrease:      decrease=1;break;
 311   2                      case com_avc:           start_avc=1;break;
 312   2                      case com_avc_up:        if(avc_up==0)
 313   2                                                      avc_up=1;break;
 314   2                      case com_avc_down:      if(avc_down==0)
 315   2                                                      avc_down=1;break;
 316   2                      case com_stop_avc:      stop_avc=1;break;
 317   2                      case com_pgj:           pgj=1;break;
 318   2                      case com_lift:          lift=1;break;
 319   2                      case com_goto_begin:    to_begin=1;break;
 320   2                      case com_need_para:     if(need_para==0)
 321   2                                                      need_para=1;break;
 322   2                      case com_ask_lift_ok:   ask_lift_ok=1;break;
 323   2                      case com_lift_ok:       lift_ok=1;break;
 324   2                      default:                 break;
 325   2              }
 326   1      }
 327          
 328          void data_type()                                                //对接收到的数据分辨类型
 329          {
 330   1              switch(rbuffer[1])
 331   1              {
 332   2                      case command:   com_type();break;
 333   2      //              case answer:    R_ANSW=rbuffer[1];break;
 334   2                      case infor:     {
 335   3                                              if(rbuffer[1]==com_sector)
 336   3                                              {
 337   4                                                      sector=1;
 338   4                                                      if(in_sector==0)
 339   4                                                              in_sector=1;
 340   4                                                      nonce_sec=rbuffer[3];
 341   4                                              }
 342   3                                      }break;
 343   2                      case p_out_sec: receive_p_out=1;break;
 344   2      
 345   2                      case p_in_sec:  {
 346   3                                              nonce_sec=rbuffer[2];
 347   3                                              receive_p_in=1;
 348   3                                      }break;
 349   2                      default:        break;
 350   2              }
 351   1      }
 352          
 353          /*
 354          void EX0_INT (void) interrupt 0                 //急停
 355          {
 356                  EX0=0;
 357                  while(called==0);
 358                  if(avc_err==0)
 359                  {
 360                          ini_sbuf(M_main,answer,S_ANSW,0,0,0);
 361                          s_byte_nums=4;
 362                          TR_noans();
 363                  }
 364                  else
 365                  {
C51 COMPILER V7.06   AVC                                                                   06/10/2005 14:33:44 PAGE 7   

 366                          avc_err=0;
 367                          ini_sbuf(M_main,err_infor,M_avc,err,0,0);
 368                          s_byte_nums=5;
 369                          TR_noans();
 370                  }
 371                  urgent_stop=1;
 372          }
 373          */
 374          
 375          void T1_INT (void) interrupt 3
 376          {
 377   1              c_t1++;
 378   1              if(send==1)
 379   1              {
 380   2                      if(c_t1==7)
 381   2                      {
 382   3                              S0BUF=sbuffer[POINTER0];
 383   3                              c_t1=0;
 384   3                      }
 385   2              }
 386   1              else
 387   1              {
 388   2                      if(c_t1==100)
 389   2                      {
 390   3                              TR1=0;
 391   3                              overtime=1;
 392   3                      }
 393   2              }
 394   1      }
 395          
 396          void TR_INT (void) interrupt 4                                  //串行口中断
 397          {                                                       //关中断
 398   1              if(TI==1)                                               //发送完成
 399   1              {
 400   2                      TI=0;
 401   2                      POINTER0++;
 402   2                      if(POINTER0<s_byte_nums-1)
 403   2                              SSUM=SSUM+sbuffer[POINTER0];    //6个数据字节求和
 404   2                      else
 405   2                              sbuffer[s_byte_nums-1]=SSUM+sbuffer[0]; //数据和加地址生成校验码
 406   2                      if(POINTER0==s_byte_nums)
 407   2                              REN=1;
 408   2              }
 409   1      
 410   1              if(RI==1)                                               //接收完成
 411   1              {
 412   2                      RI=0;
 413   2                      POINTER1++;                     //接收缓冲指针加1
 414   2                      rbuffer[POINTER1-1]=S0BUF;              //从接收缓冲读出数据
 415   2                      if(rbuffer[0]==M_AVC||rbuffer[0]==M_ALL||rbuffer[0]==M_AVC_P)
 416   2                      {
 417   3                              SM2=0;
 418   3                              if(POINTER1==2)
 419   3                                      r_byte_nums=get_byte_nums(rbuffer[1]);
 420   3                              if(POINTER1<r_byte_nums)
 421   3                                      RSUM=RSUM+rbuffer[POINTER1-1];  //生成校验码
 422   3                              else
 423   3                              {
 424   4                                      SM2=1;
 425   4                                      if(RSUM==rbuffer[r_byte_nums-1])
 426   4                                      {
 427   5                                              if(ans==0)
C51 COMPILER V7.06   AVC                                                                   06/10/2005 14:33:44 PAGE 8   

 428   5                                              {
 429   6                                                      POINTER1=0;
 430   6                                                      RSUM=0;
 431   6                                              }
 432   5                                              S_ANSW=OK;
 433   5                                              data_type();
 434   5                                      }
 435   4                                      else
 436   4                                      {
 437   5                                              S_ANSW=FAIL;
 438   5                                              if(resend==0)
 439   5                                                      resend=1;
 440   5                                      }
 441   4                              }
 442   3      
 443   3                      }
 444   2                      else
 445   2                              POINTER1=0;
 446   2              }                                       //开中断
 447   1      }
 448          
 449          void CT0_int (void) interrupt 6
 450          {
 451   1              CTI0=0;
 452   1              CTCON=CTCON&0xFC;
 453   1              gate=0;
 454   1              if(decrease==0&&pp.k5==ON)
 455   1              {
 456   2                      if(pp.k1==DC||(pp.k1==PDC&&pp.avc_type==SP&&pulse_base==1))//(pp.avc_type==SP&&pulse_base==1||pp.avc_typ
             -e==SPB||pp.avc_type==SB&&pulse_base==0)))
 457   2                              CTCON=CTCON|0x20;
 458   2              }
 459   1              if(decrease==1&&lift==1)                //衰减过程
 460   1              {
 461   2                      avc_enable=1;                   //关弧长使能
 462   2                      IEN1=IEN1&0XFE;                 //禁止CT0
 463   2                      lift_complete=1;
 464   2              }
 465   1      }
 466          

⌨️ 快捷键说明

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