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

📄 subprog.lst

📁 Keil单片机软件开发平台下的一个51系列单片机工程
💻 LST
📖 第 1 页 / 共 3 页
字号:
 257   1      }
 258          /*********************************************************************************************************
 259          ** 函数名称: void SetupDA(unsigned int temp16)
 260          ** 功能描述: 设定DA
 261          ** 输 入:   
 262          ** 输 出:   
 263          ** 全局变量: 
 264          ** 调用模块: 
 265          ** 注  意:
 266          ** 作 者: 
 267          ** 日 期: 
 268          **-------------------------------------------------------------------------------------------------------
 269          ** 修改人:
 270          ** 日 期:
 271          **-------------------------------------------------------------------------------------------------------
 272          *********************************************************************************************************/
 273          void SetupDA(unsigned int temp16)
 274          {
 275   1          if(temp16 > 4094)
 276   1          {
 277   2              temp16 = 4094;
 278   2          }
 279   1          WriteOutDA = temp16;
 280   1          WriteOutXRAM(CPLD_PWM_HIGH,(unsigned char)(temp16>>8));
 281   1          WriteOutXRAM(CPLD_PWM_LOW ,(unsigned char)temp16);
 282   1      }
 283          /*********************************************************************************************************
 284          ** 函数名称: Midst
 285          ** 功能描述: 求中间值 返回中间值
 286          ** 输 入:   pbuf被处理数据区首地址,width:被处理数据区宽度
 287          ** 输 出:   中间值
 288          ** 全局变量: 无
 289          ** 调用模块: 无
 290          **
 291          ** 作 者: 刘宝贵
 292          ** 日 期: 2004年4月19日
 293          **-------------------------------------------------------------------------------------------------------
 294          ** 修改人:
 295          ** 日 期:
 296          **-------------------------------------------------------------------------------------------------------
 297          *********************************************************************************************************/
 298          /*
 299          uint16 Midst(uint16 *pbuf, uint8 width)
 300          {
 301              int8 m, n;
 302              uint16 itemp;
C51 COMPILER V7.06   SUBPROG                                                               01/22/2007 09:50:03 PAGE 6   

 303              uint16 xdata buf[99];
 304              for (m = 0; m < width; m++)
 305              {
 306                  buf[m] = pbuf[m];
 307              }
 308              for (m = 0; m < width; m++)
 309              {
 310                  for ( n = m - 1; n >= 0; n--)
 311                  {
 312                      if (buf[n+1] > buf[n])
 313                      {
 314                          itemp = buf[n];
 315                          buf[n] = buf[n+1];
 316                          buf[n+1] = itemp;
 317                      }
 318                  }
 319              }
 320              itemp = buf[width/2];
 321          
 322              itemp+= buf[width/2-1];
 323              itemp+= buf[width/2-2];
 324              itemp+= buf[width/2+1];
 325              itemp+= buf[width/2+2];
 326              itemp/=5;
 327              return itemp;
 328          //    return buf[width/2];
 329          }
 330          /*********************************************************************************************************
 331          ** 函数名称: uint16 MidstStruct(struct  DataRecord *pbuf, uint8 width,uint16 NewRecord)
 332          ** 功能描述: 求中间值 返回中间值
 333          ** 输 入:   pbuf被处理数据区首地址,width:被处理数据区宽度
 334          ** 输 出:   中间值
 335          ** 全局变量: 无
 336          ** 调用模块: 无
 337          **
 338          ** 作 者: 刘宝贵
 339          ** 日 期: 2006年3月25日
 340          **-------------------------------------------------------------------------------------------------------
 341          ** 修改人:
 342          ** 日 期:
 343          **-------------------------------------------------------------------------------------------------------
 344          *********************************************************************************************************/
 345          uint16 MidstStruct(struct  DataRecord *pbuf, uint8 width,uint16 NewRecord)
 346          {
 347   1          uint8 i,j;
 348   1          struct DataRecord *ptemp;
 349   1          bit flag;
 350   1          flag = 0;
 351   1          ptemp = pbuf;
 352   1          for(i = 0;i<width; i++,pbuf++)
 353   1          {
 354   2              if(pbuf->Sequence >0)
 355   2              {
 356   3                  if(--(pbuf->Sequence)==0)
 357   3                  {
 358   4                      j = i;
 359   4                  }
 360   3              }
 361   2          }
 362   1          pbuf = ptemp + j;
 363   1          for(i = j;i<width-1; i++,pbuf++)
 364   1          {
C51 COMPILER V7.06   SUBPROG                                                               01/22/2007 09:50:03 PAGE 7   

 365   2              pbuf->Record   = (pbuf+1)->Record;
 366   2              pbuf->Sequence = (pbuf+1)->Sequence;
 367   2          }
 368   1          for(;i>0;i--,pbuf--)
 369   1          {
 370   2              if(NewRecord < (pbuf-1)->Record)
 371   2              {
 372   3                  pbuf->Record = (pbuf-1)->Record;
 373   3                  pbuf->Sequence = (pbuf-1)->Sequence;
 374   3              }
 375   2              else
 376   2              {
 377   3                  break;
 378   3              }
 379   2          }
 380   1          pbuf->Record = NewRecord;
 381   1          pbuf->Sequence = width;
 382   1          return((ptemp+width/2)->Record);
 383   1      }
 384          /*********************************************************************************************************
 385          ** 函数名称: unsigned char WriteOutXRAM(unsigned char Address,unsigned char temp8)
 386          ** 功能描述: 写单片机外扩的XRAM,要先不使能单片机内部的XRAM,写完后再使能CPU内部XRAM
 387          ** 输 入:   
 388          ** 输 出:   
 389          ** 全局变量: 无
 390          ** 调用模块: 无
 391          **
 392          ** 作 者: 刘宝贵
 393          ** 日 期: 2006年3月24日
 394          **-------------------------------------------------------------------------------------------------------
 395          ** 修改人:
 396          ** 日 期:
 397          **-------------------------------------------------------------------------------------------------------
 398          *********************************************************************************************************/
 399          void WriteOutXRAM(unsigned char Address,unsigned char temp8)
 400          {
 401   1          P0 = Address;
 402   1          ALE = 0;
 403   1          P0 = temp8;
 404   1          WR = 0;
 405   1          WR = 1;
 406   1          ALE = 1;
 407   1      }
 408          /*********************************************************************************************************
 409          ** 函数名称: unsigned char ReadOutXRAM(unsigned char Address)
 410          ** 功能描述: 读单片机外扩的XRAM,要先不使能单片机内部的XRAM,读完后再使能CPU内部XRAM
 411          ** 输 入:   
 412          ** 输 出:   
 413          ** 全局变量: 无
 414          ** 调用模块: 无
 415          **
 416          ** 作 者: 刘宝贵
 417          ** 日 期: 2006年3月24日
 418          **-------------------------------------------------------------------------------------------------------
 419          ** 修改人:
 420          ** 日 期:
 421          **-------------------------------------------------------------------------------------------------------
 422          *********************************************************************************************************/
 423          unsigned char ReadOutXRAM(unsigned char Address)
 424          {
 425   1          unsigned char i;
 426   1          P0 = Address;
C51 COMPILER V7.06   SUBPROG                                                               01/22/2007 09:50:03 PAGE 8   

 427   1          ALE = 0;
 428   1          P0 = 0xFF;
 429   1          RD = 0;
 430   1          i = P0;
 431   1          RD = 1;
 432   1          ALE = 1;
 433   1          return(i);
 434   1      }
 435          /*********************************************************************************************************
 436          ** 函数名称: unsigned int ClaculateSub(unsigned int Count,unsigned int b,unsigned int k)
 437          ** 功能描述: 对给定的数据进行处理
 438          ** 输 入:   
 439          ** 输 出:   
 440          ** 全局变量: 
 441          ** 调用模块: 无
 442          **
 443          ** 作 者: 刘宝贵
 444          ** 日 期: 2006年4月6日
 445          **-------------------------------------------------------------------------------------------------------
 446          ** 修改人:
 447          ** 日 期:
 448          **-------------------------------------------------------------------------------------------------------
 449          *********************************************************************************************************/
 450          unsigned int ClaculateSub(unsigned int Count,unsigned int b,unsigned int k)
 451          {
 452   1          unsigned long temp32;
 453   1          if( (4095-b) > Count)
 454   1          {
 455   2              temp32 = (4095-b) - Count;
 456   2          }
 457   1          else
 458   1          {
 459   2              temp32 = 0;
 460   2          }
 461   1          temp32*=k;
 462   1          temp32/=1000;
 463   1          return ( (unsigned int)temp32 );
 464   1      }
 465          /*********************************************************************************************************
 466          ** 函数名称: bit TestDataSub(unsigned int Data16A,unsigned int Data16B,unsigned char multiple)
 467          ** 功能描述: 测试给定的数据A和数据B是否相差给定的倍数分之一
 468          ** 输 入:   
 469          ** 输 出:   
 470          ** 全局变量: 
 471          ** 调用模块: 无
 472          **
 473          ** 作 者: 刘宝贵
 474          ** 日 期: 2006年4月6日
 475          **-------------------------------------------------------------------------------------------------------
 476          ** 修改人:
 477          ** 日 期:
 478          **-------------------------------------------------------------------------------------------------------
 479          *********************************************************************************************************/
 480          bit TestDataSub(unsigned int Data16A,unsigned int Data16B,unsigned char Multiple)
 481          {
 482   1          if( Data16A > Data16B)
 483   1          {
 484   2               if(Data16A - Data16B > Data16A/Multiple)
 485   2               {
 486   3                   return(1);
 487   3               }
 488   2               else
C51 COMPILER V7.06   SUBPROG                                                               01/22/2007 09:50:03 PAGE 9   

 489   2               {
 490   3                   return(0);
 491   3               }
 492   2          }
 493   1          else
 494   1          {
 495   2               if(Data16B - Data16A > Data16B/Multiple)
 496   2               {
 497   3                   return(1);
 498   3               }
 499   2               else
 500   2               {
 501   3                   return(0);
 502   3               }
 503   2          }
 504   1      }
 505          /*********************************************************************************************************
 506          ** 函数名称: void AdjustVoltage()
 507          ** 功能描述: 恒压充电时进行恒压调节
 508          ** 输 入:   
 509          ** 输 出:   
 510          ** 全局变量: 
 511          ** 调用模块: 
 512          **
 513          ** 作 者: 刘宝贵
 514          ** 日 期: 2006年4月8日
 515          **-------------------------------------------------------------------------------------------------------
 516          ** 修改人:
 517          ** 日 期:
 518          **-------------------------------------------------------------------------------------------------------
 519          *********************************************************************************************************/
 520          #define UZero  2 
 521          #define IZero  2 
 522          void AdjustVoltage()

⌨️ 快捷键说明

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