📄 fpusb.lst
字号:
C51 COMPILER V6.10 FPUSB 04/27/2008 11:26:27 PAGE 1
C51 COMPILER V6.10, COMPILATION OF MODULE FPUSB
OBJECT MODULE PLACED IN .\FPUSB.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE .\FPUSB.c BROWSE INCDIR(C:\Cypress\USB\Target\Inc\) DEBUG OBJECTEXTEND
stmt level source
1 #pragma NOIV // Do not generate interrupt vectors
2
3 #include "fx2.h"
4 #include "fx2regs.h"
5 #include "fx2sdly.h" // SYNCDELAY macro
6
7 extern BOOL GotSUD; // Received setup data flag
8 extern BOOL Sleep;
9 extern BOOL Rwuen;
10 extern BOOL Selfpwr;
11
12 BYTE Configuration; // Current configuration
13 BYTE AlternateSetting; // Alternate settings
14
15 //-----------------------------------------------------------------------------
16 // Constants
17 //-----------------------------------------------------------------------------
18 #define VR_UPLOAD 0xc0
19 #define VR_DOWNLOAD 0x40
20
21 #define VR_ANCHOR_DLD 0xa0 // handled by core
22
23 #define VR_Reset 0xb0
24 #define VR_Intr 0xb1
25
26 //-----------------------------------------------------------------------------
27 // Task Dispatcher hooks
28 // The following hooks are called by the task dispatcher.
29 //-----------------------------------------------------------------------------
30
31 sbit PA0 = IOA ^ 0;
32 sbit PA1 = IOA ^ 1;
33 sbit PA2 = IOA ^ 2;
34 sbit PA3 = IOA ^ 3;
35 sbit PA4 = IOA ^ 4;
36 sbit PA5 = IOA ^ 5;
37 sbit PA6 = IOA ^ 6;
38 sbit PA7 = IOA ^ 7;
39
40 void TD_Init(void) // Called once at startup
41 {
42 1 BYTE i;
43 1
44 1 // set the CPU clock to 48MHz
45 1 CPUCS = ((CPUCS & ~bmCLKSPD) | bmCLKSPD1) ;
46 1
47 1 SYNCDELAY;
48 1 IFCONFIG = 0xcb; // slave fifo, internal clk, async
49 1
50 1 SYNCDELAY;
51 1 EP2CFG = 0xA2; // EP2 is DIR=OUT, TYPE=BULK, SIZE=512, BUF=2x
52 1
53 1 SYNCDELAY;
54 1 FIFORESET = 0x80; // reset all FIFOs
55 1 SYNCDELAY;
C51 COMPILER V6.10 FPUSB 04/27/2008 11:26:27 PAGE 2
56 1 FIFORESET = 0x02;
57 1 SYNCDELAY;
58 1 FIFORESET = 0x04;
59 1 SYNCDELAY;
60 1 FIFORESET = 0x06;
61 1 SYNCDELAY;
62 1 FIFORESET = 0x08;
63 1 SYNCDELAY;
64 1 FIFORESET = 0x00;
65 1
66 1 SYNCDELAY;
67 1 EP2FIFOCFG = 0x01; // EP2 is AUTOOUT=0, AUTOIN=0, ZEROLEN=0, WORDWIDE=1
68 1 SYNCDELAY;
69 1 EP2FIFOCFG = 0x11; // EP2 is AUTOOUT=1, AUTOIN=0, ZEROLEN=0, WORDWIDE=1
70 1
71 1 SYNCDELAY;
72 1 OUTPKTEND = 0x82;
73 1 SYNCDELAY;
74 1 OUTPKTEND = 0x82;
75 1
76 1 SYNCDELAY;
77 1 EP6AUTOINLENH = 2; // EP6 auto in length: 512
78 1 SYNCDELAY;
79 1 EP6AUTOINLENL = 0;
80 1
81 1
82 1 SYNCDELAY;
83 1 EP6FIFOCFG = 0x09; // this lets the EP6 auto commit IN packets,
84 1 // and sets the slave FIFO data interface to 16-bits
85 1
86 1 SYNCDELAY;
87 1 EP4FIFOCFG = 0x00;
88 1
89 1 SYNCDELAY;
90 1 EP8FIFOCFG = 0x00;
91 1
92 1 SYNCDELAY;
93 1 PINFLAGSAB = 0x00; // defines FLAGA as prog-level flag, pointed to by FIFOADR[1:0]
94 1 // FLAGB as full flag, as pointed to by FIFOADR[1:0]
95 1
96 1 SYNCDELAY;
97 1 PINFLAGSCD = 0x00; // FLAGC as empty flag, as pointed to by FIFOADR[1:0]
98 1
99 1 SYNCDELAY;
100 1 PORTACFG = 0x00; // used PA7/FLAGD as a port pin, not as a FIFO flag
101 1
102 1 SYNCDELAY;
103 1 FIFOPINPOLAR = 0x00; // set all slave FIFO interface pins as active low
104 1
105 1 OEA = 0x08;//PA3输出
106 1 IOA = 0x00;
107 1
108 1 // PA7 = 0;
109 1 //for(i=0;i<10;i++);
110 1 //PA7 = 1;
111 1 }
*** WARNING C280 IN LINE 42 OF .\FPUSB.C: 'i': unreferenced local variable
112
113 void TD_Poll(void) // Called repeatedly while the device is idle
114 {
115 1 // if there is some data in EP2 OUT, re-arm it
116 1 if(!(EP2468STAT & bmEP2EMPTY))
C51 COMPILER V6.10 FPUSB 04/27/2008 11:26:27 PAGE 3
117 1 {
118 2 //OUTPKTEND = 0x02;
119 2 SYNCDELAY;
120 2 }
121 1 }
122
123 BOOL TD_Suspend(void) // Called before the device goes into suspend mode
124 {
125 1 return(TRUE);
126 1 }
127
128 BOOL TD_Resume(void) // Called after the device resumes
129 {
130 1 return(TRUE);
131 1 }
132
133 //-----------------------------------------------------------------------------
134 // Device Request hooks
135 // The following hooks are called by the end point 0 device request parser.
136 //-----------------------------------------------------------------------------
137
138 BOOL DR_GetDescriptor(void)
139 {
140 1 return(TRUE);
141 1 }
142
143 BOOL DR_SetConfiguration(void) // Called when a Set Configuration command is received
144 {
145 1 Configuration = SETUPDAT[2];
146 1 return(TRUE); // Handled by user code
147 1 }
148
149 BOOL DR_GetConfiguration(void) // Called when a Get Configuration command is received
150 {
151 1 EP0BUF[0] = Configuration;
152 1 EP0BCH = 0;
153 1 EP0BCL = 1;
154 1 return(TRUE); // Handled by user code
155 1 }
156
157 BOOL DR_SetInterface(void) // Called when a Set Interface command is received
158 {
159 1 AlternateSetting = SETUPDAT[2];
160 1 return(TRUE); // Handled by user code
161 1 }
162
163 BOOL DR_GetInterface(void) // Called when a Set Interface command is received
164 {
165 1 EP0BUF[0] = AlternateSetting;
166 1 EP0BCH = 0;
167 1 EP0BCL = 1;
168 1 return(TRUE); // Handled by user code
169 1 }
170
171 BOOL DR_GetStatus(void)
172 {
173 1 return(TRUE);
174 1 }
175
176 BOOL DR_ClearFeature(void)
177 {
178 1 return(TRUE);
C51 COMPILER V6.10 FPUSB 04/27/2008 11:26:27 PAGE 4
179 1 }
180
181 BOOL DR_SetFeature(void)
182 {
183 1 return(TRUE);
184 1 }
185
186 BOOL DR_VendorCmnd(void)
187 {
188 1 BYTE i;
189 1
190 1 switch(SETUPDAT[1])
191 1 {
192 2 case VR_Reset:
193 2 TD_Init();
194 2 break;
195 2
196 2 case VR_Intr:
197 2 PA3 = 1;
198 2 for(i=0;i<10;i++);
199 2 PA3 = 0;
200 2 break;
201 2 }
202 1
203 1 return(FALSE); // no error; command handled OK
204 1 }
205
206 //-----------------------------------------------------------------------------
207 // USB Interrupt Handlers
208 // The following functions are called by the USB interrupt jump table.
209 //-----------------------------------------------------------------------------
210
211 // Setup Data Available Interrupt Handler
212 void ISR_Sudav(void) interrupt 0
213 {
214 1 GotSUD = TRUE; // Set flag
215 1 EZUSB_IRQ_CLEAR();
216 1 USBIRQ = bmSUDAV; // Clear SUDAV IRQ
217 1 }
218
219 // Setup Token Interrupt Handler
220 void ISR_Sutok(void) interrupt 0
221 {
222 1 EZUSB_IRQ_CLEAR();
223 1 USBIRQ = bmSUTOK; // Clear SUTOK IRQ
224 1 }
225
226 void ISR_Sof(void) interrupt 0
227 {
228 1 EZUSB_IRQ_CLEAR();
229 1 USBIRQ = bmSOF; // Clear SOF IRQ
230 1 }
231
232 void ISR_Ures(void) interrupt 0
233 {
234 1 if (EZUSB_HIGHSPEED())
235 1 {
236 2 pConfigDscr = pHighSpeedConfigDscr;
237 2 pOtherConfigDscr = pFullSpeedConfigDscr;
238 2 }
239 1 else
240 1 {
C51 COMPILER V6.10 FPUSB 04/27/2008 11:26:27 PAGE 5
241 2 pConfigDscr = pFullSpeedConfigDscr;
242 2 pOtherConfigDscr = pHighSpeedConfigDscr;
243 2 }
244 1
245 1 EZUSB_IRQ_CLEAR();
246 1 USBIRQ = bmURES; // Clear URES IRQ
247 1 }
248
249 void ISR_Susp(void) interrupt 0
250 {
251 1 Sleep = TRUE;
252 1 EZUSB_IRQ_CLEAR();
253 1 USBIRQ = bmSUSP;
254 1 }
255
256 void ISR_Highspeed(void) interrupt 0
257 {
258 1 if (EZUSB_HIGHSPEED())
259 1 {
260 2 pConfigDscr = pHighSpeedConfigDscr;
261 2 pOtherConfigDscr = pFullSpeedConfigDscr;
262 2 }
263 1 else
264 1 {
265 2 pConfigDscr = pFullSpeedConfigDscr;
266 2 pOtherConfigDscr = pHighSpeedConfigDscr;
267 2 }
268 1
269 1 EZUSB_IRQ_CLEAR();
270 1 USBIRQ = bmHSGRANT;
271 1 }
272 void ISR_Ep0ack(void) interrupt 0
273 {
274 1 }
275 void ISR_Stub(void) interrupt 0
276 {
277 1 }
278 void ISR_Ep0in(void) interrupt 0
279 {
280 1 }
281 void ISR_Ep0out(void) interrupt 0
282 {
283 1 }
284 void ISR_Ep1in(void) interrupt 0
285 {
286 1 }
287 void ISR_Ep1out(void) interrupt 0
288 {
289 1 }
290 void ISR_Ep2inout(void) interrupt 0
291 {
292 1 }
293 void ISR_Ep4inout(void) interrupt 0
294 {
295 1 }
296 void ISR_Ep6inout(void) interrupt 0
297 {
298 1 }
299 void ISR_Ep8inout(void) interrupt 0
300 {
301 1 }
302 void ISR_Ibn(void) interrupt 0
C51 COMPILER V6.10 FPUSB 04/27/2008 11:26:27 PAGE 6
303 {
304 1 }
305 void ISR_Ep0pingnak(void) interrupt 0
306 {
307 1 }
308 void ISR_Ep1pingnak(void) interrupt 0
309 {
310 1 }
311 void ISR_Ep2pingnak(void) interrupt 0
312 {
313 1 }
314 void ISR_Ep4pingnak(void) interrupt 0
315 {
316 1 }
317 void ISR_Ep6pingnak(void) interrupt 0
318 {
319 1 }
320 void ISR_Ep8pingnak(void) interrupt 0
321 {
322 1 }
323 void ISR_Errorlimit(void) interrupt 0
324 {
325 1 }
326 void ISR_Ep2piderror(void) interrupt 0
327 {
328 1 }
329 void ISR_Ep4piderror(void) interrupt 0
330 {
331 1 }
332 void ISR_Ep6piderror(void) interrupt 0
333 {
334 1 }
335 void ISR_Ep8piderror(void) interrupt 0
336 {
337 1 }
338 void ISR_Ep2pflag(void) interrupt 0
339 {
340 1 }
341 void ISR_Ep4pflag(void) interrupt 0
342 {
343 1 }
344 void ISR_Ep6pflag(void) interrupt 0
345 {
346 1 }
347 void ISR_Ep8pflag(void) interrupt 0
348 {
349 1 }
350 void ISR_Ep2eflag(void) interrupt 0
351 {
352 1 }
353 void ISR_Ep4eflag(void) interrupt 0
354 {
355 1 }
356 void ISR_Ep6eflag(void) interrupt 0
357 {
358 1 }
359 void ISR_Ep8eflag(void) interrupt 0
360 {
361 1 }
362 void ISR_Ep2fflag(void) interrupt 0
363 {
364 1 }
C51 COMPILER V6.10 FPUSB 04/27/2008 11:26:27 PAGE 7
365 void ISR_Ep4fflag(void) interrupt 0
366 {
367 1 }
368 void ISR_Ep6fflag(void) interrupt 0
369 {
370 1 }
371 void ISR_Ep8fflag(void) interrupt 0
372 {
373 1 }
374 void ISR_GpifComplete(void) interrupt 0
375 {
376 1 }
377 void ISR_GpifWaveform(void) interrupt 0
378 {
379 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 506 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 1
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -