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

📄 fat.h

📁 44b0+PDIUSBD12开发的U盘源码
💻 H
字号:
#ifndef __FAT_H__
#define __FAT_H__


#include"..\INC\user.h"
#include"..\INC\Uart.h"

/********************************************************************/
#define	BYTES_PER_SEC	0x00,0x02	//每个扇区字节数
#define	SEC_PER_CLUS	0x01		//每簇扇区数
#define	RSVD_SEC_CNT	0x01,0x00	//保留扇区数
#define	ROOT_ENT_CNT	0x00,0x02	//根目录项数
#define	TOTAL_SEC_16	0x00,0x08	//此域为存储卷上的扇区总数。包括FAT 表的四个区域的所有扇区数(此时为1M)。
#define	FAT_SIZE_16		0x04,0x00	//FAT表所占扇区数
//	| BPB  |
//  | RSV-1|
//  | FAT1 |
//  | FAT2 |
//  | DIR  |
//  | DATA |
	
/********************************************************************/
#define VDISK_SIZE	1100000

U8 VDisk[1100000];

U8 BPB[512]=
{0xeb,0x3c,0x90,	//BS_jmpBoot
 'M','S','D','O','S','5','.','0',//BS_OEMName
 BYTES_PER_SEC,			//BPB_BytesPerSec
 SEC_PER_CLUS,			//BPB_SecPerClus  
 RSVD_SEC_CNT,			//BPB_RsvdSecCnt
 0x02,					//BPB_NumFATs
 ROOT_ENT_CNT,			//BPB_RootEntCnt
 TOTAL_SEC_16,			//BPB_TotSec16	
 0xf8,					//BPB_Media
 FAT_SIZE_16,			//BPB_FATSz16		
 0x3f,0x00,				//BPB_SecPerTrk
 0xff,0x00,				//BPB_NumHeads
 0x00,0x00,0x00,0x00,	//BPB_HiddSec
 0x00,0x00,0x00,0x00,	//BPB_TotSec32
 0x00,					//BS_DrvNum
 0x00,					//BS_Reserved1
 0x29,					//BS_BootSig
 0x84,0x5f,0x2d,0x70,	//BS_VolID
 'B','7','0','7','B','7','0','7',0x00,0x00,0x00,//BS_VolLab
 'F','A','T','1','6',0x00,0x00,0x00,//BS_FilSysType
 };
 
 
 ////////////////////////////////////////////////////////
 U8 JB[32]=
 {'L','o','v','e','Y','o','u','!',//FileName
  ' ',' ',' ',//扩展名
  0x08,//文件属性(卷标)
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x6e,0x80,0x3c,0x33,
  0x00,0x00,
  0x00,0x00,0x00,0x00
 };
 
 U8 File[32]=
 {'L','O','V','E','Y','O','U','!',
  'T','X','T',
  0x20,//存档
  0x18,0x99,0x0a,0x83,
  0x3c,0x33,0x3c,0x33,
  0x00,0x00,0x0b,0x83,
  0x3c,0x33,0x02,0x00,
  0x04,0x00,0x00,0x00
 };
 ////////////////////////////////////////////////////////
 
 void BPB_Init(){
 	BPB[510]=0x55;
 	BPB[511]=0xaa;
 }
 
 
 
 void InitVDisk(){
	int i;
	
	BPB_Init();
	
	for(i=0;i<1100000;i++){
		VDisk[i]=0xff;
	}
	for(i=0;i<512;i++){
	//	VDisk[i]=BPB[i];
	}
	
	//for(i=1536;i<1568;i++){
	//	VDisk[i]=JB[i-1536];
	//}
	//for(i=1568;i<1600;i++){
	//	VDisk[i]=File[i-1568];
	//}
	/*
	VDisk[0x0200]=0xff;VDisk[0x0201]=0xff;
	VDisk[0x0202]=0xff;VDisk[0x0203]=0xff;
	VDisk[0x0204]=0xff;VDisk[0x0205]=0xff;
	
	VDisk[0x0400]=0xff;VDisk[0x0401]=0xff;
	VDisk[0x0402]=0xff;VDisk[0x0403]=0xff;
	VDisk[0x0404]=0xff;VDisk[0x0405]=0xff;
	//及其注意FAT表的第0项和第1项值为 0xffff
	
	VDisk[0x0800]='G';
	VDisk[0x0801]='O';
	VDisk[0x0802]='O';
	VDisk[0x0803]='D';*/
	
	VDisk[1000000]=23;
	Uart_Printf("VDisk:",VDisk[1000000]);
	
}

 
 #endif

⌨️ 快捷键说明

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