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

📄 dc.lst

📁 基于485的51单片机多机通讯程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 239   3                              {
 240   4                                      ini_sbuf(M_main,err_infor,M_RW,err,0,0);
 241   4                                      s_byte_nums=5;
C51 COMPILER V7.06   DC                                                                    06/22/2005 09:40:54 PAGE 5   

 242   4                                      TR_noans();
 243   4                                      rw_err=0;
 244   4                                      err=0;
 245   4                                      stop=1;
 246   4                              }
 247   3                              called=0;
 248   3                      }
 249   2              }
 250   1              urgent_stop=1;
 251   1      }
 252          
 253          void EX1_INT (void) interrupt 2
 254          {
 255   1              unsigned char get_err;
 256   1              EX1=0;
 257   1      
 258   1              if(limit==0)
 259   1                      err=11;                 //旋转限位
 260   1              else if(wire_over_i==0)
 261   1                      err=10;
 262   1              else 
 263   1              {
 264   2                      get_err=P5;
 265   2                      get_err=get_err&0x04;
 266   2                      if(get_err==0)
 267   2                              err=9;
 268   2              }
 269   1              if(err!=0)
 270   1              {
 271   2                      rw_err=1;
 272   2                      stop=0;
 273   2              }
 274   1              else
 275   1                      EX1=1;
 276   1      }
 277                  
 278          void T1_INT (void) interrupt 3
 279          {
 280   1      //      EA=0;
 281   1              c_t1++;
 282   1              if(send==1)
 283   1              {
 284   2                      if(c_t1==7)
 285   2                      {
 286   3                              S0BUF=sbuffer[POINTER0];
 287   3                              c_t1=0;
 288   3                      }
 289   2              }
 290   1              else
 291   1              {
 292   2                      if(c_t1==100)
 293   2                      {
 294   3                              TR1=0;
 295   3                              overtime=1;
 296   3                      }
 297   2              }
 298   1      //      EA=1;
 299   1      }
 300          
 301          void TR_INT (void) interrupt 4                                  //串行口中断
 302          {
 303   1              EA=0;                                                   //关中断
C51 COMPILER V7.06   DC                                                                    06/22/2005 09:40:54 PAGE 6   

 304   1              if(TI==1)                                               //发送完成
 305   1              {
 306   2                      TI=0;
 307   2                      POINTER0++;                                     //发送缓冲指针加1
 308   2                      if(POINTER0<s_byte_nums-1)
 309   2                              SSUM=SSUM+sbuffer[POINTER0];    //6个数据字节求和
 310   2                      else
 311   2                              sbuffer[s_byte_nums-1]=SSUM+sbuffer[0]; //数据和加地址生成校验码
 312   2                      if(POINTER0==s_byte_nums)
 313   2                              REN=1;
 314   2              }
 315   1      
 316   1              if(RI==1)                                               //接收完成
 317   1              {
 318   2                      RI=0;
 319   2                      POINTER1++;                             //接收缓冲指针加1
 320   2                      rbuffer[POINTER1-1]=S0BUF;              //从接收缓冲读出数据
 321   2                      if(rbuffer[0]==M_RW||rbuffer[0]==M_ALL||rbuffer[0]==M_current_RW)
 322   2                      {
 323   3                              SM2=0;
 324   3                              if(POINTER1==2)                         //获取字节个数
 325   3                                      r_byte_nums=get_byte_nums(rbuffer[1]);
 326   3                              if(POINTER1<r_byte_nums)
 327   3                                      RSUM=RSUM+rbuffer[POINTER1-1];  //生成校验码
 328   3                              else
 329   3                              {
 330   4                                      SM2=1;
 331   4                                      if(RSUM==rbuffer[r_byte_nums-1])
 332   4                                      {
 333   5                                              if(ans==0)
 334   5                                              {
 335   6                                                      POINTER1=0;
 336   6                                                      RSUM=0;
 337   6                                              }
 338   5                                              S_ANSW=OK;
 339   5                                              data_type();
 340   5                                      }
 341   4                                      else
 342   4                                      {
 343   5                                              S_ANSW=FAIL;
 344   5                                              if(resend==0)
 345   5                                                      resend=1;
 346   5                                      }
 347   4                              }
 348   3                      }
 349   2                      else
 350   2                              POINTER1=0;
 351   2              }
 352   1              EA=1;                                           //开中断
 353   1      }
 354          
 355          void CT0_int (void) interrupt 6                         //焊接角度
 356          {
 357   1              CTI0=0;
 358   1              if(auto_return==0)
 359   1              {
 360   2                      if(FINISH<=50000)
 361   2                      {
 362   3                              temp_pulse_num++;
 363   3                              if(temp_pulse_num==pulse_num)
 364   3                              {
 365   4                                      FINISH++;
C51 COMPILER V7.06   DC                                                                    06/22/2005 09:40:54 PAGE 7   

 366   4                                      temp_pulse_num=0;
 367   4                              }
 368   3                      }
 369   2                      else
 370   2                      {
 371   3                              IEN1=IEN1&0XFE;                 //CT0
 372   3                              temp_pulse_num=0;
 373   3                      }
 374   2              }
 375   1              else
 376   1              {
 377   2                      if(FINISH>0)
 378   2                      {
 379   3                              temp_pulse_num++;
 380   3                              if(temp_pulse_num==pulse_num)
 381   3                              {
 382   4                                      FINISH--;
 383   4                                      temp_pulse_num=0;
 384   4                              }
 385   3                      }
 386   2                      else
 387   2                      {
 388   3                              PWM0=0;
 389   3                              rot_right=1;
 390   3                              rot_left=1;
 391   3                              IEN1=IEN1&0XFE;                 //CT0           
 392   3                      }
 393   2              }
 394   1      }
 395          
 396          void CT3_int (void) interrupt 9                         //电流脉冲
 397          {
 398   1              CTI3=0;
 399   1              CTCON=CTCON&0X3F;
 400   1              IEN1=IEN1&0XF7;                                 //CT3
 401   1              p_b=~p_b;
 402   1              if(p_b==1)                                      //峰值
 403   1              {
 404   2                      if(rot_ok==1&&K21==ON)
 405   2                              PWM0=temp_rot_vp;
 406   2                      if(wire_ok==1&&WIRE==ON&&K31==ON)
 407   2                              PWM1=temp_wire_vp;
 408   2                      CTCON=CTCON|0X80;                       //CT3捕捉上升沿
 409   2              }
 410   1              else
 411   1              {
 412   2                      if(rot_ok==1&&K21==ON)//&&r_slope_ok==1)
 413   2                              PWM0=temp_rot_vb;
 414   2                      if(wire_ok==1&&WIRE==ON&&K31==ON)//&&w_slope_ok==1)
 415   2                              PWM1=temp_wire_vb;
 416   2                      CTCON=CTCON|0X40;                       //CT3捕捉下降沿
 417   2              }
 418   1              IEN1=IEN1|0X08;                                 //CT3
 419   1      }
 420          
 421          void CM0_INT (void) interrupt 11                        //送丝速度变化时间/抽丝时间
 422          {
 423   1              c_cm0++;
 424   1              if(retract==0)
 425   1              {
 426   2                      if(c_cm0==n_cm0)
 427   2                      {
C51 COMPILER V7.06   DC                                                                    06/22/2005 09:40:54 PAGE 8   

 428   3                              IEN1=IEN1&0xEF;                 //CM0
 429   3                              if(temp_wire_vp<wire_vp)
 430   3                              {
 431   4                                              if(temp_wire_vp+1==wire_vp)
 432   4                                                      temp_wire_vp=wire_vp;
 433   4                                              else
 434   4                                                      temp_wire_vp=temp_wire_vp+1;
 435   4                              }
 436   3              
 437   3                              if(temp_wire_vp>wire_vp)
 438   3                              {
 439   4                                              if(temp_wire_vp-1==wire_vp)
 440   4                                                      temp_wire_vp=wire_vp;
 441   4                                              else
 442   4                                                      temp_wire_vp=temp_wire_vp-1;
 443   4                              }
 444   3                              if(K31==ON)
 445   3                              {
 446   4                                      if(temp_wire_vb<wire_vb)
 447   4                                      {
 448   5                                                      if(temp_wire_vb+1==wire_vb)
 449   5                                                              temp_wire_vb=wire_vb;
 450   5                                                      else
 451   5                                                              temp_wire_vb=temp_wire_vb+1;
 452   5                                      }
 453   4                                      if(temp_wire_vb>wire_vb)
 454   4                                      {
 455   5                                                      if(temp_wire_vb-1==wire_vb)
 456   5                                                              temp_wire_vb=wire_vb;
 457   5                                                      else
 458   5                                                              temp_wire_vb=temp_wire_vb-1;
 459   5                                      }
 460   4                              }
 461   3                              c_cm0=0;
 462   3                              CML0=TML2+0xC8;
 463   3                              if(CML0<TML2)
 464   3                                      CMH0=TMH2+1+0X00;
 465   3                              else
 466   3                                      CMH0=TMH2+0X00;
 467   3                              if(K31==OFF)
 468   3                              {
 469   4                                      PWM1=temp_wire_vp;
 470   4                                      if(temp_wire_vp==wire_vp)
 471   4                                      {
 472   5                                              if(wire_ok==0)
 473   5                                                      wire_ok=1;
 474   5                                              else
 475   5                                                      w_slope_ok=1;
 476   5                                      }
 477   4                                      else
 478   4                                              IEN1=IEN1|0x10;         //CM0
 479   4                              }
 480   3                              else
 481   3                              {
 482   4                                      if(temp_wire_vp==wire_vp&&temp_wire_vb==wire_vb)
 483   4                                      {

⌨️ 快捷键说明

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