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

📄 flash.lst

📁 基于ateml89c51为核心处理器的mp3播放器程序。
💻 LST
📖 第 1 页 / 共 2 页
字号:
*** ERROR C231 IN LINE 294 OF REGSND1.H: 'EP0INT': redefinition
*** ERROR C231 IN LINE 299 OF REGSND1.H: 'MMDAT': redefinition
*** ERROR C231 IN LINE 300 OF REGSND1.H: 'MMCMD': redefinition
*** ERROR C231 IN LINE 301 OF REGSND1.H: 'MMSTA': redefinition
*** ERROR C231 IN LINE 302 OF REGSND1.H: 'MMMSK': redefinition
*** ERROR C231 IN LINE 303 OF REGSND1.H: 'MMCON0': redefinition
*** ERROR C231 IN LINE 304 OF REGSND1.H: 'MMCON1': redefinition
*** ERROR C231 IN LINE 305 OF REGSND1.H: 'MMCON2': redefinition
*** ERROR C231 IN LINE 306 OF REGSND1.H: 'MMINT': redefinition
*** ERROR C231 IN LINE 307 OF REGSND1.H: 'MMCLK': redefinition
*** ERROR C231 IN LINE 312 OF REGSND1.H: 'DAT16H': redefinition
*** ERROR C231 IN LINE 317 OF REGSND1.H: 'SCON': redefinition
*** ERROR C231 IN LINE 318 OF REGSND1.H: 'SBUF': redefinition
*** ERROR C231 IN LINE 319 OF REGSND1.H: 'SADDR': redefinition
*** ERROR C231 IN LINE 320 OF REGSND1.H: 'SADEN': redefinition
*** ERROR C231 IN LINE 322 OF REGSND1.H: 'SM0': redefinition
*** ERROR C231 IN LINE 323 OF REGSND1.H: 'FE': redefinition
*** ERROR C231 IN LINE 324 OF REGSND1.H: 'SM1': redefinition
*** ERROR C231 IN LINE 325 OF REGSND1.H: 'SM2': redefinition
*** ERROR C231 IN LINE 326 OF REGSND1.H: 'REN': redefinition
*** ERROR C231 IN LINE 327 OF REGSND1.H: 'TB8': redefinition
*** ERROR C231 IN LINE 328 OF REGSND1.H: 'RB8': redefinition
*** ERROR C231 IN LINE 329 OF REGSND1.H: 'TI': redefinition
*** ERROR C231 IN LINE 330 OF REGSND1.H: 'RI': redefinition
*** ERROR C231 IN LINE 335 OF REGSND1.H: 'SPCON': redefinition
*** ERROR C231 IN LINE 336 OF REGSND1.H: 'SPSTA': redefinition
*** ERROR C231 IN LINE 337 OF REGSND1.H: 'SPDAT': redefinition
*** ERROR C231 IN LINE 342 OF REGSND1.H: 'SSCON': redefinition
*** ERROR C231 IN LINE 343 OF REGSND1.H: 'SSSTA': redefinition
*** ERROR C231 IN LINE 344 OF REGSND1.H: 'SSDAT': redefinition
*** ERROR C231 IN LINE 345 OF REGSND1.H: 'SSADR': redefinition
*** ERROR C231 IN LINE 350 OF REGSND1.H: 'KBCON': redefinition
*** ERROR C231 IN LINE 351 OF REGSND1.H: 'KBSTA': redefinition
*** ERROR C231 IN LINE 356 OF REGSND1.H: 'ADCON': redefinition
*** ERROR C231 IN LINE 357 OF REGSND1.H: 'ADDL': redefinition
*** ERROR C231 IN LINE 358 OF REGSND1.H: 'ADDH': redefinition
*** ERROR C231 IN LINE 359 OF REGSND1.H: 'ADCLK': redefinition
  25          
  26          xdata BYTE rKM29UXDATA          _at_    0x3FFF;
  27          
  28          
  29          
  30          /*unsigned int Check_Flash_Id(void)
  31          {
C51 COMPILER V7.07   FLASH                                                                 11/26/2006 21:07:32 PAGE 5   

  32                  int i;
  33                  unsigned int id;
  34          
  35                  FC_CMD;
  36                  rKM29UXDATA = 0x90;
  37          
  38                  FC_ADDR;
  39                  rKM29UXDATA = 0;
  40                  FC_DATA;
  41          
  42                  for(i=0;i<5;i++);       //wait 100ns
  43                  id = rKM29UXDATA<<8;
  44                  for(i=0;i<5;i++);       //wait 100ns
  45                  id += rKM29UXDATA;
  46                  FC_INACTIVE;
  47                  return id;
  48          }*/
  49          void Flash_Reset(void)          //flash reset
  50          { 
  51   1              int i;
  52   1              //  rPDATC = rPDATC | WP;       //write unprotect
  53   1              FC_CMD;
  54   1              rKM29UXDATA = 0xff;     //reset command
  55   1              for (i=0;i<3000;i++);   //delay         
  56   1      }
  57          /********************************************************/
  58          /*功能:擦除FLASH的1Block(对应文件系统为1Cluster)          */
  59          /*     每一个簇为16KB,因此KM29U128共有1024个簇            */
  60          /*输入:unsigned int cluster/block(需要擦除的Block Number)*/
  61          /*返回:OK或FAIL                                         */
  62          /********************************************************/
  63          
  64          unsigned char Erase_Cluster(unsigned int cluster) 
  65          {
  66   1              unsigned int blockPage = (cluster << 5);
  67   1              int i;
  68   1      
  69   1              FC_CMD;
  70   1              rKM29UXDATA = 0x60;
  71   1      
  72   1              FC_ADDR;             
  73   1              rKM29UXDATA = blockPage & 0xff;  
  74   1              rKM29UXDATA = (blockPage >> 8) & 0xff;
  75   1      
  76   1              for (i=0; i<2; i++);            //tWC  50ns
  77   1          
  78   1              FC_CMD;
  79   1              rKM29UXDATA = 0xd0;
  80   1          
  81   1              for (i=0; i<3; i++);
  82   1          
  83   1              FC_DATA;
  84   1              WAITRB;                                 //wait max 3ms
  85   1      
  86   1              FC_CMD;
  87   1              rKM29UXDATA = 0x70;
  88   1              FC_DATA;
  89   1              if (rKM29UXDATA & 0x1) //erase error
  90   1              {
  91   2                      FC_INACTIVE;
  92   2                      return FALSE;
  93   2              }
C51 COMPILER V7.07   FLASH                                                                 11/26/2006 21:07:32 PAGE 6   

  94   1              else 
  95   1              {
  96   2                      FC_INACTIVE;   
  97   2                      return TRUE;
  98   2              }
  99   1      }
 100          
 101          /********************************************************/
 102          /*
 103          int VerifyPage(unsigned int block,unsigned int page,unsigned char *buffer)
 104          {
 105                  ReadPage(block,page,databuff);
 106                  if(strncmp((char *)databuff,(char *)buffer,528)==0)
 107                          return 1;
 108                  else
 109                          return 0;
 110          }
 111          */
 112          /*****************************************************************/
 113          /*功能:读取FLASH的某个Block中的1page数据                           */
 114          /*     在文件系统中,有如下对应关系:Block=Cluster                   */
 115          /*                               Page =Sector                    */
 116          /*输入:unsigned int block,page,unsigned char *pPage(存放数据的地址)*/
 117          /*****************************************************************/
 118          
 119          void ReadPage(unsigned int block, unsigned int page, unsigned char *pPage)
 120          {
 121   1              int i;
 122   1              unsigned int blockPage = (block << 5) + page;
 123   1      
 124   1              FC_CMD;               
 125   1              rKM29UXDATA = 0x00;
 126   1              FC_ADDR;
 127   1              rKM29UXDATA = 0;
 128   1              rKM29UXDATA = blockPage & 0xff;
 129   1              rKM29UXDATA = (blockPage >> 8) & 0xff;
 130   1      //f     for(i=0;i<3;i++);
 131   1              FC_DATA;
 132   1              WAITRB; //random access ,wait max. 10us 
 133   1      
 134   1              for (i=0; i<SectorLength; i++) 
 135   1              {
 136   2                      *pPage++ = rKM29UXDATA; 
 137   2              }
 138   1              FC_INACTIVE;
 139   1      }
 140          
 141          /*****************************************************************/
 142          /*功能:向FLASH的某个Block中的1page写入数据                         */
 143          /*     在文件系统中,有如下对应关系:Block=Cluster                   */
 144          /*                               Page =Sector                    */
 145          /*输入:unsigned int block,page,unsigned char *pPage(存放数据的地址)*/
 146          /*输出:0:Fail;1:OK                                               */
 147          /*****************************************************************/
 148          
 149          int WritePage(unsigned int block, unsigned int page, unsigned char *pPage)  
 150          {
 151   1              unsigned int blockPage = (block << 5) + page;
 152   1              int i;
 153   1              unsigned char *Source;                                      //the begin addr of data to write
 154   1              Source = pPage;
 155   1              FC_CMD;
C51 COMPILER V7.07   FLASH                                                                 11/26/2006 21:07:32 PAGE 7   

 156   1              rKM29UXDATA = 0x80;
 157   1              FC_ADDR;
 158   1              rKM29UXDATA = 0;
 159   1              rKM29UXDATA = blockPage & 0xff;
 160   1              rKM29UXDATA = (blockPage >> 8) & 0xff;
 161   1              FC_DATA;
 162   1              //for(i=0;i<64;i++)rKM29UXDATA=*pPage++;//Bulk_Out_Buf---->pPage
 163   1      
 164   1              for (i=0; i<528; i++)
 165   1              {
 166   2                      rKM29UXDATA = *pPage++;
 167   2              }         //data input->as the same as _WrPage528()
 168   1      
 169   1              FC_CMD;
 170   1              rKM29UXDATA = 0x10;
 171   1      //f     for(i=0;i<10;i++);  //twb=100ns. why is it 10? spec is false?  
 172   1                              //No. It's because of LED of PE1.
 173   1              WAITRB; //wait max 500us;
 174   1              rKM29UXDATA = 0x70;
 175   1              FC_DATA;
 176   1      //f     for(i=0;i<3;i++);  //twhr=60ns
 177   1              if ((rKM29UXDATA & 0x1))        //                      
 178   1              {
 179   2                      FC_INACTIVE;    
 180   2                      return 0;
 181   2              }
 182   1              else
 183   1              {
 184   2                      FC_INACTIVE;        
 185   2      
 186   2              }
 187   1      }
 188          
 189          
 190          

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

⌨️ 快捷键说明

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