fat32getdirname.lst

来自「用C51单片机实现的MP3播放器的c代码程序。」· LST 代码 · 共 96 行

LST
96
字号
C51 COMPILER V6.12  FAT32GETDIRNAME                                                        05/03/2005 11:17:14 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE FAT32GETDIRNAME
OBJECT MODULE PLACED IN .\FAT32GETDIRNAME.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE .\FAT32GETDIRNAME.C LARGE BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #ifndef _FAT32_DEFINE
   2           #include "FAT32.c"
   3          #endif
   4          
   5          BYTE FAT32GetDirName(WORD SecNum);
   6          
   7          BYTE FAT32GetDirName(WORD SecNum)
   8          {
   9   1      	BYTE i,j,k,m,n;
  10   1      	DWORD chain;
  11   1      	CHAR temp[27];
  12   1      	
  13   1      	chain=FAT32.CurrentDirectory;
  14   1      	FAT32.ClusSecCnt=0;
  15   1      	while(chain!=0x0fffffff)
  16   1      	{
  17   2      		FAT32ReadCluster(&chain);
  18   2      		for (i=0;i<16;i++)
  19   2      		{
  20   3      			if (SecNum==1)
  21   3      			{
  22   4      				if ((sDIR[i].Attr&FAT32_ATTR_LONG_NAME_MASK)==FAT32_ATTR_LONG_NAME)
  23   4      				//长文件名
  24   4      				{
  25   5      					j=lDIR[i].Ord - FAT32_LAST_LONG_ENTRY;
  26   5      					LongFileName[0]=0;n=0;
  27   5      					for(;j>0;j--)
  28   5      					{
  29   6      						FAT32GetPartLongName(lDIR+i,temp);
  30   6      						m=strlen((char *)temp);
  31   6      						k=m+n;
  32   6      						for(;n>0;n--)
  33   6      							LongFileName[m+n]=LongFileName[n];
  34   6      						LongFileName[m+n]=LongFileName[n];
  35   6      						m--;
  36   6      						for(;m>0;m--)
  37   6      							LongFileName[m]=temp[m];
  38   6      						LongFileName[m]=temp[m];
  39   6      						n=k;
  40   6      						i++;
  41   6      						if (i==16)
  42   6      						{
  43   7      							FAT32ReadCluster(&chain);
  44   7      							i=0;
  45   7      						}
  46   6      					}
  47   5      					if (sDIR[i].Name[0]==0x00||sDIR[i].Name[0]==0xe5) return(3);		//空目录项
  48   5      					if (sDIR[i].Attr&FAT32_ATTR_DIRECTORY) return(2);			//找到一个目录入口
  49   5      				}
  50   4      				else
  51   4      				{
  52   5      				//短文件名
  53   5      					if (sDIR[i].Name[0]==0x00||sDIR[i].Name[0]==0xe5) return(3);		//空目录项
  54   5      					if (sDIR[i].Attr&FAT32_ATTR_VOLUME_ID) continue;			//如果是目录入口或卷标则跳过
  55   5      					for(j=0;j<11;j++)
C51 COMPILER V6.12  FAT32GETDIRNAME                                                        05/03/2005 11:17:14 PAGE 2   

  56   5      						LongFileName[j]=sDIR[i].Name[j];
  57   5      					LongFileName[j]=0;
  58   5      					for(j=0;j<3;j++)
  59   5      						temp[j]=toupper(sDIR[i].Name[8+j]);
  60   5      					temp[j]=0;
  61   5      					if (sDIR[i].Attr&FAT32_ATTR_DIRECTORY) return(2);			//找到一个目录入口
  62   5      				}
  63   4      				return(1);
  64   4      			}
  65   3      			else if (sDIR[i].Attr!=FAT32_ATTR_LONG_NAME) SecNum--;
  66   3      		}
  67   2      	}
  68   1      	return(0);
  69   1      }
  70          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    841    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----      36
   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 + =
减小字号Ctrl + -
显示快捷键?