📄 hpi.lst
字号:
C51 COMPILER V6.20c HPI 04/07/2005 10:50:50 PAGE 1
C51 COMPILER V6.20c, COMPILATION OF MODULE HPI
OBJECT MODULE PLACED IN HPI.OBJ
COMPILER INVOKED BY: D:\Hardware\Keilc620\C51\Bin\C51.EXE HPI.C DB OE SMALL ROM(LARGE)
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 "INTRINS.H"
7
8 #define DIR_IS_SUPPORTED 1
9
10 extern XXGFLAGS bXXGFlags;
11 extern unsigned char xdata DBUF[BUFFER_LENGTH];
12 //////////////////////////////////////////
13 //UART_CMD_BLOCK xdata inblock;
14 unsigned char xdata UARTBUF[UARTBUF_LENGTH];
15 SYS_INFO_BLOCK xdata DeviceInfo;
16 UART_CMD_BLOCK xdata UartCmdBlock;
17 UART_RSP_BLOCK xdata UartRspBlock;
18 FILE_INFO xdata ThisFile;
19 DIR_INFO xdata ThisDir;
20 //extern FREE_FAT_INFO xdata FreeFat;
21 extern unsigned char xdata CurFatSector[512];
22 extern unsigned long idata FreeClusterNum,FreeSecNum;
23 unsigned long xdata StartSec2Write;
24 unsigned char xdata *BufStartAddress;
25 unsigned long xdata OldClusterPointer;
26 //////////////////////////////////////////
27 void UartSendRsp(void)
28 {
29 1 unsigned int i;
30 1 unsigned char *pBuf=(unsigned char *)&UartRspBlock;
31 1 for(i=0;i<64;i++)
32 1 ComSendByte(*(pBuf+i));
33 1 if(UartRspBlock.len!=0){
34 2 for(i=0;i<UartRspBlock.len;i++)
35 2 ComSendByte(*(UartRspBlock.pbuffer+i));
36 2 }
37 1 }
38
39 unsigned char UartHandler(unsigned char bEnd)
40 {
41 1 unsigned char retStatus;
42 1 unsigned int len,temp,temp1,cnt;
43 1 unsigned long pointer;
44 1 U16 xdata itemCnt;
45 1 itemCnt=0;
46 1 //UartRspBlock.result=1;
47 1 UartRspBlock.errcode=ERC_OK;
48 1 UartRspBlock.len=0;
49 1 ///////////////////////////
50 1 switch(UartCmdBlock.cmd)
51 1 {
52 2 case CMD_RESET:
53 2
54 2 break;
55 2 case CMD_LIST:
C51 COMPILER V6.20c HPI 04/07/2005 10:50:50 PAGE 2
56 2 ThisFile.bFileOpen=0;
57 2 retStatus=List(&itemCnt,UARTBUF);
58 2 UartRspBlock.cmd=CMD_LIST_RSP;
59 2 break;
60 2 case CMD_DETECT_DEVICE:
61 2 ThisFile.bFileOpen=0;
62 2 retStatus=DetectDevice();
63 2 UartRspBlock.cmd=CMD_DETECT_DEVICE_RSP;
64 2 break;
65 2 case CMD_OPEN_FILE:
66 2 retStatus=OpenFile(UartCmdBlock.CmdBlock.Cmd_OpenFile.filename);
67 2 UartRspBlock.cmd=CMD_OPEN_FILE_RSP;
68 2 break;
69 2 case CMD_CREATE_FILE:
70 2
71 2 retStatus=OpenFile(UartCmdBlock.CmdBlock.Cmd_OpenFile.filename);
72 2 if(UartRspBlock.errcode==ERC_FILENOTFOUND)
73 2 {
74 3 retStatus=CreateFile(UartCmdBlock.CmdBlock.Cmd_CreateFile.item);
75 3 }
76 2 UartRspBlock.cmd=CMD_CREATE_FILE_RSP;
77 2 break;
78 2 case CMD_READ_FILE:
79 2 len=SwapINT16(UartCmdBlock.CmdBlock.Cmd_ReadFile.readLength);
80 2 retStatus=ReadFile(len,UARTBUF);
81 2 UartRspBlock.cmd=CMD_READ_FILE_RSP;
82 2 break;
83 2 case CMD_WRITE_FILE:
84 2 len=SwapINT16(UartCmdBlock.CmdBlock.Cmd_WriteFile.writeLength);
85 2 retStatus=WriteFile(len,UARTBUF,bEnd);
86 2 UartRspBlock.cmd=CMD_WRITE_FILE_RSP;
87 2 break;
88 2 case CMD_WRITE_FILE_LARGE:
89 2 //len=SwapINT16(UartCmdBlock.CmdBlock.Cmd_WriteFile.writeLength);
90 2 for(temp=0xa1;temp<0xf8;temp++)
91 2 {
92 3 cnt=0;
93 3 for(temp1=0xa0;temp1<0x100;temp1++)
94 3 {
95 4 UARTBUF[cnt]=temp;
96 4 UARTBUF[cnt+1]=temp1;
97 4 cnt+=2;
98 4 }
99 3 retStatus=WriteFile(192,UARTBUF,0);
100 3 //temp=temp+1;
101 3 }
102 2 //retStatus=WriteFile(16384,UARTBUF,0);
103 2
104 2 retStatus=WriteFile(512,UARTBUF,1);
105 2 //for(temp=0;temp<len-1;temp++)
106 2 // {
107 2 // retStatus=WriteFile(UARTBUF_LENGTH,UARTBUF,0);
108 2 // if(retStatus==0)
109 2 // break;
110 2 // }
111 2 //retStatus=WriteFile(UARTBUF_LENGTH,UARTBUF,1);
112 2 UartRspBlock.cmd=CMD_WRITE_FILE_RSP;
113 2 break;
114 2 case CMD_REMOVE_FILE:
115 2 ThisFile.bFileOpen=0;
116 2 retStatus=RemoveFile(UartCmdBlock.CmdBlock.Cmd_RemoveFile.filename,1);
117 2 UartRspBlock.cmd=CMD_REMOVE_FILE_RSP;
C51 COMPILER V6.20c HPI 04/07/2005 10:50:50 PAGE 3
118 2 break;
119 2 case CMD_GET_CAPACITY:
120 2 ThisFile.bFileOpen=0;
121 2 retStatus=GetCapacity();
122 2 UartRspBlock.cmd=CMD_GET_CAPACITY_RSP;
123 2 break;
124 2
125 2 case CMD_SET_FILE_POINTER:
126 2 pointer=SwapINT32(UartCmdBlock.CmdBlock.Cmd_SetFilePointer.pointer);
127 2 retStatus=SetFilePointer(pointer);
128 2 UartRspBlock.cmd=CMD_SET_FILE_POINTER_RSP;
129 2 break;
130 2 case CMD_GET_VERSION:
131 2 ThisFile.bFileOpen=0;
132 2 retStatus=GetFirmwareVersion();
133 2 UartRspBlock.cmd=CMD_GET_VERSION_RSP;
134 2 break;
135 2 ///////// 文件夹操作 //////////////////////////
136 2 #ifdef DIR_IS_SUPPORTED
137 2 /* case CMD_CREATE_DIR:
138 2
139 2 retStatus=OpenDir(UartCmdBlock.CmdBlock.Cmd_OpenFile.filename,UARTBUF);
140 2 if(UartRspBlock.errcode==ERC_FILENOTFOUND)
141 2 {
142 2 retStatus=CreateDir(UartCmdBlock.CmdBlock.Cmd_CreateFile.item);
143 2 }
144 2 UartRspBlock.cmd=CMD_CREATE_DIR_RSP;
145 2 break;
146 2 case CMD_OPEN_DIR:
147 2 retStatus=OpenDir(UartCmdBlock.CmdBlock.Cmd_OpenFile.filename,UARTBUF);
148 2 UartRspBlock.cmd=CMD_OPEN_DIR_RSP;
149 2 break;
150 2 case CMD_EXIT_DIR:
151 2 retStatus=ExitDir();
152 2 UartRspBlock.cmd=CMD_EXIT_DIR_RSP;
153 2 break;
154 2 case CMD_ROOT_DIR:
155 2 retStatus=RootDir();
156 2 UartRspBlock.cmd=CMD_ROOT_DIR_RSP;
157 2 break;
158 2 case CMD_REMOVE_DIR:
159 2 ThisFile.bFileOpen=0;
160 2 retStatus=RemoveDir(UartCmdBlock.CmdBlock.Cmd_RemoveFile.filename);
161 2 UartRspBlock.cmd=CMD_REMOVE_DIR_RSP;
162 2 break;
163 2 */
164 2 #endif
165 2 default:
166 2 bXXGFlags.bCOM_ERR=1;
167 2 return FALSE;
168 2 }
169 1 ///////////////////////////////
170 1 UartRspBlock.result=retStatus;
171 1 UartRspBlock.pbuffer=UARTBUF;
172 1 if(bEnd)
173 1 UartSendRsp();
174 1 return TRUE;
175 1 //return retStatus;
176 1 }
177 unsigned char DetectDevice(void)
178 {
179 1 #define RspBlockDetectDevice UartRspBlock.RspBlock.Rsp_DetectDevice
C51 COMPILER V6.20c HPI 04/07/2005 10:50:50 PAGE 4
180 1 return bXXGFlags.UDiskOK;
181 1
182 1 #undef RspBlockDetectDevice
183 1 }
184
185 U8 List(U16 *itemCnt,U8 *pBuffer) //FAT16_32 ok
186 {
187 1 #define RspBlockList UartRspBlock.RspBlock.Rsp_List
188 1 unsigned int item,i,sector;
189 1 unsigned char j,k,bstop;
190 1 unsigned long sectorToRead,dirClusterPointer;
191 1 //RspBlockList.errcode=ERC_NODEVICE;
192 1 if(!bXXGFlags.UDiskOK)
193 1 {
194 2 UartRspBlock.errcode=ERC_NODEVICE;
195 2 return FALSE;
196 2 }
197 1 ///////////////////////////////////////////////////////////
198 1 item=0;
199 1 bstop=0;
200 1 sector=0;
201 1 dirClusterPointer=ThisDir.StartCluster;
202 1
203 1 for(;;)
204 1 {
205 2 //////////////////////////////////////////////////
206 2 if(!SeekSectorToRead(&dirClusterPointer,§or,§orToRead))
207 2 return FALSE;
208 2 //////////////////////////////////////////////////
209 2 if(!RBC_Read(sectorToRead,1,DBUF))
210 2 {
211 3 //item=0;
212 3 UartRspBlock.errcode=ERC_DEVICEERR;
213 3 return FALSE;
214 3 }
215 2 ///////////////////////////////////////////////////
216 2 for(i=0;i<DeviceInfo.BPB_BytesPerSec;i=i+32)
217 2 {
218 3 if(DBUF[i]==0x00)
219 3 return TRUE;
220 3 else if(DBUF[i]==0xE5)
221 3 continue;
222 3 else if((DBUF[i]&0x40==0x40)&&(DBUF[i+11]&0x0f==0x0f))
223 3 {
224 4 j=DBUF[i]&0x0F;
225 4 j=j+1;
226 4 for(k=0;k<j*32;k++)
227 4 *(pBuffer+item*32+k)=DBUF[i+k];
228 4 i=i+(j-1)*32;
229 4 item=item+j;
230 4 *itemCnt=item;
231 4 RspBlockList.len=SwapINT16(item*32);
232 4 UartRspBlock.len=item*32;
233 4 }
234 3 else
235 3 {
236 4 for(k=0;k<32;k++)
237 4 *(pBuffer+item*32+k)=DBUF[i+k];
238 4 item=item+1;
239 4 *itemCnt=item;
240 4 RspBlockList.len=SwapINT16(item*32);
241 4 UartRspBlock.len=item*32;
C51 COMPILER V6.20c HPI 04/07/2005 10:50:50 PAGE 5
242 4 }
243 3 }
244 2 ///////////////////////////////////////////////////////
245 2 }
246 1
247 1 ///////////////////////////////////////////
248 1 return TRUE;
249 1
250 1 #undef RspBlockList
251 1
252 1 }
253 unsigned char OpenFile(unsigned char *pBuffer)
254 {
255 1 #define RspBlockOpenFile UartRspBlock.RspBlock.Rsp_OpenFile
256 1 unsigned int i,sector;
257 1 unsigned char j,bstop;
258 1 unsigned long sectorToRead,dirClusterPointer;
259 1 //PDIR_INFO pDirInfo;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -