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

📄 bat_ctrl24_ac.lst

📁 光电控制器的源程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.50   BAT_CTRL24_AC                                                         08/21/2007 20:04:08 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE BAT_CTRL24_AC
OBJECT MODULE PLACED IN bat_ctrl24_ac.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE bat_ctrl24_ac.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /****************************************************************/
   2          /*功能:                       
   3          /*版本:v1.0                           
   4          /*设计人:ye_zhenfeng              
   5          /*编写日期:07-08-17
   6          /*最后修改日期:                           
   7          /*状态:in test                                          
   8          /****************************************************************/
   9          
  10          /*头文件定义*/
  11          #include <reg915.h>
  12          
  13          /*特殊寄存器定义*/
  14          sbit P00 = P0^0;                //运行充电指示灯
  15          sbit P01 = P0^1;                //过充过放指示灯
  16          sbit P04 = P0^4;                //负荷
  17          sbit P05 = P0^5;                //交流充电开关
  18          sbit P10 = P1^0;                //模式选择位
  19          sbit P11 = P1^1;                //模式选择位
  20          sbit P12 = P1^2;                //模式选择位
  21          sbit P13 = P1^3;                //模式选择位
  22          sbit P14 = P1^4;                //太阳能充电控制端(PWM)
  23          
  24          /*预定义部分*/
  25          #define uchar unsigned char
  26          #define uint  unsigned int
  27          //24v
  28          #define TINGCHONG24 88*2        //14.8V*2/3.178V
  29          #define GUOCHONG24  83*2        //14.0V*2
  30          #define TINGAC24        80*2    //13.5V*2
  31          #define YUNCHONG24  80*2        //13.4V*2
  32          #define YUNFANG24   75*2                //12.4V*2
  33          #define YUNAC24         68*2    //11.5V*2
  34          #define GUOFANG24   65*2                //10.8V*2
  35          #define OFFAC24         58*2    //10.0V*2
  36          #define MIEDENG24   19*2                // 3.5V*2
  37          #define LIANGDENG24 16*2        // 2.5V*2
  38          #define NODELAY24    4*2                //0.7v*2
  39          
  40          #define DELAY_MIN 1*8000        // 1.5min       
  41          /*全局变量定义*/
  42          struct ad{
  43          uchar index;
  44          uchar BatAd[8];
  45          uchar SunAd[8];
  46          }AdValue;
  47          
  48          uchar SunValue,BatValue;        //光电池、蓄电池AD采样值
  49          uchar Seconds,Minutes,Hours;    //实时时钟计数变量
  50          bit ClrFlag;            //Hours清0允许位,'1'为允许
  51          bit PowerFlag;          //允许放电标志,‘1’为允许
  52          bit CtrlFlag;           //允许光板低电压打开负荷标志
  53          bit StopFlag;           //停允冲标志
  54          bit enL2,enL3;
  55          bit enPWM;
C51 COMPILER V7.50   BAT_CTRL24_AC                                                         08/21/2007 20:04:08 PAGE 2   

  56          bit enDelay1,enDelay2;
  57          uchar L2Delay,L3Delay;  //用于L2、L3闪烁定时,计数50次,越0.5s
  58          uint Delay4min1,Delay4min2;     //用于延时4min计数,计数20000次
  59          
  60          /*函数声明部分*/
  61          void Init_Var(void);
  62          void Init_IO(void);
  63          void Init_AD(void);
  64          void Init_Timer(void);
  65          void Init_RTC(void);
  66          void Init_WDT(void);
  67          void Init_Interrupt(void);
  68          void Init_All(void);
  69          uchar Get_Mode(void);
  70          void GetAd(void);
  71          void Main_Logic24(uchar);
  72          void Clr_Dog(void);
  73          void Led_Ctrl(bit,uchar);
  74          bit Delay_4min(bit);
  75          
  76          /*中断服务函数*/
  77          /*********************************************************************/
  78          /*函数名:
  79          /*功能:
  80          /*输入参数:
  81          /*返回值:
  82          /*调用函数:
  83          /*被调用函数:
  84          /*编写日期:
  85          /*最后修改日期:
  86          /********************************************************************/
  87          void T0_ISR() interrupt 1
  88          {
  89   1              TH0 = 0x80;             //
  90   1              TL0 = 0x00;             //
  91   1              if(enPWM)
  92   1              {
  93   2                      P14 = ~P14;
  94   2              }
  95   1              L2Delay++;
  96   1              L3Delay++;
  97   1              if(L2Delay>=50)
  98   1              {
  99   2                      L2Delay = 0;
 100   2                      if(enL2)
 101   2                              P01 = ~P01;
 102   2              }
 103   1              if(L3Delay>=50)
 104   1              {
 105   2                      L3Delay = 0;
 106   2                      if(enL3)
 107   2                              P00 = ~P00;
 108   2              }
 109   1      }
 110          /*********************************************************************/
 111          /*函数名:
 112          /*功能:
 113          /*输入参数:
 114          /*返回值:
 115          /*调用函数:
 116          /*被调用函数:
 117          /*编写日期:
C51 COMPILER V7.50   BAT_CTRL24_AC                                                         08/21/2007 20:04:08 PAGE 3   

 118          /*最后修改日期:
 119          /********************************************************************/
 120          void T1_ISR() interrupt 3
 121          {
 122   1              TH1 = 0x80;             //
 123   1              TL1 = 0x00;             //
 124   1              if(enDelay1)
 125   1                      Delay4min1++;
 126   1              if(enDelay2)
 127   1                      Delay4min2++;
 128   1      }
 129          /*********************************************************************/
 130          /*函数名:
 131          /*功能:
 132          /*输入参数:
 133          /*返回值:
 134          /*调用函数:
 135          /*被调用函数:
 136          /*编写日期:
 137          /*最后修改日期:
 138          /********************************************************************/ 
 139          void RTC_ISR() interrupt 10
 140          {
 141   1      EA = 0;
 142   1      if((RTCCON&0x80)==0x80)
 143   1      {
 144   2              RTCCON &= 0x63;
 145   2              if(Minutes == 59)
 146   2              {
 147   3                      if(Seconds == 59)
 148   3                      {
 149   4                              Seconds = 0;
 150   4                              Minutes = 0;
 151   4                              Hours ++;
 152   4                      }
 153   3                      else
 154   3                      {
 155   4                      Seconds ++;
 156   4                      }
 157   3              }
 158   2              else
 159   2              {
 160   3                      if(Seconds == 59)
 161   3                      {
 162   4                              Seconds = 0;
 163   4                              Minutes ++;
 164   4                      }
 165   3                      else
 166   3                      {
 167   4                      Seconds ++;
 168   4                      }
 169   3              }
 170   2      EA = 1;
 171   2      }
 172   1      }
 173          /*********************************************************************/
 174          /*函数名:
 175          /*功能:
 176          /*输入参数:
 177          /*返回值:
 178          /*调用函数:
 179          /*被调用函数:
C51 COMPILER V7.50   BAT_CTRL24_AC                                                         08/21/2007 20:04:08 PAGE 4   

 180          /*编写日期:
 181          /*最后修改日期:
 182          /********************************************************************/ 
 183          void AD_ISR() interrupt 14
 184          {
 185   1              ADCON1 &= 0xF7;
 186   1      
 187   1              AdValue.BatAd[AdValue.index] = AD1DAT0;
 188   1              AdValue.SunAd[AdValue.index] = AD1DAT1;
 189   1              AdValue.index ++;
 190   1              if(AdValue.index >= 8)
 191   1                      AdValue.index = 0;
 192   1              
 193   1      }
 194          
 195          /*主函数部分*/
 196          /*********************************************************************/
 197          /*函数名:main()
 198          /*功能:主函数
 199          /*输入参数:无
 200          /*返回值:无
 201          /*编写日期:
 202          /*最后修改日期:
 203          /********************************************************************/ 
 204          void main()                          
 205          {
 206   1              uchar TimeMode;
 207   1      
 208   1              Init_All();
 209   1      
 210   1              while(1)
 211   1              {
 212   2                      Clr_Dog();
 213   2                      TimeMode = Get_Mode();
 214   2                      GetAd();
 215   2                      Main_Logic24(TimeMode);
 216   2              }
 217   1      }
 218          
 219          /*其他函数定义部分*/
 220          /*********************************************************************/
 221          /*函数名:
 222          /*功能:
 223          /*输入参数:
 224          /*返回值:
 225          /*调用函数:
 226          /*被调用函数:
 227          /*编写日期:
 228          /*最后修改日期:
 229          /********************************************************************/ 
 230          void Init_Var()
 231          {
 232   1              Clr_Dog();
 233   1              
 234   1              Seconds = 0;
 235   1              Minutes = 0;
 236   1              Hours = 0;
 237   1              ClrFlag = 1;            //允许时间清0
 238   1              PowerFlag = 1;          //允许放电
 239   1              CtrlFlag = 1;           //允许控制器打开负荷
 240   1              StopFlag = 0;   //允许充电
 241   1              L2Delay = 0;
C51 COMPILER V7.50   BAT_CTRL24_AC                                                         08/21/2007 20:04:08 PAGE 5   

 242   1              L3Delay = 0;
 243   1              Delay4min1 = 0;
 244   1              Delay4min2 = 0;
 245   1              enL2 = 0;
 246   1              enL3 = 0;
 247   1              enPWM = 0;
 248   1              enDelay1 = 0;
 249   1              enDelay2 = 0;
 250   1      }
 251          /*********************************************************************/
 252          /*函数名:
 253          /*功能:
 254          /*输入参数:
 255          /*返回值:
 256          /*调用函数:
 257          /*被调用函数:

⌨️ 快捷键说明

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