📄 fat.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 + -