📄 bulkloop.lst
字号:
C51 COMPILER V6.10 BULKLOOP 08/22/2006 11:32:24 PAGE 1
C51 COMPILER V6.10, COMPILATION OF MODULE BULKLOOP
OBJECT MODULE PLACED IN .\bulkloop.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE .\bulkloop.c DEBUG OBJECTEXTEND
stmt level source
1 #pragma NOIV // Do not generate interrupt vectors
2 //-----------------------------------------------------------------------------
3 // File: tcxmaster.c
4 // Contents: Hooks required to implement USB peripheral function.
5 // Code written for FX2 56-pin REVD...
6 // This firmware is used to test the FX ext. master CY3682 DK
7 // Copyright (c) 2001 Cypress Semiconductor All rights reserved
8 //-----------------------------------------------------------------------------
9 #include "fx2.h"
10 #include "fx2regs.h"
11 #include "fx2sdly.h" // SYNCDELAY macro
12
13 extern BOOL GotSUD; // Received setup data flag
14 extern BOOL Sleep;
15 extern BOOL Rwuen;
16 extern BOOL Selfpwr;
17
18 BYTE Configuration; // Current configuration
19 BYTE AlternateSetting; // Alternate settings
20
21
22 //-----------------------------------------------------------------------------
23 // Task Dispatcher hooks
24 // The following hooks are called by the task dispatcher.
25 //-----------------------------------------------------------------------------
26 void TD_Init( void )
27 {
28 1 // Called once at startup
29 1 //REVCTL =0X03;SYNCDELAY;
30 1 CPUCS = 0x10; SYNCDELAY; // CLKSPD[1:0]=10, for 48MHz operation
31 1 IFCONFIG = 0x0B; //异步操作slavefifo方式
32 1 // IFCLKSRC=1 , FIFOs executes on internal clk source
33 1 // xMHz=1 , 48MHz internal clk rate
34 1 // IFCLKOE=0 , Don't drive IFCLK pin signal at 48MHz
35 1 // IFCLKPOL=0 , Don't invert IFCLK pin signal from internal clk
36 1 // ASYNC=1 , master samples asynchronous
37 1 // GSTATE=0 , Don't drive GPIF states out on PORTE[2:0], debug WF
38 1 // IFCFG[1:0]=11, FX2 in slave FIFO mode
39 1 SYNCDELAY;
40 1 FIFOPINPOLAR=0x00;
41 1 SYNCDELAY;
42 1 //REVCTL = 0x03; // MUST set REVCTL.0 and REVCTL.1 to 1
43 1 SYNCDELAY;
44 1 EP2CFG = 0xA2; // EP2 is DIR=OUT, TYPE=BULK, SIZE=512, BUF=2x
45 1 SYNCDELAY;
46 1 EP6CFG = 0xE0; // EP2 is DIR=OUT, TYPE=BULK, SIZE=512, BUF=2x
47 1 SYNCDELAY;
48 1 FIFORESET = 0x80; // Reset the FIFO
49 1 SYNCDELAY;
50 1 FIFORESET = 0x02;
51 1 SYNCDELAY;
52 1 FIFORESET = 0x04;
53 1 SYNCDELAY;
54 1 FIFORESET = 0x06;
55 1 SYNCDELAY;
C51 COMPILER V6.10 BULKLOOP 08/22/2006 11:32:24 PAGE 2
56 1 EP2FIFOCFG = 0x00;
57 1 SYNCDELAY;
58 1 EP2FIFOCFG = 0x15; // EP2 is AUTOOUT=1, AUTOIN=0, ZEROLEN=1, WORDWIDE=1
59 1 SYNCDELAY;
60 1 EP6FIFOCFG = 0x00;
61 1 SYNCDELAY;
62 1 EP6FIFOCFG = 0x0D; // EP6 is AUTOOUT=0, AUTOIN=1, ZEROLEN=1, WORDWIDE=1
63 1 SYNCDELAY;
64 1 OUTPKTEND = 0x81; // Arm both EP2 buffers to “prime the pump”
65 1 SYNCDELAY;
66 1 OUTPKTEND = 0x81;
67 1 SYNCDELAY;
68 1 PINFLAGSAB =0X00;
69 1 SYNCDELAY;
70 1 PINFLAGSCD =0X88;
71 1
72 1 }
73
74 void TD_Poll( void )
75 {
76 1 // Called repeatedly while the device is idle
77 1
78 1 // ...nothing to do... slave fifo's are in AUTO mode...
79 1 }
80
81 BOOL TD_Suspend( void )
82 {
83 1 // Called before the device goes into suspend mode
84 1 return( TRUE );
85 1 }
86
87 BOOL TD_Resume( void )
88 {
89 1 // Called after the device resumes
90 1 return( TRUE );
91 1 }
92
93 //-----------------------------------------------------------------------------
94 // Device Request hooks
95 // The following hooks are called by the end point 0 device request parser.
96 //-----------------------------------------------------------------------------
97 BOOL DR_GetDescriptor( void )
98 {
99 1 return( TRUE );
100 1 }
101
102 BOOL DR_SetConfiguration( void )
103 { // Called when a Set Configuration command is received
104 1
105 1 if( EZUSB_HIGHSPEED( ) )
106 1 { // ...FX2 in high speed mode
107 2 EP6AUTOINLENH = 0x02;
108 2 SYNCDELAY;
109 2 EP8AUTOINLENH = 0x02; // set core AUTO commit len = 512 bytes
110 2 SYNCDELAY;
111 2 EP6AUTOINLENL = 0x00;
112 2 SYNCDELAY;
113 2 EP8AUTOINLENL = 0x00;
114 2 }
115 1 else
116 1 { // ...FX2 in full speed mode
117 2 EP6AUTOINLENH = 0x00;
C51 COMPILER V6.10 BULKLOOP 08/22/2006 11:32:24 PAGE 3
118 2 SYNCDELAY;
119 2 EP8AUTOINLENH = 0x00; // set core AUTO commit len = 64 bytes
120 2 SYNCDELAY;
121 2 EP6AUTOINLENL = 0x40;
122 2 SYNCDELAY;
123 2 EP8AUTOINLENL = 0x40;
124 2 }
125 1
126 1 Configuration = SETUPDAT[ 2 ];
127 1 return( TRUE ); // Handled by user code
128 1 }
129
130 BOOL DR_GetConfiguration( void )
131 { // Called when a Get Configuration command is received
132 1 EP0BUF[ 0 ] = Configuration;
133 1 EP0BCH = 0;
134 1 EP0BCL = 1;
135 1 return(TRUE); // Handled by user code
136 1 }
137
138 BOOL DR_SetInterface( void )
139 { // Called when a Set Interface command is received
140 1 AlternateSetting = SETUPDAT[ 2 ];
141 1 return( TRUE ); // Handled by user code
142 1 }
143
144 BOOL DR_GetInterface( void )
145 { // Called when a Set Interface command is received
146 1 EP0BUF[ 0 ] = AlternateSetting;
147 1 EP0BCH = 0;
148 1 EP0BCL = 1;
149 1 return( TRUE ); // Handled by user code
150 1 }
151
152 BOOL DR_GetStatus( void )
153 {
154 1 return( TRUE );
155 1 }
156
157 BOOL DR_ClearFeature( void )
158 {
159 1 return( TRUE );
160 1 }
161
162 BOOL DR_SetFeature( void )
163 {
164 1 return( TRUE );
165 1 }
166
167 BOOL DR_VendorCmnd( void )
168 {
169 1 return( TRUE );
170 1 }
171
172 //-----------------------------------------------------------------------------
173 // USB Interrupt Handlers
174 // The following functions are called by the USB interrupt jump table.
175 //-----------------------------------------------------------------------------
176
177 // Setup Data Available Interrupt Handler
178 void ISR_Sudav( void ) interrupt 0
179 {
C51 COMPILER V6.10 BULKLOOP 08/22/2006 11:32:24 PAGE 4
180 1 GotSUD = TRUE; // Set flag
181 1 EZUSB_IRQ_CLEAR( );
182 1 USBIRQ = bmSUDAV; // Clear SUDAV IRQ
183 1 }
184
185 // Setup Token Interrupt Handler
186 void ISR_Sutok( void ) interrupt 0
187 {
188 1 EZUSB_IRQ_CLEAR( );
189 1 USBIRQ = bmSUTOK; // Clear SUTOK IRQ
190 1 }
191
192 void ISR_Sof( void ) interrupt 0
193 {
194 1 EZUSB_IRQ_CLEAR( );
195 1 USBIRQ = bmSOF; // Clear SOF IRQ
196 1 }
197
198 void ISR_Ures( void ) interrupt 0
199 {
200 1 if ( EZUSB_HIGHSPEED( ) )
201 1 {
202 2 pConfigDscr = pHighSpeedConfigDscr;
203 2 pOtherConfigDscr = pFullSpeedConfigDscr;
204 2 }
205 1 else
206 1 {
207 2 pConfigDscr = pFullSpeedConfigDscr;
208 2 pOtherConfigDscr = pHighSpeedConfigDscr;
209 2 }
210 1
211 1 EZUSB_IRQ_CLEAR( );
212 1 USBIRQ = bmURES; // Clear URES IRQ
213 1 }
214
215 void ISR_Susp( void ) interrupt 0
216 {
217 1 Sleep = TRUE;
218 1 EZUSB_IRQ_CLEAR( );
219 1 USBIRQ = bmSUSP;
220 1 }
221
222 void ISR_Highspeed( void ) interrupt 0
223 {
224 1 if ( EZUSB_HIGHSPEED( ) )
225 1 {
226 2 pConfigDscr = pHighSpeedConfigDscr;
227 2 pOtherConfigDscr = pFullSpeedConfigDscr;
228 2 }
229 1 else
230 1 {
231 2 pConfigDscr = pFullSpeedConfigDscr;
232 2 pOtherConfigDscr = pHighSpeedConfigDscr;
233 2 }
234 1
235 1 EZUSB_IRQ_CLEAR( );
236 1 USBIRQ = bmHSGRANT;
237 1 }
238 void ISR_Ep0ack( void ) interrupt 0
239 {
240 1 }
241 void ISR_Stub( void ) interrupt 0
C51 COMPILER V6.10 BULKLOOP 08/22/2006 11:32:24 PAGE 5
242 {
243 1 }
244 void ISR_Ep0in( void ) interrupt 0
245 {
246 1 }
247 void ISR_Ep0out( void ) interrupt 0
248 {
249 1 }
250 void ISR_Ep1in( void ) interrupt 0
251 {
252 1 }
253 void ISR_Ep1out( void ) interrupt 0
254 {
255 1 }
256 void ISR_Ep2inout( void ) interrupt 0
257 {
258 1 }
259 void ISR_Ep4inout( void ) interrupt 0
260 {
261 1 }
262 void ISR_Ep6inout( void ) interrupt 0
263 {
264 1 }
265 void ISR_Ep8inout( void ) interrupt 0
266 {
267 1 }
268 void ISR_Ibn( void ) interrupt 0
269 {
270 1 }
271 void ISR_Ep0pingnak( void ) interrupt 0
272 {
273 1 }
274 void ISR_Ep1pingnak( void ) interrupt 0
275 {
276 1 }
277 void ISR_Ep2pingnak( void ) interrupt 0
278 {
279 1 }
280 void ISR_Ep4pingnak( void ) interrupt 0
281 {
282 1 }
283 void ISR_Ep6pingnak( void ) interrupt 0
284 {
285 1 }
286 void ISR_Ep8pingnak( void ) interrupt 0
287 {
288 1 }
289 void ISR_Errorlimit( void ) interrupt 0
290 {
291 1 }
292 void ISR_Ep2piderror( void ) interrupt 0
293 {
294 1 }
295 void ISR_Ep4piderror( void ) interrupt 0
296 {
297 1 }
298 void ISR_Ep6piderror( void ) interrupt 0
299 {
300 1 }
301 void ISR_Ep8piderror( void ) interrupt 0
302 {
303 1 }
C51 COMPILER V6.10 BULKLOOP 08/22/2006 11:32:24 PAGE 6
304 void ISR_Ep2pflag( void ) interrupt 0
305 {
306 1 }
307 void ISR_Ep4pflag( void ) interrupt 0
308 {
309 1 }
310 void ISR_Ep6pflag( void ) interrupt 0
311 {
312 1 }
313 void ISR_Ep8pflag( void ) interrupt 0
314 {
315 1 }
316 void ISR_Ep2eflag( void ) interrupt 0
317 {
318 1 }
319 void ISR_Ep4eflag( void ) interrupt 0
320 {
321 1 }
322 void ISR_Ep6eflag( void ) interrupt 0
323 {
324 1 }
325 void ISR_Ep8eflag( void ) interrupt 0
326 {
327 1 }
328 void ISR_Ep2fflag( void ) interrupt 0
329 {
330 1 }
331 void ISR_Ep4fflag( void ) interrupt 0
332 {
333 1 }
334 void ISR_Ep6fflag( void ) interrupt 0
335 {
336 1 }
337 void ISR_Ep8fflag( void ) interrupt 0
338 {
339 1 }
340 void ISR_GpifComplete( void ) interrupt 0
341 {
342 1 }
343 void ISR_GpifWaveform( void ) interrupt 0
344 {
345 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 500 ----
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 + -