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

📄 avc3.lst

📁 基于485的51单片机多机通讯程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V7.06   AVC3                                                                  10/27/2005 11:09:51 PAGE 5   

 242   2                      AD5=0;
 243   2                      U51=0;
 244   2              }
 245   1              while(err_ok==0)
 246   1              {
 247   2                      if(called==1)
 248   2                      {
 249   3                              if(avc_err==0)
 250   3                              {
 251   4                                      ini_sbuf(M_main,answer,OK,0,0,0);
 252   4                                      s_byte_nums=4;
 253   4                                      TR_noans();
 254   4                              }
 255   3                              else
 256   3                              {
 257   4                                      ini_sbuf(M_main,err_infor,M_AVC,err,0,0);
 258   4                                      s_byte_nums=5;
 259   4                                      TR_noans();
 260   4                                      avc_err=0;
 261   4                                      err=0;
 262   4                                      stop=1;
 263   4                              }
 264   3                              called=0;
 265   3                      }
 266   2              }
 267   1      
 268   1              urgent_stop=1;
 269   1      }
 270          
 271          void EX1_INT (void) interrupt 2
 272          {
 273   1              unsigned char get_err;
 274   1              EX1=0;
 275   1              err=0;
 276   1              get_err=P5;
 277   1              get_err=get_err&0x04;
 278   1              if(get_err==0)
 279   1              {
 280   2                      err=15;                         //弧长上限位
 281   2                      write_8574(0xF1);
 282   2              }
 283   1              else
 284   1              {
 285   2                      get_err=P5;
 286   2                      get_err=get_err&0x08;
 287   2                      if(get_err==0)
 288   2                      {
 289   3                              err=16;                 //弧长下限位
 290   3                              write_8574(0xF2);
 291   3                      }
 292   2                      else
 293   2                      {
 294   3                              get_err=P5;
 295   3                              get_err=get_err&0x10;
 296   3                              if(get_err==0)
 297   3                              {
 298   4                                      err=17;         //弧长过流
 299   4                                      write_8574(0xF4);
 300   4                              }
 301   3                              else
 302   3                              {
 303   4                                      get_err=P5;
C51 COMPILER V7.06   AVC3                                                                  10/27/2005 11:09:51 PAGE 6   

 304   4                                      get_err=get_err&0x40;
 305   4                                      if(get_err==0)
 306   4                                      {
 307   5                                              err=18; //工件短路
 308   5                                              write_8574(0xF8);
 309   5                                              lift=1;
 310   5                                              if(work==3)
 311   5                                              {
 312   6      
 313   6                                                      COM=0X36;                                       //弧长点动速度,1K
 314   6                                                      COUNT0=4000%256;
 315   6                                                      COUNT0=4000/256;                                //弧长采样脉冲,1K
 316   6                                                      COM=0X76;
 317   6                                                      COUNT1=c_lift%256;
 318   6                                                      COUNT1=c_lift/256;
 319   6      
 320   6                                                                                      //允许CT0
 321   6                                                      avc_dir=1;                                      //弧长方向——上
 322   6                                                      externel_voltage=0;
 323   6                                                      avc_enable=0;
 324   6                                                                                              //开弧长使能
 325   6      
 326   6                                                      CTCON=CTCON|0X01;       //CT0下降沿
 327   6                                                      IEN1=IEN1|0X01;
 328   6                                                      gate=1;
 329   6                                                      while(lift_complete==0);
 330   6                                                      lift_complete=0;
 331   6                                                      lift=0;
 332   6      
 333   6                                              }
 334   5                                      }
 335   4                              }
 336   3                      }
 337   2              }
 338   1              SSUM=0;
 339   1              POINTER1=0;
 340   1              r_byte_nums=4;
 341   1              if(err!=0)
 342   1              {
 343   2                      if(work==3)
 344   2                      {
 345   3                              
 346   3                              avc_err=1;
 347   3                              lift=0;
 348   3                              stop=0;
 349   3                      }
 350   2              }
 351   1              else
 352   1                      EX1=1;
 353   1      }
 354          
 355          void T1_INT (void) interrupt 3
 356          {
 357   1              c_t1++;
 358   1              if(send==1)
 359   1              {
 360   2                      if(c_t1==7)
 361   2                      {
 362   3                              S0BUF=sbuffer[POINTER0];
 363   3                              c_t1=0;
 364   3                      }
 365   2              }
C51 COMPILER V7.06   AVC3                                                                  10/27/2005 11:09:51 PAGE 7   

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

 428          
 429          void S1_int (void) interrupt 5      //I2C
 430          {
 431   1         if (S1STA==0x00)
 432   1                 {
 433   2                  FF=1;
 434   2                  S1CON=0xD5; //STA=0   STO=1    SI=0     AA=1
 435   2                 }
 436   1         if (S1STA==0x08)
 437   1                 {
 438   2                  S1DAT=SLA;
 439   2                  S1CON=0xC5; //STA=0   STO=0    SI=0     AA=1
 440   2                 }
 441   1         if (S1STA==0x10)
 442   1                 {
 443   2                  S1DAT=SLA;
 444   2                  S1CON=0xC5; //STA=0   STO=0    SI=0     AA=1
 445   2                 }
 446   1         if (S1STA==0x18)
 447   1                 {
 448   2                  S1DAT=COMM;
 449   2                  S1CON=0xC5; //STA=0   STO=0    SI=0     AA=1
 450   2                 }
 451   1         if (S1STA==0x20)
 452   1                 {
 453   2                  FF=1;
 454   2                  S1CON=0xD5; //STA=0   STO=1    SI=0     AA=1
 455   2                 }
 456   1         if (S1STA==0x28)
 457   1                 {
 458   2                  S1CON=0xD5; //STA=0   STO=1    SI=0     AA=1
 459   2                  FF=1;
 460   2                 }
 461   1         if (S1STA==0x30)
 462   1                 {
 463   2                  FF=1;
 464   2                  S1CON=0xD5; //STA=0   STO=1    SI=0     AA=1
 465   2                 }
 466   1         if (S1STA==0x38)
 467   1                 {
 468   2                  S1CON=0xE5; //STA=1   STO=0    SI=0     AA=1
 469   2                 }
 470   1         if (S1STA==0x40)
 471   1                 {
 472   2                  S1CON=0xC5; //STA=0   STO=0    SI=0     AA=1
 473   2                 }
 474   1         if (S1STA==0x48)
 475   1                 {
 476   2                  FF=1;
 477   2                  S1CON=0xD5; //STA=0   STO=1    SI=0     AA=1
 478   2                 }
 479   1         if (S1STA==0x50)
 480   1                 {
 481   2                  GET=S1DAT;
 482   2                  S1CON=0xC1; //STA=0   STO=0    SI=0     AA=0
 483   2                 }
 484   1         if (S1STA==0x58)
 485   1                 {
 486   2                      FF=1;
 487   2                      S1CON=0xD5; //STA=0   STO=1   SI=0     AA=1
 488   2                 }
 489   1      }

⌨️ 快捷键说明

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