📄 fat.lst
字号:
C51 COMPILER V7.02a FAT 12/22/2010 21:07:56 PAGE 1
C51 COMPILER V7.02a, COMPILATION OF MODULE FAT
OBJECT MODULE PLACED IN fat.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE fat.c LARGE BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include "fat.h"
2
3 unsigned char xdata FAT32_Buffer[512]; //扇区数据读写缓冲区xdata
4 struct FAT32_Init_Arg Init_Arg; //初始化参数结构体实体
5 struct FileInfoStruct FileInfo;
6
7 /*********************
8 FAT32中读取扇区的函数
9 返回对缓冲区的首地址buf
10 *********************/
11 unsigned char * FAT32_ReadSector(unsigned long LBA,unsigned char *buf)
12 {
13 1 MMC_get_data_LBA(LBA,512,buf);
14 1 return buf;
15 1 }
16 /**********************
17 FAT32中写扇区的函数
18 返回0:写扇区成功
19 返回非0:写扇区失败
20 **********************/
21 unsigned char FAT32_WriteSector(unsigned long LBA,unsigned char *buf)
22 {
23 1 return MMC_write_sector(LBA,buf);
24 1 }
25
26 /***********************
27 将存储设备读出的数据由小端转为大端
28 ***********************/
29 unsigned long lb2bb(unsigned char *dat,unsigned char len)//
30 {
31 1 unsigned long temp=0;
32 1 unsigned long fact=1;
33 1 unsigned char i=0;
34 1 for(i=0;i<len;i++)
35 1 {
36 2 temp+=dat[i]*fact;
37 2 fact=fact<<8;
38 2 }
39 1 return temp;
40 1 }
41 /***************************
42 查找BPB所在扇区号,这里固定为0扇区
43 ***************************/
44 unsigned long FAT32_FindBPB() //寻找BPB所在的扇区号
45 {
46 1 FAT32_ReadSector(0,FAT32_Buffer);
47 1 return lb2bb(((((struct PartSector *)(FAT32_Buffer))->Part[0]).StartLBA),4);
48 1 }
49 /***********************
50 存储器的总容量,单位为M
51 返回为Float型
52 ************************/
53 unsigned long FAT32_Get_Total_Size()//
54 {
55 1 FAT32_ReadSector(Init_Arg.BPB_Sector_No,FAT32_Buffer);
C51 COMPILER V7.02a FAT 12/22/2010 21:07:56 PAGE 2
56 1 return ((float)(lb2bb((((struct FAT32_BPB *)(FAT32_Buffer))->BPB_TotSec32),4)))*0.0004883;
57 1 }
58 /*****************************
59 文件系统初始化
60 将BPB段的给类信息装入到BPB结构体当中
61 ******************************/
62 void FAT32_Init(struct FAT32_Init_Arg *arg)
63 {
64 1 struct FAT32_BPB *bpb=(struct FAT32_BPB *)(FAT32_Buffer); //将数据缓冲区指针转为struct FAT32_
-BPB 型指针
65 1 arg->BPB_Sector_No =FAT32_FindBPB(); //FAT32_FindBPB()可以
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -