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

📄 file.lst

📁 单片机读写优盘
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.06   FILE                                                                  07/30/2008 08:56:13 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE FILE
OBJECT MODULE PLACED IN file.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE file.c LARGE BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          //************************************************************************
   2          //author:dragon
   3          //web:8dragon.com
   4          //2004.2.5完成于桃龙源
   5          //*************************************************************************
   6          #include "AT89X52.h"
   7          #include "host_811.h"
   8          #include "file.h"
   9          #include "math.h"
  10          #include "string.h"
  11          #include "ufi.h"
  12          struct _BPB             SimpleBpb;
  13          struct _FILE    FileControl;
  14          FAT_PARAMETER FatParameter;
  15          WORD FatCache[2][256];
  16          BYTE InitFsys()
  17          {       
  18   1              BYTE buf[512];
  19   1              UINT m_Offset;
  20   1              DWORD DataSectors,TotalClusters;
  21   1              ///////////////////////////////////////////////////////////////////////
  22   1              DelayMs(100);
  23   1              if(Read(0,1,(BYTE *)buf)==FALSE)        
  24   1                      return FALSE;
  25   1              DelayMs(100);
  26   1              if(buf[0x00]==0xEB ||buf[0x02]==0x90)   
  27   1                      m_Offset=0;
  28   1              else
  29   1                      m_Offset=ConvTwoBytes((buf+0x1c6));     
  30   1              if(Read(0+m_Offset,1,(BYTE *)buf)==FALSE)
  31   1                      return FALSE;
  32   1              SimpleBpb.BytsPerSec =ConvTwoBytes((&buf[11]));
  33   1              SimpleBpb.SecPerClus = buf[13];
  34   1              SimpleBpb.RsvdSecCnt =ConvTwoBytes((&buf[14]));
  35   1              SimpleBpb.NumFATs = buf[16];
  36   1              SimpleBpb.RootEntCnt = ConvTwoBytes((&buf[17]));
  37   1              if((SimpleBpb.TotSec = ConvTwoBytes((&buf[19])))==0)
  38   1                      SimpleBpb.TotSec = ConvFourBytes((&buf[32]));   
  39   1              if((SimpleBpb.FATSz = ConvTwoBytes((&buf[22])))==0)
  40   1                      SimpleBpb.FATSz =ConvFourBytes((&buf[36]));
  41   1              //------------------------------------------------------------------------
  42   1              //Compute the corresponding data for Fat information;
  43   1              //------------------------------------------------------------------------
  44   1              FatParameter.RootDirSectors= ((SimpleBpb.RootEntCnt * 32) + (SimpleBpb.BytsPerSec - 1)) / SimpleBpb.BytsP
             -erSec;
  45   1              DataSectors = SimpleBpb.TotSec - (SimpleBpb.RsvdSecCnt + (SimpleBpb.NumFATs * SimpleBpb.FATSz) + FatParam
             -eter.RootDirSectors);
  46   1              TotalClusters = DataSectors / SimpleBpb.SecPerClus;
  47   1              //判断文件格式是否为fat16;
  48   1              if(TotalClusters < 4085 || TotalClusters >= 65525)
  49   1                      return FALSE;   
  50   1              FatParameter.FirstFatSecNum=SimpleBpb.RsvdSecCnt+m_Offset;
  51   1              FatParameter.FirstRootDirSecNum = SimpleBpb.RsvdSecCnt + (SimpleBpb.NumFATs * SimpleBpb.FATSz)+m_Offset;
  52   1              FatParameter.FirstDataSector = SimpleBpb.RsvdSecCnt + (SimpleBpb.NumFATs * SimpleBpb.FATSz) + FatParamete
             -r.RootDirSectors+m_Offset;    
C51 COMPILER V7.06   FILE                                                                  07/30/2008 08:56:13 PAGE 2   

  53   1              return TRUE;
  54   1      }
  55          WORD SeekEmptyCluster()
  56          {       
  57   1      //      static WORD  Cluster=2;//加快寻找进度
  58   1              WORD  i,Cache[256],OffSet,j;
  59   1              //      WORD  i,Cache[256],OffSet;
  60   1                      for(i=0;i<SimpleBpb.FATSz;i++)
  61   1              {
  62   2                      if(!Read(FatParameter.FirstFatSecNum+i,1,(BYTE *)Cache))
  63   2                              return FALSE;
  64   2                      for(j=0;j<256;j++)
  65   2                      {
  66   3                                      if(Cache[j]==0)
  67   3                                              return (i*256+j);                       
  68   3                      }
  69   2              }
  70   1              return 0xffff;
  71   1              //************************************************************************
  72   1      /*      for(i=Cluster;i<SimpleBpb.BytsPerSec * SimpleBpb.FATSz / sizeof(WORD);i++)
  73   1              {       
  74   1                      OffSet=i%(SimpleBpb.BytsPerSec/2);
  75   1                      if(OffSet==0)
  76   1                      {
  77   1                              if(!Read((i*2/SimpleBpb.BytsPerSec)+FatParameter.FirstFatSecNum,1,(BYTE *)Cache))
  78   1                                      return 0xffff;          
  79   1                      }
  80   1                       if(Cache[OffSet]==0)
  81   1                       {
  82   1                              Cluster=i;
  83   1                              return  Cluster;
  84   1                       }
  85   1      
  86   1              }//*end for cycle
  87   1              //************************************************************************
  88   1              for(i=2;i<Cluster;i++) 
  89   1              {
  90   1                      OffSet=i%(SimpleBpb.BytsPerSec/2);
  91   1                      if(!Read(i*2/SimpleBpb.BytsPerSec+FatParameter.FirstFatSecNum,1,(BYTE *)Cache))
  92   1                              return 0xffff;
  93   1                      if(Cache[OffSet]==0x0)
  94   1                      {
  95   1                              Cluster=i;
  96   1                              return  Cluster;
  97   1                      }
  98   1              }//*end for cycl
  99   1              return 0xffff;*/
 100   1      }       
*** WARNING C280 IN LINE 58 OF FILE.C: 'OffSet': unreferenced local variable
 101          WORD LinkClusterList(WORD Cluster)
 102          {
 103   1              static WORD VariedCluster=2;
 104   1              WORD i,OffSet,FixedSec,UpdateSec,j;
 105   1              BYTE p; 
 106   1              //////////////////////////////////////////////////////////////////////////////////
 107   1              if(VariedCluster==2)
 108   1              {        FatCache[0][256]=0;
 109   2              //      FatCache[1][256]=0;
 110   2                      VariedCluster=3;
 111   2              }
 112   1              //VariedCluster=Cluste
 113   1              FixedSec=Cluster*2/SimpleBpb.BytsPerSec;
C51 COMPILER V7.06   FILE                                                                  07/30/2008 08:56:13 PAGE 3   

 114   1              if(FatCache[0][256]!=FixedSec+FatParameter.FirstFatSecNum)
 115   1              {       FatCache[0][256]=0;
 116   2                      //      if(FatCache[1][256])
 117   2                      //      if(!Write(FixedSec+FatParameter.FirstFatSecNum,1,(BYTE *)FatCache[0],TRUE))
 118   2                      //              return FALSE;
 119   2                      if(!Read(FixedSec+FatParameter.FirstFatSecNum,1,(BYTE *)FatCache[0]))
 120   2                              return FALSE;
 121   2              }
 122   1              for(i=FixedSec;i<SimpleBpb.FATSz;i++)
 123   1              {
 124   2                      if(i!=FixedSec)
 125   2                      {
 126   3                              p=1;
 127   3                              FatCache[0][256]=0;
 128   3                              if(!Read(i+FatParameter.FirstFatSecNum,1,(BYTE *)FatCache[1]))
 129   3                                      return FALSE;
 130   3                      }
 131   2                      else{
 132   3                              p=0;            
 133   3                              FatCache[0][256]=FixedSec+FatParameter.FirstFatSecNum;
 134   3                              }
 135   2                      for(j=0;j<256;j++)
 136   2                      {
 137   3                              if(FatCache[p][j]==0)
 138   3                              {//     if(i==FixedSec)
 139   4                              //      {       p=0;    
 140   4                              //              FatCache[0][256]=FixedSec+FatParameter.FirstFatSecNum;
 141   4                              //      }
 142   4                              //else{
 143   4                              //      p=1;
 144   4                              //      FatCache[0][256]=0;
 145   4                              //      }
 146   4                                      FatCache[p][j]=0xffff;
 147   4                                      FatCache[0][Cluster%(SimpleBpb.BytsPerSec/2)]=WordSwap((i*256+j));
 148   4                                      if(i!=FixedSec)
 149   4                                      {       if(!Write(FixedSec+FatParameter.FirstFatSecNum,1,(BYTE *)FatCache[0],TRUE))
 150   5                                                      return FALSE;
 151   5                                              if(!Write(i+FatParameter.FirstFatSecNum,1,(BYTE *)FatCache[p],TRUE))
 152   5                                                      return FALSE;
 153   5                                      }
 154   4                                      return (i*256+j);
 155   4                              }
 156   3                      }
 157   2              }
 158   1              ///////////////////////////////////////////////////////////////////////////
 159   1              FixedSec=Cluster*2/SimpleBpb.BytsPerSec;
 160   1              if(!Read(FixedSec+FatParameter.FirstFatSecNum,1,(BYTE *)FatCache[0]))
 161   1                      return FALSE;
 162   1              for(i=0;i<FixedSec;i++)
 163   1              {
 164   2                      if(!Read(i+FatParameter.FirstFatSecNum,1,(BYTE *)FatCache[1]))
 165   2                              return FALSE;

⌨️ 快捷键说明

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