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

📄 file.h

📁 单片机读写优盘
💻 H
字号:
//************************************************************************
//author:dragon
//web:8dragon.com
//2004.2.5完成于桃龙源
//*************************************************************************
#define BYTE	unsigned char
#define WORD	unsigned short
#define DWORD	unsigned long
#define UINT	unsigned int
//****************************************************************************
//the definition of fat16 structure
//****************************************************************************
//Bios parameter blolc
typedef struct _BPB_BLOCK {
	BYTE BS_jmpBoo[3];
	BYTE BS_OEMName[8];
	WORD BPB_BytesPerSec;
	BYTE BPB_SecPerClus;
	BYTE BPB_RsvdSecCn[2];
	BYTE BPB_NumFATs;
	WORD BPB_RootEntCnt;
	WORD BPB_TotSec16;
	BYTE BPB_Media;
	WORD BPB_FATSz16;
	WORD BPB_SecPerTrk;
	WORD BPB_NumHeads;
	DWORD BPB_HiddSec;
	DWORD BPB_TotSec32;
	BYTE BS_DrvNum;
	BYTE BS_Reserved1;
	BYTE BS_BootSig;
	BYTE BS_VolID[4];
	BYTE BS_VolLab[11];
	BYTE BS_FilSysType[8];
	BYTE ExecutableCode[448];
	BYTE Marker[2];
} BPB_BLOCK,*PBPB_BLOCK;
//Simple BPB control block
struct _BPB {
	BYTE NumFATs;
	BYTE SecPerClus;
	WORD BytsPerSec;
	WORD RsvdSecCnt;
	WORD RootEntCnt;
	UINT TotSec;
	UINT FATSz;
};
//FAT control parameter
typedef	struct _FAT_PARAMETER {
	DWORD RootDirSectors;	
	DWORD FirstDataSector;
	DWORD FirstFatSecNum;
	DWORD FirstRootDirSecNum;
}FAT_PARAMETER,*pFAT_PARAMETER;
// root dir information
struct _DIR
{
	BYTE Name[11];
	BYTE Attr;
	BYTE NTRes;
	BYTE CrtTimeTenth;
	WORD CrtTime;
	WORD CrtDate;
	WORD LstAccDate;
	WORD FstClusHI;
	WORD WrtTime;
	WORD WrtDate;
	WORD FstClusLO;
	DWORD FileSize;
};
// file attribute 
#define ATTR_READ_ONLY	0x01
#define ATTR_HIDDEN		0x02
#define ATTR_SYSTEM		0x04
#define ATTR_VOLUME_ID	0x08
#define ATTR_DIRECTORY	0x10
#define ATTR_ARCHIVE	0x20
//file information 
struct _FILE
{	unsigned valid; // 1 valid, 0 free.
	BYTE isDir:1;
	BYTE DirName[11];
	DWORD DotDirSecNum;
	DWORD Dot;
	DWORD DirSectorNum;
	WORD DirIndex;
	DWORD StartSectorNum;
	DWORD CurrentSectorNum;
	DWORD SectorOffset;
	struct _DIR dir;
	DWORD offset;
};
//****************************************************************************
//Functions;
//****************************************************************************
//Converse Byte order
#define ConvTwoBytes(Addr) (*(BYTE*)Addr+0x100*(*(BYTE*)(Addr+1)))
#define ConvFourBytes(Addr) (*(BYTE*)Addr+0x100*(*(BYTE*)(Addr+1))+0x10000*(*(BYTE*)(Addr+2))+0x1000000*(*(BYTE*)(Addr+3)))
BYTE InitFsys();
DWORD SeekSector(DWORD Sector, const char dirname[11],struct _FILE *file);
WORD LinkClusterList(WORD Cluster);
WORD SeekEmptyCluster();
WORD GetListCluster(WORD Cluster);
DWORD ClusterToSec(WORD Cluster);
WORD SecToCluster(DWORD Sector);
BYTE CheckFileName(char * filename, const BYTE dirname[11]);
BYTE LocateDir(struct _DIR* new_dir, struct _FILE * fp);
DWORD LocateFile(const char *filename, struct _FILE *file);
//************************************************************************
//author:dragon
//web:8dragon.com
//2004.2.5完成于桃龙源
//*************************************************************************

⌨️ 快捷键说明

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