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

📄 iap.lst

📁 Keil ,LPC932系列环境下开发的频率测量单片机程序,用定时器来计脉冲数从而得出频率.
💻 LST
字号:
C51 COMPILER V7.07   IAP                                                                   03/06/2009 19:29:31 PAGE 1   


C51 COMPILER V7.07, COMPILATION OF MODULE IAP
OBJECT MODULE PLACED IN iap.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE iap.c ROM(COMPACT) OPTIMIZE(9,SPEED) BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include "reg922.h"
   2          #include "iap.h"
   3          
   4          #define  uint8   unsigned  char
   5          #define  uint16  unsigned  int
   6          
   7          #define  PAGE_SIZE  0x3F
   8          /* 定义FLASH控制命令字 */
   9          #define  LOAD       0x00        /* 加载数据     */
  10          #define  PROG       0x48        /* 编程         */
  11          #define  ERS_PROG   0x68        /* 擦除编程     */
  12          #define  ERS_S      0x71        /* 擦除扇区     */
  13          #define  ERS_P      0x70        /* 擦除页       */
  14          
  15          bit prog_fail;
  16          uint8 idata W_ADDRH,W_ADDRL;
  17          uint16 idata R_ADDR;
  18          
  19          bit  FLASH_WriteByte(uint16 addr, uint8 dat)
  20          {  
  21   1         long i;
  22   1         EA=0;
  23   1         FMCON = LOAD;                // 设置加载数据命令  
  24   1         FMADRH = addr>>8;            // 设置写入地址
  25   1         FMADRL = addr&0xFF;
  26   1         FMDATA = dat;                // 写入数据
  27   1         FMCON = ERS_PROG;
  28   1         for(i=0;i<200;i++);
  29   1         if ( (FMCON&0x0F)!=0x00 ) 
  30   1              {
  31   2              EA=1;
  32   2              return(0);
  33   2              }
  34   1         else 
  35   1              {
  36   2              EA=1;
  37   2              return(1);
  38   2              }
  39   1      }
  40          
  41          
  42          uint8  FLASH_ReadByte(uint16 addr)
  43          {
  44   1         uint8  code *readp;
  45   1         readp = addr;
  46   1         return(*readp);
  47   1      }
  48          
  49          /*
  50          bit  FLASH_WriteNByte(uint16 addr, uint8  *dat_buf, uint8 no)
  51          {  
  52             long i;
  53             if(0==no) return(0);
  54             FMCON = LOAD;                        // 设置加载数据命令  
  55             FMADRH = addr>>8;                    // 设置写入地址
C51 COMPILER V7.07   IAP                                                                   03/06/2009 19:29:31 PAGE 2   

  56             FMADRL = addr&0xFF;
  57             while(1)
  58             {  FMDATA = *dat_buf;                // 写入数据
  59                dat_buf++;                        // 指向下一个待写入的数据
  60                addr++;                           
  61                no--;
  62                if(0==no) break;                  // 判断是否写完所有数据,若是则退出
  63                
  64                if( (addr&PAGE_SIZE)==0 )         // 判断是否要换页
  65                {  FMCON = ERS_PROG;              // 若是,则擦除编程
  66                   if( (FMCON&0x0F)!=0x00 ) return(0);
  67                   // 切换到下一页 
  68                   FMCON = LOAD;                  
  69                   FMADRH = addr>>8;
  70                   FMADRL = addr&0xFF;
  71                }
  72             }
  73             FMCON = ERS_PROG;                    // 擦除编程
  74             for(i=0;i<200;i++);
  75             if( (FMCON&0x0F)!=0x00 ) 
  76                          {
  77                                  EA=1;
  78                                  return(0);      
  79                          }
  80               else  
  81                          {
  82                                  EA=1;
  83                                  return(1);
  84                          }
  85          }
  86          
  87          void  FLASH_ReadNByte(uint16 addr, uint8 *dat_buf, uint8 no)
  88          {  uint8 code *readp;
  89                  
  90             if(0==no) return;
  91             readp = addr;                                // 设置读取的地址
  92             for(; no>0; no--)
  93             {  *dat_buf = *readp;                // 读取数据
  94                dat_buf++;                        
  95                readp++;                          // 指向下一地址
  96             }  
  97          }
  98          
  99          bit  FLASH_EraseSector(uint16 addr)
 100          {  
 101             long i;
 102             EA=0;
 103             FMADRH = addr>>8;
 104             FMADRL = addr&0xFF;
 105             FMCON = ERS_S;
 106             for(i=0;i<200;i++);     
 107             if( (FMCON&0x0F)!=0x00 ) 
 108                  {
 109                          EA=1;
 110                          return(0);
 111                  }
 112               else 
 113                  {
 114                          EA=1;
 115                          return(1);
 116                  }
 117          }
C51 COMPILER V7.07   IAP                                                                   03/06/2009 19:29:31 PAGE 3   

 118          
 119          bit  FLASH_ErasePage(uint16 addr)
 120          {  
 121             long i;
 122             EA=0;
 123             FMADRH = addr>>8;
 124             FMADRL = addr&0xFF;
 125             FMCON = ERS_P;
 126             for(i=0;i<200;i++);        
 127             if( (FMCON&0x0F)!=0x00 ) 
 128                  {
 129                          EA=1;
 130                          return(0);
 131                  }
 132               else 
 133                   {
 134                          EA=1;
 135                          return(1);
 136                  }
 137          }
 138          
 139          bit  FLASH_FillPage(uint16 addr, uint8  dat)
 140          {  uint8  i;
 141             long j;      
 142             // 擦除扇区
 143             if( FLASH_ErasePage(addr)==0 ) return(0);
 144             //填充数据
 145             FMADRH = addr>>8;                    // 设置页起始地址
 146             FMADRL = addr&(~PAGE_SIZE);
 147             FMCON = LOAD;                        // 设置加载数据命令
 148             for(i=0; i<=PAGE_SIZE; i++)
 149             {  FMDATA = dat;                     // 加载数据
 150             }
 151             FMCON = PROG;                        // 开始编程
 152             for(j=0;j<200;j++);             
 153             if( (FMCON&0x0F)!=0x00 ) 
 154                  {       
 155                          EA=1;
 156                          return(0);
 157                  }
 158               else 
 159                   {
 160                          EA=1;
 161                          return(1);
 162                  }
 163          }
 164          
 165          bit PGM_USER(uint8 page_hi , uint8 page_lo )
 166          {       
 167              uint8 Fm_stat;
 168                  uint8 i; // 循环次数
 169                  FMCON = LOAD; // 装载命令,清除页寄存器
 170                  FMADRH = page_hi; //
 171                  FMADRL = page_lo; // 页地址写入地址寄存器
 172                          for (i=0;i<64;i++)
 173                  {
 174                  //      temp=dbytes[i];
 175                          FMDATA=0xdd;
 176                  }
 177                  FMCON=ERS_PROG; // 擦除&编程页命令
 178                  Fm_stat = FMCON; // 读结果状态
 179                  if((Fm_stat & 0xF)!=0) 
C51 COMPILER V7.07   IAP                                                                   03/06/2009 19:29:31 PAGE 4   

 180                    prog_fail = 1;
 181                  else 
 182                    prog_fail = 0;
 183                  return (prog_fail);
 184          }
 185          
 186          void FLASH_TEST(void)
 187          {
 188          unsigned char sta,addrh,addrl;
 189          unsigned int i,j;
 190          Uart_Printf("This is a FLASH Test!");
 191          for(i=0xd00;i<0xd64;i++)
 192          {
 193          addrh=i/256;
 194          addrl=i%256;
 195          if(PGM_USER(addrh,addrl)) 
 196          {
 197          //      Uart_Printf("Program FLASH Fail!\n");                   
 198          }
 199          }
 200          
 201          for(i=0xcf0;i<0xdff;i++)
 202          {
 203          sta=FLASH_ReadByte(i);
 204          Uart_Printchar(sta);
 205          for(j=0;j<65535;j++) ;
 206          }
 207          }       
 208          */              
 209          
 210          
 211          
 212          
 213          
 214          
 215          
 216          
 217          
 218          
 219          
 220          
 221          
 222          
 223          
 224          
 225          
 226          
 227          
 228          
 229          
 230          
 231          
 232          
 233          
 234          
 235          
 236          
 237          
 238          


MODULE INFORMATION:   STATIC OVERLAYABLE
C51 COMPILER V7.07   IAP                                                                   03/06/2009 19:29:31 PAGE 5   

   CODE SIZE        =     97    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       4
   IDATA SIZE       =      4    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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