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

📄 charge.lst

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

 304          {
 305   1              TRIM |= 0x80;   //选择内部RC振荡器的输出作为CPU时钟 
 306   1              TMOD = 0x11;    //定时器0工作在模式1
 307   1              TAMOD = 0x00;   //定时器0工作在模式1
 308   1              TH0 = 0x80;             //
 309   1              TL0 = 0x00;             //
 310   1              TH1 = 0x80;
 311   1              TL1 = 0x00;
 312   1              TR0 = 1;                //打开定时器0
 313   1              TR1 = 1;
 314   1      }
 315          /*********************************************************************/
 316          /*函数名:
 317          /*功能:
 318          /*输入参数:
 319          /*返回值:
 320          /*调用函数:
 321          /*被调用函数:
 322          /*编写日期:
 323          /*最后修改日期:
 324          /********************************************************************/ 
 325          void Init_RTC()
 326          {       
 327   1              RTCH = 0xE0;
 328   1              RTCL = 0xFF;    //一个周期1s
 329   1              RTCCON = 0x63;  //内部RC振荡器输出时钟,中断使能,RTC启动
 330   1      }
 331          /*********************************************************************/
 332          /*函数名:
 333          /*功能:
 334          /*输入参数:
 335          /*返回值:
 336          /*调用函数:
 337          /*被调用函数:
 338          /*编写日期:
 339          /*最后修改日期:
 340          /********************************************************************/ 
 341          void Init_WDT()
 342          {
 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   CHARGE                                                                03/09/2009 16:55:11 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              charge_ctrl = 0;                //负荷12关
 392   1              charge_ctrlB = 0;               //负荷11关
 393   1              charge_output = 1;              //充电
 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   CHARGE                                                                03/09/2009 16:55:11 PAGE 8   

 428   1              return(mode);
 429   1      }
 430          /*********************************************************************/
 431          /*函数名:
 432          /*功能:
 433          /*输入参数:
 434          /*返回值:
 435          /*调用函数:
 436          /*被调用函数:
 437          /*编写日期:
 438          /*最后修改日期:
 439          /********************************************************************/ 
 440          uchar GetAd()
 441          {
 442   1              uchar i;
 443   1              uint BatTmp,SunTmp;
 444   1              EAD = 0;
 445   1              BatTmp = 0;
 446   1              SunTmp = 0;
 447   1              for(i=0;i<8;i++)
 448   1              {
 449   2                      BatTmp += AdValue.BatAd[i];
 450   2                      SunTmp += AdValue.SunAd[i];
 451   2              }
 452   1              BatValue = BatTmp/8;
 453   1              SunValue = SunTmp/8;
 454   1      
 455   1              return(BatValue);
 456   1              EAD = 1;
 457   1      }
 458          /*********************************************************************/
 459          /*函数名:
 460          /*功能:
 461          /*输入参数:
 462          /*返回值:
 463          /*调用函数:
 464          /*被调用函数:
 465          /*编写日期:
 466          /*最后修改日期:
 467          /********************************************************************/ 
 468          void Main_Logic12(uchar TimeMode)
 469          {
 470   1              Clr_Dog();
 471   1      
 472   1              if(BatValue>TINGCHONG12)// && charge_output==0)
 473   1              {
 474   2                      enPWM = 0;      //禁止PWM
 475   2                      charge_output = 0;      //停止充电
 476   2                      PowerFlag = 1;  //允许放电
 477   2                      Led_Ctrl(1,2);  //运行状态灯L3闪烁
 478   2                      Led_Ctrl(0,1);  //过充过放灯L2亮
 479   2              }
 480   1              else if(BatValue>GUOCHONG12)
 481   1              {
 482   2                      enPWM = 1;      //允许PWM
 483   2                      PowerFlag = 1;  //允许放电
 484   2                      if(SunValue>BatValue)
 485   2                              Led_Ctrl(1,1);  //运行状态灯L3亮
 486   2                      else
 487   2                              Led_Ctrl(1,2);
 488   2                      Led_Ctrl(0,1);  //过充过放灯L2亮
 489   2              }
C51 COMPILER V7.50   CHARGE                                                                03/09/2009 16:55:11 PAGE 9   

 490   1              else if(BatValue>YUNFANG12)
 491   1              {
 492   2                      enPWM = 0;      //禁止PWM
 493   2                      charge_output = 1;      //全速充电
 494   2                      PowerFlag = 1;  //允许放电
 495   2                      if(SunValue>BatValue)
 496   2                              Led_Ctrl(1,1);  //运行状态灯L3亮
 497   2                      else
 498   2                              Led_Ctrl(1,2);
 499   2                      Led_Ctrl(0,0);  //过充过放灯L2灭
 500   2              }
 501   1              else;
 502   1              
 503   1              Clr_Dog();
 504   1              
 505   1              if(BatValue<GUOFANG12)
 506   1              {
 507   2                      charge_ctrlB = 0;       //关闭负荷11
 508   2                      charge_ctrl = 0;        //关闭负荷12
 509   2                      enPWM = 0;      //禁止PWM

⌨️ 快捷键说明

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