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

📄 driver0425.lst

📁 基于485的51单片机多机通讯程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 475   3                              if(POINTER1==2)
 476   3                                      byte_nums=get_byte_nums(rbuffer[1]);
 477   3                              if(POINTER1<byte_nums)
 478   3                                      RSUM=RSUM+rbuffer[POINTER1-1];  //生成校验码
 479   3                              else
 480   3                              {
 481   4                                      SM2=1;
 482   4                                      if(RSUM==rbuffer[byte_nums-1])
 483   4                                      {
 484   5                                              if(ans==0)
 485   5                                              {
 486   6                                                      POINTER1=0;
 487   6                                                      RSUM=0;
 488   6                                              }
C51 COMPILER V7.06   DRIVER0425                                                            06/03/2005 15:08:33 PAGE 9   

 489   5                                              S_ANSW=OK;
 490   5                                              data_type();
 491   5                                      }
 492   4                                      else
 493   4                                      {
 494   5                                              S_ANSW=FAIL;
 495   5                                              if(resend==0)
 496   5                                                      resend=1;
 497   5                                      }
 498   4                              }
 499   3      
 500   3                      }
 501   2                      else
 502   2                              POINTER1=0;
 503   2              }                                       //开中断
 504   1      }
 505          
 506          void S1_int (void) interrupt 5      //I2C
 507          {
 508   1         if (S1STA==0x00)
 509   1                 {
 510   2                  FF=1;
 511   2                  S1CON=0xD5; //STA=0   STO=1    SI=0     AA=1
 512   2                 }
 513   1         if (S1STA==0x08)
 514   1                 {
 515   2                  S1DAT=SLA;
 516   2                  S1CON=0xC5; //STA=0   STO=0    SI=0     AA=1
 517   2                 }
 518   1         if (S1STA==0x10)
 519   1                 {
 520   2                  S1DAT=SLA;
 521   2                  S1CON=0xC5; //STA=0   STO=0    SI=0     AA=1
 522   2                 }
 523   1         if (S1STA==0x18)
 524   1                 {
 525   2                  S1DAT=COMM;
 526   2                  S1CON=0xC5; //STA=0   STO=0    SI=0     AA=1
 527   2                 }
 528   1         if (S1STA==0x20)     //    /////////////////////////////////8
 529   1                 {
 530   2                  FF=1;
 531   2                  S1CON=0xD5; //STA=0   STO=1    SI=0     AA=1
 532   2                 }
 533   1         if (S1STA==0x28)
 534   1                 {
 535   2                  S1CON=0xD5; //STA=0   STO=1    SI=0     AA=1
 536   2                  FF=1;
 537   2                 }
 538   1         if (S1STA==0x30)     //    /////////////////////////////////8
 539   1                 {
 540   2                  FF=1;
 541   2                  S1CON=0xD5; //STA=0   STO=1    SI=0     AA=1
 542   2                 }
 543   1         if (S1STA==0x38)
 544   1                 {
 545   2                  S1CON=0xE5; //STA=1   STO=0    SI=0     AA=1
 546   2                 }
 547   1         if (S1STA==0x40)
 548   1                 {
 549   2                  S1CON=0xC5; //STA=0   STO=0    SI=0     AA=1
 550   2                 }
C51 COMPILER V7.06   DRIVER0425                                                            06/03/2005 15:08:33 PAGE 10  

 551   1         if (S1STA==0x48)     //    /////////////////////////////////8
 552   1                 {
 553   2                  FF=1;
 554   2                  S1CON=0xD5; //STA=0   STO=1    SI=0     AA=1
 555   2                 }
 556   1         if (S1STA==0x50)
 557   1                 {
 558   2                  GET=S1DAT;
 559   2                  S1CON=0xC1; //STA=0   STO=0    SI=0     AA=0
 560   2                 }
 561   1         if (S1STA==0x58)
 562   1                 {
 563   2                      FF=1;
 564   2                      S1CON=0xD5; //STA=0   STO=1   SI=0     AA=1
 565   2                 }
 566   1      }
 567          
 568          void CT0_int (void) interrupt 6                 //横摆中心
 569          {
 570   1              CTI0=0;
 571   1              CTCON=CTCON&0xFC;
 572   1              if(pp.k4==OFF)
 573   1              {
 574   2                      IEN1=IEN1&0XFE;
 575   2                      P4_1=0;                 //关8254门控信号
 576   2                      P4_2=1;
 577   2                      center_excursion=0;
 578   2              }
 579   1              else
 580   1              {
 581   2                      if(decrease==1)
 582   2                      {
 583   3                              P4_1=0;
 584   3                              if(pp.v41<=200)
 585   3                                      delay(2);
 586   3                              else if(pp.v41<=400)
 587   3                                      delay(4);
 588   3                              else if(pp.v41<=600)
 589   3                                      delay(8);
 590   3                              else if(pp.v41<=800)
 591   3                                      delay(22);
 592   3                              else if(pp.v41<=1000)
 593   3                                      delay(25);
 594   3                              else
 595   3                                      delay(60);
 596   3                              if(pp.v41>=600&&pp.v41<=800)
 597   3                              delay(20);
 598   3                              temp_c++;       
 599   3                              if(share+1+osc_adjudge<c_decrease)
 600   3                              {
 601   4                                      CTCON=CTCON|0x08;               //CT1下降沿
 602   4                                      if(temp_c%2==0||first_center==1)
 603   4                                      {
 604   5                                              share++;
 605   5                                              c_t42_l=pp.t42_l*5*(c_decrease-share)/c_decrease;
 606   5                                              c_t42_r=pp.t42_r*5*(c_decrease-share)/c_decrease;
 607   5                                              out1=last_out1*(c_decrease-share)/c_decrease;
 608   5                                              out2=out1;
 609   5      
 610   5                                              COM=0X76;
 611   5                                              COUNT1=out1%256;
 612   5                                              COUNT1=out1/256;
C51 COMPILER V7.06   DRIVER0425                                                            06/03/2005 15:08:33 PAGE 11  

 613   5                                              COM=0XB6;
 614   5                                              COUNT2=out2%256;
 615   5                                              COUNT2=out2/256;
 616   5                                              IEN1=IEN1|0X02;
 617   5                                              P4_1=1;
 618   5                                              temp_c=0;
 619   5                                              if(first_center==1)
 620   5                                                      first_center=0;
 621   5                                      }
 622   4                                      else
 623   4                                      {
 624   5                                              IEN1=IEN1|0X02;
 625   5                                              P4_1=1;
 626   5                                      }
 627   4                              }
 628   3                              else
 629   3                              {
 630   4                                      if(temp_c!=2)
 631   4                                      {
 632   5                                              CTCON=CTCON|0x08;               //CT1下降沿
 633   5                                              COM=0X76;
 634   5                                              COUNT1=out1%256;
 635   5                                              COUNT1=out1/256;
 636   5                                              COM=0XB6;
 637   5                                              COUNT2=out2%256;
 638   5                                              COUNT2=out2/256;
 639   5                                              IEN1=IEN1|0X02;
 640   5                                              P4_1=1;
 641   5                                      }
 642   4                                      else
 643   4                                      {
 644   5                                              P4_1=0;                 //关8254门控信号
 645   5                                              CTCON=CTCON&0XF0;
 646   5                                              IEN1=IEN1&0XFC;         //禁止CT0,CT1
 647   5                                              decrease_ok=1;
 648   5                                      }
 649   4                              }
 650   3      
 651   3                              if(decreased==0)
 652   3                                      decreased=1;
 653   3                      }
 654   2                      else
 655   2                      {
 656   3                              if(osc==1)
 657   3                              {
 658   4                                      P4_1=0;
 659   4                                      delay(15);
 660   4                                      if(osc_change==1)
 661   4                                      {
 662   5                                              out1=out1+pp.da41*10;   
 663   5                                              osc_add++;
 664   5                                      }
 665   4                                      else
 666   4                                      {
 667   5                                              out1=out1-pp.da41*10;           
 668   5                                              osc_dec++;
 669   5                                      }
 670   4                                      out2=out1;
 671   4                                      CTCON=CTCON|0X08;
 672   4                                      COM=0X76;
 673   4                                      COUNT1=out1%256;
 674   4                                      COUNT1=out1/256;
C51 COMPILER V7.06   DRIVER0425                                                            06/03/2005 15:08:33 PAGE 12  

 675   4                                      COM=0XB6;
 676   4                                      COUNT2=out2%256;
 677   4                                      COUNT2=out2/256;
 678   4                                      IEN1=IEN1|0X02;
 679   4                                      P4_1=1;
 680   4                                      osc=0;
 681   4                              }
 682   3                              CTCON=CTCON|0x08;               //CT1上升沿
 683   3                              IEN1=IEN1|0X02;                 //允许CT1
 684   3                      }
 685   2              }
 686   1      }
 687          
 688          void CT1_int (void) interrupt 7                 //整个摆宽
 689          {
 690   1              CTI1=0;
 691   1              P4_1=0;                                 //out1、out2门控信号
 692   1              CTCON=CTCON&0xF3;
 693   1              if(osc_ok==0)
 694   1              {
 695   2                      COM=0XB6;
 696   2                      COUNT2=out2%256;
 697   2                      COUNT2=out2/256;
 698   2                      osc_ok=1;
 699   2              }
 700   1              P4_3=~P4_3;                             //换横摆方向
 701   1              t_edge=~t_edge;                         //换边缘标志
 702   1              P4_6=~P4_6;                             //横摆输出
 703   1              if(decreased==1)
 704   1              {
 705   2      
 706   2                      if(c_t42_l<1)
 707   2                              c_t42_l=1;
 708   2                      if(c_t42_r<1)
 709   2                              c_t42_r=1;
 710   2                      IEN1=IEN1|0X10;
 711   2              }
 712   1              else
 713   1              {
 714   2                      if(center_excursion==1&&judge_ok==0)
 715   2                      {

⌨️ 快捷键说明

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