📄 bulkext.lst
字号:
C51 COMPILER V7.50 BULKEXT 02/25/2008 20:23:33 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE BULKEXT
OBJECT MODULE PLACED IN bulkext.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE bulkext.c DEBUG OBJECTEXTEND
line level source
1 //-----------------------------------------------------------------------------
2 // File: bulkext.c
3 // Contents: Hooks required to implement USB peripheral function.
4 //
5 // $Archive: /USB/Examples/FX2LP/bulkext/bulkext.c $
6 // $Date: 3/23/05 2:53p $
7 // $Revision: 3 $
8 //
9 //
10 //-----------------------------------------------------------------------------
11 // Copyright 2003, Cypress Semiconductor Corporation
12 //-----------------------------------------------------------------------------
13 #pragma NOIV // Do not generate interrupt vectors
14 #include "fx2.h"
15 #include "fx2regs.h"
16 #include "syncdly.h" // SYNCDELAY macro
17
18 extern BOOL GotSUD; // Received setup data flag
19 extern BOOL Sleep;
20 extern BOOL Rwuen;
21 extern BOOL Selfpwr;
22
23 BYTE Configuration; // Current configuration
24 BYTE AlternateSetting; // Alternate settings
25
26 //-----------------------------------------------------------------------------
27 // Task Dispatcher hooks
28 // The following hooks are called by the task dispatcher.
29 //-----------------------------------------------------------------------------
30
31 void TD_Init(void) // Called once at startup
32 { // set the CPU clock to 48MHz
33 1 // CPUCS = 0x10 ;
34 1 // set the slave FIFO interface to 48MHz
35 1 IFCONFIG = 0xCB; // 0 - external IFCLK, 1 - internal IFCLK
36 1 // 0 - when internal clock, 0 - 30MHz; 1 - 48MHz
37 1 // 0 - ignore
38 1 // 0 - ignore
39 1 // 0 - sync IFCLK, 1 - ansync
40 1 // 0 - no state drive
41 1 // 11 - Slave fifo, external master***
42 1 SYNCDELAY;
43 1 REVCTL = 0X01; // enable the external master
44 1 SYNCDELAY;
45 1 SYNCDELAY; // see TRM section 15.14
46 1 EP2CFG = 0xA2; // 1 - valid
47 1 // 1 - in
48 1 // 10 - bulk
49 1 // 1 - 1024, 0 - 512
50 1
51 1 // 0 - always
52 1 // 00 - 4 x buffer
53 1 SYNCDELAY;
54 1 EP8CFG = 0XE0;
55 1 SYNCDELAY;
C51 COMPILER V7.50 BULKEXT 02/25/2008 20:23:33 PAGE 2
56 1 FIFORESET = 0x80;//RESET EP2FIFO
57 1 SYNCDELAY;
58 1 FIFORESET = 0x02;
59 1 SYNCDELAY;
60 1 FIFORESET = 0x04;
61 1 SYNCDELAY;
62 1 FIFORESET = 0x06;
63 1 SYNCDELAY;
64 1 FIFORESET = 0x08;
65 1 SYNCDELAY;
66 1 FIFORESET = 0x00;
67 1 SYNCDELAY;
68 1 PINFLAGSAB = 0x8F; // flaga - ep8ff, flagb - ep2ef
69 1 SYNCDELAY;
70 1 FIFOPINPOLAR=0x00;//低电平有效
71 1 SYNCDELAY;
72 1 EP2FIFOCFG = 0X00;//ENDPOINT2 AUTOOUT 8BIT WORDWIDE
73 1 EP2FIFOCFG = 0X10;//ENDPOINT2 AUTOOUT=1 8BIT WORDWIDE
74 1 SYNCDELAY;
75 1 EP8FIFOCFG = 0X0C;
76 1 SYNCDELAY;
77 1 EP8AUTOINLENH = 0x00; // set core AUTO commit len = 512 bytes
78 1 SYNCDELAY;
79 1 EP8AUTOINLENL = 0x40;
80 1
81 1 /* OUTPKTEND = 0X82;
82 1 SYNCDELAY;
83 1 OUTPKTEND = 0X82; // since the defaults are double buffered we must write dummy byte counts twice
84 1 SYNCDELAY;
85 1 /*EP2BCL = 0x80; // arm EP2OUT by writing byte count w/skip.
86 1 SYNCDELAY;
87 1 EP2BCL = 0x80;
88 1 SYNCDELAY; */
89 1 /* AUTOPTRSETUP |= 0x01;
90 1 Rwuen = FALSE; */
91 1 } // Enable remote-wakeup
92
93 void TD_Poll(void) // Called repeatedly while the device is idle
94 { /* if(!(EP2468STAT & bmEP2EMPTY))
95 1 {
96 1 EP2FIFOBUF[0]=EP2BCL;
97 1 SYNCDELAY;
98 1 OUTPKTEND = 0X02;
99 1 }*/
100 1 }
101
102 BOOL TD_Suspend(void) // Called before the device goes into suspend mode
103 {
104 1 return(TRUE);
105 1 }
106
107 BOOL TD_Resume(void) // Called after the device resumes
108 {
109 1 return(TRUE);
110 1 }
111
112 //-----------------------------------------------------------------------------
113 // Device Request hooks
114 // The following hooks are called by the end point 0 device request parser.
115 //-----------------------------------------------------------------------------
116
117 BOOL DR_GetDescriptor(void)
C51 COMPILER V7.50 BULKEXT 02/25/2008 20:23:33 PAGE 3
118 {
119 1 return(TRUE);
120 1 }
121
122 BOOL DR_SetConfiguration(void) // Called when a Set Configuration command is received
123 {
124 1 Configuration = SETUPDAT[2];
125 1 return(TRUE); // Handled by user code
126 1 }
127
128 BOOL DR_GetConfiguration(void) // Called when a Get Configuration command is received
129 {
130 1 EP0BUF[0] = Configuration;
131 1 EP0BCH = 0;
132 1 EP0BCL = 1;
133 1 return(TRUE); // Handled by user code
134 1 }
135
136 BOOL DR_SetInterface(void) // Called when a Set Interface command is received
137 {
138 1 AlternateSetting = SETUPDAT[2];
139 1 return(TRUE); // Handled by user code
140 1 }
141
142 BOOL DR_GetInterface(void) // Called when a Set Interface command is received
143 {
144 1 EP0BUF[0] = AlternateSetting;
145 1 EP0BCH = 0;
146 1 EP0BCL = 1;
147 1 return(TRUE); // Handled by user code
148 1 }
149
150 BOOL DR_GetStatus(void)
151 {
152 1 return(TRUE);
153 1 }
154
155 BOOL DR_ClearFeature(void)
156 {
157 1 return(TRUE);
158 1 }
159
160 BOOL DR_SetFeature(void)
161 {
162 1 return(TRUE);
163 1 }
164
165 BOOL DR_VendorCmnd(void)
166 {
167 1 return(TRUE);
168 1 }
169
170 //-----------------------------------------------------------------------------
171 // USB Interrupt Handlers
172 // The following functions are called by the USB interrupt jump table.
173 //-----------------------------------------------------------------------------
174
175 // Setup Data Available Interrupt Handler
176 void ISR_Sudav(void) interrupt 0
177 {
178 1 GotSUD = TRUE; // Set flag
179 1 EZUSB_IRQ_CLEAR();
C51 COMPILER V7.50 BULKEXT 02/25/2008 20:23:33 PAGE 4
180 1 USBIRQ = bmSUDAV; // Clear SUDAV IRQ
181 1 }
182
183 // Setup Token Interrupt Handler
184 void ISR_Sutok(void) interrupt 0
185 {
186 1 EZUSB_IRQ_CLEAR();
187 1 USBIRQ = bmSUTOK; // Clear SUTOK IRQ
188 1 }
189
190 void ISR_Sof(void) interrupt 0
191 {
192 1 EZUSB_IRQ_CLEAR();
193 1 USBIRQ = bmSOF; // Clear SOF IRQ
194 1 }
195
196 void ISR_Ures(void) interrupt 0
197 {
198 1 if (EZUSB_HIGHSPEED())
199 1 {
200 2 pConfigDscr = pHighSpeedConfigDscr;
201 2 pOtherConfigDscr = pFullSpeedConfigDscr;
202 2 }
203 1 else
204 1 {
205 2 pConfigDscr = pFullSpeedConfigDscr;
206 2 pOtherConfigDscr = pHighSpeedConfigDscr;
207 2 }
208 1
209 1 EZUSB_IRQ_CLEAR();
210 1 USBIRQ = bmURES; // Clear URES IRQ
211 1 }
212
213 void ISR_Susp(void) interrupt 0
214 {
215 1 Sleep = TRUE;
216 1 EZUSB_IRQ_CLEAR();
217 1 USBIRQ = bmSUSP;
218 1 }
219
220 void ISR_Highspeed(void) interrupt 0
221 {
222 1 if (EZUSB_HIGHSPEED())
223 1 {
224 2 pConfigDscr = pHighSpeedConfigDscr;
225 2 pOtherConfigDscr = pFullSpeedConfigDscr;
226 2 }
227 1 else
228 1 {
229 2 pConfigDscr = pFullSpeedConfigDscr;
230 2 pOtherConfigDscr = pHighSpeedConfigDscr;
231 2 }
232 1
233 1 EZUSB_IRQ_CLEAR();
234 1 USBIRQ = bmHSGRANT;
235 1 }
236 void ISR_Ep0ack(void) interrupt 0
237 {
238 1 }
239 void ISR_Stub(void) interrupt 0
240 {
241 1 }
C51 COMPILER V7.50 BULKEXT 02/25/2008 20:23:33 PAGE 5
242 void ISR_Ep0in(void) interrupt 0
243 {
244 1 }
245 void ISR_Ep0out(void) interrupt 0
246 {
247 1 }
248 void ISR_Ep1in(void) interrupt 0
249 {
250 1 }
251 void ISR_Ep1out(void) interrupt 0
252 {
253 1 }
254 void ISR_Ep2inout(void) interrupt 0
255 {
256 1 }
257 void ISR_Ep4inout(void) interrupt 0
258 {
259 1 }
260 void ISR_Ep6inout(void) interrupt 0
261 {
262 1 }
263 void ISR_Ep8inout(void) interrupt 0
264 {
265 1 }
266 void ISR_Ibn(void) interrupt 0
267 {
268 1 }
269 void ISR_Ep0pingnak(void) interrupt 0
270 {
271 1 }
272 void ISR_Ep1pingnak(void) interrupt 0
273 {
274 1 }
275 void ISR_Ep2pingnak(void) interrupt 0
276 {
277 1 }
278 void ISR_Ep4pingnak(void) interrupt 0
279 {
280 1 }
281 void ISR_Ep6pingnak(void) interrupt 0
282 {
283 1 }
284 void ISR_Ep8pingnak(void) interrupt 0
285 {
286 1 }
287 void ISR_Errorlimit(void) interrupt 0
288 {
289 1 }
290 void ISR_Ep2piderror(void) interrupt 0
291 {
292 1 }
293 void ISR_Ep4piderror(void) interrupt 0
294 {
295 1 }
296 void ISR_Ep6piderror(void) interrupt 0
297 {
298 1 }
299 void ISR_Ep8piderror(void) interrupt 0
300 {
301 1 }
302 void ISR_Ep2pflag(void) interrupt 0
303 {
C51 COMPILER V7.50 BULKEXT 02/25/2008 20:23:33 PAGE 6
304 1 }
305 void ISR_Ep4pflag(void) interrupt 0
306 {
307 1 }
308 void ISR_Ep6pflag(void) interrupt 0
309 {
310 1 }
311 void ISR_Ep8pflag(void) interrupt 0
312 {
313 1 }
314 void ISR_Ep2eflag(void) interrupt 0
315 {
316 1 }
317 void ISR_Ep4eflag(void) interrupt 0
318 {
319 1 }
320 void ISR_Ep6eflag(void) interrupt 0
321 {
322 1 }
323 void ISR_Ep8eflag(void) interrupt 0
324 {
325 1 }
326 void ISR_Ep2fflag(void) interrupt 0
327 {
328 1 }
329 void ISR_Ep4fflag(void) interrupt 0
330 {
331 1 }
332 void ISR_Ep6fflag(void) interrupt 0
333 {
334 1 }
335 void ISR_Ep8fflag(void) interrupt 0
336 {
337 1 }
338 void ISR_GpifComplete(void) interrupt 0
339 {
340 1 }
341 void ISR_GpifWaveform(void) interrupt 0
342 {
343 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 433 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -