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

📄 bat_ctrl24.lst

📁 光电控制器的源程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.50   BAT_CTRL24                                                            07/30/2007 18:37:04 PAGE 1   


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

line level    source

   1          /****************************************************************/
   2          /*功能:                       
   3          /*版本:v1.0                           
   4          /*设计人:ye_zhenfeng              
   5          /*编写日期:07-07-22
   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;
  23          
  24          /*预定义部分*/
  25          #define uchar unsigned char
  26          #define uint  unsigned int
  27          
  28          #define TINGCHONG 87*2  //14.8V*2/3.178V
  29          #define GUOCHONG  83*2  //14.0V*2
  30          #define YUNCHONG  80*2  //13.4V*2
  31          #define YUNFANG   74*2  //12.4V*2
  32          #define GUOFANG   65*2  //10.8V*2
  33          #define MIEDENG   39    //3.5V*2
  34          #define LIANGDENG 16*2  //2.5V*2
  35          #define NODELAY    4*2  //0.7v*2
  36          #define DELAY_MIN 1*8000        //1min  
  37          /*全局变量定义*/
  38          struct ad{
  39          uchar index;
  40          uchar BatAd[8];
  41          uchar SunAd[8];
  42          }AdValue;
  43          
  44          uchar SunValue,BatValue;        //光电池、蓄电池AD采样值
  45          uchar Seconds,Minutes,Hours;    //实时时钟计数变量
  46          bit ClrFlag;            //Hours清0允许位,'1'为允许
  47          bit PowerFlag;          //允许放电标志,‘1’为允许
  48          bit CtrlFlag;           //允许光板低电压打开负荷标志
  49          bit enL2,enL3;
  50          bit enPWM;
  51          bit enDelay1,enDelay2;
  52          uchar L2Delay,L3Delay;  //用于L2、L3闪烁定时,计数50次,越0.5s
  53          uint Delay4min1,Delay4min2;     //用于延时4min计数,计数20000次
  54          
  55          /*函数声明部分*/
C51 COMPILER V7.50   BAT_CTRL24                                                            07/30/2007 18:37:04 PAGE 2   

  56          void Init_Var(void);
  57          void Init_IO(void);
  58          void Init_AD(void);
  59          void Init_Timer(void);
  60          void Init_RTC(void);
  61          void Init_WDT(void);
  62          void Init_Interrupt(void);
  63          void Init_All(void);
  64          uchar Get_Mode(void);
  65          void GetAd(void);
  66          void Main_Logic(uchar);
  67          void Clr_Dog(void);
  68          void Led_Ctrl(bit,uchar);
  69          bit Delay_4min(bit);
  70          
  71          /*中断服务函数*/
  72          /*********************************************************************/
  73          /*函数名:
  74          /*功能:
  75          /*输入参数:
  76          /*返回值:
  77          /*调用函数:
  78          /*被调用函数:
  79          /*编写日期:
  80          /*最后修改日期:
  81          /********************************************************************/
  82          void T0_ISR() interrupt 1
  83          {
  84   1              TH0 = 0x80;             //
  85   1              TL0 = 0x00;             //
  86   1              if(enPWM)
  87   1              {
  88   2                      P14 = ~P14;
  89   2              }
  90   1              L2Delay++;
  91   1              L3Delay++;
  92   1              if(L2Delay>=50)
  93   1              {
  94   2                      L2Delay = 0;
  95   2                      if(enL2)
  96   2                              P01 = ~P01;
  97   2              }
  98   1              if(L3Delay>=50)
  99   1              {
 100   2                      L3Delay = 0;
 101   2                      if(enL3)
 102   2                              P00 = ~P00;
 103   2              }
 104   1      }
 105          /*********************************************************************/
 106          /*函数名:
 107          /*功能:
 108          /*输入参数:
 109          /*返回值:
 110          /*调用函数:
 111          /*被调用函数:
 112          /*编写日期:
 113          /*最后修改日期:
 114          /********************************************************************/
 115          void T1_ISR() interrupt 3
 116          {
 117   1              TH1 = 0x80;             //
C51 COMPILER V7.50   BAT_CTRL24                                                            07/30/2007 18:37:04 PAGE 3   

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

 180   1              ADCON1 &= 0xF7;
 181   1      
 182   1              AdValue.BatAd[AdValue.index] = AD1DAT0;
 183   1              AdValue.SunAd[AdValue.index] = AD1DAT1;
 184   1              AdValue.index ++;
 185   1              if(AdValue.index >= 8)
 186   1                      AdValue.index = 0;
 187   1              
 188   1      }
 189          
 190          /*主函数部分*/
 191          /*********************************************************************/
 192          /*函数名:main()
 193          /*功能:主函数
 194          /*输入参数:无
 195          /*返回值:无
 196          /*编写日期:
 197          /*最后修改日期:
 198          /********************************************************************/ 
 199          void main()                          
 200          {
 201   1              uchar TimeMode;
 202   1      
 203   1              Init_All();
 204   1      
 205   1              while(1)
 206   1              {
 207   2                      Clr_Dog();
 208   2                      TimeMode = Get_Mode();
 209   2                      GetAd();
 210   2      
 211   2                      Main_Logic(TimeMode);/**/
 212   2                      //enPWM = 1;
 213   2              }
 214   1      }
 215          
 216          /*其他函数定义部分*/
 217          /*********************************************************************/
 218          /*函数名:
 219          /*功能:
 220          /*输入参数:
 221          /*返回值:
 222          /*调用函数:
 223          /*被调用函数:
 224          /*编写日期:
 225          /*最后修改日期:
 226          /********************************************************************/ 
 227          void Init_Var()
 228          {
 229   1              Seconds = 0;
 230   1              Minutes = 0;
 231   1              Hours = 0;

⌨️ 快捷键说明

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