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

📄 iap_lite.lst

📁 矿工定位系统单端
💻 LST
字号:
C51 COMPILER V7.05   IAP_LITE                                                              04/13/2004 13:35:28 PAGE 1   


C51 COMPILER V7.05, COMPILATION OF MODULE IAP_LITE
OBJECT MODULE PLACED IN Iap_lite.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Iap_lite.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /******************************************************************
   2          * 文件名:IAP_LITE.C
   3          * 功能:实现IAP_Lite功能,进行字节擦除编程操作
   4          * 日期:2003.11.10
   5          * 说明:
   6          ******************************************************************/  
   7          #define  uint8   unsigned  char
   8          #define  uint16  unsigned  int
   9          
  10          /* 定义页宽度屏蔽字(16字节时为0x0F,64字节时为0x3F) */
  11          #define  PAGE_SIZE  0x3F
  12          
  13          /* IAP_Lite相关寄存器定义 */
  14          sfr     FMADRH  = 0xE7;
  15          sfr     FMADRL  = 0xE6;
  16          sfr     FMCON   = 0xE4;
  17          sfr     FMDATA  = 0xE5;
  18          
  19          /* 定义FLASH控制命令字 */
  20          #define  LOAD       0x00        /* 加载数据     */
  21          #define  PROG       0x48        /* 编程         */
  22          #define  ERS_PROG   0x68        /* 擦除编程     */
  23          #define  ERS_S      0x71        /* 擦除扇区     */
  24          #define  ERS_P      0x70        /* 擦除页       */
  25          
  26          
  27          /******************************************************************
  28          * 名称:FLASH_WriteByte
  29          * 功能:指定FLASH地址,写单字节数据
  30          * 入口参数:addr                指定的地址
  31          *          dat          待写入的数据
  32          * 出口参数:返回0时表示操作错误
  33          ******************************************************************/
  34          bit  FLASH_WriteByte(uint16 addr, uint8 dat)
  35          {  FMCON = LOAD;                // 设置加载数据命令  
  36   1         FMADRH = addr>>8;            // 设置写入地址
  37   1         FMADRL = addr&0xFF;          
  38   1         FMDATA = dat;                // 写入数据
  39   1         FMCON = ERS_PROG;            // 擦除编程
  40   1         
  41   1         if( (FMCON&0x0F)!=0x00 ) return(0);
  42   1           else return(1);
  43   1      }
  44          
  45          
  46          /******************************************************************
  47          * 名称:FLASH_ReadByte
  48          * 功能:指定FLASH地址,读单字节数据
  49          * 入口参数:addr                指定的地址
  50          * 出口参数:返回值即是读出的数据
  51          ******************************************************************/
  52          uint8  FLASH_ReadByte(uint16 addr)
  53          {  uint8  code *readp;
  54   1      
  55   1         readp = addr;
C51 COMPILER V7.05   IAP_LITE                                                              04/13/2004 13:35:28 PAGE 2   

  56   1         return(*readp);
  57   1      }
  58          
  59          
  60          /******************************************************************
  61          * 名称:FLASH_WriteNByte
  62          * 功能:指定FLASH起始地址,写多字节数据
  63          * 入口参数:addr                指定的起始地址
  64          *          dat_buf      待写入的数据缓冲区指针
  65          *          no           要写入数据个数
  66          * 出口参数:返回0时表示操作错误
  67          ******************************************************************
  68          bit  FLASH_WriteNByte(uint16 addr, uint8  *dat_buf, uint8 no)
  69          {  if(0==no) return(0);
  70             
  71             FMCON = LOAD;                        // 设置加载数据命令  
  72             FMADRH = addr>>8;                    // 设置写入地址
  73             FMADRL = addr&0xFF;
  74             while(1)
  75             {  FMDATA = *dat_buf;                // 写入数据
  76                dat_buf++;                        // 指向下一个待写入的数据
  77                addr++;                           
  78                no--;
  79                if(0==no) break;                  // 判断是否写完所有数据,若是则退出
  80                
  81                if( (addr&PAGE_SIZE)==0 )         // 判断是否要换页
  82                {  FMCON = ERS_PROG;              // 若是,则擦除编程
  83                   if( (FMCON&0x0F)!=0x00 ) return(0);
  84                   // 切换到下一页 
  85                   FMCON = LOAD;                  
  86                   FMADRH = addr>>8;
  87                   FMADRL = addr&0xFF;
  88                }
  89             }
  90             FMCON = ERS_PROG;                    // 擦除编程
  91             if( (FMCON&0x0F)!=0x00 ) return(0);      
  92               else  return(1);
  93          }
  94          
  95          /******************************************************************
  96          * 名称:FLASH_ReadNByte
  97          * 功能:指定FLASH起始地址,读多字节数据
  98          * 入口参数:addr                指定的起始地址
  99          *          dat_buf      保存数据的缓冲区指针
 100          *          no           要写入数据个数
 101          * 出口参数:无
 102          ******************************************************************
 103          void  FLASH_ReadNByte(uint16 addr, uint8 *dat_buf, uint8 no)
 104          {  uint8 code *readp;
 105                  
 106             if(0==no) return;
 107             readp = addr;                                // 设置读取的地址
 108             for(; no>0; no--)
 109             {  *dat_buf = *readp;                // 读取数据
 110                dat_buf++;                        
 111                readp++;                          // 指向下一地址
 112             }  
 113          }
 114          
 115          
 116          /******************************************************************
 117          * 名称:FLASH_EraseSector
C51 COMPILER V7.05   IAP_LITE                                                              04/13/2004 13:35:28 PAGE 3   

 118          * 功能:扇区擦除
 119          * 入口参数:addr                指定待擦除扇区内的地址
 120          * 出口参数:返回0时表示操作错误
 121          ******************************************************************
 122          bit  FLASH_EraseSector(uint16 addr)
 123          {  FMADRH = addr>>8;
 124             FMADRL = addr&0xFF;
 125             FMCON = ERS_S;
 126             
 127             if( (FMCON&0x0F)!=0x00 ) return(0);
 128               else return(1);
 129          }
 130          
 131          
 132          /******************************************************************
 133          * 名称:FLASH_ErasePage
 134          * 功能:页擦除
 135          * 入口参数:addr                指定待擦除页内的地址
 136          * 出口参数:返回0时表示操作错误
 137          ******************************************************************
 138          bit  FLASH_ErasePage(uint16 addr)
 139          {  FMADRH = addr>>8;
 140             FMADRL = addr&0xFF;
 141             FMCON = ERS_P;
 142             
 143             if( (FMCON&0x0F)!=0x00 ) return(0);
 144               else return(1);
 145          }
 146          
 147          
 148          /******************************************************************
 149          * 名称:FLASH_FillPage
 150          * 功能:页填充
 151          * 入口参数:addr                指定待填充页内的地址
 152          *          dat          待填充的数据
 153          * 出口参数:返回0时表示操作错误
 154          * 说明:函数会先调用FLASH_ErasePage擦除扇区
 155          ******************************************************************
 156          bit  FLASH_FillPage(uint16 addr, uint8  dat)
 157          {  uint8  i;
 158                  
 159             // 擦除扇区
 160             if( FLASH_ErasePage(addr)==0 ) return(0);
 161             // 填充数据
 162             FMADRH = addr>>8;                    // 设置页起始地址
 163             FMADRL = addr&(~PAGE_SIZE);
 164             FMCON = LOAD;                        // 设置加载数据命令
 165             for(i=0; i<=PAGE_SIZE; i++)
 166             {  FMDATA = dat;                     // 加载数据
 167             }
 168             FMCON = PROG;                        // 开始编程
 169             
 170             if( (FMCON&0x0F)!=0x00 ) return(0);
 171               else return(1);
 172          }
 173          
 174                  */      
 175          
 176          
 177          
 178          
 179          
C51 COMPILER V7.05   IAP_LITE                                                              04/13/2004 13:35:28 PAGE 4   

 180          
 181          
 182          
 183          
 184          
 185          
 186          
 187          
 188          
 189          
 190          
 191          
 192          
 193          
 194          
 195          
 196          
 197          
 198          
 199          


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