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

📄 checkmode.lst

📁 电能表源码
💻 LST
字号:
C51 COMPILER V7.50   CHECKMODE                                                             05/23/2008 10:14:05 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE CHECKMODE
OBJECT MODULE PLACED IN checkmode.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE bottom\checkmode.c LARGE OPTIMIZE(9,SIZE) BROWSE NOAREGS MODDP2 INCDIR(E:\w
                    -ork\印度表\程序文件\程序\var\;E:\work\tiger D test\程序\var\) DEBUG OBJECTEXTEND PRINT(.\checkmode.lst) OBJECT(checkmode
                    -.obj)

line level    source

   1          /*************************************************************************************
   2          
   3                  文件类型:
   4                  文件作用:对flash进行擦除操作
   5                  修改权限:
   6                  文件相关:
   7                  
   8                  创 建 人:chenbo
   9                  创建日期:2007.11.24
  10                  当前版本:Ver0.1
  11                  
  12                  版本信息:Ver0.1                                        
  13          
  14          **************************************************************************************/
  15          #include "Tiger.h"
  16          extern unsigned char recover_item(unsigned int flashaddr,unsigned int ramaddr,unsigned char num);
  17          extern void Recover_meter(void);
  18          struct check_struct                            //参数地址列表
  19          {  unsigned int flashaddr;                     //参数在flash中的地址
  20             unsigned int id_data;                       //ID号
  21             unsigned char num;                          //参数在flash中的长度
  22          };
  23          
  24          const struct check_struct code check_addrtalbe[]=
  25          { {FL_canshu01+130,ID_PRIOXUL ,3},                        //需量参数
  26            {FL_canshu01+133,ID_CHANGSHU,4},                        //脉冲常数
  27            {FL_canshu01+137,ID_BANTRATA,2},                        // 波特率
  28            {FL_canshu01+139,ID_COMADDR,7},                         //表号
  29            {FL_canshu01+146,ID_GATCUTPOW,4},                      //是呀门限
  30            {FL_canshu01+150,ID_GATLOSTCUR,4},                     //失流门限
  31            {FL_canshu01+154,ID_TIMERETUN,2},                      //轮显时间
  32            {FL_canshu01+156,ID_PRIOCOSENG,2}                      //功率因数计量周期
  33          };  
  34          
  35          //======================================================================
  36          //函数功能:对check模块进行初始化
  37          //
  38          //======================================================================
  39          void Ini_checkmode(void)
  40          { unsigned char i;
  41   1        flag_runcheckmode=0;
  42   1        flag_mincheck=RTCTIME.rMinute;
  43   1        for(i=0;i<16;i++)
  44   1            count_flagereas[i]=0;                    //清零页擦除等待计数器 
  45   1        times_pllerror=0;
  46   1        flag_errorflash01.byte=0;
  47   1      }
  48          
  49          //==================================================================
  50          //函数功能:对pll进行渐次
  51          //
  52          //==================================================================
  53          
C51 COMPILER V7.50   CHECKMODE                                                             05/23/2008 10:14:05 PAGE 2   

  54          void check_pll(void)  
  55          { unsigned char xdata *p;
  56   1        p=0x28d3;
  57   1        if(*p!=0x01)
  58   1           { times_pllerror++;
  59   2                 if(times_pllerror>3)
  60   2                    { times_pllerror=0;
  61   3                          SetPLL();                   //开pll电路
*** WARNING C209 IN LINE 61 OF BOTTOM\CHECKMODE.C: '_SetPLL': too few actual parameters
  62   3                        }
  63   2               }
  64   1        else
  65   1            times_pllerror=0;
  66   1      }
  67          
  68          //==========================================================
  69          //函数功能:对flash页状态进行检测
  70          //备注:检测到页损坏,置位相应的标志位
  71          //==========================================================
  72          void check_flashpage(void)
  73          { unsigned char i,temp_flag;
  74   1        temp_flag=flag_ereasflash01.byte;
  75   1        for(i=0;i<8;i++)
  76   1           { if((temp_flag&0x01)==0x01)                         //如果该页擦除标志位置位
  77   2                    count_flagereas[i]++;                        //计数器累加
  78   2                 else
  79   2                    count_flagereas[i]=0;                         //如果每置位,则清零标志位
  80   2                 
  81   2                 if(count_flagereas[i]>10)                           //如果擦除标志位10钟尚未相应,则该页错误
  82   2                    { flag_errorflash01.byte=flag_errorflash01.byte|set_bittable[i];    //置位页损坏标志位
  83   3                          count_flagereas[i]=0;
  84   3                        }
  85   2      
  86   2                 temp_flag=temp_flag>>1; 
  87   2               }
  88   1      /*
  89   1         temp_flag=flag_ereasflash02.byte;
  90   1         for(i=0;i<3;i++)
  91   1           { if(temp_flag&0x01==0x01)                         //如果该页擦除标志位置位
  92   1                    count_flagereas[i+8]++;                         //计数器累加
  93   1                 else
  94   1                    count_flagereas[i+8]=0;                         //如果每置位,则清零标志位
  95   1                 
  96   1                 if(count_flagereas[i+8]>10)                           //如果擦除标志位10钟尚未相应,则该页错误
  97   1                    { flag_errorflash02.byte=flag_errorflash02.byte|set_bittable[i];    //置位页损坏标志位
  98   1                          count_flagereas[i+8]=0;
  99   1                        }
 100   1      
 101   1                 temp_flag=temp_flag>>1;   
 102   1               }
 103   1       */   
 104   1      }
 105          
 106          //==========================================================================
 107          //函数功能:程序自检,对个参数和flash页的状态进行自检
 108          //
 109          //==========================================================================
 110          void check_mode(void)
 111          { static unsigned char i;
 112   1        if(flag_runcheckmode==1)
 113   1           { flag_runcheckmode=0;
 114   2                 check_flashpage();                       //flash每秒检测一次,确定页有没有损坏
C51 COMPILER V7.50   CHECKMODE                                                             05/23/2008 10:14:05 PAGE 3   

 115   2             check_pll();                             //pll电路每秒检测一次
 116   2                 if(flag_mincheck!=RTCTIME.rMinute)       //参数每1分钟检测一次
 117   2                    {  if(i<8)                            //分8次测试数据
 118   3                               { i++;
 119   4                                       }
 120   3                   else
 121   3                                   { i=0;
 122   4                         flag_mincheck=RTCTIME.rMinute;
 123   4                       }
 124   3                   if(i<8)
 125   3                      { addr_baseonIDandtype(RAM,check_addrtalbe[i].id_data);                  //取指针
 126   4                                recover_item(check_addrtalbe[i].flashaddr,(*ID_coretalbpoint[0]).dataaddr,check_addrtalbe[i].
             -num);
 127   4                              }
 128   3                   else
 129   3                      Recover_meter();        
 130   3                        }
 131   2            
 132   2               }
 133   1        
 134   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    299    ----
   CONSTANT SIZE    =     40    ----
   XDATA SIZE       =      1    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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