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

📄 zhuancun.lst

📁 电能表源码
💻 LST
字号:
C51 COMPILER V7.50   ZHUANCUN                                                              08/06/2008 16:43:21 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE ZHUANCUN
OBJECT MODULE PLACED IN zhuancun.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE bottom\zhuancun.c LARGE OPTIMIZE(9,SIZE) BROWSE NOAREGS MODDP2 INCDIR(C:\DO
                    -CUMENTS AND SETTINGS\ADMINISTRATOR.LENOVO-80B42371\桌面\VANGO\程序\var\) DEBUG OBJECTEXTEND PRINT(.\zhuancun.lst) OBJECT
                    -(zhuancun.obj)

line level    source

   1          /*************************************************************************************
   2          
   3                  文件类型:
   4                  文件作用:转存历史数据
   5                  修改权限:
   6                  文件相关:
   7                  
   8                  创 建 人:chenbo
   9                  创建日期:2007.11.24
  10                  当前版本:Ver0.1
  11                  
  12                  版本信息:Ver0.1                                        
  13          
  14          **************************************************************************************/
  15          #include "Tiger.h"
  16          #include "typemeter.h"
  17          
  18          struct flzandstrstruct
  19          { unsigned int  lasttimeaddr;                //上次冻结电量时间存放地址
  20            unsigned int  poinadd;                     //存放指针地址
  21            unsigned int  DATAID;                      //存放数据id号
  22            unsigned char acttims;                     //最大存放次数
  23          };
  24          
  25          const struct flzandstrstruct code flzandstrtable[]=
  26          {{EEP_lastflzengtime,EEP_point_dong,0xc160,8},                         //冻结数据
  27           {EEP_laststrengtime,EEP_point_zhun,0x0110,11}                         //转存
  28          };
  29          
  30          
  31          //===================================================
  32          //函数功能:初始化转存模块
  33          //
  34          //====================================================
  35          void int_zhuancun(void)
  36          { flag_zhuancun_run=0;
  37   1        sta_zhuancun=no_zhuncun;
  38   1      //  F_askerashistdata=0;
  39   1       // bufftime=(ram[RAM_rtcmin]&0xf0);
  40   1      }
  41          
  42          //====================================================
  43          //完成夸月停电时的转存
  44          //====================================================
  45          void complet_zhuncun(void)
  46          {
  47   1      }
  48          
  49          //========================================================
  50          //函数功能:判断上月电量是否已经转存
  51          //入口参数:当前时间,判断类型 0冻结,1转存
  52          //出口参数:1:尚未转存,0:已经转存
  53          //========================================================
C51 COMPILER V7.50   ZHUANCUN                                                              08/06/2008 16:43:21 PAGE 2   

  54          unsigned char check_laststortime(unsigned char * pointtime,unsigned char type)
  55          { unsigned char value;
  56   1        data_addr.word[1]=flzandstrtable[type].lasttimeaddr;
  57   1        Read_data(EEPROM,3);                                     //读取上次转存时间
  58   1        value=0;
  59   1        if(pointtime[0]>=wr_buff[0])                              //年判断
  60   1           { if(pointtime[0]>wr_buff[0])                          //如果已经夸年,则表示未保存
  61   2                 value=1;
  62   2             else
  63   2                 { if(pointtime[1]>wr_buff[1])                    //未夸年,判断月份
  64   3                      { value=1;
  65   4                                  }
  66   3                   else if(pointtime[1]==wr_buff[1])              //未夸月
  67   3                                  { if(type==0)                               //如果时冻结,继续日判断
  68   4                                          { if(pointtime[2]>wr_buff[2])           //夸日
  69   5                                                    value=1;
  70   5                                              }
  71   4                                      }
  72   3                 }
  73   2           }
  74   1        
  75   1        return value;
  76   1      }
  77          
  78          //=======================================================
  79          //函数功能:保存电量
  80          //入口参数:存贮类型,当前时间
  81          //=======================================================
  82          void cun_energe(unsigned char type,unsigned char *pointime)
  83          { unsigned char point,len;
  84   1        data_addr.word[1]=flzandstrtable[type].poinadd;             //获取指针
  85   1        Read_data(EEPROM,1);
  86   1        point=wr_buff[0]; 
  87   1        if(point<flzandstrtable[type].acttims-2)                   //指针累加
  88   1           { point+=1;
  89   2           }
  90   1        else
  91   1           point=0;
  92   1        wr_buff[0]=point;                                          //保存新指针
  93   1        Write_data(EEPROM,1);
  94   1      
  95   1        addr_baseonIDandtype(RAM,ID_POSENGSUM);                      //读取存放电量
  96   1        data_addr.word[1]= (*ID_coretalbpoint[0]).dataaddr;
  97   1        len=(*ID_coretalbpoint[0]).datalong;
  98   1        Read_data(RAM,len);
  99   1        if(type==0)                                                 //如果是冻结,则保存冻结日
 100   1           wr_buff[4]=pointime[2];
 101   1      
 102   1        addr_baseonIDandtype(0,flzandstrtable[type].DATAID);         //获取存放电量德首地址
 103   1        len=(*ID_coretalbpoint[0]).datalong;
 104   1        data_addr.word[1]= (*ID_coretalbpoint[0]).dataaddr;
 105   1        data_addr.word[1]+=point*len;
 106   1        Write_data((*ID_coretalbpoint[0]).stortype,len);            //存贮地址  
 107   1        
 108   1        wr_buff[0]=pointime[0];                                     //保存时间 年 月 日
 109   1        wr_buff[1]=pointime[1];
 110   1        wr_buff[2]=pointime[2];
 111   1        data_addr.word[1]=flzandstrtable[type].lasttimeaddr;
 112   1        Write_data(EEPROM,3);
 113   1      }
 114          
 115          //=======================================================
C51 COMPILER V7.50   ZHUANCUN                                                              08/06/2008 16:43:21 PAGE 3   

 116          //函数功能:转存历史数据模块
 117          //
 118          //=========================================================
 119          void zhuncun_mode(void)
 120          { unsigned char timebuff[4];
 121   1        if(flag_zhuancun_run==1)                                   //1秒运行一次
 122   1          { flag_zhuancun_run=0;
 123   2               
 124   2            addr_baseonIDandtype(RAM,ID_DATAMETER);                //获取当前时间
 125   2            data_addr.word[1]=(*ID_coretalbpoint[0]).dataaddr;
 126   2            Read_data((*ID_coretalbpoint[0]).stortype,7);
 127   2            timebuff[0]=wr_buff[0];                                //年
 128   2            timebuff[1]=wr_buff[1];                                //月
 129   2            timebuff[2]=wr_buff[2];                                //日
 130   2            timebuff[3]=wr_buff[3];                                //时
 131   2       
 132   2                if(timebuff[3]==0)                                          //零时操作
 133   2                  { if(1==check_laststortime(timebuff,0))                   //判断是否已经冻结
 134   3                   { cun_energe(0,timebuff);                                     //0 表示电量日冻结
 135   4                               }
 136   3                if(timebuff[2]==1)                                       //1日,电量转存
 137   3                    { if(1==check_laststortime(timebuff,1))                //判断是否已经转存
 138   4                                { cun_energe(1,timebuff);                                 //1 表示电量转存
 139   5                                    }
 140   4                    }
 141   3              }
 142   2          }
 143   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    557    ----
   CONSTANT SIZE    =     14    ----
   XDATA SIZE       =   ----      14
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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