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

📄 bat_ctrl12_ac.lst

📁 光电控制器的源程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.50   BAT_CTRL12_AC                                                         08/21/2007 19:03:52 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE BAT_CTRL12_AC
OBJECT MODULE PLACED IN bat_ctrl12_ac.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE bat_ctrl12_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          
  28          //12v
  29          #define TINGCHONG12 87  //14.8V/3.178V
  30          #define GUOCHONG12  83  //14.0V
  31          #define TINGAC12        80      //13.5V
  32          #define YUNCHONG12  80  //13.4V
  33          #define YUNFANG12   75  //12.4V
  34          #define YUNAC12         68      //11.5V
  35          #define GUOFANG12   65  //10.8V
  36          #define OFFAC12         58      //10.0V
  37          #define MIEDENG12   19  // 3.5V
  38          #define LIANGDENG12 16  // 2.5V
  39          #define NODELAY12   4   //0.7v
  40          
  41          #define DELAY_MIN 1*8000        // 1.5min       
  42          /*全局变量定义*/
  43          struct ad{
  44          uchar index;
  45          uchar BatAd[8];
  46          uchar SunAd[8];
  47          }AdValue;
  48          
  49          uchar SunValue,BatValue;        //光电池、蓄电池AD采样值
  50          uchar Seconds,Minutes,Hours;    //实时时钟计数变量
  51          bit ClrFlag;            //Hours清0允许位,'1'为允许
  52          bit PowerFlag;          //允许放电标志,‘1’为允许
  53          bit CtrlFlag;           //允许光板低电压打开负荷标志
  54          bit StopFlag;           //停允冲标志
  55          bit enL2,enL3;
C51 COMPILER V7.50   BAT_CTRL12_AC                                                         08/21/2007 19:03:52 PAGE 2   

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

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

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

 242   1              L2Delay = 0;
 243   1              L3Delay = 0;
 244   1              Delay4min1 = 0;
 245   1              Delay4min2 = 0;

⌨️ 快捷键说明

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