📄 hpi.lst
字号:
C51 COMPILER V7.07 HPI 07/13/2007 21:38:25 PAGE 1
C51 COMPILER V7.07, COMPILATION OF MODULE HPI
OBJECT MODULE PLACED IN D:\HEX\HPI.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE HPI.C BROWSE DEBUG OBJECTEXTEND OBJECT(D:\HEX\HPI.obj)
stmt level source
1 #include "common.h"
2 #include "TPBULK.H"
3 #include "HPI.H"
4 #include "HAL.H"
5 #include "Fat.h"
6 #include "Fat32.h"
7 #include "HPI32.H"
8
9 extern FLAGS bdata bFlags;
10 extern unsigned char xdata DBUF[BUFFER_LENGTH];
11 //////////////////////////////////////////
12 unsigned char xdata UARTBUF[UARTBUF_LENGTH];
13 SYS_INFO_BLOCK xdata DeviceInfo;
14 FILE_INFO xdata ThisFile;
15
16 Command_Def xdata Command;
17 Response_Def xdata Response;
18
19 unsigned int xdata DirStartCluster,NowCluster;
20 unsigned long xdata NowSector;
21 ShowFileName_Def xdata ShowFileName[MaxLFNum]; //long file struct
22 /////////////////////////////////////////////
23
24 void UartSendRsp(void)
25 {
26 1 unsigned int i;
27 1
28 1 unsigned char *pBuf=(unsigned char *)&Response;
29 1 MCU_LED4=0;
30 1 for(i=0;i<5;i++)
31 1 ComSendByte(*(pBuf+i));
32 1 //DelayMs(200);
33 1 if(Response.len!=0)
34 1 {
35 2
36 2 for(i=0;i<Response.len;i++)
37 2
38 2 ComSendByte(UARTBUF[i]);
39 2 //if(j<32) j++;
40 2 ///else j=0;
41 2 }
42 1 MCU_LED4=1;
43 1 }
44
45 unsigned char UartHandler(void)
46 {
47 1 Response.Result=0;Response.len=0;
48 1 switch(Command.CLass)
49 1 {
50 2 case 0x00: //List
51 2 Response.Result=List();
52 2 break;
53 2 case 0x01: //Open File
54 2 Response.Result=OpenFile(Command.Parameter);
55 2 break;
C51 COMPILER V7.07 HPI 07/13/2007 21:38:25 PAGE 2
56 2 case 0x02: //Read File
57 2 Response.Result=ReadFile(Command.len,UARTBUF);
58 2 break;
59 2 case 0x03: //Set Pointer
60 2 Response.Result=SetFilePointer(Command.len);
61 2 break;
62 2 case 0x04: //Great File
63 2 Response.Result=OpenFile(Command.Parameter);
64 2 if(Response.Result)
65 2 {
66 3 Response.Result=SetFilePointer(ThisFile.LengthInByte);
67 3 }
68 2 else
69 2 Response.Result=CreateFile(Command.len,Command.Parameter,UARTBUF);
70 2 break;
71 2 case 0x05: //Write File
72 2 Response.Result=WriteFile(Command.len,UARTBUF);
73 2 break;
74 2 case 0x06: //Remove File
75 2 ThisFile.bFileOpen=0;
76 2 Response.Result=RemoveFile(Command.Parameter);
77 2 break;
78 2 case 0x07: //Get Space
79 2 Response.Result=GetCapacity();
80 2 break;
81 2 case 0x08: //DetectDisk
82 2 if(bFlags.bits.SLAVE_IS_ATTACHED)
83 2 Response.Result=1;
84 2 break;
85 2 case 0x09: //Great Dir
86 2 Response.Result=DownDir(Command.Parameter);
87 2 if(!Response.Result)
88 2 Response.Result=CreateDir(Command.len,Command.Parameter,UARTBUF);
89 2 break;
90 2 case 0x0a: //Down Dir
91 2 Response.Result=DownDir(Command.Parameter);
92 2 break;
93 2 case 0x0b: //Up Dir
94 2 Response.Result=UpDir();
95 2 break;
96 2 case 0x0c: //Up RootDir
97 2 Response.Result=UpRootDir();
98 2 break;
99 2 }
100 1
101 1 UartSendRsp();
102 1 ///////////////////////////////
103 1 return TRUE;
104 1 }
105
106 unsigned char List(void)
107 {
108 1 unsigned int item,i;
109 1 unsigned char k,bstop,sector;
110 1 unsigned char Lcount,Ncount,base;
111 1
112 1 if(!bFlags.bits.SLAVE_IS_ATTACHED)
113 1 return FALSE;
114 1 item=0;
115 1 bstop=0;
116 1 ////////////////////////////////////
117 1 Lcount=0;
C51 COMPILER V7.07 HPI 07/13/2007 21:38:25 PAGE 3
118 1 for(i=0;i<MaxLFNum;i++)
119 1 {
120 2 ShowFileName[i].LongName[0]=0x00;
121 2 ShowFileName[i].LongName[1]=0x00;
122 2 }
123 1 /////////////////////////////////////
124 1
125 1 if(DirStartCluster==0) //Root Dir
126 1 {
127 2 for(sector=0;sector<DeviceInfo.BPB_RootEntCnt;sector++)
128 2 {
129 3 if(!RBC_Read(DeviceInfo.RootStartSector+sector,1,DBUF))
130 3 return FALSE;
131 3 for(i=0;i<DeviceInfo.BPB_BytesPerSec;i=i+32)
132 3 {
133 4 if(DBUF[i]==0x00)
134 4 {bstop=1;
135 5 break;}
136 4 else if(DBUF[i]==0xE5)
137 4 continue;
138 4 else
139 4 {
140 5 for(k=0;k<32;k++)
141 5 UARTBUF[item*32+k]=DBUF[i+k];
142 5 item=item+1;
143 5 /////////////////////////////////
144 5 if(DBUF[i+11]==0x0F)
145 5 {
146 6 base=((DBUF[i]&0x1F)-1)*26;
147 6 if(base<=224)
148 6 {
149 7 Ncount=0;
150 7 for(k=1;k<11;k++)
151 7 {
152 8 ShowFileName[Lcount].LongName[base+Ncount]=DBUF[i+k];
153 8 Ncount++;
154 8 }
155 7 for(k=14;k<26;k++)
156 7 {
157 8 ShowFileName[Lcount].LongName[base+Ncount]=DBUF[i+k];
158 8 Ncount++;
159 8 }
160 7 for(k=28;k<32;k++)
161 7 {
162 8 ShowFileName[Lcount].LongName[base+Ncount]=DBUF[i+k];
163 8 Ncount++;
164 8 }
165 7 }
166 6 }
167 5 else
168 5 {
169 6 for(k=0;k<32;k++)
170 6 ShowFileName[Lcount].item[k]=DBUF[i+k];
171 6 Lcount++;
172 6 }
173 5 /////////////////////////////////
174 5 }
175 4 }
176 3
177 3 if(bstop==1)break;
178 3 }
179 2 Response.len=item*32;
C51 COMPILER V7.07 HPI 07/13/2007 21:38:25 PAGE 4
180 2 return TRUE;
181 2 }
182 1 //////////////////////////////////////////////////////////////////
183 1 else //Son Dir
184 1 {
185 2 NowCluster=DirStartCluster;
186 2 do
187 2 {
188 3 NowSector=FirstSectorofCluster(NowCluster);
189 3 for(sector=0;sector<DeviceInfo.BPB_SecPerClus;sector++)
190 3 {
191 4 if(!RBC_Read(NowSector+sector,1,DBUF))
192 4 return FALSE;
193 4 for(i=0;i<DeviceInfo.BPB_BytesPerSec;i=i+32)
194 4 {
195 5 if(DBUF[i]==0x00)
196 5 {bstop=1;break;}
197 5 else if(DBUF[i]==0xE5)
198 5 continue;
199 5 else
200 5 {
201 6 for(k=0;k<32;k++)
202 6 UARTBUF[item*32+k]=DBUF[i+k];
203 6 item=item+1;
204 6 /////////////////////////////////
205 6 if(DBUF[i+11]==0x0F)
206 6 {
207 7 base=((DBUF[i]&0x1F)-1)*26;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -