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

📄 f_write.lst

📁 用ADuC8xx单片机实现AD转换、DA转换、片内flashdata的操作、定时器、计数器和I2C通信的源码
💻 LST
字号:
C51 COMPILER V6.03  F_WRITE                                                                10/07/2000 00:42:35 PAGE 1   


C51 COMPILER V6.03, COMPILATION OF MODULE F_WRITE
OBJECT MODULE PLACED IN .\f_write.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE .\f_write.c OPTIMIZE(9,SPEED) DEBUG OBJECTEXTEND

stmt level    source

   1          #include <ADUC812.H>
   2          #include "f_adi.h"
   3          
   4          /*---------------------------------------------------------
   5          ---------------------------------------------------------*/
   6          unsigned long flash_write (
   7            const void *buffer,      /* Buffer to save */
   8            unsigned long len,       /* Buffer length */
   9            unsigned long address)   /* FLASH address to write to */
  10          {
  11   1      const unsigned char *s = buffer;
  12   1      unsigned long i;
  13   1      unsigned int addr;
  14   1      
  15   1      /*-------------------------------------
  16   1      If the address is too big, exit.
  17   1      --------------------------------------*/
  18   1      if (address >= ADI_EEMEM_SIZE)
  19   1        return (0UL);
  20   1      
  21   1      /*-------------------------------------
  22   1      Otherwise, read the starting page.
  23   1      --------------------------------------*/
  24   1      addr = (unsigned int) address;
  25   1      
  26   1      EADRL = addr >> 2;
  27   1      ECON = ADI_EE_READ_PAGE;
  28   1      
  29   1      for (i = 0; i < len; i++)
  30   1        {
  31   2      
  32   2      /*-------------------------------------
  33   2      Write the appropriate EE byte.
  34   2      --------------------------------------*/
  35   2        switch (addr & 0x03)
  36   2          {
  37   3          case 0: EDATA1 = s[i]; break;
  38   3          case 1: EDATA2 = s[i]; break;
  39   3          case 2: EDATA3 = s[i]; break;
  40   3          case 3: EDATA4 = s[i]; break;
  41   3          }
  42   2        
  43   2        ++addr;
  44   2      
  45   2        if ((addr & 0x03) == 0)
  46   2          {
  47   3          ECON = ADI_EE_ERASE_PAGE;
  48   3          ECON = ADI_EE_WRITE_PAGE;
  49   3          }
  50   2      
  51   2        if (addr >= ADI_EEMEM_SIZE)
  52   2          break;
  53   2      
  54   2        if ((addr & 0x03) == 0)
  55   2          {
C51 COMPILER V6.03  F_WRITE                                                                10/07/2000 00:42:35 PAGE 2   

  56   3          EADRL = addr >> 2;
  57   3          ECON = ADI_EE_READ_PAGE;
  58   3          }
  59   2        }
  60   1      
  61   1      if ((addr & 0x03) != 0)
  62   1        {
  63   2        ECON = ADI_EE_ERASE_PAGE;
  64   2        ECON = ADI_EE_WRITE_PAGE;
  65   2        }
  66   1      
  67   1      return (i);
  68   1      }
  69          
  70          /*---------------------------------------------------------
  71          ---------------------------------------------------------*/


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