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

📄 define data struct.lst

📁 一个充电控制器的完整单片机程序
💻 LST
字号:
C51 COMPILER V7.02a   DEFINE_DATA_STRUCT                                                   04/16/2003 10:13:02 PAGE 1   


C51 COMPILER V7.02a, COMPILATION OF MODULE DEFINE_DATA_STRUCT
OBJECT MODULE PLACED IN define data struct.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE define data struct.c BROWSE DEBUG OBJECTEXTEND SYMBOLS TABS(2) PREPRINT

stmt level    source

   1          
   2          /*
   3          */
   4          #include <absacc.h> 
   5          #include <stdlib.h>
   6          #include <AT89X52.H>
   7          #include <INTRINS.h>
   8          
   9          #include "charger.h"
  10          #include "mylib.h"
  11          
  12          //
  13          //-----------------------------
  14          //define data struct
  15          
  16          
  17          //-----------------------------
  18          //System flag,char of control;
  19          //-----------------------------
  20          static bit bdata boostflag=1;
  21          static unsigned char idata switchchar=0x3f;
  22          
  23          /*
  24          //init_system_work_point , counter rate flow
  25          */
  26          
  27          #define BENCHMARK 5
  28          #define AMPLIFICATORY 10//predefine 0.1 proccess, amplificatory 10
  29          #define ADMAX 1024
  30          #define BUFFSIZE 0xa0
  31          
  32          //static array daydata   change to loop link
  33          //sizeof(daydata)=0x2B
  34          static daydata xdata looplink[BUFFSIZE] _at_ 0xC500;
  35          
  36          void init_system_work_point(void)
  37          {
  38   1        unsigned char idata i;
  39   1      
  40   1        for(i=0;i<12;i++)
  41   1        {
  42   2          if(i<7)
  43   2          {
  44   3            sys[i]=dtab[2][i];//default=2,system is 220V
  45   3          }
  46   2          else
  47   2          {
  48   3            sys[i]=stab[i-7][2];
  49   3          }
  50   2        }
  51   1        sys[12]=0;//tested temperature
  52   1      
  53   1      
  54   1        for(i=0;i<0xa0-1;i++)
  55   1        {
C51 COMPILER V7.02a   DEFINE_DATA_STRUCT                                                   04/16/2003 10:13:02 PAGE 2   

  56   2          looplink[i].next=&looplink[i+1];
  57   2          looplink[i+1].up=&looplink[i];
  58   2        }
  59   1        looplink[BUFFSIZE-1].next=&looplink[0];
  60   1        looplink[0].up=&looplink[0xa0-1];
  61   1      
  62   1        today.next=&looplink[0];
  63   1        today.up=&looplink[0xa0-1]; //is head->up;
  64   1      
  65   1        init_rate();
  66   1      }
  67          
  68          #define system_volatage sys[7]
  69          #define discharge_model sys[8]
  70          #define charge_model    sys[9]
  71          #define float_revise    sys[10]
  72          #define desinged_rate   sys[11]
  73          
  74          void init_rate(void)
  75          {
  76   1        unsigned int data i;
  77   1      
  78   1        i=BENCHMARK*AMPLIFICATORY;
  79   1        crate.temperature = i*100;
  80   1        crate.volatage = i*desinged_rate;//battery volatage
  81   1        crate.discharge = i*discharge_model;
  82   1        crate.charge = i*charge_model;
  83   1      }
  84          /*
  85          //intput data from tlc1543,changed and saved
  86          */
  87          void getadin(void)
  88          {
  89   1        unsigned char data i;
  90   1        unsigned long data tmp;
  91   1        
  92   1        for(i=0;i<6;i++)
  93   1        {
  94   2          tmp=tlc1543(i);tmp*=crate.charge;
  95   2          tmp /= ADMAX;   adin[i]=tmp;
  96   2        } 
  97   1        tmp=tlc1543(6);tmp*=crate.discharge;
  98   1        tmp /= ADMAX;   adin[6]=tmp;
  99   1        tmp=tlc1543(8);tmp*=crate.temperature;
 100   1        tmp /= ADMAX;   adin[7]=tmp;
 101   1        tmp=tlc1543(9);tmp*=crate.volatage;
 102   1        tmp /= ADMAX;   adin[8]=tmp;//9way
 103   1      }
 104          
 105          /*
 106          //count today working result
 107          */
 108          void account(void)
 109          {
 110   1        if(tlong%60==0)
 111   1        //count Ah, per 10s //count max & min per 10s 
 112   1        {char i;
 113   2          for(i=0;i<9;i++)
 114   2          {
 115   3            if(i<7)
 116   3            { //save current integral value
 117   4              today.work[i*2+1]+=(today.work[i*2+1]+adin[i])/(60*2);
C51 COMPILER V7.02a   DEFINE_DATA_STRUCT                                                   04/16/2003 10:13:02 PAGE 3   

 118   4            }
 119   3            else 
 120   3            {//save max & min value
 121   4              if(adin[i]>today.work[i*2+1])today.work[i*2+1]=adin[i]; 
 122   4              else if(adin[i]<today.work[2*i])today.work[i*2]=adin[i];
 123   4            }
 124   3            //only save max value
 125   3            if(adin[i]>today.work[2*i])today.work[i*2]=adin[i];
 126   3          }
 127   2        }
 128   1      }
 129          
 130          /*
 131          //output control,switch operation
 132          */
 133          
 134          #define boostvolatage    sys[0]
 135          #define booststart       sys[1]
 136          #define floatvolatage    sys[2]
 137          #define floatrecover     sys[3]
 138          #define moterstart       sys[4]
 139          #define lowlevel         sys[5]
 140          //alarm overload
 141          #define overload         sys[6]
 142          #define dischargecurrent today.work[13]
 143          
 144          #define BatteryVolatage  adin[8]
 145          
 146          //-----------------------------
 147          
 148          #pragma DISABLE
 149          
 150          static void controlswitch (unsigned char i)
 151          {
 152   1        _nop_();_nop_();_nop_();
 153   1        P8255B=~i;
 154   1        _nop_();_nop_();_nop_();
 155   1        P8255B=~i;
 156   1      }
 157          //-----------------------------
 158          static void alarm_overload()
 159          {
 160   1      }
 161          //-----------------------------
 162          void control(void)
 163          {
 164   1      
 165   1        if(dischargecurrent>overload)alarm_overload();
 166   1      
 167   1        if(BatteryVolatage > boostvolatage*AMPLIFICATORY)
 168   1        {
 169   2          switchchar=0x0;
 170   2          controlswitch(switchchar);//all close & wcharge=0
 171   2          boostflag=0;
 172   2        }
 173   1        else
 174   1        if(boostflag)
 175   1        {
 176   2          //boost charge start
 177   2          if(BatteryVolatage > booststart*AMPLIFICATORY);
 178   2          else 
 179   2          {
C51 COMPILER V7.02a   DEFINE_DATA_STRUCT                                                   04/16/2003 10:13:02 PAGE 4   

 180   3            switchchar=0x3f;
 181   3            controlswitch(switchchar);//6 way start
 182   3            boostflag=1;
 183   3      
 184   3            if(BatteryVolatage > moterstart*AMPLIFICATORY);
 185   3            else 
 186   3            {
 187   4              switchchar=0x7f;
 188   4              controlswitch(switchchar);//6 way start and motor start
 189   4      
 190   4              if(BatteryVolatage >lowlevel *AMPLIFICATORY);
 191   4              else {switchchar=0xff;controlswitch(switchchar);}//not enough volatage alarm,6 way start and motor sta
             -rt
 192   4            }
 193   3          }
 194   2        }
 195   1        else 
 196   1        {
 197   2          if(BatteryVolatage >floatvolatage*AMPLIFICATORY)
 198   2          {
 199   3            switchchar &= 0x3f;
 200   3            switchchar>>=1;
 201   3            controlswitch(switchchar);
 202   3          }//close 1 way ,stop motor
 203   2          else 
 204   2          {
 205   3            if(BatteryVolatage >floatrecover *AMPLIFICATORY);
 206   3            else {switchchar=0x3f;controlswitch(switchchar);}
 207   3          }
 208   2        }
 209   1      }
 210          
 211          //----------------------------------------
 212          ///save tab to xdata at the one day
 213          //-----Xsave the first value---------
 214          
 215          void save(void)
 216          {
 217   1        static unsigned char data day;
 218   1        unsigned char data i;
 219   1      
 220   1        link p;
 221   1        
 222   1        i=today.date[2];
 223   1        if(i!=day)
 224   1        {
 225   2          p=today.next;
 226   2          //save data to linktable
 227   2          for(i=0;i<18;i++)//copy today to today.next
 228   2          {
 229   3            if(i<3)p->date[i]=today.date[i];
 230   3            p->work[i]=today.work[i];
 231   3          }
 232   2          today.next=p->next;//point next node
 233   2          today.up=p;
 234   2        }
 235   1        day= i;//day of the month
 236   1      }
C51 COMPILER V7.02a   DEFINE_DATA_STRUCT                                                   04/16/2003 10:13:02 PAGE 5   

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


bitseg . . . . . . . . . . . . . . . .  * TAG *  -----  UNION    -----  2
  byte . . . . . . . . . . . . . . . .  MEMBER   -----  STRUCT   0000H  2
  i. . . . . . . . . . . . . . . . . .  MEMBER   -----  U_INT    0000H  2
control. . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
crate. . . . . . . . . . . . . . . . .  EXTERN   XDATA  STRUCT   -----  8
size_t . . . . . . . . . . . . . . . .  TYPEDEF  -----  U_INT    -----  2
dtab . . . . . . . . . . . . . . . . .  EXTERN   CODE   ARRAY    -----  56
adin . . . . . . . . . . . . . . . . .  EXTERN   XDATA  ARRAY    -----  20
today. . . . . . . . . . . . . . . . .  EXTERN   XDATA  STRUCT   -----  43
tlong. . . . . . . . . . . . . . . . .  EXTERN   DATA   U_INT    -----  2
stab . . . . . . . . . . . . . . . . .  EXTERN   CODE   ARRAY    -----  40
rate . . . . . . . . . . . . . . . . .  * TAG *  -----  STRUCT   -----  8
  volatage . . . . . . . . . . . . . .  MEMBER   -----  U_INT    0000H  2
  temperature. . . . . . . . . . . . .  MEMBER   -----  U_INT    0002H  2
  discharge. . . . . . . . . . . . . .  MEMBER   -----  U_INT    0004H  2
  charge . . . . . . . . . . . . . . .  MEMBER   -----  U_INT    0006H  2
link . . . . . . . . . . . . . . . . .  TYPEDEF  -----  PTR      -----  2
save . . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  day. . . . . . . . . . . . . . . . .  STATIC   DATA   U_CHAR   0000H  1
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  p. . . . . . . . . . . . . . . . . .  AUTO     DATA   PTR      0000H  2
switchchar . . . . . . . . . . . . . .  STATIC   IDATA  U_CHAR   0000H  1
word . . . . . . . . . . . . . . . . .  TYPEDEF  -----  STRUCT   -----  2
  ah . . . . . . . . . . . . . . . . .  MEMBER   -----  U_CHAR   0000H  1
  al . . . . . . . . . . . . . . . . .  MEMBER   -----  U_CHAR   0001H  1
init_rate. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_INT    0002H  2
boostflag. . . . . . . . . . . . . . .  STATIC   DATA   BIT      0000H  1
ACC. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00E0H  1
alarm_overload . . . . . . . . . . . .  STATIC   CODE   PROC     0000H  -----
daydata. . . . . . . . . . . . . . . .  TYPEDEF  -----  STRUCT   -----  43
  date . . . . . . . . . . . . . . . .  MEMBER   -----  ARRAY    0000H  3
  work . . . . . . . . . . . . . . . .  MEMBER   -----  ARRAY    0003H  36
  next . . . . . . . . . . . . . . . .  MEMBER   -----  PTR      0027H  2
  up . . . . . . . . . . . . . . . . .  MEMBER   -----  PTR      0029H  2
sys. . . . . . . . . . . . . . . . . .  EXTERN   XDATA  ARRAY    -----  26
getadin. . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
  tmp. . . . . . . . . . . . . . . . .  AUTO     DATA   U_LONG   0001H  4
workdata . . . . . . . . . . . . . . .  * TAG *  -----  STRUCT   -----  43
  date . . . . . . . . . . . . . . . .  MEMBER   -----  ARRAY    0000H  3
  work . . . . . . . . . . . . . . . .  MEMBER   -----  ARRAY    0003H  36
  next . . . . . . . . . . . . . . . .  MEMBER   -----  PTR      0027H  2
  up . . . . . . . . . . . . . . . . .  MEMBER   -----  PTR      0029H  2
wchar_t. . . . . . . . . . . . . . . .  TYPEDEF  -----  CHAR     -----  1
looplink . . . . . . . . . . . . . . .  STATIC   XDATA  ARRAY    C500H  6880
account. . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  AUTO     DATA   CHAR     0000H  1
_tlc1543 . . . . . . . . . . . . . . .  EXTERN   CODE   PROC     -----  -----
init_system_work_point . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  AUTO     IDATA  U_CHAR   0000H  1
_controlswitch . . . . . . . . . . . .  STATIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1477    ----
   CONSTANT SIZE    =   ----    ----
C51 COMPILER V7.02a   DEFINE_DATA_STRUCT                                                   04/16/2003 10:13:02 PAGE 6   

   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1       8
   IDATA SIZE       =      1       1
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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