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

📄 driver0425.lst

📁 基于485的51单片机多机通讯程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 234   3                                      }break;
 235   2                              case 2: {
 236   3                                              v51=start_v51;          //500
 237   3                                              SENS=5;                 //0.01875mm 0.1v
 238   3                                      }break;
 239   2                              case 3: {
 240   3                                              v51=start_v51;          //500
C51 COMPILER V7.06   DRIVER0425                                                            06/03/2005 15:08:33 PAGE 5   

 241   3                                              SENS=10;                //0.0375mm 0.2v
 242   3                                      }break;
 243   2                              case 4: {
 244   3                                              v51=39;                 //592
 245   3                                              SENS=16;                //0.06mm 0.3v
 246   3                                      }break;
 247   2                              case 5: {
 248   3                                              v51=30;                 //778
 249   3                                              SENS=21;                //0.08mm 0.4v
 250   3                                      }break;
 251   2                              case 6: {
 252   3                                              v51=23;                 //1000
 253   3                                              SENS=27;                //0.1mm 0.5v
 254   3                                      }break;
 255   2                              case 7: {
 256   3                                              v51=19;                 //1185
 257   3                                              SENS=32;                //0.12mm 0.6v
 258   3                                      }break;
 259   2                              case 8: {
 260   3                                              v51=16;                 //1407
 261   3                                              SENS=38;                //0.14mm 0.7v
 262   3                                      }break;
 263   2                              case 9: {
 264   3                                              v51=13;                 //1740
 265   3                                              SENS=47;                //0.16mm 0.8v
 266   3                                      }break;
 267   2                              case 10:{
 268   3                                              v51=11;                 //2000
 269   3                                              SENS=54;                //0.2mm 1v
 270   3                                      }break;
 271   2                              default:{
 272   3                                              v51=127;
 273   3                                              SENS=5;
 274   3                                      }break;
 275   2                      }
 276   1      }
 277          
 278          void com_type()
 279          {
 280   1              switch(rbuffer[2])
 281   1              {
 282   2                      case com_calling:       called=1;break;
 283   2                      case com_motor_stop:    {                               //停止点动
 284   3                                                      if(motor_stop==0)
 285   3                                                              motor_stop=1;
 286   3                                              }break;
 287   2                      case com_start:         start=1;break;                  //启动
 288   2                      case com_decrease:      {
 289   3                                                      if(avc_ok==1)
 290   3                                                      {
 291   4                                                              PWM0=0;
 292   4                                                              IEN1=IEN1&0XFB;         //禁止CT2
 293   4                                                              IEN1=IEN1&0XF7;         //禁止CT3
 294   4                                                              avc=0;
 295   4                                                              avc_ok=0;
 296   4                                                              c_avc=0;
 297   4                                                      }
 298   3                                                      if(osc_ok==1)
 299   3                                                      {
 300   4                                                              if(osc_add>osc_dec||osc_add==osc_dec)
 301   4                                                              {
 302   5                                                                      delt_a41=pp.da41*(osc_add-osc_dec);
C51 COMPILER V7.06   DRIVER0425                                                            06/03/2005 15:08:33 PAGE 6   

 303   5                                                                      const0=const0+delt_a41*60+pp.v41*(pp.t42_l+pp.t42_r)/2;
 304   5                                                              }
 305   4                                                              else
 306   4                                                              {
 307   5                                                                      delt_a41=pp.da41*(osc_dec-osc_add);
 308   5                                                                      const0=const0-delt_a41*60+pp.v41*(pp.t42_l+pp.t42_r)/2;
 309   5                                                              }
 310   4                                                              last_out1=out1;
 311   4                                                              c_decrease=(unsigned char)(const1/const0)+1;
 312   4                                                              if(c_decrease>=8&&c_decrease<=12)
 313   4                                                                      osc_adjudge=1;
 314   4                                                              else if(c_decrease<=13)
 315   4                                                                      osc_adjudge=2;
 316   4                                                              else if(c_decrease<=25)
 317   4                                                                      osc_adjudge=3;
 318   4                                                              else
 319   4                                                                      osc_adjudge=4;
 320   4                                                              c_decrease=c_decrease+osc_adjudge;
 321   4                                                      }
 322   3                                                      decrease=1;
 323   3                                              }break;
 324   2      //              case com_decrease_ok:   decrease_ok=1;break;
 325   2                      case com_osc:           start_osc=1;break;                      //启动CT0
 326   2                      case com_osc_l:         {
 327   3                                                      if(work==0)                     //点动
 328   3                                                      {
 329   4                                                              if(osc_l==0)
 330   4                                                                      osc_l=1;
 331   4                                                      }
 332   3                                                      else
 333   3                                                      {
 334   4                                                              if(center_excursion==0&&judge_ok==0)
 335   4                                                              {
 336   5                                                                      excursion_dir=0;
 337   5                                                                      center_excursion=1;
 338   5                                                              }
 339   4                                                      }
 340   3                                              }break;
 341   2                      case com_osc_r:         {
 342   3                                                      if(work==0)                     //点动
 343   3                                                      {
 344   4                                                              if(osc_r==0)
 345   4                                                                      osc_r=1;
 346   4                                                      }
 347   3                                                      else
 348   3                                                      {
 349   4                                                              if(center_excursion==0&&judge_ok==0)
 350   4                                                              {
 351   5                                                                      excursion_dir=1;
 352   5                                                                      center_excursion=1;
 353   5                                                              }
 354   4                                                      }
 355   3                                              }break;
 356   2      
 357   2                      case com_breadth_add:   {
 358   3                                                      if(osc_ok==1&&osc==0)
 359   3                                                              {
 360   4                                                                      osc=1;          //启动横摆
 361   4                                                                      osc_change=1;
 362   4                                                              }
 363   3                                              }break;
 364   2                      case com_breadth_dec:   {
C51 COMPILER V7.06   DRIVER0425                                                            06/03/2005 15:08:33 PAGE 7   

 365   3                                                      if(osc_ok==1&&osc==0)
 366   3                                                              {
 367   4                                                                      osc=1;          //启动横摆
 368   4                                                                      osc_change=0;
 369   4                                                              }
 370   3                                              }break;
 371   2                      case com_avc:           start_avc=1;break;
 372   2                      case com_avc_up:        if(avc_up==0)
 373   2                                                      avc_up=1;break;
 374   2                      case com_avc_down:      if(avc_down==0)
 375   2                                                      avc_down=1;break;
 376   2                      case com_stop_avc:      stop_avc=1;break;
 377   2                      case com_pgj:           pgj=1;break;
 378   2                      case com_lift:          lift=1;break;
 379   2                      case com_goto_begin:    to_begin=1;break;
 380   2                      case com_need_para:     if(need_para==0)
 381   2                                                      need_para=1;break;
 382   2                      case com_ask_lift_ok:   ask_lift_ok=1;break;
 383   2                      case com_lift_ok:       lift_ok=1;break;
 384   2                      case com_demand:        demand=1;break;
 385   2                      default:                 break;
 386   2              }
 387   1      }
 388          
 389          void data_type()                                                //对接收到的数据分辨类型
 390          {
 391   1              switch(rbuffer[1])
 392   1              {
 393   2                      case command:   com_type();break;
 394   2      //              case answer:    R_ANSW=rbuffer[1];break;
 395   2                      case infor:     {
 396   3                                              if(rbuffer[1]==com_sector)
 397   3                                              {
 398   4                                                      sector=1;
 399   4                                                      if(in_sector==0)
 400   4                                                              in_sector=1;
 401   4                                                      nonce_sec=rbuffer[3];
 402   4                                              }
 403   3                                      }break;
 404   2                      case parameter: {
 405   3                                              if(rbuffer[2]==7)
 406   3                                                      pp.k1=rbuffer[4];
 407   3                                      }break;
 408   2                      case p_out_sec: receive_p_out=1;break;
 409   2      
 410   2                      case p_in_sec:  {
 411   3                                              nonce_sec=rbuffer[2];
 412   3                                              receive_p_in=1;
 413   3                                      }break;
 414   2                      default:        break;
 415   2              }
 416   1      }
 417          
 418          void T0_INT (void) interrupt 1          //横摆起始时间(低速时间)
 419          {
 420   1              TF0=0;
 421   1              c_t0++;
 422   1              if(c_t0==10)                    //1536us
 423   1              {
 424   2                      TR0=0;
 425   2                      COM=0X36;
 426   2                      COUNT0=out0%256;
C51 COMPILER V7.06   DRIVER0425                                                            06/03/2005 15:08:33 PAGE 8   

 427   2                      COUNT0=out0/256;
 428   2                      c_t0=0;
 429   2              }
 430   1      }
 431          
 432          void T1_INT (void) interrupt 3
 433          {
 434   1              c_t1++;
 435   1              if(send==1)
 436   1              {
 437   2                      if(c_t1==7)
 438   2                      {
 439   3                              S0BUF=sbuffer[POINTER0];
 440   3                              c_t1=0;
 441   3                      }
 442   2              }
 443   1              else
 444   1              {
 445   2                      if(c_t1==100)
 446   2                      {
 447   3                              TR1=0;
 448   3                              overtime=1;
 449   3                      }
 450   2              }
 451   1      }
 452          
 453          void TR_INT (void) interrupt 4                                  //串行口中断
 454          {                                                       //关中断
 455   1              if(TI==1)                                               //发送完成
 456   1              {
 457   2                      TI=0;
 458   2                      POINTER0++;
 459   2                      if(POINTER0<byte_nums-1)
 460   2                              SSUM=SSUM+sbuffer[POINTER0];    //6个数据字节求和
 461   2                      else
 462   2                              sbuffer[byte_nums-1]=SSUM+sbuffer[0];   //数据和加地址生成校验码
 463   2                      if(POINTER0==byte_nums)
 464   2                              REN=1;
 465   2              }
 466   1      
 467   1              if(RI==1)                                               //接收完成
 468   1              {
 469   2                      RI=0;
 470   2                      POINTER1++;                     //接收缓冲指针加1
 471   2                      rbuffer[POINTER1-1]=S0BUF;              //从接收缓冲读出数据
 472   2                      if(rbuffer[0]==M_OA||rbuffer[0]==M_ALL)
 473   2                      {
 474   3                              SM2=0;

⌨️ 快捷键说明

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