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

📄 ereasflash.lst

📁 电能表源码
💻 LST
字号:
C51 COMPILER V7.50   EREASFLASH                                                            05/26/2008 08:17:33 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE EREASFLASH
OBJECT MODULE PLACED IN ereasflash.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE bottom\ereasflash.c LARGE OPTIMIZE(9,SIZE) BROWSE NOAREGS MODDP2 INCDIR(E:\
                    -work\tiger D test\程序\var\) DEBUG OBJECTEXTEND PRINT(.\ereasflash.lst) OBJECT(ereasflash.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          /*
  17          static unsigned int code ereasflashaddr01[8]=
  18          { FL_engdotaddrone_z,
  19            FL_engdotaddrtwo_z,
  20            FL_engintone_a,
  21            FL_enginttwo_a,
  22            FL_engdotaddr_f,
  23            FL_maxxuliang,
  24            FL_yinshu,
  25            FL_wrbuffer
  26          };
  27          
  28          static unsigned int code ereasflashaddr02[4]=
  29          { FL_dianliufanxiang,
  30            FL_lasteng,
  31            FL_jiaobiao01,
  32            FL_canshu01
  33          };
  34          
  35          static unsigned char code clr_bittable[]=                  //清零表格
  36          {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
  37          
  38          static unsigned char code set_bittable[]=
  39          {BIT0,BIT1,BIT2,BIT3,BIT4,BIT5,BIT6,BIT7};
  40          */
  41          //======================================================
  42          //函数功能:对flash进行页擦除操作
  43          //入口参数:地址
  44          //返回参数:0:成功,1:失败
  45          //======================================================
  46          unsigned char Ereas_pageflash(unsigned int addrflash)
  47          { unsigned char value;
  48   1        value=0;
  49   1        IAP_FLASH_PageErase(addrflash);
  50   1        if(Check_flashpage(addrflash)==1)          //擦除不成功
  51   1          value=1;
  52   1        return value;   
  53   1      }
  54          
C51 COMPILER V7.50   EREASFLASH                                                            05/26/2008 08:17:33 PAGE 2   

  55          //=========================================================
  56          //函数功能:初始化flash模块
  57          //========================================================
  58          void Int_ereasflashmode(void)
  59          {  busy_flash=0;                          //清零标志位
  60   1         busy_buffflash=0;                      //清零buffer忙
  61   1       }
  62          
  63          //==============================================================
  64          //函数功能:flash擦除模块
  65          //
  66          //==============================================================
  67          void ereasflash_mode(void)
  68          { unsigned int addr_flash;
  69   1        unsigned char value,i,bufferflag,flag_point,offset_point;
  70   1        value=0;
  71   1        if(busy_flash==0)
  72   1          {  if(flag_askerastindianpage==1)                         //停电页是否需要擦除
  73   2                    { value=1;
  74   3                          addr_flash=FL_tingdianpage;
  75   3                        }
  76   2             else if(flag_ereasflash01.byte!=0)
  77   2                { bufferflag=flag_ereasflash01.byte;
  78   3                  offset_point=0;
  79   3                  for(i=0;i<8;i++)
  80   3                     { if((bufferflag&0x01)==1)                    //如果有页需要擦除
  81   4                           { value=1;                               //置标志位
  82   5                             addr_flash=ereasflashaddr01[i];        //查需要擦除的地址
  83   5                                         flag_point=1;
  84   5                                         break;
  85   5                                       }
  86   4                              else                                         //查询下下一标志位
  87   4                                   { bufferflag=bufferflag>>1;
  88   5                                         offset_point++;
  89   5                                       }
  90   4                             }
  91   3                   }
  92   2          }
  93   1       if(value==1)                                                //如果有页需要擦除
  94   1              { busy_flash=1;                                             //置忙标志位
  95   2            if(addr_flash>=0x7000)
  96   2              { Ready_progamflash();
  97   3                        IAP_FLASH_PageErase(addr_flash);     //擦除flash
  98   3                        End_progamflash();
  99   3                if(Check_flashpage(addr_flash)==0)                //擦除成功
 100   3                             flag_ereasflash01.byte=flag_ereasflash01.byte&clr_bittable[offset_point];  //清零擦除标志位
 101   3                        else                                                    //擦除失败
 102   3                           { if(flag_errorflash01.byte&set_bittable[offset_point]==1)   //如果该也已经出错
 103   4                                     flag_ereasflash01.byte=flag_ereasflash01.byte&clr_bittable[offset_point];  //清零擦除标志位
 104   4                   }
 105   3          
 106   3                        if(addr_flash==FL_wrbuffer)     //如果时对缓存页擦除
 107   3                           if(F_askerasbuffer==0)      //如果擦除成功
 108   3                               busy_buffflash=0;      //清忙标志位
 109   3                              
 110   3                      }
 111   2               else if(addr_flash==0x6e00)                 //对停电页进行擦除
 112   2              {  Ready_progamflash();
 113   3                         IAP_FLASH_PageErase(addr_flash);     //擦除flash
 114   3                         End_progamflash();
 115   3                         if(Check_flashpage(addr_flash)==1)          //擦除不成功
 116   3                    {if(flag_errtingdianpage==1)
C51 COMPILER V7.50   EREASFLASH                                                            05/26/2008 08:17:33 PAGE 3   

 117   4                                    flag_askerastindianpage=0;
 118   4                                }
 119   3                         else
 120   3                             flag_askerastindianpage=0;
 121   3              } 
 122   2         }
 123   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    303    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----       7
   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 + -