📄 hpi.lst
字号:
C51 COMPILER V6.21 HPI 06/13/2005 16:14:56 PAGE 1
C51 COMPILER V6.21, COMPILATION OF MODULE HPI
OBJECT MODULE PLACED IN HPI.OBJ
COMPILER INVOKED BY: g:\Keil_run\C51\BIN\C51.EXE HPI.C BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include "common.h"
2 #include "TPBULK.H"
3 #include "HPI.H"
4 #include "HAL.H"
5 #include "Fat.h"
6
7 extern XXGFLAGS bdata bXXGFlags;
8 extern unsigned char xdata DBUF[BUFFER_LENGTH];
9 //////////////////////////////////////////
10 //UART_CMD_BLOCK xdata inblock;
11 unsigned char xdata UARTBUF[UARTBUF_LENGTH];
12 SYS_INFO_BLOCK xdata DeviceInfo;
13 UART_CMD_BLOCK xdata UartCmdBlock;
14 UART_RSP_BLOCK xdata UartRspBlock;
15 FILE_INFO xdata ThisFile;
16 extern FREE_FAT_INFO xdata FreeFat;
17 //////////////////////////////////////////
18 void UartSendRsp(void)
19 {
20 1 unsigned int i;
21 1 unsigned char *pBuf=(unsigned char *)&UartRspBlock;
22 1 for(i=0;i<64;i++)
23 1 ComSendByte(*(pBuf+i));
24 1 if(UartRspBlock.len!=0){
25 2 for(i=0;i<UartRspBlock.len;i++)
26 2 ComSendByte(*(UartRspBlock.pbuffer+i));
27 2 }
28 1 }
29
30 unsigned char UartHandler(void)
31 {
32 1 unsigned char retStatus;
33 1 unsigned int len;
34 1 unsigned long pointer;
35 1 //unsigned char *pBuf=(unsigned char *)&UartRspBlock;
36 1
37 1 //for(i=0;i<64;i++)
38 1 //*(pBuf+i)=0;
39 1 //UartRspBlock.result=1;
40 1 UartRspBlock.errcode=ERC_OK;
41 1 UartRspBlock.len=0;
42 1 ///////////////////////////
43 1 switch(UartCmdBlock.cmd)
44 1 {
45 2 case CMD_RESET:
46 2
47 2 break;
48 2 case CMD_DETECT_DEVICE:
49 2 ThisFile.bFileOpen=0;
50 2 retStatus=DetectDevice();
51 2 UartRspBlock.cmd=CMD_DETECT_DEVICE_RSP;
52 2 break;
53 2 case CMD_OPEN_FILE:
54 2 retStatus=OpenFile(UartCmdBlock.CmdBlock.Cmd_OpenFile.filename);
55 2 UartRspBlock.cmd=CMD_OPEN_FILE_RSP;
C51 COMPILER V6.21 HPI 06/13/2005 16:14:56 PAGE 2
56 2 break;
57 2 case CMD_CREATE_FILE:
58 2
59 2 retStatus=OpenFile(UartCmdBlock.CmdBlock.Cmd_OpenFile.filename);
60 2 if(UartRspBlock.errcode==ERC_FILENOTFOUND)
61 2 {
62 3 retStatus=CreateFile(UartCmdBlock.CmdBlock.Cmd_CreateFile.item);
63 3 }
64 2 UartRspBlock.cmd=CMD_CREATE_FILE_RSP;
65 2 break;
66 2 case CMD_READ_FILE:
67 2 len=SwapINT16(UartCmdBlock.CmdBlock.Cmd_ReadFile.readLength);
68 2 retStatus=ReadFile(len,UARTBUF);
69 2 UartRspBlock.cmd=CMD_READ_FILE_RSP;
70 2 break;
71 2 case CMD_WRITE_FILE:
72 2 len=SwapINT16(UartCmdBlock.CmdBlock.Cmd_WriteFile.writeLength);
73 2 retStatus=WriteFile(len,UARTBUF);
74 2 UartRspBlock.cmd=CMD_WRITE_FILE_RSP;
75 2 break;
76 2
77 2 case CMD_LIST:
78 2 ThisFile.bFileOpen=0;
79 2 retStatus=List();
80 2 UartRspBlock.cmd=CMD_LIST_RSP;
81 2 break;
82 2 case CMD_REMOVE_FILE:
83 2 ThisFile.bFileOpen=0;
84 2 retStatus=RemoveFile(UartCmdBlock.CmdBlock.Cmd_RemoveFile.filename);
85 2 UartRspBlock.cmd=CMD_REMOVE_FILE_RSP;
86 2 break;
87 2 case CMD_GET_CAPACITY:
88 2 ThisFile.bFileOpen=0;
89 2 retStatus=GetCapacity();
90 2 UartRspBlock.cmd=CMD_GET_CAPACITY_RSP;
91 2 break;
92 2 case CMD_GET_FREE_CAPACITY:
93 2 ThisFile.bFileOpen=0;
94 2 retStatus=GetFreeCapacity();
95 2 UartRspBlock.cmd=CMD_GET_FREE_CAPACITY_RSP;
96 2 break;
97 2 case CMD_SET_FILE_POINTER:
98 2 pointer=SwapINT32(UartCmdBlock.CmdBlock.Cmd_SetFilePointer.pointer);
99 2 retStatus=SetFilePointer(pointer);
100 2 UartRspBlock.cmd=CMD_SET_FILE_POINTER_RSP;
101 2 break;
102 2 case CMD_GET_VERSION:
103 2 ThisFile.bFileOpen=0;
104 2 retStatus=GetFirmwareVersion();
105 2 UartRspBlock.cmd=CMD_GET_VERSION_RSP;
106 2 break;
107 2 default:
108 2 bXXGFlags.bits.bCOM_ERR=1;
109 2 return FALSE;
110 2 }
111 1
112 1 ///////////////////////////////
113 1 UartRspBlock.result=retStatus;
114 1 UartRspBlock.pbuffer=UARTBUF;
115 1 UartSendRsp();
116 1 return TRUE;
117 1 //return retStatus;
C51 COMPILER V6.21 HPI 06/13/2005 16:14:56 PAGE 3
118 1 }
119 unsigned char DetectDevice(void)
120 {
121 1 #define RspBlockDetectDevice UartRspBlock.RspBlock.Rsp_DetectDevice
122 1 return bXXGFlags.bits.SLAVE_IS_ATTACHED;
123 1
124 1 #undef RspBlockDetectDevice
125 1 }
126
127 unsigned char List(void)
128 {
129 1 #define RspBlockList UartRspBlock.RspBlock.Rsp_List
130 1 unsigned int item,i;
131 1 unsigned char j,k,bstop,sector;
132 1 //RspBlockList.errcode=ERC_NODEVICE;
133 1 if(!bXXGFlags.bits.SLAVE_IS_ATTACHED)
134 1 {
135 2 UartRspBlock.errcode=ERC_NODEVICE;
136 2 return FALSE;
137 2 }
138 1 ///////////////////////////////////////////////////////////
139 1 item=0;
140 1 bstop=0;
141 1 //RspBlockList.result=0x1;
142 1 for(sector=0;sector<DeviceInfo.BPB_RootEntCnt;sector++)
143 1 {
144 2 //////////////////////////////////////////////////
145 2 if(!RBC_Read(DeviceInfo.RootStartSector+sector,1,DBUF))
146 2 {
147 3 //item=0;
148 3 UartRspBlock.errcode=ERC_DEVICEERR;
149 3 return FALSE;
150 3 }
151 2 ///////////////////////////////////////////////////
152 2 for(i=0;i<DeviceInfo.BPB_BytesPerSec;i=i+32)
153 2 {
154 3 if(DBUF[i]==0x00)
155 3 {bstop=1;
156 4 break;}
157 3 else if(DBUF[i]==0xE5)
158 3 continue;
159 3 else if((DBUF[i]&0x40==0x40)&&(DBUF[i+11]==0xff))
160 3 {
161 4 j=DBUF[i]&0x0F;
162 4 j=j+1;
163 4 for(k=0;k<j*32;k++)
164 4 UARTBUF[item*32+k]=DBUF[i+k];
165 4 i=i+(j-1)*32;
166 4 item=item+j;
167 4 }
168 3 else
169 3 {
170 4 for(k=0;k<32;k++)
171 4 UARTBUF[item*32+k]=DBUF[i+k];
172 4 item=item+1;
173 4 }
174 3 }
175 2 ///////////////////////////////////////////////////////
176 2 if(bstop==1)break;
177 2
178 2 }
179 1
C51 COMPILER V6.21 HPI 06/13/2005 16:14:56 PAGE 4
180 1 //pBuf=(PREAD_CAPACITY_RSP)DBUF;
181 1 ///////////////////////////////////////////
182 1 RspBlockList.len=SwapINT16(item*32);
183 1 UartRspBlock.len=item*32;
184 1 return TRUE;
185 1
186 1 #undef RspBlockList
187 1
188 1 }
189 unsigned char OpenFile(unsigned char *pBuffer)
190 {
191 1 #define RspBlockOpenFile UartRspBlock.RspBlock.Rsp_OpenFile
192 1 unsigned int i;
193 1 unsigned char j,bstop,sector;
194 1 PDIR_INFO pDirInfo;
195 1
196 1 if(!bXXGFlags.bits.SLAVE_IS_ATTACHED)
197 1 {
198 2 UartRspBlock.errcode=ERC_NODEVICE;
199 2 return FALSE;
200 2 }
201 1 ///////////////////////////////////////////////////////////
202 1
203 1 ThisFile.bFileOpen=0;
204 1 //RspBlockOpenFile.result=0x0;
205 1 //RspBlockOpenFile.errcode=ERC_OK;
206 1 for(sector=0;sector<DeviceInfo.BPB_RootEntCnt;sector++)
207 1 {
208 2 //////////////////////////////////////////////////
209 2 if(!RBC_Read(DeviceInfo.RootStartSector+sector,1,DBUF))
210 2 {
211 3 UartRspBlock.errcode=ERC_DEVICEERR;
212 3 return FALSE;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -