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

📄 bat_ctrl12_ac.lst

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

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

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

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

 490   2                      if(!StopFlag)
 491   2                      {
 492   3                              ET0 = 0;
 493   3                              enPWM = 0;      //禁止PWM
 494   3                              P14 = 0;        //停止充电
 495   3                              StopFlag = 1;   //停止充电
 496   3                              ET0 = 1;
 497   3                      }
 498   2                      PowerFlag = 1;  //允许放电
 499   2                      Led_Ctrl(1,2);  //运行状态灯L3闪烁

⌨️ 快捷键说明

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