亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? fat.c

?? 基于LP2136的MP3源代碼
?? C
字號(hào):
#include "fat.h"

INT8U  fname[20][8];
INT8U  fext[20][3];
INT32U fclust[20];
INT8U  fcount;
INT32U fsize[20];





INT32U  NextCluster;   		 	//指向當(dāng)前正在讀取文件的簇號(hào)
INT32U  SectorIndex=0;   		//正在讀扇區(qū)


////////////////////////////////////////////////////////////////////////////////
//磁盤分區(qū)信息
////////////////////////////////////////////////////////////////////////////////
INT8U	Partition_Active;				// 0x80代表該分區(qū)為缺省分區(qū)
INT8U	Partition_StartHead;			// 該分區(qū)入口的磁頭地址
INT16U	Partition_StartCylSect;			// 該分區(qū)入口的扇區(qū)地址和柱面地址
INT8U	Partition_PartType;				// 該分區(qū)類型
INT8U	Partition_EndHead;				// 該分區(qū)結(jié)束的扇區(qū)地址
INT16U	Partition_EndCylSect;			// 該分區(qū)結(jié)束的柱面地址
INT32U	Partition_StartLBA;				// 該分區(qū)內(nèi)第一個(gè)扇區(qū)地址
INT32U	Partition_Size;					// 該分區(qū)所包含的扇區(qū)總數(shù)



////////////////////////////////////////////////////////////////////////////////
//fat32 BPB結(jié)構(gòu),包括擴(kuò)展BPB
////////////////////////////////////////////////////////////////////////////////
INT8U	BS_jmpBoot[3];					//jmp code
INT8U	BS_OEMName[8];					//oem and os like dos5.0

INT16U	BPB_BytesPerSec; 				//扇區(qū)字節(jié)數(shù)
INT8U	BPB_SecPerClus;					//每簇扇區(qū)數(shù)
INT16U	BPB_RsvdSecCnt; 				//保留扇區(qū)數(shù)
INT8U	BPB_NumFATs;					//FAT數(shù)目
INT16U	BPB_RootEntCnt; 				//根目錄項(xiàng)數(shù) 0
INT16U	BPB_TotSec16; 					//小扇區(qū)總數(shù) 0
INT8U	BPB_Media;						//媒體描述符
INT16U	BPB_FATSz16; 					//每FAT扇區(qū)數(shù)fat32不用為0
INT16U	BPB_SecPerTrk; 					//每道扇區(qū)數(shù)
INT16U	BPB_NumHeads; 					//磁頭數(shù)
INT32U	BPB_HiddSec; 					//隱藏扇區(qū)數(shù)
INT32U	BPB_TotSec32; 					//總扇區(qū)數(shù)   
INT32U	BPB_FATSz32;					//每FAT扇區(qū)數(shù)fat32
INT16U	BPB_ExtFlags;					//fat32擴(kuò)展標(biāo)志
INT16U  BPB_FSVer;						//fat32特有,高位為fat32的主版本號(hào),底位為次版本號(hào)
INT32U	BPB_RootClus;					//根目錄簇號(hào)
INT16U	BPB_FSInfo;						//文件系統(tǒng)信息扇區(qū)號(hào)
INT16U	BPB_BKBootSec;					//引導(dǎo)扇區(qū)備份號(hào)
INT8U	BPB_Reserved[12];				//保留空間

INT8U	BS_drvNum;					    //物理驅(qū)動(dòng)器號(hào)
INT8U	BS_Reservd1;					//保留
INT8U	BS_BootSig;						//擴(kuò)展引導(dǎo)標(biāo)簽
INT32U	BS_VolID;						//分區(qū)序號(hào)
INT8U	BS_VolLab[11];					//卷標(biāo)
INT8U	BS_FilSysType[8];				//系統(tǒng)ID



////////////////////////////////////////////////////////////////////////////////
//目錄信息
////////////////////////////////////////////////////////////////////////////////
INT8U  	deName[8];
INT8U  	deExtension[3];
INT32U  Clust; 							//當(dāng)前目錄的簇號(hào)
INT16U 	Nums;   						//僅FAT12—FAT16中的根目錄區(qū)有效
INT32U 	Index;  						//當(dāng)前的BLOCK中目錄項(xiàng)索引
INT32U 	FileSize; 						//文件長(zhǎng)度


////////////////////////////////////////////////////////////////////////////////
//文件信息
////////////////////////////////////////////////////////////////////////////////
INT8U	DIR_Name[11];					//文件名,沒有.
INT8U	DIR_Attr;         				//文件屬性,自低至高,只讀、隱藏、系統(tǒng)、卷標(biāo)、子目錄、歸檔
INT8U	DIR_NTRes;        				//系統(tǒng)保留
INT8U	DIR_CrtTimeTenth;  				//創(chuàng)建時(shí)間的10毫秒位
INT16U	DIR_CrtTime;      				//創(chuàng)建時(shí)間
INT16U	DIR_CrtDate;      				//創(chuàng)建日期
INT16U	DIR_LastAccDate;  				//最后訪問日期
INT16U	DIR_FstClusHI;    				//文件起始簇號(hào)高16位               
INT16U	DIR_WrtTime;      				//最近修改時(shí)間
INT16U	DIR_WrtDate;      				//最近修改日期
INT16U	DIR_FstClusLO;    				//文件起始簇號(hào)的低16位               
INT32U	DIR_FileSize;     				//文件長(zhǎng)度



////////////////////////////////////////////////////////////////////////////////
//
////////////////////////////////////////////////////////////////////////////////
INT32U  FAT1Sec;						//FAT1表的位置
INT32U  FAT2Sec;
INT32U  FirstDataSector;				//第一個(gè)根目錄位置,區(qū)號(hào)為2
INT32U  FirstDirSector;
////////////////////////////////////////////////////////////////////////////////

INT8U   BUFFER[512]; 

INT8U MP3_BUFFER[512];
INT8U  TEXT[512];

INT8U filetype[][3] ={ {"MP3"},{"WMA"},{"MID"},{"LRC"}};



INT32U  FAT_MASK;
INT16U  RootDirEnts;         // 根目錄總的項(xiàng)數(shù)(FAT12&FAT16)


INT8U Fat_Init(void)
{   
	
	uint32 j;
	SD_ReadBlock(0,BUFFER);		
	
	for(j=0;j<512;j++)
	{
		TEXT[j]=BUFFER[j];
	}													
		//read partion message															
			// 讀MBR結(jié)構(gòu)//struct bpb710 *bpb;
	Partition_PartType=0X55;																				
			// 讀取分區(qū)表信息// 讀引導(dǎo)扇區(qū)// 引導(dǎo)扇區(qū)號(hào)在PartInfo.prStartLBA中
    Partition_PartType= BUFFER[450];													
		//分區(qū)信息 FAT32 0x0B				
	Partition_Size	= BUFFER[458]+(BUFFER[459]<<8)+(BUFFER[460]<<16)+(BUFFER[461]<<24);
    Partition_StartLBA = BUFFER[454]+(BUFFER[455]<<8)+(BUFFER[456]<<16)+(BUFFER[457]<<24);	
	//0xF9*512=127488		
		
	
	SD_ReadBlock(Partition_StartLBA,BUFFER);     				//FAT32 read BPB

	BS_OEMName[0]   = BUFFER[3];
	BS_OEMName[1]   = BUFFER[4];
	BS_OEMName[2]   = BUFFER[5];
	BS_OEMName[3]   = BUFFER[6];
	BS_OEMName[4]   = BUFFER[7];
	BS_OEMName[5]   = BUFFER[8];
	BS_OEMName[6]   = BUFFER[9];
	BS_OEMName[7]   = BUFFER[10];
	BPB_BytesPerSec	= BUFFER[11] |(BUFFER[12] << 8);			//0x0200			//每個(gè)扇區(qū)字節(jié)數(shù)
	BPB_SecPerClus	= BUFFER[13];								//0x08      		//每個(gè)簇的扇區(qū)數(shù)
	BPB_RsvdSecCnt  = BUFFER[14] |(BUFFER[15] << 8);			//0x20 				//保留扇區(qū)數(shù)
	BPB_NumFATs     = BUFFER[16];								//0x02 				//FAT 表數(shù)目
	BPB_RootEntCnt	= BUFFER[17] | (BUFFER[18] << 8);
	BPB_TotSec16    = BUFFER[19] | (BUFFER[20] << 8);
	BPB_Media		= BUFFER[21];
	BPB_FATSz16		= BUFFER[22] | (BUFFER[23] << 8); 
    BPB_SecPerTrk	= BUFFER[24] | (BUFFER[25] << 8);
    BPB_NumHeads	= BUFFER[26] | (BUFFER[27] << 8); 
    BPB_HiddSec 	= BUFFER[28] | (BUFFER[29] << 8) | (BUFFER[30] << 16) | (BUFFER[31] << 24);  
    BPB_TotSec32	= BUFFER[32] | (BUFFER[33] << 8) | (BUFFER[34] << 16) | (BUFFER[35] << 24);  
	BPB_FATSz32 	= BUFFER[36] | (BUFFER[37] << 8) | (BUFFER[38] << 16) | (BUFFER[39] << 24);
    BPB_ExtFlags	= BUFFER[40] | (BUFFER[41] << 8);  
    BPB_FSVer	    = BUFFER[42] | (BUFFER[43] << 8);
    BPB_RootClus	= BUFFER[44] | (BUFFER[45] << 8) | (BUFFER[46] << 16) | (BUFFER[47] << 24);
    BPB_FSInfo 	    = BUFFER[48] | (BUFFER[49] << 8); 
    BPB_BKBootSec   = BUFFER[50] | (BUFFER[51] << 8); 						
	//BPB_Reserved    = BUFFER[52]; 

	BS_drvNum		= BUFFER[64];
	BS_Reservd1		= BUFFER[65];
	BS_BootSig		= BUFFER[66];
	BS_VolID		= BUFFER[67] | (BUFFER[68] << 8) | (BUFFER[69] << 16) | (BUFFER[70] << 24);
	//BS_VolLab[0]	= BUFFER[71];
	//BS_FilSysType[0] = BUFFER[82];
 
			FAT_MASK		= FAT32_MASK;	//0x0fffffff
			Clust 			= BPB_RootClus;
            FAT1Sec			= BPB_RsvdSecCnt+Partition_StartLBA;
			FAT2Sec			= FAT1Sec+BPB_FATSz32;
			FirstDataSector	= FAT2Sec+BPB_FATSz32;

  
       	return 1;	
}


INT8U IsMusicFile(INT8U *strName)
{
    INT8U i;
	
    for(i=0; i<3; i++)
    {
        if(filetype[MP3_TYPE][i]!= strName[i]) break;
    }
    if(i == 3)    return 1;   // 是MP3文件
	    
    for(i=0; i<3; i++)
    {
        if(filetype[WMA_TYPE][i]!= strName[i]) break;
    }
    if(i == 3)    return 2;   // 是WMA文件
/*
    for(i=0;i<3;i++)
    {
        if(filetype[MID_TYPE][i]!=strName[i]) break;
    }
    if(i == 3)    return 3;   // 是MIDI文件
*/
	return 0; 
}		


void GetFileClust(void)
{
   INT8U	i;
    INT32U	tem;	    
	do{
    	SD_ReadBlock(FirstDataSector+Index/(BPB_BytesPerSec/32),BUFFER);	// 重新讀取目錄表
    	

    	 tem=(Index*0x20)%BPB_BytesPerSec;
    
    	if((BUFFER[tem+11] & ATTR_LONG_FILENAME) != ATTR_LONG_FILENAME);	// 是否是長(zhǎng)文件名
    	{
    		if((BUFFER[tem] != 0xe5) && (BUFFER[tem] != 0x05))			   //文件沒有刪除   
         	{
            	if((BUFFER[tem+11]&ATTR_DIRECTORY) != ATTR_DIRECTORY)    // is it a directory ?
                {	
    			  for(i=0;i<8;i++)
    				{
						deName[i]=BUFFER[tem+i];
					}
		    		for(i=0;i<3;i++)
    				{
		    			deExtension[i]=BUFFER[tem+8+i];
		    		}
		
					if(IsMusicFile(&deExtension[0]))
					{
						Clust=(BUFFER[tem+20]<<16) | (BUFFER[tem+21]<<24) | (BUFFER[tem+26]) | (BUFFER[tem+27]<<8);
						FileSize=(BUFFER[tem+28]) | (BUFFER[tem+29]<<8)|(BUFFER[tem+30]<<16)|(BUFFER[tem+31]<<24);
						Index++;
                        
						break;
						
					}
		
					
				}
			}
		}

		Index++;
		
		if(BUFFER[tem] == 0)  								// 等所有文件都已經(jīng)查詢完了   
		{
    		Index=0;
    		break;
    	} 	
	}
	while(1);
}  		   


INT32U ReadBlockforCluster(INT32U Sector,INT32U offset)
{
	INT32U  tmp;

   	SD_ReadBlock(Sector,BUFFER);

	tmp=BUFFER[offset] |(BUFFER[offset+1]<<8) |(BUFFER[offset+2]<<16) |(BUFFER[offset+3]<<24);

	return tmp;
}



INT32U fatNextCluster(INT32U cluster)
{
    INT32U nextCluster=0;
    INT32U fatOffset=0;
    INT32U sector=0;
    INT16U offset=0;

   // if(Partition_PartType == PART_TYPE_FAT32)	        			// 一個(gè)表項(xiàng)為 4bytes(32 bits)
    //{
        fatOffset = cluster << 2;
        sector = FAT1Sec + (fatOffset>>9);				// 計(jì)算FAT扇區(qū)號(hào)
        offset = fatOffset % BPB_BytesPerSec;            					// 計(jì)算FAT扇區(qū)號(hào)中表項(xiàng)的偏移地址
        nextCluster = ReadBlockforCluster(sector,offset); 			// 讀取下一個(gè)簇號(hào)	
   // }
    /*
    else if(Partition_PartType == PART_TYPE_FAT16)       				// 一個(gè)表項(xiàng)為 2bytes(16 bits)
    {    
        fatOffset = cluster << 1; 	                        // 計(jì)算FAT扇區(qū)號(hào)
        //sector = FirstFATSector + (fatOffset / BPB_BytesPerSec);
        offset = fatOffset % BPB_BytesPerSec;     			// 計(jì)算FAT扇區(qū)號(hào)中表項(xiàng)的偏移地址
		nextCluster = ReadBlockforCluster(sector,offset);
    } 
   */
    if (nextCluster >= (CLUST_EOFS & FAT_MASK))				// 是否文件的結(jié)束簇
    {
        nextCluster = CLUST_EOFE;
    }
    return nextCluster;
}  


void GetMusicFile(void)
  {
    uint8 i;
     fcount=0;
    while(1)
    {
      GetFileClust();	
      
      if(Index==0) break;
      
      for(i=0;i<8;i++)
       {
        fname[fcount][i]=deName[i];
        }
        
      for(i=0;i<3;i++)
        {
         if(deExtension[i]>=65)  fext[fcount][i]=deExtension[i]+0x20;
         
         else fext[fcount][i]=deExtension[i];
         }
         
      fclust[fcount]=Clust;
      
      fsize[fcount]=FileSize;
      
      fcount++;
      
      }
    }

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
从欧美一区二区三区| 国产精品一品二品| 日本高清视频一区二区| 一区二区视频在线看| 99国产精品一区| 亚洲美女免费在线| 欧美日韩精品一二三区| 偷窥少妇高潮呻吟av久久免费| 欧美三级视频在线观看| 日韩精品久久理论片| 欧美一级日韩免费不卡| 久久91精品久久久久久秒播| 国产午夜亚洲精品羞羞网站| 99久久精品一区| 午夜免费久久看| 久久亚洲二区三区| 91片在线免费观看| 人妖欧美一区二区| 国产精品久久久久久久久免费樱桃| 99精品久久久久久| 天堂午夜影视日韩欧美一区二区| 精品国产乱码久久久久久影片| 亚洲高清视频在线| 日本一区二区三区dvd视频在线 | 丝袜美腿亚洲一区| 欧美精品一区二| 91九色02白丝porn| 久久99在线观看| 亚洲精品免费在线| 精品成人免费观看| 欧美日韩午夜影院| 成人黄色av电影| 免费不卡在线视频| 亚洲欧美偷拍卡通变态| 欧美一级午夜免费电影| 91亚洲精品乱码久久久久久蜜桃| 蜜桃精品视频在线| 亚洲男人天堂一区| 久久尤物电影视频在线观看| 在线看不卡av| 成人视屏免费看| 美女视频免费一区| 一区二区不卡在线播放 | 欧洲在线/亚洲| 国产精品一区二区在线看| 亚洲成年人影院| 国产精品久久久久影院老司 | 亚洲黄一区二区三区| 国产亚洲一本大道中文在线| 欧美三区在线观看| bt7086福利一区国产| 久久99国产精品久久99| 日日夜夜免费精品| 一区二区三区蜜桃| 亚洲啪啪综合av一区二区三区| 欧美精品一区二| 欧美videofree性高清杂交| 精品污污网站免费看| 亚洲精品大片www| 97久久超碰精品国产| 国产欧美日韩在线看| www.亚洲激情.com| 天涯成人国产亚洲精品一区av| 欧美一区二区人人喊爽| 精品一区二区综合| 日本一区二区三区在线不卡| 欧美性受xxxx| 国产一区二区导航在线播放| 国产精品国产三级国产a| 欧美日韩三级一区| 极品美女销魂一区二区三区免费| 欧美韩国日本不卡| 日韩精品一区二区三区视频 | 蜜臀a∨国产成人精品| 黑人巨大精品欧美黑白配亚洲| 国产精品久久久久久久久久久免费看 | 不卡的av中国片| 欧洲另类一二三四区| 亚洲国产一区视频| 精品国产乱码久久久久久图片| 欧美国产禁国产网站cc| 精品日产卡一卡二卡麻豆| 日韩免费成人网| 亚洲精品一区二区在线观看| 精品国产免费人成在线观看| 精品国产乱码久久久久久久久| 欧美大片顶级少妇| 久久新电视剧免费观看| 久久精品亚洲精品国产欧美| 久久精品免视看| 亚洲视频资源在线| 亚洲国产精品精华液网站| 日韩福利视频网| 韩国一区二区视频| 成人精品视频一区| 欧美亚洲精品一区| 日韩午夜在线影院| 国产人成亚洲第一网站在线播放| 国产精品久久看| 午夜电影网亚洲视频| 久久精品国产第一区二区三区| 国产一区二区三区四区在线观看| 成人国产精品免费观看动漫| 在线观看网站黄不卡| 欧美一级高清片| 国产精品乱人伦| 三级欧美在线一区| 国产成人精品一区二区三区四区| caoporn国产精品| 91麻豆精品久久久久蜜臀| 久久婷婷一区二区三区| 亚洲欧美另类图片小说| 日韩va欧美va亚洲va久久| 国产精品一区二区三区网站| 一本大道av伊人久久综合| 91精品国产乱码久久蜜臀| 国产三级精品三级在线专区| 一区二区三区鲁丝不卡| 久久国产欧美日韩精品| 99久久亚洲一区二区三区青草| 欧美视频日韩视频| 欧美国产禁国产网站cc| 亚洲成人一区二区在线观看| 国内精品伊人久久久久影院对白| 色综合久久88色综合天天6| 日韩欧美你懂的| 洋洋成人永久网站入口| 国产精品一二三四| 欧美二区乱c少妇| 日韩美女精品在线| 久久99深爱久久99精品| 欧美日韩免费观看一区二区三区| 国产日韩欧美在线一区| 午夜激情久久久| 一本久久综合亚洲鲁鲁五月天| 精品入口麻豆88视频| 亚洲动漫第一页| 99久久精品国产毛片| 精品国产一区二区精华| 五月综合激情婷婷六月色窝| 91免费视频观看| 国产精品嫩草久久久久| 美女久久久精品| 欧美日韩在线亚洲一区蜜芽| 日韩一区中文字幕| 国产成人精品一区二| 欧美精品一区视频| 日韩1区2区日韩1区2区| 欧美亚洲精品一区| 亚洲精品免费在线播放| 成人av免费网站| 青椒成人免费视频| 在线观看国产91| √…a在线天堂一区| 欧美一级片在线看| 天天综合色天天| 91福利社在线观看| 综合色天天鬼久久鬼色| 风间由美性色一区二区三区| 久久先锋影音av| 日本一区二区视频在线观看| 懂色中文一区二区在线播放| 日韩免费看的电影| 国产一区二区调教| 2021久久国产精品不只是精品 | 午夜视频在线观看一区二区三区 | 欧美日韩高清一区二区三区| 亚洲一级二级在线| 精品国产不卡一区二区三区| 国内成人精品2018免费看| 久久久久久电影| 欧美另类高清zo欧美| 国产精品一二三区| 五月婷婷综合网| 中文字幕在线观看一区二区| 91豆麻精品91久久久久久| 国产美女一区二区| 亚洲风情在线资源站| 亚洲丝袜美腿综合| 日韩欧美在线网站| 色婷婷精品久久二区二区蜜臂av | 国产色婷婷亚洲99精品小说| 波多野结衣亚洲| 美国十次综合导航| 亚洲精品国产第一综合99久久| 欧美色爱综合网| 69堂成人精品免费视频| 尤物av一区二区| 91丨porny丨户外露出| 久久99精品一区二区三区三区| 欧美精品日韩一区| 激情亚洲综合在线| 亚洲色图在线视频| 6080日韩午夜伦伦午夜伦| 中文字幕va一区二区三区| 欧美一级日韩免费不卡| 欧美日韩高清影院| 宅男噜噜噜66一区二区66| 欧美精品精品一区| 国产精品欧美一级免费|