📄 file.lst
字号:
C51 COMPILER V7.06 FILE 07/30/2008 08:56:13 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE FILE
OBJECT MODULE PLACED IN file.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE file.c LARGE BROWSE DEBUG OBJECTEXTEND
stmt level source
1 //************************************************************************
2 //author:dragon
3 //web:8dragon.com
4 //2004.2.5完成于桃龙源
5 //*************************************************************************
6 #include "AT89X52.h"
7 #include "host_811.h"
8 #include "file.h"
9 #include "math.h"
10 #include "string.h"
11 #include "ufi.h"
12 struct _BPB SimpleBpb;
13 struct _FILE FileControl;
14 FAT_PARAMETER FatParameter;
15 WORD FatCache[2][256];
16 BYTE InitFsys()
17 {
18 1 BYTE buf[512];
19 1 UINT m_Offset;
20 1 DWORD DataSectors,TotalClusters;
21 1 ///////////////////////////////////////////////////////////////////////
22 1 DelayMs(100);
23 1 if(Read(0,1,(BYTE *)buf)==FALSE)
24 1 return FALSE;
25 1 DelayMs(100);
26 1 if(buf[0x00]==0xEB ||buf[0x02]==0x90)
27 1 m_Offset=0;
28 1 else
29 1 m_Offset=ConvTwoBytes((buf+0x1c6));
30 1 if(Read(0+m_Offset,1,(BYTE *)buf)==FALSE)
31 1 return FALSE;
32 1 SimpleBpb.BytsPerSec =ConvTwoBytes((&buf[11]));
33 1 SimpleBpb.SecPerClus = buf[13];
34 1 SimpleBpb.RsvdSecCnt =ConvTwoBytes((&buf[14]));
35 1 SimpleBpb.NumFATs = buf[16];
36 1 SimpleBpb.RootEntCnt = ConvTwoBytes((&buf[17]));
37 1 if((SimpleBpb.TotSec = ConvTwoBytes((&buf[19])))==0)
38 1 SimpleBpb.TotSec = ConvFourBytes((&buf[32]));
39 1 if((SimpleBpb.FATSz = ConvTwoBytes((&buf[22])))==0)
40 1 SimpleBpb.FATSz =ConvFourBytes((&buf[36]));
41 1 //------------------------------------------------------------------------
42 1 //Compute the corresponding data for Fat information;
43 1 //------------------------------------------------------------------------
44 1 FatParameter.RootDirSectors= ((SimpleBpb.RootEntCnt * 32) + (SimpleBpb.BytsPerSec - 1)) / SimpleBpb.BytsP
-erSec;
45 1 DataSectors = SimpleBpb.TotSec - (SimpleBpb.RsvdSecCnt + (SimpleBpb.NumFATs * SimpleBpb.FATSz) + FatParam
-eter.RootDirSectors);
46 1 TotalClusters = DataSectors / SimpleBpb.SecPerClus;
47 1 //判断文件格式是否为fat16;
48 1 if(TotalClusters < 4085 || TotalClusters >= 65525)
49 1 return FALSE;
50 1 FatParameter.FirstFatSecNum=SimpleBpb.RsvdSecCnt+m_Offset;
51 1 FatParameter.FirstRootDirSecNum = SimpleBpb.RsvdSecCnt + (SimpleBpb.NumFATs * SimpleBpb.FATSz)+m_Offset;
52 1 FatParameter.FirstDataSector = SimpleBpb.RsvdSecCnt + (SimpleBpb.NumFATs * SimpleBpb.FATSz) + FatParamete
-r.RootDirSectors+m_Offset;
C51 COMPILER V7.06 FILE 07/30/2008 08:56:13 PAGE 2
53 1 return TRUE;
54 1 }
55 WORD SeekEmptyCluster()
56 {
57 1 // static WORD Cluster=2;//加快寻找进度
58 1 WORD i,Cache[256],OffSet,j;
59 1 // WORD i,Cache[256],OffSet;
60 1 for(i=0;i<SimpleBpb.FATSz;i++)
61 1 {
62 2 if(!Read(FatParameter.FirstFatSecNum+i,1,(BYTE *)Cache))
63 2 return FALSE;
64 2 for(j=0;j<256;j++)
65 2 {
66 3 if(Cache[j]==0)
67 3 return (i*256+j);
68 3 }
69 2 }
70 1 return 0xffff;
71 1 //************************************************************************
72 1 /* for(i=Cluster;i<SimpleBpb.BytsPerSec * SimpleBpb.FATSz / sizeof(WORD);i++)
73 1 {
74 1 OffSet=i%(SimpleBpb.BytsPerSec/2);
75 1 if(OffSet==0)
76 1 {
77 1 if(!Read((i*2/SimpleBpb.BytsPerSec)+FatParameter.FirstFatSecNum,1,(BYTE *)Cache))
78 1 return 0xffff;
79 1 }
80 1 if(Cache[OffSet]==0)
81 1 {
82 1 Cluster=i;
83 1 return Cluster;
84 1 }
85 1
86 1 }//*end for cycle
87 1 //************************************************************************
88 1 for(i=2;i<Cluster;i++)
89 1 {
90 1 OffSet=i%(SimpleBpb.BytsPerSec/2);
91 1 if(!Read(i*2/SimpleBpb.BytsPerSec+FatParameter.FirstFatSecNum,1,(BYTE *)Cache))
92 1 return 0xffff;
93 1 if(Cache[OffSet]==0x0)
94 1 {
95 1 Cluster=i;
96 1 return Cluster;
97 1 }
98 1 }//*end for cycl
99 1 return 0xffff;*/
100 1 }
*** WARNING C280 IN LINE 58 OF FILE.C: 'OffSet': unreferenced local variable
101 WORD LinkClusterList(WORD Cluster)
102 {
103 1 static WORD VariedCluster=2;
104 1 WORD i,OffSet,FixedSec,UpdateSec,j;
105 1 BYTE p;
106 1 //////////////////////////////////////////////////////////////////////////////////
107 1 if(VariedCluster==2)
108 1 { FatCache[0][256]=0;
109 2 // FatCache[1][256]=0;
110 2 VariedCluster=3;
111 2 }
112 1 //VariedCluster=Cluste
113 1 FixedSec=Cluster*2/SimpleBpb.BytsPerSec;
C51 COMPILER V7.06 FILE 07/30/2008 08:56:13 PAGE 3
114 1 if(FatCache[0][256]!=FixedSec+FatParameter.FirstFatSecNum)
115 1 { FatCache[0][256]=0;
116 2 // if(FatCache[1][256])
117 2 // if(!Write(FixedSec+FatParameter.FirstFatSecNum,1,(BYTE *)FatCache[0],TRUE))
118 2 // return FALSE;
119 2 if(!Read(FixedSec+FatParameter.FirstFatSecNum,1,(BYTE *)FatCache[0]))
120 2 return FALSE;
121 2 }
122 1 for(i=FixedSec;i<SimpleBpb.FATSz;i++)
123 1 {
124 2 if(i!=FixedSec)
125 2 {
126 3 p=1;
127 3 FatCache[0][256]=0;
128 3 if(!Read(i+FatParameter.FirstFatSecNum,1,(BYTE *)FatCache[1]))
129 3 return FALSE;
130 3 }
131 2 else{
132 3 p=0;
133 3 FatCache[0][256]=FixedSec+FatParameter.FirstFatSecNum;
134 3 }
135 2 for(j=0;j<256;j++)
136 2 {
137 3 if(FatCache[p][j]==0)
138 3 {// if(i==FixedSec)
139 4 // { p=0;
140 4 // FatCache[0][256]=FixedSec+FatParameter.FirstFatSecNum;
141 4 // }
142 4 //else{
143 4 // p=1;
144 4 // FatCache[0][256]=0;
145 4 // }
146 4 FatCache[p][j]=0xffff;
147 4 FatCache[0][Cluster%(SimpleBpb.BytsPerSec/2)]=WordSwap((i*256+j));
148 4 if(i!=FixedSec)
149 4 { if(!Write(FixedSec+FatParameter.FirstFatSecNum,1,(BYTE *)FatCache[0],TRUE))
150 5 return FALSE;
151 5 if(!Write(i+FatParameter.FirstFatSecNum,1,(BYTE *)FatCache[p],TRUE))
152 5 return FALSE;
153 5 }
154 4 return (i*256+j);
155 4 }
156 3 }
157 2 }
158 1 ///////////////////////////////////////////////////////////////////////////
159 1 FixedSec=Cluster*2/SimpleBpb.BytsPerSec;
160 1 if(!Read(FixedSec+FatParameter.FirstFatSecNum,1,(BYTE *)FatCache[0]))
161 1 return FALSE;
162 1 for(i=0;i<FixedSec;i++)
163 1 {
164 2 if(!Read(i+FatParameter.FirstFatSecNum,1,(BYTE *)FatCache[1]))
165 2 return FALSE;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -