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

📄 subprog.lst

📁 Keil单片机软件开发平台下的一个51系列单片机工程
💻 LST
📖 第 1 页 / 共 3 页
字号:
 523          {
 524   1          unsigned int DaOffset;
 525   1          DaOffset = 0;
 526   1          if(MeasureUAdjust > SetupU + UZero*2)
 527   1          {//电压大于设定值
 528   2              if (MeasureUAdjust-SetupU > 50*UZero)
 529   2              {
 530   3                  DaOffset = (MeasureUAdjust-SetupU)/2;
 531   3              }
 532   2              else if (MeasureUAdjust-SetupU > 25*UZero)
 533   2              {
 534   3                  DaOffset = (MeasureUAdjust-SetupU)/4;
 535   3              }
 536   2              else
 537   2              {
 538   3                  DaOffset = 1;//小偏差 微调
 539   3              }
 540   2              if(DaOffset > 20)
 541   2              {
 542   3                  DaOffset = 20;
 543   3              }
 544   2              if(RealTimeDA > DaOffset)
 545   2              {
 546   3                 RealTimeDA -= DaOffset;
 547   3              }
 548   2              else
 549   2              {
 550   3                 RealTimeDA = 0;
C51 COMPILER V7.06   SUBPROG                                                               01/22/2007 09:50:03 PAGE 10  

 551   3              }
 552   2          }
 553   1          else if(MeasureUAdjust < SetupU-UZero*2)
 554   1          {//电压小于设定值
 555   2              if (MeasureI < SetupI-IZero)
 556   2              {//电流
 557   3                  if (SetupU - MeasureUAdjust > 50*UZero)
 558   3                  {
 559   4                      DaOffset = (SetupU - MeasureUAdjust)/2;
 560   4                  }
 561   3                  else if(SetupU - MeasureUAdjust > 25*UZero)
 562   3                  {
 563   4                      DaOffset = (SetupU-MeasureUAdjust)/4;
 564   4                  }
 565   3                  else
 566   3                  {
 567   4                      DaOffset = 1;
 568   4                  }
 569   3              }
 570   2              if(DaOffset > 10)
 571   2              {
 572   3                  DaOffset = 10;
 573   3              }
 574   2              RealTimeDA+=DaOffset;
 575   2          }
 576   1          if(RealTimeDA > SetupIDA)
 577   1          {
 578   2              RealTimeDA = SetupIDA;
 579   2          }
 580   1          SetupDA(RealTimeDA + DAb);
 581   1      }
 582          /*********************************************************************************************************
 583          ** 函数名称: void RunToStop()
 584          ** 功能描述: 由运行状态转为停止状态
 585          ** 输 入:   
 586          ** 输 出:   
 587          ** 全局变量: 
 588          ** 调用模块: 
 589          **
 590          ** 作 者: 刘宝贵
 591          ** 日 期: 2006年4月8日
 592          **-------------------------------------------------------------------------------------------------------
 593          ** 修改人:
 594          ** 日 期:
 595          **-------------------------------------------------------------------------------------------------------
 596          *********************************************************************************************************/
 597          void RunToStop()
 598          {
 599   1          ChangeStateFlag = 1;
 600   1          while(WriteOutDA>10)
 601   1          {
 602   2              if(WriteOutDA>600)
 603   2              {
 604   3                  WriteOutDA = WriteOutDA-100;
 605   3              }
 606   2              else
 607   2              {
 608   3                  WriteOutDA = WriteOutDA-10;
 609   3              }
 610   2              SetupDA(WriteOutDA);
 611   2              os_wait(K_TMO,100/OS_MSEL_PER_TICKS,0);
 612   2          }
C51 COMPILER V7.06   SUBPROG                                                               01/22/2007 09:50:03 PAGE 11  

 613   1          SetupDA(0);
 614   1          os_wait(K_TMO,2000/OS_MSEL_PER_TICKS,0);
 615   1          os_wait(K_TMO,1000/OS_MSEL_PER_TICKS,0);
 616   1          JDQ_FMC       = JDQ_ON;
 617   1          os_wait(K_TMO,2000/OS_MSEL_PER_TICKS,0);
 618   1          os_wait(K_TMO,1000/OS_MSEL_PER_TICKS,0);
 619   1          JDQ_CHARGE    = JDQ_OFF;
 620   1          JDQ_DISCHARGE = JDQ_OFF;
 621   1          os_wait(K_TMO,10/OS_MSEL_PER_TICKS,0);
 622   1          ChangeStateFlag = 0;
 623   1      }
 624          /*********************************************************************************************************
 625          ** 函数名称: void Stop()
 626          ** 功能描述: 停止状态
 627          ** 输 入:   
 628          ** 输 出:   
 629          ** 全局变量: 
 630          ** 调用模块: 
 631          **
 632          ** 作 者: 刘宝贵
 633          ** 日 期: 2006年6月28日
 634          **-------------------------------------------------------------------------------------------------------
 635          ** 修改人:
 636          ** 日 期:
 637          **-------------------------------------------------------------------------------------------------------
 638          *********************************************************************************************************/
 639          void Stop()
 640          {
 641   1          SetupDA(0);
 642   1          JDQ_FMC       = JDQ_ON;
 643   1          JDQ_CHARGE    = JDQ_OFF;
 644   1          JDQ_DISCHARGE = JDQ_OFF;
 645   1      }
 646          /*********************************************************************************************************
 647          ** 函数名称: void StopToCharge()
 648          ** 功能描述: 由停止状态转为充电状态
 649          ** 输 入:   
 650          ** 输 出:   
 651          ** 全局变量: 
 652          ** 调用模块: 
 653          **
 654          ** 作 者: 刘宝贵
 655          ** 日 期: 2006年4月8日
 656          **-------------------------------------------------------------------------------------------------------
 657          ** 修改人:
 658          ** 日 期:
 659          **-------------------------------------------------------------------------------------------------------
 660          *********************************************************************************************************/
 661          void StopToCharge()
 662          {
 663   1          unsigned char i;
 664   1          unsigned long temp32;
 665   1          ChangeStateFlag = 1;
 666   1          SetupDA(0);
 667   1          os_wait(K_TMO,1500/OS_MSEL_PER_TICKS,0);
 668   1          os_wait(K_TMO,1500/OS_MSEL_PER_TICKS,0);
 669   1          if(SetupCurrentDirection == 0)//正常方向
 670   1          {
 671   2              JDQ_CHARGE    = JDQ_ON;
 672   2              JDQ_DISCHARGE = JDQ_OFF;
 673   2          }
 674   1          else //逆向充电
C51 COMPILER V7.06   SUBPROG                                                               01/22/2007 09:50:03 PAGE 12  

 675   1          {
 676   2              JDQ_CHARGE    = JDQ_OFF;
 677   2              JDQ_DISCHARGE = JDQ_ON;
 678   2          }
 679   1          os_wait(K_TMO,1000/OS_MSEL_PER_TICKS,0);
 680   1          JDQ_FMC       = JDQ_OFF;
 681   1          os_wait(K_TMO,500/OS_MSEL_PER_TICKS,0);
 682   1          temp32 = SetupI;
 683   1          temp32*=DAk;
 684   1          temp32/=10000;
 685   1          SetupIDA = (unsigned int)temp32;
 686   1          RealTimeDA = SetupIDA;
 687   1          for(i = 0;i<100;i++)
 688   1          {
 689   2              if(State!=RUN)
 690   2              {
 691   3                  break;
 692   3              }
 693   2              SetupDA(((RealTimeDA + DAb)/100)*i);
 694   2              os_wait(K_TMO,50/OS_MSEL_PER_TICKS,0);
 695   2          }
 696   1          if(State==RUN)
 697   1          {
 698   2             SetupDA(SetupIDA + DAb);
 699   2          }
 700   1          ChangeStateFlag = 0;
 701   1      }
 702          /*********************************************************************************************************
 703          ** 函数名称: void StopToDisCharge()
 704          ** 功能描述: 由停止状态转为放电状态
 705          ** 输 入:   
 706          ** 输 出:   
 707          ** 全局变量: 
 708          ** 调用模块: 
 709          **
 710          ** 作 者: 刘宝贵
 711          ** 日 期: 2006年4月8日
 712          **-------------------------------------------------------------------------------------------------------
 713          ** 修改人:
 714          ** 日 期:
 715          **-------------------------------------------------------------------------------------------------------
 716          *********************************************************************************************************/
 717          void StopToDisCharge()
 718          {
 719   1          unsigned long temp32;
 720   1          ChangeStateFlag = 1;
 721   1          SetupDA(0);
 722   1          os_wait(K_TMO,1500/OS_MSEL_PER_TICKS,0);
 723   1          os_wait(K_TMO,1500/OS_MSEL_PER_TICKS,0);
 724   1          if(SetupCurrentDirection == 0)//正常方向
 725   1          {
 726   2              JDQ_CHARGE    = JDQ_OFF;
 727   2              JDQ_DISCHARGE = JDQ_ON;
 728   2          }
 729   1          else //逆向充电
 730   1          {
 731   2              JDQ_CHARGE    = JDQ_ON;
 732   2              JDQ_DISCHARGE = JDQ_OFF;
 733   2          }
 734   1          os_wait(K_TMO,1000/OS_MSEL_PER_TICKS,0);
 735   1          JDQ_FMC       = JDQ_OFF;
 736   1          os_wait(K_TMO,500/OS_MSEL_PER_TICKS,0);
C51 COMPILER V7.06   SUBPROG                                                               01/22/2007 09:50:03 PAGE 13  

 737   1          temp32 = SetupI;
 738   1          temp32*=DAk;
 739   1          temp32/=10000;
 740   1          SetupIDA = (unsigned int)temp32;
 741   1          RealTimeDA = 0;
 742   1      //    RealTimeDA = SetupIDA;
 743   1          while(MeasureI < SetupI/20 || RealTimeDA < DAb+150 )
 744   1          {
 745   2              if(State!=RUN)
 746   2              {
 747   3                  break;
 748   3              }
 749   2              RealTimeDA+=1;
 750   2              SetupDA(RealTimeDA);
 751   2              os_wait(K_TMO,100/OS_MSEL_PER_TICKS,0);
 752   2              if(RealTimeDA>1000)
 753   2              {
 754   3                  State = STOP;
 755   3              }
 756   2          }
 757   1          while(RealTimeDA < (SetupIDA+DAb)-10)
 758   1          {
 759   2              if(State!=RUN)
 760   2              {
 761   3                  break;
 762   3              }
 763   2              RealTimeDA+=10;
 764   2              SetupDA(RealTimeDA);
 765   2              os_wait(K_TMO,200/OS_MSEL_PER_TICKS,0);
 766   2          }
 767   1          if(State==RUN)
 768   1          {
 769   2              RealTimeDA = SetupIDA + DAb;
 770   2              SetupDA(RealTimeDA);
 771   2          }
 772   1          ChangeStateFlag = 0;
 773   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2853    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      37
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       2
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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