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

📄 fat16.lst

📁 基于ateml89c51为核心处理器的mp3播放器程序。
💻 LST
📖 第 1 页 / 共 2 页
字号:
 127   5                                                      SONG[l * 11 + i] = Page_Buf[j * 32 + i];
 128   5                                              }
 129   4                                              l++;
 130   4                              }
 131   3                      }
 132   2                      k++;
 133   2                      ReadPage(0 + k / 32, k % 32, Page_Buf);
 134   2              }
 135   1              return (l);
 136   1      }
 137          int ReadSector(unsigned char *Name, unsigned char *databuff)
 138          {
 139   1              int i, k, Page;
 140   1              unsigned  long CurrentSector;
 141   1              if (DataRead == 0) //第一次读取,先查找文件,然后进行读取
 142   1                      {
 143   2                              Page = BootSector + RsdSector + 2 * SectorofFatSize;
 144   2                              ReadPage(0 + Page / 32, Page % 32, databuff);
 145   2                              while (databuff[0] != 0)
 146   2                              {//遍历整个目录
 147   3                                      for (i=0; i<16; i++)
 148   3                                      {
 149   4                                              if (!memcmp(Name, &databuff[i * 32], 11))
 150   4                                              {
 151   5                                                      Current_Cluster = databuff[32 * i + 27] * 256 + databuff[32 * i + 26];
 152   5                                                      printuf("Current_Cluster : %x", (Current_Cluster & 0xff00) >> 8);
 153   5                                                      printuf("%x\n", Current_Cluster);
 154   5                                                      for (k=31; k>27; k--) 
 155   5                                                      {
 156   6                                                              DataRemain = (DataRemain << 8) | databuff[i * 32 + k];
 157   6                                                      }
 158   5                                                                      //ReadPage((Current_Cluster+Sector_Offset)/32,(Current_Cluster+Sector_Offset)%32,databuff);
 159   5                                                                      
 160   5                                                      CurrentSector = (Current_Cluster - 2) * SecPerClus + FirstDataSec;
 161   5                                                      ReadPage(CurrentSector / 32, CurrentSector % 32, databuff);
 162   5                                                                      
 163   5                                                      DataRead += 512;
 164   5                                                      DataRemain -= 512;
 165   5                                                      if (DataRemain < 0) 
 166   5                                                      {
 167   6                                                              DataRead = 0;
 168   6                                                              return (DataRemain + 512);
 169   6                                                      }
 170   5                                                      else
 171   5                                                      {
 172   6                                                              return (512);
 173   6                                                      }
C51 COMPILER V7.07   FAT16                                                                 11/20/2006 17:50:30 PAGE 4   

 174   5                                              }
 175   4                                      }
 176   3                                      Page++;
 177   3                                      ReadPage(0 + Page / 32, Page % 32, databuff);
 178   3                        }
 179   2                        printu("\nfile is not found!");
 180   2                        return (0);
 181   2                      }
 182   1              else
 183   1                      {
 184   2      //                      if((Current_Cluster+Sector_Offset+DataRead/BytesPerSec)%32) Current_Cluster=NextCluster(Current_Clust
             -er);
 185   2      //                      ReadPage((Current_Cluster+Sector_Offset)/32,(Current_Cluster+Sector_Offset+DataRead/BytesPerSec)%32,d
             -atabuff);
 186   2                              Current_Cluster++;
 187   2                              CurrentSector = (Current_Cluster - 2) * SecPerClus + FirstDataSec;
 188   2                              ReadPage(CurrentSector / 32, CurrentSector % 32, databuff);
 189   2      
 190   2                              DataRead += 512;
 191   2      //                      if(!((Current_Cluster+Sector_Offset+DataRead/BytesPerSec)%32)) Current_Cluster=NextCluster(Current_Cl
             -uster+32);
 192   2      //                      if(!((Current_Cluster+Sector_Offset+DataRead/BytesPerSec)%32)) Current_Cluster+=32;//默认歌曲文件是顺
             -序存放的。
 193   2                              DataRemain -= 512;
 194   2                              if (DataRemain < 0) 
 195   2                              {
 196   3                                      DataRead = 0;
 197   3                                      return (DataRemain + 512);
 198   3                              }
 199   2                              else return (512);
 200   2                      }
 201   1      
 202   1      }
 203          
 204          unsigned int NextCluster(unsigned int CurrentCluster)
 205          {
 206   1              unsigned int i, j;
 207   1              if (FAT_TYPE == FAT12)
 208   1              {
 209   2                      ReadPage(Begin_Cluster + (BootSector + RsdSector + (CurrentCluster * 3 / 2) / BytesPerSec) / SecPerClus,
             - 
 210   2                      (BootSector + RsdSector + (CurrentCluster * 3 / 2) / BytesPerSec) % SecPerClus, Page_Buf);
 211   2                      if (CurrentCluster % 2 == 0)
 212   2                      {
 213   3                              j = Page_Buf[(CurrentCluster * 3 / 2) % BytesPerSec + 1];
 214   3                              i = Page_Buf[(CurrentCluster * 3 / 2) % BytesPerSec] | (j << 8);
 215   3                              i &= 0x0fff;
 216   3                      }
 217   2                      else 
 218   2                      {
 219   3                              j = Page_Buf[(CurrentCluster * 3 / 2) % BytesPerSec + 1];
 220   3                              i = Page_Buf[(CurrentCluster * 3 / 2) % BytesPerSec] | (j << 8);
 221   3                              i = (i >> 4);
 222   3                      }
 223   2                      return (i);
 224   2              }
 225   1              else if (FAT_TYPE == FAT16)
 226   1              {
 227   2                      ReadPage(Begin_Cluster + (BootSector+RsdSector + (CurrentCluster * 2) / BytesPerSec) / 32,
 228   2                      (BootSector + RsdSector + (CurrentCluster * 2) / BytesPerSec) % 32, Page_Buf);
 229   2                      i = Page_Buf[(CurrentCluster * 2) % BytesPerSec + 1] * 256 + Page_Buf[(CurrentCluster * 2) % BytesPerSec
             -];
C51 COMPILER V7.07   FAT16                                                                 11/20/2006 17:50:30 PAGE 5   

 230   2                      return (i);
 231   2              }
 232   1              else if (FAT_TYPE == FAT32)
 233   1              {
 234   2                      ReadPage(Begin_Cluster + (BootSector+RsdSector + (CurrentCluster * 4) / BytesPerSec) / SecPerClus, (Boot
             -Sector + RsdSector + (CurrentCluster * 4) / BytesPerSec) % SecPerClus, Page_Buf);
 235   2                      i = Page_Buf[(CurrentCluster * 4) % BytesPerSec + 3] * 256 * 256 * 256 + Page_Buf[(CurrentCluster * 4) %
             - BytesPerSec + 2] 
 236   2                              * 256 * 256 + Page_Buf[(CurrentCluster * 4) % BytesPerSec + 1] * 256 + Page_Buf[(CurrentCluster * 4) % 
             -BytesPerSec];
 237   2                      return (i);
 238   2              }
 239   1      }
 240          
 241          
 242          
 243          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2842    ----
   CONSTANT SIZE    =    134    ----
   XDATA SIZE       =     37      30
   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 + -