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

📄 bat_ctrl24.lst

📁 光电控制器的源程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
 232   1              ClrFlag = 1;            //允许时间清0
 233   1              PowerFlag = 1;          //允许放电
 234   1              CtrlFlag = 1;           //允许控制器打开负荷
 235   1              L2Delay = 0;
 236   1              L3Delay = 0;
 237   1              Delay4min1 = 0;
 238   1              Delay4min2 = 0;
 239   1              enL2 = 0;
 240   1              enL3 = 0;
 241   1              enPWM = 0;
C51 COMPILER V7.50   BAT_CTRL24                                                            07/30/2007 18:37:04 PAGE 5   

 242   1              enDelay1 = 0;
 243   1              enDelay2 = 0;
 244   1      }
 245          /*********************************************************************/
 246          /*函数名:
 247          /*功能:
 248          /*输入参数:
 249          /*返回值:
 250          /*调用函数:
 251          /*被调用函数:
 252          /*编写日期:
 253          /*最后修改日期:
 254          /********************************************************************/ 
 255          void Init_IO()
 256          {
 257   1              P0M1 = 0x0c;    //B00001100
 258   1              P0M2 = 0x33;    //B00110011
 259   1              ADINS = 0x60;   //B01100000
 260   1              P1M1 = 0x2F;    //B00101111
 261   1              P1M2 = 0x04;    //B00010000
 262   1              PT0AD = 0x0C;   //禁止P02、P03的数字输入功能
 263   1      }
 264          /*********************************************************************/
 265          /*函数名:
 266          /*功能:
 267          /*输入参数:
 268          /*返回值:
 269          /*调用函数:
 270          /*被调用函数:
 271          /*编写日期:
 272          /*最后修改日期:
 273          /********************************************************************/ 
 274          void Init_AD()
 275          {
 276   1              ADINS = 0x60;   //选择CH1、CH2
 277   1              ADCON1 = 0x45;  //允许中断,使能ADC1,立即启动方式
 278   1              ADMODA = 0x20;  //双通道连续转换
 279   1              ADMODB = 0x80;  //分频 = 5
 280   1      }
 281          /*********************************************************************/
 282          /*函数名:
 283          /*功能:
 284          /*输入参数:
 285          /*返回值:
 286          /*调用函数:
 287          /*被调用函数:
 288          /*编写日期:
 289          /*最后修改日期:
 290          /********************************************************************/ 
 291          void Init_Timer()
 292          {
 293   1              TRIM |= 0x80;   //选择内部RC振荡器的输出作为CPU时钟 
 294   1              TMOD = 0x11;    //定时器0工作在模式1
 295   1              TAMOD = 0x00;   //定时器0工作在模式1
 296   1              TH0 = 0x80;             //
 297   1              TL0 = 0x00;             //
 298   1              TH1 = 0x80;
 299   1              TL1 = 0x00;
 300   1              TR0 = 1;                //打开定时器0
 301   1              TR1 = 1;
 302   1      }
 303          /*********************************************************************/
C51 COMPILER V7.50   BAT_CTRL24                                                            07/30/2007 18:37:04 PAGE 6   

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

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

 428          void GetAd()
 429          {
 430   1              uchar i;
 431   1              uint BatTmp,SunTmp;
 432   1              EAD = 0;
 433   1              BatTmp = 0;
 434   1              SunTmp = 0;
 435   1              for(i=0;i<8;i++)
 436   1              {
 437   2                      BatTmp += AdValue.BatAd[i];
 438   2                      SunTmp += AdValue.SunAd[i];
 439   2              }
 440   1              BatValue = BatTmp/8;
 441   1              SunValue = SunTmp/8;
 442   1              EAD = 1;
 443   1      }
 444          /*********************************************************************/
 445          /*函数名:
 446          /*功能:
 447          /*输入参数:
 448          /*返回值:
 449          /*调用函数:
 450          /*被调用函数:
 451          /*编写日期:
 452          /*最后修改日期:
 453          /********************************************************************/ 
 454          void Main_Logic(uchar TimeMode)
 455          {
 456   1              Clr_Dog();
 457   1      
 458   1              if(BatValue>TINGCHONG && P14==0)
 459   1              {
 460   2                      enPWM = 0;      //禁止PWM
 461   2                      P14 = 0;        //停止充电
 462   2                      PowerFlag = 1;  //允许放电
 463   2                      Led_Ctrl(1,2);  //运行状态灯L3闪烁
 464   2                      Led_Ctrl(0,1);  //过充过放灯L2亮
 465   2              }
 466   1              else if(BatValue>GUOCHONG)
 467   1              {
 468   2                      enPWM = 1;      //允许PWM
 469   2                      PowerFlag = 1;  //允许放电

⌨️ 快捷键说明

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