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

📄 stc_flash.lst

📁 stc头文件
💻 LST
字号:
C51 COMPILER V7.50   STC_FLASH                                                             06/08/2006 14:06:33 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE STC_FLASH
OBJECT MODULE PLACED IN stc_flash.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LIB\stc_flash.c BROWSE INCDIR(.\inc;.\inc;..\inc) DEBUG OBJECTEXTEND PRINT(
                    -.\stc_flash.lst) OBJECT(stc_flash.obj)

line level    source

   1          /****************************************************************
   2          //MCS-51单片机底层EEPROM操作库。
   3          //只在STC89C52单片机上实验过
   4          
   5          //create by changshengwuji 
   6          //email: netspider@163.com
   7          //qq:    450353168
   8          //2006.05.03
   9          ****************************************************************/
  10          
  11          //#include "define_stc_flash.h"
  12          #include "../inc/MCS_X51.H"
  13          #include<intrins.h>
  14          bit gint;
  15          /*************************************************
  16          //-----使能IAP----------------
  17          *************************************************/
  18          void flsh_en()
  19          {
  20   1              gint = EA;
  21   1              INT_GLOBAL(0);  //DISABLE INTERUPT
  22   1      
  23   1              set_flsh_wait;  //set wait time
  24   1              set_flsh_en;    //enable flash operate
  25   1      }
  26          /**************************************************
  27          //停止IAP
  28          **************************************************/
  29          void flsh_ds()
  30          {
  31   1              set_flsh_ds;            //disable flash operate
  32   1              set_flsh_trig(0);       //dis trig
  33   1              INT_GLOBAL(gint);       //return global int
  34   1      }
  35          
  36          /*从flash中读出一个字节返回*/   
  37          UINT8 flsh_rd_byte(UINT16 addx)
  38          {
  39   1              set_flsh_addr(addx);
  40   1              flsh_wr_cmd(CMD_READ);
  41   1          set_flsh_trig(TRIG1);
  42   1              set_flsh_trig(TRIG2);
  43   1              _nop_;
*** WARNING C275 IN LINE 43 OF LIB\STC_FLASH.C: expression with possibly no effect
  44   1              return(flsh_rd_data);
  45   1      }
  46          /******************************************
  47          //从一个扇区内读出一串数据。
  48          //传送参数:扇区内地址,读出个数,读出地址
  49          ********************************************/
  50          bit flsh_sector_rd(UINT16 addx,UINT8 num,UINT8 *p)
  51          {
  52   1      UINT8 i;
  53   1              if(num > USED_SPACE)
C51 COMPILER V7.50   STC_FLASH                                                             06/08/2006 14:06:33 PAGE 2   

  54   1                      return(0);                      //超出扇区范围,退出
  55   1              flsh_en();
  56   1              for(i = 0;i < num;i++)
  57   1              {
  58   2                      *p=flsh_rd_byte(addx + i);      
  59   2                      p++;
  60   2              }
  61   1              flsh_ds();              //禁止iap操作
  62   1              return(1);
  63   1      }
  64          
  65          /***********************************************
  66          //扇区擦除
  67          ***********************************************/
  68          void flsh_sector_earse(UINT16 addx)
  69          {
  70   1      UINT16 sec_addr = 0xfe00;
  71   1              sec_addr &= addx;        //取得扇区首地址
  72   1              
  73   1              set_flsh_addr(sec_addr);
  74   1              flsh_en();
  75   1              flsh_wr_cmd(CMD_SES);   //扇区擦除命令
  76   1              set_flsh_trig(TRIG1);
  77   1              set_flsh_trig(TRIG2);
  78   1              _nop_;
*** WARNING C275 IN LINE 78 OF LIB\STC_FLASH.C: expression with possibly no effect
  79   1              flsh_ds();
  80   1      }
  81          /***********************************************************
  82          // 写一个字节并校验,如果写正确,返回1,否则返回0 
  83          ***********************************************************/
  84          bit flsh_wr_verify(UINT16 addx,UINT8 dax)
  85          {
  86   1              set_flsh_addr(addx);
  87   1              flsh_wr_cmd(CMD_PGM);
  88   1              flsh_wr_data(dax);                       //写数据到iap的数据寄存器。
  89   1              set_flsh_trig(TRIG1);
  90   1              set_flsh_trig(TRIG2);
  91   1              _nop_;
*** WARNING C275 IN LINE 91 OF LIB\STC_FLASH.C: expression with possibly no effect
  92   1              flsh_wr_data(0);                        //使iap的数据寄存器改变,以便回读。
  93   1              flsh_wr_cmd(CMD_READ);
  94   1              set_flsh_trig(TRIG1);
  95   1              set_flsh_trig(TRIG2);
  96   1              _nop_;
*** WARNING C275 IN LINE 96 OF LIB\STC_FLASH.C: expression with possibly no effect
  97   1              if(flsh_rd_data == dax)
  98   1                      return(1);
  99   1              else
 100   1                      return(0);
 101   1      }
 102          /**************************************************************************
 103          //写一个扇区    
 104          //传送16位的目的地址,最好从扇区首地址开始,8位的数据长度,源数据的指针
 105          **************************************************************************/
 106          bit flsh_sector_wr(UINT16 addx,UINT8 num,UINT8 * pdax)
 107          {
 108   1      UINT8 i;
 109   1      UINT16 addr;
 110   1              if(num > USED_SPACE)
 111   1                      return(0);                              //超出扇区范围退出
 112   1              addr = addx;
C51 COMPILER V7.50   STC_FLASH                                                             06/08/2006 14:06:33 PAGE 3   

 113   1              flsh_sector_earse(addx);        //擦除目的扇区
 114   1              flsh_en();
 115   1              for(i=0;i<num;i++)
 116   1              {
 117   2                      if(!flsh_wr_verify(addr,*pdax))
 118   2                      {
 119   3                              flsh_ds();      //操作出错,返回前禁止flash操作
 120   3                              return(0);
 121   3                      }
 122   2                      addr++;
 123   2                      pdax++;
 124   2              }
 125   1              flsh_ds();              //写完毕禁止FLASH 操作
 126   1              return(1);
 127   1      }


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


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

⌨️ 快捷键说明

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