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

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

?? fat.h

?? 提供Sd卡驅動(spi模式)程序
?? H
字號:
//#########################################################################
// File: fat.h
//
// Benutzt nur die erste Partition
// Nur f黵 Laufwerke mit 512 Bytes pro Sektor
//
// Nach einem White Paper von MS
// FAT: General Overview of On-Disk Format
// Version 1.03, December 6, 2000
//
//#########################################################################
// Last change: 22.03.2004
//#########################################################################
// holger.klabunde@t-online.de
// http://home.t-online.de/home/holger.klabunde/homepage.htm
//#########################################################################
// Compiler: AVR-GCC 3.2
//#########################################################################

#ifndef __FAT_H
#define __FAT_H

//file operations
#define END_DIR		0
#define NO_MATCH	1
#define MATCH_NAME	2
#define MATCH_EXT	3
#define FULL_MATCH	MATCH_NAME + MATCH_EXT

#define PART1_TABLE_OFFSET 0x01BE //offset to first partitiontable in sector 0

//Using structures needs less memory than indexing in arrays like inbuff[]

//partitiontable structure
//most of it is not used in this program
//bootsector offset is the only thing we need
//because C/H/S values are not used. LBA !
struct PartInfo {
                 unsigned char status;      //Partition status, 0x80 = Active, 0x00 = inactive
                 unsigned char firsthead;   //First head used by partition
                 unsigned int  firstseccyl; //First sector and cylinder used by partition
                 unsigned char type;        //Partition type
                 unsigned char lasthead;    //Last head used by partition
                 unsigned int  lastseccyl;  //Last sector and cylinder used by partition
                 unsigned long bootoffset;  //Location of boot sector. !!!!!!!!!!!
                 unsigned long secofpart;   //Number of sectors for partition
};

//first sector of disc is the master boot record
//it contains four partitiontables
//only the first partition is used in this program
struct MBR {
            unsigned char dummy[PART1_TABLE_OFFSET]; //we don't need all these bytes
            struct PartInfo part1;
            struct PartInfo part2;
            struct PartInfo part3;
            struct PartInfo part4;
//all bytes below are not necessary
};

//part of FAT12/16 bootsector different to FAT32
struct RemBoot //FAT12/16 defs beginning at offset 36
 {
	unsigned char  BS_DrvNum;
	unsigned char  BS_Reserved1;
	unsigned char  BS_BootSig;
	unsigned char  BS_VolID[4];
	char           BS_VolLab[11];
	char           BS_FilSysType[8];
	unsigned char  remaining_part[450];
 };

//part of FAT32 bootsector different to FAT12/16
struct RemBoot32 //FAT32 defs beginning at offset 36
  {
	unsigned long  BPB_FATSz32; //4 bytes
	unsigned int   BPB_ExtFlags; //2 bytes
	unsigned int   BPB_FSVer; //2 bytes
	unsigned long  BPB_RootClus; //4 bytes
	unsigned int   BPB_FSInfo; //2 bytes
	unsigned int   BPB_BkBootSec; //2 bytes
	unsigned char  BPB_Reserved[12];
	unsigned char  BS_DrvNum;
	unsigned char  BS_Reserved1;
	unsigned char  BS_BootSig;
	unsigned long  BS_VolID; //4 bytes
	char           BS_VolLab[11];
	char           BS_FilSysType[8];
	unsigned char  remaining_part[422];
}; 

union endboot 
{
       struct RemBoot   rm;
       struct RemBoot32 rm32;
};

struct BootSec 
{
	unsigned char  BS_jmpBoot[3];
	char           BS_OEMName[8];
	unsigned int   BPB_BytesPerSec; //2 bytes
	unsigned char  BPB_SecPerClus;
	unsigned int   BPB_RsvdSecCnt; //2 bytes
	unsigned char  BPB_NumFATs;
	unsigned int   BPB_RootEntCnt; //2 bytes
	unsigned int   BPB_TotSec16; //2 bytes
	unsigned char  BPB_Media;
	unsigned int   BPB_FATSz16; //2 bytes
	unsigned int   BPB_SecPerTrk; //2 bytes
	unsigned int   BPB_NumHeads; //2 bytes
	unsigned long  BPB_HiddSec; //4 bytes
	unsigned long  BPB_TotSec32; //4 bytes
        union endboot  eb; //remaining part of bootsector
};


#define BYTE_PER_SEC	512

#define FAT12	12
#define FAT16	16
#define FAT32	32

//defines for special cluster values
//free cluster has value 0
//for fat32 don't use upper four bits ! ignore them
//cluster value of 0x10000000 is a FREE cluster in FAT32
 
//values for end of cluster chain
//ranges for example for FAT12 from 0xFF8 to 0xFFF
#define EOC12	0xFF8
#define EOC16	0xFFF8
#define EOC32	0x0FFFFFF8

//values for bad marked clusters
#define BADC12	0xFF7
#define BADC16	0xFFF7
#define BADC32	0x0FFFFFF7

//values for reserved clusters
//ranges for example for FAT12 from 0xFF0 to 0xFF6
#define RESC12	0xFF0
#define RESC16	0xFFF0
#define RESC32	0x0FFFFFF0

#ifdef USE_FAT32
 #define DISK_FULL 0xFFFFFFFF
#else
 #define DISK_FULL 0xFFFF
#endif

//File/Dir Attributes
#define ATTR_FILE	0x00 //not defined by MS ! I did it 
#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
#define ATTR_LONG_NAME  0x0F

//Char codes not allowed in a filename
//NOT checked yet
//0x22, 0x2A, 0x2B, 0x2C, 0x2E, 0x2F, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x5B, 0x5C, 0x5D, and 0x7C. 

struct DirEntry {
                 unsigned char DIR_Name[8];      //8 chars filename
                 unsigned char DIR_Ext[3];       //3 chars extension
                 unsigned char DIR_Attr;         //file attributes RSHA
                 unsigned char DIR_NTres;        //set to zero
                 unsigned char DIR_CrtTimeTenth; //creation time part in milliseconds
                 unsigned int  DIR_CrtTime;      //creation time
                 unsigned int  DIR_CrtDate;      //creation date
                 unsigned int  DIR_LastAccDate;  //last access date (no time for this !)
                 unsigned int  DIR_FstClusHI;  //first cluster high word                 
                 unsigned int  DIR_WrtTime;      //last write time
                 unsigned int  DIR_WrtDate;      //last write date
                 unsigned int  DIR_FstClusLO;  //first cluster low word                 
                 unsigned long DIR_FileSize;     
                };

//do a little trick for getting long name characters from a DirEntry
//DirEntryBuffer later gets the same adress as DirEntry
struct DirEntryBuffer {
                 unsigned char longchars[sizeof(struct DirEntry)];
                };

//Prototypes
extern unsigned char GetDriveInformation(void);
extern void UpdateFATBuffer(unsigned long newsector);

#ifdef USE_FAT32
 extern unsigned long GetFirstSectorOfCluster(unsigned long n);
 extern unsigned long GetNextClusterNumber(unsigned long cluster);
 extern unsigned char WriteClusterNumber(unsigned long cluster, unsigned long number);
 extern unsigned long AllocCluster(unsigned long currentcluster);
 extern unsigned long FindFreeCluster(unsigned long currentcluster);
#else
 extern unsigned long GetFirstSectorOfCluster(unsigned int n);
 extern unsigned int GetNextClusterNumber(unsigned int cluster);
 extern unsigned char WriteClusterNumber(unsigned int cluster, unsigned int number);
 extern unsigned int AllocCluster(unsigned int currentcluster);
 extern unsigned int FindFreeCluster(unsigned int currentcluster);
#endif

#ifdef USE_FAT32
 extern unsigned long endofclusterchain;
 extern unsigned long maxcluster;        // last usable cluster+1
 extern unsigned long FAT32RootCluster;
#else
 extern unsigned int endofclusterchain;
 extern unsigned int maxcluster;        // last usable cluster+1
#endif

extern unsigned long maxsect;           // last sector on drive
extern unsigned char secPerCluster;

extern unsigned char dirbuf[];   //buffer for directory sectors
extern unsigned char fatbuf[];   //buffer for FAT sectors
extern unsigned char iob[];      //file i/o buffer

//extern unsigned long FATHits;	// count FAT write cycles. you don't really need this ;)
extern unsigned long FATFirstSector;
extern unsigned long FATCurrentSector;
extern unsigned char FATtype;
extern unsigned char FATStatus; // only for FAT write buffering

#ifdef USE_FAT32
 extern unsigned long FirstDirCluster;
#else
 extern unsigned int FirstDirCluster;
#endif

#ifdef USE_FAT32
 extern unsigned long FileFirstCluster;
 extern unsigned long FileCurrentCluster;
#else
 extern unsigned int FileFirstCluster;
 extern unsigned int FileCurrentCluster;
#endif
extern unsigned long FileCurrentSector;
extern unsigned long File1stClusterSector;
extern unsigned long FileClusterCount;
extern unsigned long FileBytePerCluster;
extern unsigned long FileDirSector;
extern unsigned char FileDirOffset;
extern unsigned long FileSize;
extern unsigned long FilePosition;
extern unsigned char FileFlag;
extern unsigned char FileAttr;
extern unsigned char FileName[];
extern unsigned char FileExt[];

extern unsigned long FirstRootSector;
extern unsigned long RootDirSectors;

#endif //FAT_H

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美激情四射| 色综合久久久网| 日本女人一区二区三区| 亚洲一级在线观看| 亚洲h动漫在线| 五月婷婷综合在线| 卡一卡二国产精品| 国产原创一区二区三区| 成人app网站| 91久久线看在观草草青青| 欧美三级在线看| 欧美酷刑日本凌虐凌虐| 欧美电影免费观看高清完整版在 | 亚洲大型综合色站| 亚洲a一区二区| 麻豆91精品视频| 国产精品69毛片高清亚洲| 99久久婷婷国产综合精品电影| 色琪琪一区二区三区亚洲区| 欧美人妇做爰xxxⅹ性高电影| 日韩亚洲欧美中文三级| 欧美极品美女视频| 亚洲国产日产av| 国产美女主播视频一区| 色综合激情五月| 精品国产精品一区二区夜夜嗨| 国产精品午夜春色av| 樱桃视频在线观看一区| 麻豆91免费看| 在线精品亚洲一区二区不卡| 欧美zozo另类异族| 亚洲男帅同性gay1069| 精品一区二区三区在线播放| 97久久超碰国产精品| 日韩三级视频中文字幕| 亚洲色欲色欲www| 久久精品国产成人一区二区三区| 9人人澡人人爽人人精品| 51精品秘密在线观看| 中文字幕在线播放不卡一区| 免费av成人在线| 欧美少妇xxx| 国产精品久久久久久久久免费桃花| 日韩高清欧美激情| 在线看一区二区| 中文字幕一区二区三区四区| 激情久久久久久久久久久久久久久久| av高清久久久| 久久夜色精品一区| 蜜臀av亚洲一区中文字幕| 91麻豆国产香蕉久久精品| 国产欧美日韩精品一区| 久久精品国产成人一区二区三区| 欧美午夜理伦三级在线观看| 亚洲欧洲日本在线| 懂色av中文字幕一区二区三区| 欧美一级艳片视频免费观看| 一区二区三区欧美在线观看| 大陆成人av片| 久久九九99视频| 国产一区高清在线| 日韩免费成人网| 秋霞av亚洲一区二区三| 制服丝袜av成人在线看| 亚洲第一会所有码转帖| 欧美日韩综合色| 亚洲成人精品在线观看| 一本一本久久a久久精品综合麻豆| 国产午夜精品久久| 成人综合婷婷国产精品久久 | 91视视频在线观看入口直接观看www | 亚洲青青青在线视频| 国产91富婆露脸刺激对白| 国产午夜亚洲精品午夜鲁丝片 | 国产精品美女久久久久aⅴ| 久久99深爱久久99精品| 日韩免费视频线观看| 蜜桃久久av一区| 日韩免费高清电影| 经典三级视频一区| 久久综合色一综合色88| 国产一区二区毛片| 中文无字幕一区二区三区| 成人午夜精品一区二区三区| 国产网红主播福利一区二区| 成人精品鲁一区一区二区| 国产精品免费网站在线观看| 99久久国产综合色|国产精品| 亚洲欧美激情一区二区| 欧美精品日韩一区| 国内一区二区在线| 综合色中文字幕| 欧美日韩国产欧美日美国产精品| 日韩av电影免费观看高清完整版| 日韩欧美在线观看一区二区三区| 免费成人在线观看视频| 日本一区二区三区在线观看| 成人免费视频网站在线观看| 亚洲欧美激情小说另类| 正在播放一区二区| 国产老妇另类xxxxx| 综合电影一区二区三区| 欧美精选在线播放| 国产sm精品调教视频网站| 亚洲精品欧美激情| 欧美一区二区视频在线观看2020| 国产九九视频一区二区三区| 亚洲老司机在线| 久久亚洲欧美国产精品乐播| 一本色道亚洲精品aⅴ| 麻豆免费看一区二区三区| 日本一区二区成人在线| 欧美高清视频一二三区| 成人av资源网站| 午夜精品一区二区三区电影天堂| 久久久久久久免费视频了| 91久久精品一区二区二区| 激情久久五月天| 亚洲不卡av一区二区三区| 国产欧美一区二区三区在线老狼| 欧美性猛片xxxx免费看久爱| 国产毛片精品视频| 丝袜a∨在线一区二区三区不卡| 国产日韩影视精品| 欧美一区二区三区的| 色综合久久中文综合久久97| 国产一区不卡视频| 日本亚洲欧美天堂免费| 亚洲综合色网站| 亚洲天堂久久久久久久| 国产亚洲午夜高清国产拍精品| 欧美日韩国产大片| 一本大道久久精品懂色aⅴ | 欧美在线观看一区| 成人一道本在线| 韩国v欧美v日本v亚洲v| 免费看欧美女人艹b| 丝袜诱惑制服诱惑色一区在线观看 | 国产呦精品一区二区三区网站| 亚洲国产另类av| 夜夜揉揉日日人人青青一国产精品| 久久久国产综合精品女国产盗摄| 69堂成人精品免费视频| 欧洲生活片亚洲生活在线观看| 91亚洲国产成人精品一区二区三| 国产成人精品亚洲日本在线桃色| 精品一区二区在线看| 青青草精品视频| 美女诱惑一区二区| 久久电影网电视剧免费观看| 麻豆成人综合网| 麻豆精品国产91久久久久久| 日本在线播放一区二区三区| 偷拍亚洲欧洲综合| 午夜私人影院久久久久| 秋霞电影一区二区| 久久99精品国产.久久久久久| 青青草97国产精品免费观看无弹窗版| 午夜电影一区二区| 日本va欧美va瓶| 精品无码三级在线观看视频| 精久久久久久久久久久| 国产成人免费视频网站高清观看视频| 国产精品一品二品| 91免费看片在线观看| 在线这里只有精品| 91精品欧美久久久久久动漫 | 欧美伦理电影网| 日韩欧美卡一卡二| 国产农村妇女精品| 亚洲精品视频免费看| 五月激情六月综合| 韩国精品在线观看| 9久草视频在线视频精品| 欧美日韩高清一区二区| 精品国产sm最大网站| 亚洲视频小说图片| 亚洲bt欧美bt精品777| 国内精品免费**视频| 色综合天天狠狠| 日韩亚洲欧美中文三级| 国产精品久久夜| 亚洲国产精品一区二区尤物区| 麻豆精品在线播放| 99久久免费视频.com| 在线播放一区二区三区| 中文字幕精品一区二区精品绿巨人| 一区二区三区**美女毛片| 国内成人精品2018免费看| 一本大道综合伊人精品热热| 精品久久久久久无| 亚洲一二三区视频在线观看| 国产高清成人在线| 欧美日韩国产高清一区二区三区| 亚洲精品一区二区三区精华液| 综合久久国产九一剧情麻豆| 国内外成人在线| 欧美日产国产精品| 亚洲欧美在线另类| 韩国三级电影一区二区|