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

📄 file1.h

📁 MP3编解码原程序以及设计资料
💻 H
字号:


  struct FDS
   {uchar DirName[11];       //0~10 文件名
    Uint32 DirLongName[13];  //长文件名
    Uint32 DirFstClusHI;   //20~21文件入口簇号高字
	Uint32 DirFstClusLO;   //26~27文件入口簇号低字   
	uchar DirFileSize[4];    //28~31 文件长度
	}fds[5];



extern void DirGet(void)
     {uchar i,j=0;
      uchar f,x,y;
	  GetLBAData(FDTEntLBA);
	  BufferFlag=0;
	  for(i=0;i<16;i++)        
	     {if(BUFFER[32*i+8]=='M'&&BUFFER[32*i+9]=='P'&&BUFFER[32*i+10]=='3')
            { fds[j].DirLongName[0]=BUFFER[32*(i-1)+1]+BUFFER[32*(i-1)+2]*256;
              fds[j].DirLongName[1]=BUFFER[32*(i-1)+3]+BUFFER[32*(i-1)+4]*256;
              fds[j].DirLongName[2]=BUFFER[32*(i-1)+5]+BUFFER[32*(i-1)+6]*256;
              fds[j].DirLongName[3]=BUFFER[32*(i-1)+7]+BUFFER[32*(i-1)+8]*256;
              fds[j].DirLongName[4]=BUFFER[32*(i-1)+9]+BUFFER[32*(i-1)+10]*256;
              fds[j].DirLongName[5]=BUFFER[32*(i-1)+14]+BUFFER[32*(i-1)+15]*256;
              fds[j].DirLongName[6]=BUFFER[32*(i-1)+16]+BUFFER[32*(i-1)+17]*256;
              fds[j].DirLongName[7]=BUFFER[32*(i-1)+18]+BUFFER[32*(i-1)+19]*256;
              fds[j].DirLongName[8]=BUFFER[32*(i-1)+20]+BUFFER[32*(i-1)+21]*256;
              fds[j].DirLongName[9]=BUFFER[32*(i-1)+22]+BUFFER[32*(i-1)+23]*256;
              fds[j].DirLongName[10]=BUFFER[32*(i-1)+24]+BUFFER[32*(i-1)+25]*256;
              fds[j].DirLongName[11]=BUFFER[32*(i-1)+28]+BUFFER[32*(i-1)+29]*256;
              fds[j].DirLongName[12]=BUFFER[32*(i-1)+30]+BUFFER[32*(i-1)+31]*256;

              fds[j].DirFstClusHI=BUFFER[32*i+20]+BUFFER[32*i+21]*256;
              fds[j].DirFstClusLO=BUFFER[32*i+26]+BUFFER[32*i+27]*256;

                    for(f=0;f<10;f++)
		               {for(y=0;y<72;y++)
		                  {for(x=0;x<96;x++)
			                 {if(fds[j].DirLongName[f]==Unicode[y][x])
			                   {fds[j].DirLongName[f]=(0xb0+y)*256+(0xa0+x);
					            break;
					            }
			                  }
                           if(fds[j].DirLongName[f]==Unicode[y][x])
				           break;
			               }
		    	        }
              j++;
             }
		   }
	   }

  

extern void FileOpen(struct FDS *fp)
   {uint i;
    
    uchar EOCFlag=0;
   // Uint32 FileIntCode[10]; 
    Uint32 LBA,FileStatLBA,FileEndLBA;
	Uint16 FileNextClus,FileEndClus;
	Uint16 FATNum,FATOffset;
	FileNextClus=fp->DirFstClusLO;  //获取文件入口簇数
    FATNum=FileNextClus>>8;   //获取簇表序号
    FileStatLBA=DATAEntLBA+(FileNextClus-2)*bpb.SecPerClus;//获取文件入口LBA 

   while(!EOCFlag)   //没有找到簇结束标志
        {GetLBAData(FATEntLBA+FATNum);   //获取当前簇表内容
        // FATNum=FileNextClus>>8;   //获取簇表序号 
         FATOffset=(FileNextClus*2)%512; //获取簇在当前簇表中的偏移量
         FileNextClus=BUFFER[FATOffset]+BUFFER[FATOffset+1]*256;//计算下一簇号
          for(i=FATOffset;i<512;i+=2)
              {if(BUFFER[i]==0xff&&BUFFER[i+1]==0xff)
                 {EOCFlag=1;
                  break;
                  } 
                FileNextClus=BUFFER[i]+BUFFER[i+1]*256;            
              }
          FATNum+=1;
          FileEndClus=FileNextClus;
         }
			 
        FileEndLBA=DATAEntLBA+(FileEndClus-2)*bpb.SecPerClus;//获取文件尾LBA


		LcdDirCHS(fp->DirLongName);

        //LcdCluster(FileEndClus);

   	    for(LBA=FileStatLBA;LBA<FileEndLBA;LBA+=2)
			          {
					   GetLBAData(LBA);
					   if(KBFLAG3){KBFLAG3=0;
					               break;
								   }
                       EnMP3INT();
                       while(BufferFlag);
					   }

      }


/*extern void FileOpen(uchar *fp)
     {//uint i;
      Uint32 LBA,FileStatLBA,FileEndLBA;
	  Uint16 FileNextClus,FileEndClus;
	  Uint16 FATNum,FATOffset;
	  FileNextClus=*fp+(*(fp+1))*256;  //获取文件入口簇数
      FileStatLBA=DATAEntLBA+(FileNextClus-2)*bpb.SecPerClus;//获取文件入口LBA

	  while(FileNextClus!=0xffff)   //判断是否为文件结束标志
		    {FileEndClus=FileNextClus; //把当前获得的簇数认为是尾簇保存
	         FATNum=FileNextClus>>8;   //获取簇表序号 
             FATOffset=(FileNextClus*2)%512; //获取簇在当前簇表中的偏移量
             GetLBAData(FATEntLBA+FATNum);   //获取当前簇表内容
             FileNextClus=BUFFER[FATOffset]+BUFFER[FATOffset+1]*256;//计算下一簇号
 	         }
			 
       FileEndLBA=DATAEntLBA+(FileEndClus-2)*bpb.SecPerClus;//获取文件尾LBA
       LcdCluster(FileEndClus);
	   EnMP3();	  
   	   while(1){
			 for(LBA=FileStatLBA;LBA<FileEndLBA;LBA+=2)
			          {GetLBAData(LBA);
                       mp3int();
					   }
				}

        }*/



/*extern void FileOpen(uchar *fp)
         {uint i;
		  Uint32 LBA,FileLBA;
		  Uint16 FileNextClus;
		  Uint16 FATNum,FATOffset;
		  FileNextClus=*fp+(*(fp+1))*256;
          

          
		  while(FileNextClus!=0xffff)
		     {//LcdCluster(FileNextClus);
			  FATNum=FileNextClus>>8;
			  FATOffset=(FileNextClus*2)%512;
              FileLBA=DATAEntLBA+(FileNextClus-2)*bpb.SecPerClus;
			      for(LBA=FileLBA;LBA<FileLBA+bpb.SecPerClus;LBA+=2)
			          {//LcdSectorr(LBA);
                       GetLBAData(LBA);

                       mp3int();

				       //while(BufferFlag);
                       //for(j=0;j<1024;j++)
                         // putch(BUFFER[j]);
					   }
              
			  //GetLBAData(FATEntLBA+FATNum);
              //FileNextClus=BUFFER[FATOffset]+BUFFER[FATOffset+1]*256;              
             //BufferFlag=0;
            //  putch(MP3STA);
			  }
            }*/

⌨️ 快捷键说明

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