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

📄 bat_ctrl_12v_24v.lst

📁 光电控制器的源程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
 230   1              else
 231   1                      VoltFlag = 0;
 232   1      
 233   1              while(1)
 234   1              {
 235   2                      Clr_Dog();
 236   2                      TimeMode = Get_Mode();
 237   2                      GetAd();
 238   2                      if(VoltFlag)
 239   2                              Main_Logic24(TimeMode);
 240   2                      else
 241   2                              Main_Logic12(TimeMode);/**/
C51 COMPILER V7.50   BAT_CTRL_12V_24V                                                      12/27/2008 14:12:22 PAGE 5   

 242   2                      //enPWM = 1;
 243   2              }
 244   1      }
 245          
 246          /*其他函数定义部分*/
 247          /*********************************************************************/
 248          /*函数名:
 249          /*功能:
 250          /*输入参数:
 251          /*返回值:
 252          /*调用函数:
 253          /*被调用函数:
 254          /*编写日期:
 255          /*最后修改日期:
 256          /********************************************************************/ 
 257          void Init_Var()
 258          {
 259   1              Clr_Dog();
 260   1              
 261   1              Seconds = 0;
 262   1              Minutes = 0;
 263   1              Hours = 0;
 264   1              ClrFlag = 1;            //允许时间清0
 265   1              PowerFlag = 1;          //允许放电
 266   1              CtrlFlag = 1;           //允许控制器打开负荷
 267   1              StopFlag = 0;   //允许充电
 268   1              L2Delay = 0;
 269   1              L3Delay = 0;
 270   1              Delay4min1 = 0;
 271   1              Delay4min2 = 0;
 272   1              enL2 = 0;
 273   1              enL3 = 0;
 274   1              enPWM = 0;
 275   1              enDelay1 = 0;
 276   1              enDelay2 = 0;
 277   1      }
 278          /*********************************************************************/
 279          /*函数名:
 280          /*功能:
 281          /*输入参数:
 282          /*返回值:
 283          /*调用函数:
 284          /*被调用函数:
 285          /*编写日期:
 286          /*最后修改日期:
 287          /********************************************************************/ 
 288          void Init_IO()
 289          {
 290   1              Clr_Dog();
 291   1              
 292   1              P0M1 = 0x0c;    //B00001100
 293   1              P0M2 = 0x33;    //B00110011
 294   1              ADINS = 0x60;   //B01100000
 295   1              P1M1 = 0x2F;    //B00101111
 296   1              P1M2 = 0x10;    //B00010000
 297   1              PT0AD = 0x0C;   //禁止P02、P03的数字输入功能
 298   1      }
 299          /*********************************************************************/
 300          /*函数名:
 301          /*功能:
 302          /*输入参数:
 303          /*返回值:
C51 COMPILER V7.50   BAT_CTRL_12V_24V                                                      12/27/2008 14:12:22 PAGE 6   

 304          /*调用函数:
 305          /*被调用函数:
 306          /*编写日期:
 307          /*最后修改日期:
 308          /********************************************************************/ 
 309          void Init_AD()
 310          {
 311   1              ADINS = 0x60;   //选择CH1、CH2
 312   1              ADCON1 = 0x45;  //允许中断,使能ADC1,立即启动方式
 313   1              ADMODA = 0x20;  //双通道连续转换
 314   1              ADMODB = 0xe0;  //分频 = 8
 315   1      }
 316          /*********************************************************************/
 317          /*函数名:
 318          /*功能:
 319          /*输入参数:
 320          /*返回值:
 321          /*调用函数:
 322          /*被调用函数:
 323          /*编写日期:
 324          /*最后修改日期:
 325          /********************************************************************/ 
 326          void Init_Timer()
 327          {
 328   1              Clr_Dog();
 329   1              
 330   1              TRIM |= 0x80;   //选择内部RC振荡器的输出作为CPU时钟 
 331   1              TMOD = 0x11;    //定时器0工作在模式1
 332   1              TAMOD = 0x00;   //定时器0工作在模式1
 333   1              TH0 = 0x80;             //
 334   1              TL0 = 0x00;             //
 335   1              TH1 = 0x80;
 336   1              TL1 = 0x00;
 337   1              TR0 = 1;                //打开定时器0
 338   1              TR1 = 1;
 339   1      }
 340          /*********************************************************************/
 341          /*函数名:
 342          /*功能:
 343          /*输入参数:
 344          /*返回值:
 345          /*调用函数:
 346          /*被调用函数:
 347          /*编写日期:
 348          /*最后修改日期:
 349          /********************************************************************/ 
 350          void Init_RTC()
 351          {       
 352   1              RTCH = 0xE0;
 353   1              RTCL = 0xFF;    //一个周期1s
 354   1              RTCCON = 0x63;  //内部RC振荡器输出时钟,中断使能,RTC启动
 355   1      }
 356          /*********************************************************************/
 357          /*函数名:
 358          /*功能:
 359          /*输入参数:
 360          /*返回值:
 361          /*调用函数:
 362          /*被调用函数:
 363          /*编写日期:
 364          /*最后修改日期:
 365          /********************************************************************/ 
C51 COMPILER V7.50   BAT_CTRL_12V_24V                                                      12/27/2008 14:12:22 PAGE 7   

 366          void Init_WDT()
 367          {
 368   1              Clr_Dog();
 369   1              
 370   1              ACC = WDCON; //读取WDT控制寄存器 
 371   1              ACC = ACC|0x04; //置位ACC.2准备启动WDT 
 372   1              WDL = 0x80; //设置8位倒计时器初值 
 373   1              WDCON = ACC; //启动WDT 
 374   1              WFEED1 = 0xA5; //清零第一部分 
 375   1              WFEED2 = 0x5A; //清零第二部分
 376   1      }
 377          /*********************************************************************/
 378          /*函数名:
 379          /*功能:
 380          /*输入参数:
 381          /*返回值:
 382          /*调用函数:
 383          /*被调用函数:
 384          /*编写日期:
 385          /*最后修改日期:
 386          /********************************************************************/ 
 387          void Init_Interrupt()
 388          {
 389   1              EWDRT = 1;      //实时时钟中断使能
 390   1              EAD = 1;        //AD中断使能
 391   1              ET0 = 1;        //
 392   1              ET1 = 1;
 393   1      //      EA = 1;         //总中断使能
 394   1      }
 395          /*********************************************************************/
 396          /*函数名:
 397          /*功能:
 398          /*输入参数:
 399          /*返回值:
 400          /*调用函数:
 401          /*被调用函数:
 402          /*编写日期:
 403          /*最后修改日期:
 404          /********************************************************************/ 
 405          void Init_All()
 406          {
 407   1              Clr_Dog();
 408   1      
 409   1              Init_Var();
 410   1              Init_IO();
 411   1              Init_AD();
 412   1              Init_Timer();
 413   1              Init_RTC();
 414   1              Init_WDT();
 415   1              Init_Interrupt();
 416   1              Led_Ctrl(1,2);  //L3闪烁——正常运行
 417   1              Led_Ctrl(0,0);  //L2灭——没有过充或过放
 418   1              P04 = 0;                //负荷12关
 419   1              P05 = 0;                //负荷11关
 420   1              P14 = 0;                //
 421   1      }
 422          /*********************************************************************/
 423          /*函数名:
 424          /*功能:
 425          /*输入参数:
 426          /*返回值:
 427          /*调用函数:
C51 COMPILER V7.50   BAT_CTRL_12V_24V                                                      12/27/2008 14:12:22 PAGE 8   

 428          /*被调用函数:
 429          /*编写日期:
 430          /*最后修改日期:
 431          /********************************************************************/ 
 432          uchar Get_Mode()
 433          {
 434   1              uchar mode;
 435   1      
 436   1              Clr_Dog();
 437   1      
 438   1              mode = 0;
 439   1              if(!P11)
 440   1              {
 441   2                      mode += 1;
 442   2              }
 443   1              if(!P10)
 444   1              {
 445   2                      mode += 2;
 446   2              }
 447   1              if(!P13)
 448   1              {
 449   2                      mode += 4;
 450   2              }
 451   1              if(!P12)
 452   1              {
 453   2                      mode += 8;
 454   2              }
 455   1              return(mode);
 456   1      }
 457          /*********************************************************************/
 458          /*函数名:
 459          /*功能:
 460          /*输入参数:
 461          /*返回值:
 462          /*调用函数:
 463          /*被调用函数:
 464          /*编写日期:
 465          /*最后修改日期:

⌨️ 快捷键说明

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