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

📄 bat_ctrl24_ac.lst

📁 光电控制器的源程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 258          /*编写日期:
 259          /*最后修改日期:
 260          /********************************************************************/ 
 261          void Init_IO()
 262          {
 263   1              Clr_Dog();
 264   1              
 265   1              P0M1 = 0x0c;    //B00001100
 266   1              P0M2 = 0x33;    //B00110011
 267   1              ADINS = 0x60;   //B01100000
 268   1              P1M1 = 0x2F;    //B00101111
 269   1              P1M2 = 0x04;    //B00010000
 270   1              PT0AD = 0x0C;   //禁止P02、P03的数字输入功能
 271   1      }
 272          /*********************************************************************/
 273          /*函数名:
 274          /*功能:
 275          /*输入参数:
 276          /*返回值:
 277          /*调用函数:
 278          /*被调用函数:
 279          /*编写日期:
 280          /*最后修改日期:
 281          /********************************************************************/ 
 282          void Init_AD()
 283          {
 284   1              ADINS = 0x60;   //选择CH1、CH2
 285   1              ADCON1 = 0x45;  //允许中断,使能ADC1,立即启动方式
 286   1              ADMODA = 0x20;  //双通道连续转换
 287   1              ADMODB = 0x80;  //分频 = 5
 288   1      }
 289          /*********************************************************************/
 290          /*函数名:
 291          /*功能:
 292          /*输入参数:
 293          /*返回值:
 294          /*调用函数:
 295          /*被调用函数:
 296          /*编写日期:
 297          /*最后修改日期:
 298          /********************************************************************/ 
 299          void Init_Timer()
 300          {
 301   1              Clr_Dog();
 302   1              
 303   1              TRIM |= 0x80;   //选择内部RC振荡器的输出作为CPU时钟 
C51 COMPILER V7.50   BAT_CTRL24_AC                                                         08/21/2007 20:04:08 PAGE 6   

 304   1              TMOD = 0x11;    //定时器0工作在模式1
 305   1              TAMOD = 0x00;   //定时器0工作在模式1
 306   1              TH0 = 0x80;             //
 307   1              TL0 = 0x00;             //
 308   1              TH1 = 0x80;
 309   1              TL1 = 0x00;
 310   1              TR0 = 1;                //打开定时器0
 311   1              TR1 = 1;
 312   1      }
 313          /*********************************************************************/
 314          /*函数名:
 315          /*功能:
 316          /*输入参数:
 317          /*返回值:
 318          /*调用函数:
 319          /*被调用函数:
 320          /*编写日期:
 321          /*最后修改日期:
 322          /********************************************************************/ 
 323          void Init_RTC()
 324          {       
 325   1              RTCH = 0xE0;
 326   1              RTCL = 0xFF;    //一个周期1s
 327   1              RTCCON = 0x63;  //内部RC振荡器输出时钟,中断使能,RTC启动
 328   1      }
 329          /*********************************************************************/
 330          /*函数名:
 331          /*功能:
 332          /*输入参数:
 333          /*返回值:
 334          /*调用函数:
 335          /*被调用函数:
 336          /*编写日期:
 337          /*最后修改日期:
 338          /********************************************************************/ 
 339          void Init_WDT()
 340          {
 341   1              Clr_Dog();
 342   1              
 343   1              ACC = WDCON; //读取WDT控制寄存器 
 344   1              ACC = ACC|0x04; //置位ACC.2准备启动WDT 
 345   1              WDL = 0x80; //设置8位倒计时器初值 
 346   1              WDCON = ACC; //启动WDT 
 347   1              WFEED1 = 0xA5; //清零第一部分 
 348   1              WFEED2 = 0x5A; //清零第二部分
 349   1      }
 350          /*********************************************************************/
 351          /*函数名:
 352          /*功能:
 353          /*输入参数:
 354          /*返回值:
 355          /*调用函数:
 356          /*被调用函数:
 357          /*编写日期:
 358          /*最后修改日期:
 359          /********************************************************************/ 
 360          void Init_Interrupt()
 361          {
 362   1              EWDRT = 1;      //实时时钟中断使能
 363   1              EAD = 1;        //AD中断使能
 364   1              ET0 = 1;        //
 365   1              ET1 = 1;
C51 COMPILER V7.50   BAT_CTRL24_AC                                                         08/21/2007 20:04:08 PAGE 7   

 366   1      //      EA = 1;         //总中断使能
 367   1      }
 368          /*********************************************************************/
 369          /*函数名:
 370          /*功能:
 371          /*输入参数:
 372          /*返回值:
 373          /*调用函数:
 374          /*被调用函数:
 375          /*编写日期:
 376          /*最后修改日期:
 377          /********************************************************************/ 
 378          void Init_All()
 379          {
 380   1              Clr_Dog();
 381   1      
 382   1              Init_Var();
 383   1              Init_IO();
 384   1              Init_AD();
 385   1              Init_Timer();
 386   1              Init_RTC();
 387   1              Init_WDT();
 388   1              Init_Interrupt();
 389   1              Led_Ctrl(1,2);  //L3闪烁——正常运行
 390   1              Led_Ctrl(0,0);  //L2灭——没有过充或过放
 391   1              P04 = 0;                //负荷12关
 392   1              P05 = 0;                //关闭交流充电
 393   1              P14 = 0;                //
 394   1      }
 395          /*********************************************************************/
 396          /*函数名:
 397          /*功能:
 398          /*输入参数:
 399          /*返回值:
 400          /*调用函数:
 401          /*被调用函数:
 402          /*编写日期:
 403          /*最后修改日期:
 404          /********************************************************************/ 
 405          uchar Get_Mode()
 406          {
 407   1              uchar mode;
 408   1      
 409   1              Clr_Dog();
 410   1      
 411   1              mode = 0;
 412   1              if(!P11)
 413   1              {
 414   2                      mode += 1;
 415   2              }
 416   1              if(!P10)
 417   1              {
 418   2                      mode += 2;
 419   2              }
 420   1              if(!P13)
 421   1              {
 422   2                      mode += 4;
 423   2              }
 424   1              if(!P12)
 425   1              {
 426   2                      mode += 8;
 427   2              }
C51 COMPILER V7.50   BAT_CTRL24_AC                                                         08/21/2007 20:04:08 PAGE 8   

 428   1              return(mode);
 429   1      }
 430          /*********************************************************************/
 431          /*函数名:
 432          /*功能:
 433          /*输入参数:
 434          /*返回值:
 435          /*调用函数:
 436          /*被调用函数:
 437          /*编写日期:
 438          /*最后修改日期:
 439          /********************************************************************/ 
 440          void GetAd()
 441          {
 442   1              uchar i;
 443   1              uint BatTmp,SunTmp;
 444   1              Clr_Dog();
 445   1              
 446   1              EAD = 0;
 447   1              BatTmp = 0;
 448   1              SunTmp = 0;
 449   1              for(i=0;i<8;i++)
 450   1              {
 451   2                      BatTmp += AdValue.BatAd[i];
 452   2                      SunTmp += AdValue.SunAd[i];
 453   2              }
 454   1              BatValue = BatTmp/8;
 455   1              SunValue = SunTmp/8;
 456   1              EAD = 1;
 457   1      }
 458          /*********************************************************************/
 459          /*函数名:
 460          /*功能:
 461          /*输入参数:
 462          /*返回值:
 463          /*调用函数:
 464          /*被调用函数:
 465          /*编写日期:
 466          /*最后修改日期:
 467          /********************************************************************/ 
 468          void Main_Logic24(uchar TimeMode)
 469          {
 470   1              Clr_Dog();
 471   1      
 472   1              if(BatValue>TINGAC24)
 473   1              {
 474   2                      P05 = 0;                        //关闭交流充电
 475   2              }
 476   1              if(BatValue<OFFAC24)
 477   1              {
 478   2                      P05 = 0;                        //关闭交流充电
 479   2              }
 480   1              if(BatValue>OFFAC24+10 && BatValue<YUNAC24)
 481   1              {
 482   2                      P05 = 1;                        //开启交流充电
 483   2              }
 484   1      
 485   1              Clr_Dog();
 486   1              
 487   1              if(BatValue>TINGCHONG24)// && P14==0)
 488   1              {
 489   2                      if(!StopFlag)
C51 COMPILER V7.50   BAT_CTRL24_AC                                                         08/21/2007 20:04:08 PAGE 9   

 490   2                      {
 491   3                              ET0 = 0;
 492   3                              enPWM = 0;      //禁止PWM
 493   3                              P14 = 0;        //停止充电
 494   3                              StopFlag = 1;   //停止充电
 495   3                              ET0 = 1;
 496   3                      }
 497   2                      PowerFlag = 1;  //允许放电
 498   2                      Led_Ctrl(1,2);  //运行状态灯L3闪烁
 499   2                      Led_Ctrl(0,1);  //过充过放灯L2亮
 500   2              }
 501   1              else if(BatValue>GUOCHONG24)
 502   1              {
 503   2                      if(!StopFlag)
 504   2                      {
 505   3                              ET0 = 0;
 506   3                              enPWM = 1;      //允许PWM
 507   3                              ET0 = 1;
 508   3                      }
 509   2                      PowerFlag = 1;  //允许放电
 510   2                      if(SunValue>BatValue)
 511   2                              Led_Ctrl(1,1);  //运行状态灯L3亮
 512   2                      else
 513   2                              Led_Ctrl(1,2);
 514   2                      Led_Ctrl(0,1);  //过充过放灯L2亮
 515   2              }
 516   1              else if(BatValue>YUNFANG24)
 517   1              {
 518   2                      if(!StopFlag)
 519   2                      {
 520   3                              ET0 = 0;
 521   3                              enPWM = 0;      //禁止PWM
 522   3                              P14 = 1;        //全速充

⌨️ 快捷键说明

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