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

📄 w79exxxnvm.lst

📁 W79E2051/W79E825 NVM(仿EEPROM) 库函数
💻 LST
字号:
C51 COMPILER V6.14  W79EXXXNVM                                                             01/09/2009 06:32:08 PAGE 1   


C51 COMPILER V6.14, COMPILATION OF MODULE W79EXXXNVM
OBJECT MODULE PLACED IN .\w79exxxNVM.OBJ
COMPILER INVOKED BY: E:\Program Files\keil\C51\BIN\C51.EXE .\w79exxxNVM.c DEBUG OBJECTEXTEND

stmt level    source

   1          /*---------------------------------------------------*/
   2          /*                                                   */
   3          /*   W79E4051/W79E825 NVM通用读写子程序              */
   4          /*                                                   */
   5          /*   CPU  : W79E4051                                 */
   6          /*   晶振 : 12MHz                                    */
   7          /*   作者 : 许意义                                   */  
   8          /*   版本 : V1.0                                     */
   9          /*   日期 : 2009.1.6                                 */
  10          /*                                                   */
  11          /*---------------------------------------------------*/
  12          #include "MPU51TYPE.h"
  13          #include "W79ExxxNVM.h"
  14          
  15          int NVM_RD_INT(unsigned char ADDR)   // 字读出
  16          { unsigned int IA;
  17   1        byte0(IA) = NVM_RD_CHAR(ADDR++);
  18   1        byte1(IA) = NVM_RD_CHAR(ADDR);
  19   1        return(IA);
  20   1      }
  21          
  22          long NVM_RD_LONG(unsigned char ADDR)   // 长字读出
  23          { unsigned long LA;
  24   1        byte0(LA) = NVM_RD_CHAR(ADDR++);
  25   1        byte1(LA) = NVM_RD_CHAR(ADDR++);
  26   1        byte2(LA) = NVM_RD_CHAR(ADDR++);
  27   1        byte3(LA) = NVM_RD_CHAR(ADDR);
  28   1        return(LA);
  29   1      }
  30          
  31          void NVM_RD_PAGE(unsigned char PAGE,unsigned char *p) // 页读出
  32          { 
  33   1        unsigned char a, i;
  34   1        a = PAGE << NVM_RL;
  35   1        for (i=0; i<NVM_PLEN; i++)
  36   1          { *p++ = NVM_RD_CHAR(a++);
  37   2          }
  38   1      }
  39          
  40          void NVM_CLR(unsigned char PAGE)  // 页擦除
  41          { 
  42   1        NVMADDR = PAGE << NVM_RL;
  43   1        NVMCON  = _BV(EER);
  44   1      }
  45          
  46          void NVM_WR_CHAR(unsigned char ADDR,unsigned char CA) // 字节写入
  47          { 
  48   1        NVMADDR = ADDR;
  49   1        NVMDATA = CA;
  50   1        NVMCON  = _BV(EWR);
  51   1      }
  52          
  53          void NVM_WR_INT(unsigned char ADDR,unsigned int IA)  // 字写入
  54          { 
  55   1        NVM_WR_CHAR(ADDR++,byte0(IA));
C51 COMPILER V6.14  W79EXXXNVM                                                             01/09/2009 06:32:08 PAGE 2   

  56   1        NVM_WR_CHAR(ADDR,  byte1(IA));
  57   1      }
  58          
  59          void NVM_WR_LONG(unsigned char ADDR,unsigned long LA) // 长字写入
  60          { 
  61   1        NVM_WR_CHAR(ADDR++,byte0(LA));
  62   1        NVM_WR_CHAR(ADDR++,byte1(LA));
  63   1        NVM_WR_CHAR(ADDR++,byte2(LA));
  64   1        NVM_WR_CHAR(ADDR,  byte3(LA));
  65   1      }
  66          
  67          void NVM_WR_PAGE(unsigned char PAGE,unsigned char *p) // 页写入
  68          { 
  69   1        unsigned char a, i;
  70   1        unsigned char *p1;
  71   1        a = PAGE << NVM_RL;
  72   1        p1 = p;
  73   1        for (i=0; i<NVM_PLEN; i++)
  74   1          { if ( *p1++ != NVM_RD_CHAR(a++))      // 比较页内容,值相等直接返回。
  75   2              { NVM_CLR(PAGE);                   // 值不等先页擦除。
  76   3                a = PAGE << NVM_RL;
  77   3                for (i=0; i<NVM_PLEN; i++)
  78   3                  { NVM_WR_CHAR(a++,*p++);       // 再写入。
  79   4                  }
  80   3                goto NVM_WR_PAGE_END;
  81   3              }
  82   2          }
  83   1      NVM_WR_PAGE_END: ;                         // 页写入成功,返回
  84   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    282    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      24
   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 + -