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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? fat.c

?? 讀寫U盤C代碼,基于CH375FAT芯片,實用的一個代碼
?? C
字號:
#include "common.h"

////////////////////////////////////////
extern XXGFLAGS bdata bXXGFlags;
extern SYS_INFO_BLOCK xdata DeviceInfo;
extern FILE_INFO xdata ThisFile;
extern unsigned char xdata DBUF[BUFFER_LENGTH];
unsigned char xdata FATBUF[512];
unsigned char xdata CurFatSector[512];
FREE_FAT_INFO xdata FreeFat;
////////////////////////////////////////
unsigned long FirstSectorofCluster(unsigned int clusterNum)
{
	unsigned long temp;
	temp=clusterNum-2;
	temp=temp*DeviceInfo.BPB_SecPerClus;
	temp=temp+DeviceInfo.FirstDataSector;
	return temp;
}

unsigned int ThisFatSecNum(unsigned int clusterNum)
{
   unsigned int temp;
   temp=clusterNum*2;
   temp=temp/DeviceInfo.BPB_BytesPerSec;
   temp=temp+DeviceInfo.FatStartSector;
   return temp;
}

unsigned int ThisFatEntOffset(unsigned int clusterNum)
{
	unsigned int temp1,temp2;
	temp1=2*clusterNum;
	temp2=temp1/DeviceInfo.BPB_BytesPerSec;
	temp1=temp1-temp2*DeviceInfo.BPB_BytesPerSec;
	return temp1;
}

unsigned int GetNextClusterNum(unsigned int clusterNum)
{
	unsigned int xxgFatSecNum,xxgFatEntOffset;
	
	xxgFatSecNum=ThisFatSecNum(clusterNum);
	xxgFatEntOffset=ThisFatEntOffset(clusterNum);
	//ThisFile.FatSectorPointer=xxgFatSecNum;
	if(ThisFile.FatSectorPointer!=xxgFatSecNum)
	{	
		
		if(!RBC_Read(xxgFatSecNum,1,FATBUF))
			return 0xFFFF;
		ThisFile.FatSectorPointer=xxgFatSecNum;
	}
	
	///////////////////////////////////////////////////
	clusterNum=FATBUF[xxgFatEntOffset+1];
	clusterNum=clusterNum<<8;
	clusterNum+=FATBUF[xxgFatEntOffset];	
	return clusterNum;
}

unsigned char DeleteClusterLink(unsigned int clusterNum)
{
	//unsigned int nextClusterNum;
	unsigned int xxgFatSecNum,xxgFatEntOffset;
	//nextClusterNum=GetNextClusterNum(clusterNum);
	////////////////////////////////////////////
	//nextClusterNum=clusterNum;
	while((clusterNum>1)&&(clusterNum<0xfff0))
	{
	xxgFatSecNum=ThisFatSecNum(clusterNum);
	xxgFatEntOffset=ThisFatEntOffset(clusterNum);
	if(RBC_Read(xxgFatSecNum,1,DBUF))
		{
		clusterNum=DBUF[xxgFatEntOffset+1];
		clusterNum=clusterNum<<8;
		clusterNum+=DBUF[xxgFatEntOffset];	
		//return clusterNum;
		}
	else
		return FALSE;
	DBUF[xxgFatEntOffset]=0x00;
	DBUF[xxgFatEntOffset+1]=0x00;	
	//DelayMs(5);
	if(!RBC_Write(xxgFatSecNum,1,DBUF))
		return FALSE;
	//DelayMs(5);
	if(!RBC_Write(xxgFatSecNum+DeviceInfo.BPB_FATSz16,1,DBUF))
		return FALSE;
	////////////////////////////////////////////
	}
	return TRUE;
}

/*
unsigned int GetClusterNumFromSectorNum(unsigned long sectorNum)
{
	unsigned long temp;
	temp=sectorNum-DeviceInfo.FirstDataSector;
	temp=temp/DeviceInfo.BPB_SecPerClus;
	temp=temp+2;
	return (unsigned int)temp;
}
*/

/*
unsigned long GetSecNumFromPointer(void)
{
	unsigned int clusterNum,clusterSize;
	unsigned long temp,pointer;
	pointer=ThisFile.FilePointer;
	clusterSize=DeviceInfo.BPB_SecPerClus*DeviceInfo.BPB_BytesPerSec;
	clusterNum=ThisFile.StartCluster;
	while(pointer>clusterSize)
	{
		pointer-=clusterSize;	
		clusterNum=GetNextClusterNum(clusterNum);
	}
	temp=FirstSectorofCluster(clusterNum)+pointer/DeviceInfo.BPB_BytesPerSec;
	return temp;
}
*/
unsigned char GoToPointer(unsigned long pointer)
{
	//unsigned char temp;
	unsigned int clusterSize;
	//unsigned long temp;
	//pointer=ThisFile.FilePointer;
	clusterSize=DeviceInfo.BPB_SecPerClus*DeviceInfo.BPB_BytesPerSec;
	ThisFile.ClusterPointer=ThisFile.StartCluster;
	while(pointer>clusterSize)
	{
		pointer-=clusterSize;	
		ThisFile.ClusterPointer=GetNextClusterNum(ThisFile.ClusterPointer);
		if(ThisFile.ClusterPointer==0xffff)
		{
		return FALSE;
		}
	}
	ThisFile.SectorofCluster=pointer/DeviceInfo.BPB_BytesPerSec;
	ThisFile.SectorPointer=FirstSectorofCluster(ThisFile.ClusterPointer)+ThisFile.SectorofCluster;
	ThisFile.OffsetofSector=pointer-ThisFile.SectorofCluster*DeviceInfo.BPB_BytesPerSec;
	ThisFile.FatSectorPointer=0;
	return TRUE;
	
}

unsigned int GetFreeCusterNum(void)
{
	unsigned int clusterNum,i;
	unsigned long sectorNum;
	clusterNum=0;
	sectorNum=DeviceInfo.FatStartSector;
	while(sectorNum<DeviceInfo.BPB_FATSz16+DeviceInfo.FatStartSector)
	{
		
		if(!RBC_Read(sectorNum,1,DBUF))
			return 0x0;
		for(i=0;i<DeviceInfo.BPB_BytesPerSec;i=i+2)
		  	{
		  	 //clusterNum++;	
		  	 
		  	 if((DBUF[i]==0)&&(DBUF[i+1]==0))
		  	 	{	
		  	 	DBUF[i]=0xff;
		  	 	DBUF[i+1]=0xff;
		  	 	//DelayMs(10);
		  	 	if(!RBC_Write(sectorNum,1,DBUF))
		  	 		return 0x00;
		  	 	//DelayMs(10);
		  	 	if(!RBC_Write(sectorNum+DeviceInfo.BPB_FATSz16,1,DBUF))
		  	 		return 0x00;
		  	 	
		  	 	return	clusterNum; 
		  	 	}
		  	 clusterNum++;
		  	}	
				
		sectorNum=2*clusterNum/DeviceInfo.BPB_BytesPerSec+DeviceInfo.FatStartSector;	
		//clusterNum+=DeviceInfo.BPB_BytesPerSec;
		//DelayMs(10);
	}
	
	return 0x0;
}

unsigned int CreateClusterLink(unsigned int currentCluster)
{
	unsigned char bFound;
	unsigned int clusterNum;
	unsigned int xxgFatSecNum,xxgFatEntOffset;
	unsigned long temp;
	bFound=0;
	//////////////////////////////////////////////
	//第一次讀FAT
	if((FreeFat.SectorNum==DeviceInfo.FatStartSector)&&(FreeFat.OffsetofSector<3))
		{	
		if(!RBC_Read(FreeFat.SectorNum,1,CurFatSector))
			return 0x0;	
		}
	//////////////////////////////
	temp=FreeFat.SectorNum-DeviceInfo.FatStartSector;
	temp=temp*DeviceInfo.BPB_BytesPerSec;
	temp=temp/2;
	clusterNum=temp+FreeFat.OffsetofSector/2;
		
	while(FreeFat.SectorNum<DeviceInfo.BPB_FATSz16+DeviceInfo.FatStartSector)
	{
		
		while(FreeFat.OffsetofSector<DeviceInfo.BPB_BytesPerSec)
		  	{
		  	
		  	 ///////////////////////////////////////////////
		  	 if((CurFatSector[FreeFat.OffsetofSector]==0)&&(CurFatSector[FreeFat.OffsetofSector+1]==0))
		  	 	{	
		  	 	CurFatSector[FreeFat.OffsetofSector]=0xff;
		  	 	CurFatSector[FreeFat.OffsetofSector+1]=0xff;
		  	 	
		  	 	FreeFat.OffsetofSector=FreeFat.OffsetofSector+2;
		  	 	//return	clusterNum; 
		  	 	bXXGFlags.bits.bFatChanged=1;
		  	 	bFound=1;
		  	 	break;
		  	 	}
		  	 FreeFat.OffsetofSector=FreeFat.OffsetofSector+2;
		  	 clusterNum++;
		  	}	
		if(bFound==1)
			break;	
		//FreeFat.SectorNum=2*clusterNum/DeviceInfo.BPB_BytesPerSec+DeviceInfo.FatStartSector;	
		//FreeFat.OldSectorNum=FreeFat.SectorNum;
		//FreeFat.SectorNum++;
		//FreeFat.OffsetofSector=0;
		UpdateFat(FreeFat.SectorNum);
		
		FreeFat.SectorNum++;
		FreeFat.OffsetofSector=0;
		
		if(!RBC_Read(FreeFat.SectorNum,1,CurFatSector))
			return 0x0;	
		
		
		//clusterNum+=DeviceInfo.BPB_BytesPerSec;
		//DelayMs(10);
	}
	//////////////////////////////////////////////
	if(bFound==0)
		return 0x00;
	
	/////////////////////////////////////////////////////////////////////	
	xxgFatSecNum=ThisFatSecNum(currentCluster);
	xxgFatEntOffset=ThisFatEntOffset(currentCluster);
	
	if(xxgFatSecNum!=FreeFat.SectorNum)
	  {
		RBC_Read(xxgFatSecNum,1,DBUF);
	
	//FreeFat.OffsetofSector=FreeFat.OffsetofSector+2;
	
		DBUF[xxgFatEntOffset]=clusterNum;
		DBUF[xxgFatEntOffset+1]=clusterNum>>8;
		//DelayMs(5);
		if(!RBC_Write(xxgFatSecNum,1,DBUF))
			return 0x00;
		//DelayMs(10);
		if(!RBC_Write(xxgFatSecNum+DeviceInfo.BPB_FATSz16,1,DBUF))
			return 0x00;
	   }
	 else
	   {
	   	CurFatSector[xxgFatEntOffset]=clusterNum;
		CurFatSector[xxgFatEntOffset+1]=clusterNum>>8;
		
		bXXGFlags.bits.bFatChanged=1;
	   }	
	return clusterNum;
}

void UpdateFat(unsigned long sectorNum)
{

	if(bXXGFlags.bits.bFatChanged==1)
			{
			if(!RBC_Write(sectorNum,1,CurFatSector))
				return ;
			//DelayMs(10);
			if(!RBC_Write(sectorNum+DeviceInfo.BPB_FATSz16,1,CurFatSector))
				return ;
			bXXGFlags.bits.bFatChanged=0;
			}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产福利| 精品国产伦一区二区三区观看方式| 国产福利一区二区三区| 一本到三区不卡视频| 日韩精品一区二区三区在线| 亚洲一区二区三区国产| 国产美女精品在线| 成人免费在线视频观看| 国产乱妇无码大片在线观看| 精品国产一区二区三区久久影院 | 亚洲国产精品久久不卡毛片| 懂色av噜噜一区二区三区av| 日韩欧美国产1| 麻豆精品一二三| 欧美精品一区二区三区蜜臀| 国产成人综合自拍| 亚洲视频一区在线观看| 亚洲免费观看高清在线观看| av色综合久久天堂av综合| 国产亚洲一区二区三区| 国产91在线观看丝袜| 一区二区三区蜜桃| 欧美一区二区久久| 国产福利不卡视频| 首页国产欧美久久| 99久久99久久精品免费观看| 精品国产免费视频| 99久久精品免费看国产| 国产一区二区在线观看免费| 亚洲国产乱码最新视频| 国产99一区视频免费| 国产自产视频一区二区三区| 亚洲成年人网站在线观看| 精品区一区二区| 国产欧美一区二区精品秋霞影院| 久久九九久精品国产免费直播| 欧美精品一区在线观看| 国产精品白丝在线| 日本va欧美va精品发布| 国产精品白丝jk黑袜喷水| 色狠狠一区二区| 正在播放亚洲一区| 国产精品人人做人人爽人人添 | 亚洲免费观看高清完整版在线 | 欧美日韩一区高清| 精品伦理精品一区| 亚洲精品成人少妇| 国内外成人在线视频| 欧美吞精做爰啪啪高潮| 久久久久久电影| 亚洲国产成人av好男人在线观看| 丁香婷婷综合网| 欧美中文字幕一区二区三区| 日韩精品一区二区三区三区免费| 亚洲免费观看高清完整版在线观看熊 | 欧美精品第1页| 亚洲人成网站在线| 成人av集中营| 国产午夜精品一区二区三区视频 | 69av一区二区三区| 欧美激情一区在线观看| 天天影视色香欲综合网老头| 成人在线视频首页| 日韩一区二区不卡| 亚洲丶国产丶欧美一区二区三区| 成人理论电影网| 中国av一区二区三区| 国产99久久久国产精品潘金| 欧美精品一区二区三区四区| 国内精品伊人久久久久av一坑| 欧美日韩国产小视频| 国产精品一区二区在线看| 欧美三级电影在线看| 一区二区三区四区av| 色av一区二区| 午夜欧美2019年伦理| 欧美在线999| 三级欧美韩日大片在线看| 欧美丰满一区二区免费视频| 日韩在线一二三区| 精品少妇一区二区| 丁香桃色午夜亚洲一区二区三区| www亚洲一区| av男人天堂一区| 亚洲不卡av一区二区三区| 欧美美女直播网站| 韩日欧美一区二区三区| 欧美精彩视频一区二区三区| 国产精品一级黄| 亚洲欧美激情在线| 日韩一区二区三区四区五区六区 | 久久99精品国产.久久久久久| 久久色在线观看| 色婷婷综合久久久中文字幕| 日韩成人一级片| 国产精品久久久久久亚洲毛片| 色婷婷av一区二区三区软件| 首页国产欧美日韩丝袜| 国产偷v国产偷v亚洲高清| 欧美系列一区二区| 成人av动漫在线| 极品少妇一区二区| 国产一区啦啦啦在线观看| 亚洲精品国产高清久久伦理二区| 日韩欧美国产一区二区三区| www.亚洲在线| 国产福利91精品一区| 蜜臀av亚洲一区中文字幕| 亚洲欧美偷拍卡通变态| 久久午夜色播影院免费高清| 欧美人体做爰大胆视频| 91在线免费视频观看| 国产中文字幕一区| 美女脱光内衣内裤视频久久网站| 亚洲欧美乱综合| 亚洲视频1区2区| 自拍偷自拍亚洲精品播放| 国产精品久久一级| 中文字幕乱码久久午夜不卡| 26uuu成人网一区二区三区| 在线不卡一区二区| 欧美精品久久一区| 在线观看国产日韩| 欧美三级中文字幕在线观看| 色综合色综合色综合| 97久久精品人人澡人人爽| 成人激情开心网| 99re这里只有精品首页| 国产91精品欧美| 成人丝袜高跟foot| 一本大道久久a久久综合婷婷| 99热国产精品| 欧美欧美欧美欧美| 国产精品欧美精品| 亚洲欧洲日韩综合一区二区| 亚洲精品久久久蜜桃| 亚洲国产精品一区二区久久| 日本最新不卡在线| 国产资源在线一区| 91视视频在线观看入口直接观看www| 91年精品国产| 精品国产凹凸成av人导航| 国产欧美日韩一区二区三区在线观看| 国产亚洲欧美激情| 亚洲图片有声小说| 国产伦理精品不卡| 在线免费观看日本一区| 日韩美女主播在线视频一区二区三区| 久久久综合视频| 亚洲免费av高清| 国产成人啪免费观看软件 | 欧美国产日韩一二三区| 婷婷激情综合网| 一本色道综合亚洲| 久久―日本道色综合久久| 亚洲一区在线视频观看| 激情av综合网| 日韩免费看的电影| 亚洲大片精品永久免费| 91美女在线看| 中文字幕在线播放不卡一区| 日韩电影一区二区三区| 欧美日韩中文字幕精品| 国产精品不卡视频| 成人18视频在线播放| 2021国产精品久久精品| 日韩av网站在线观看| 666欧美在线视频| 亚洲国产一区视频| 在线观看亚洲一区| |精品福利一区二区三区| 成人激情电影免费在线观看| 国产日韩成人精品| 国产1区2区3区精品美女| 国产亚洲va综合人人澡精品| 久久66热偷产精品| 久久久久国产精品厨房| 国产精品白丝av| 日本一区二区电影| eeuss鲁片一区二区三区在线观看| 久久久久久久久99精品| 国产一区啦啦啦在线观看| 欧美激情综合五月色丁香| 国产91清纯白嫩初高中在线观看| 国产欧美日韩激情| 91丨porny丨在线| 亚洲成av人片观看| 欧美成人r级一区二区三区| 狠狠狠色丁香婷婷综合激情| 国产亲近乱来精品视频 | 无码av免费一区二区三区试看 | 国产乱码精品一区二区三 | 国产精品66部| 夜夜操天天操亚洲| 精品久久人人做人人爽| 99精品国产91久久久久久| 日本少妇一区二区| 国产精品久久久久影院亚瑟| 欧美专区日韩专区| 成人高清伦理免费影院在线观看|