📄 srcout_s.lst
字号:
247 // Your implementation should not use the above bRequest values...
248 // Also, previous fw.c versions trap all bRequest values 0x00 through 0x0F...
249 //
250 // bRequest value: SETUPDAT[1]
251 // standard, 0x00 through 0x0F
252 //
253 // bmRequest value: SETUPDAT[0]
254 // standard, 0x80 IN Token
255 // vendor, 0xC0 IN Token
256 // class, 0xA0 IN Token
257 // standard, 0x00 OUT Token
258 // vendor, 0x40 OUT Token
259 // class, 0x60 OUT Token
260
261 BOOL DR_VendorCmnd( void )
262 {
263 1
264 1 // Registers which require a synchronization delay, see section 15.14
265 1 // FIFORESET FIFOPINPOLAR
266 1 // INPKTEND OUTPKTEND
267 1 // EPxBCH:L REVCTL
268 1 // GPIFTCB3 GPIFTCB2
269 1 // GPIFTCB1 GPIFTCB0
270 1 // EPxFIFOPFH:L EPxAUTOINLENH:L
271 1 // EPxFIFOCFG EPxGPIFFLGSEL
272 1 // PINFLAGSxx EPxFIFOIRQ
273 1 // EPxFIFOIE GPIFIRQ
274 1 // GPIFIE GPIFADRH:L
275 1 // UDMACRCH:L EPxGPIFTRIG
276 1 // GPIFTRIG
277 1
278 1 // Note: The pre-REVE EPxGPIFTCH/L register are affected, as well...
279 1 // ...these have been replaced by GPIFTC[B3:B0] registers
280 1
281 1
282 1
283 1
284 1 switch( SETUPDAT[ 1 ] )
285 1 {
286 2 case VX_B2:
287 2 { // turn OFF debug LEDs...
288 3
289 3 ledX_rdvar = LED0_ON; // visual
290 3 ledX_rdvar = LED1_ON; // visual
291 3 ledX_rdvar = LED2_ON; // visual
292 3 ledX_rdvar = LED3_ON; // visual
293 3
294 3 *EP0BUF = VX_B2;
295 3
296 3 EP0BCH = 0;
297 3 EP0BCL = 1; // Arm endpoint with # bytes to transfer
298 3 EP0CS |= bmHSNAK; // Acknowledge handshake phase of device request
299 3
300 3
301 3 break;
302 3 }
C51 COMPILER V7.50 SRCOUT_S 05/26/2006 20:44:33 PAGE 6
303 2 case VX_B3:
304 2 { // turn OFF debug LEDs...
305 3
306 3 ledX_rdvar = LED0_OFF; // visual
307 3 ledX_rdvar = LED1_OFF; // visual
308 3 ledX_rdvar = LED2_OFF; // visual
309 3 ledX_rdvar = LED3_OFF; // visual
310 3
311 3 *EP0BUF = VX_B3;
312 3 EP0BCH = 0;
313 3 EP0BCL = 1; // Arm endpoint with # bytes to transfer
314 3 EP0CS |= bmHSNAK; // Acknowledge handshake phase of device request
315 3
316 3
317 3
318 3
319 3 break;
320 3 }
321 2
322 2 case VX_BC:
323 2 { // turn OFF debug LEDs...
324 3
325 3 display = TRUE;
326 3 if(--num > 0x0f)
327 3 num = 0x0f;
328 3
329 3 if(display)
330 3 {
331 4 EZUSB_WriteI2C(LED_ADDR, 0x01, &(Digit[num]));
332 4 EZUSB_WaitForEEPROMWrite(LED_ADDR);
333 4 display = FALSE;
334 4 }
335 3
336 3
337 3 *EP0BUF = VX_BC;
338 3 EP0BCH = 0;
339 3 EP0BCL = 1; // Arm endpoint with # bytes to transfer
340 3 EP0CS |= bmHSNAK; // Acknowledge handshake phase of device request
341 3
342 3
343 3
344 3
345 3
346 3
347 3
348 3
349 3 break;
350 3 }
351 2
352 2 case VX_BD:
353 2 { // turn OFF debug LEDs...
354 3
355 3 display = TRUE;
356 3 if(++num > 0x0f)
357 3 num = 0;
358 3
359 3
360 3 if(display)
361 3 {
362 4 EZUSB_WriteI2C(LED_ADDR, 0x01, &(Digit[num]));
363 4 EZUSB_WaitForEEPROMWrite(LED_ADDR);
364 4 display = FALSE;
C51 COMPILER V7.50 SRCOUT_S 05/26/2006 20:44:33 PAGE 7
365 4 }
366 3
367 3
368 3 *EP0BUF = VX_BD;
369 3 EP0BCH = 0;
370 3 EP0BCL = 1; // Arm endpoint with # bytes to transfer
371 3 EP0CS |= bmHSNAK; // Acknowledge handshake phase of device request
372 3
373 3
374 3
375 3 break;
376 3 }
377 2
378 2
379 2 case VX_BE:
380 2 { // turn OFF debug LEDs...
381 3
382 3 display = TRUE;
383 3 num=0;
384 3
385 3
386 3 if(display)
387 3 {
388 4 EZUSB_WriteI2C(LED_ADDR, 0x01, &(Digit[num]));
389 4 EZUSB_WaitForEEPROMWrite(LED_ADDR);
390 4 display = FALSE;
391 4 }
392 3
393 3
394 3 *EP0BUF = VX_BE;
395 3
396 3 EP0BCH = 0;
397 3 EP0BCL = 1; // Arm endpoint with # bytes to transfer
398 3 EP0CS |= bmHSNAK; // Acknowledge handshake phase of device request
399 3
400 3 break;
401 3 }
402 2
403 2 case VX_BF:
404 2 { // turn OFF debug LEDs...
405 3
406 3 display = TRUE;
407 3 num = 0x0f;
408 3
409 3 // num=*EP0BUF-0x30;
410 3 if(display)
411 3 {
412 4 EZUSB_WriteI2C(LED_ADDR, 0x01, &(Digit[num]));
413 4 EZUSB_WaitForEEPROMWrite(LED_ADDR);
414 4 display = FALSE;
415 4 }
416 3
417 3
418 3 *EP0BUF = VX_BF;
419 3 EP0BCH = 0;
420 3 EP0BCL = 1; // Arm endpoint with # bytes to transfer
421 3 EP0CS |= bmHSNAK; // Acknowledge handshake phase of device request
422 3
423 3
424 3 break;
425 3 }
426 2 case VX_C3:
C51 COMPILER V7.50 SRCOUT_S 05/26/2006 20:44:33 PAGE 8
427 2 { // turn OFF debug LEDs...
428 3
429 3 display = TRUE;
430 3
431 3
432 3 num=SETUPDAT[2]-0x30;
433 3 if(display)
434 3 {
435 4 EZUSB_WriteI2C(LED_ADDR, 0x01, &(Digit[num]));
436 4 EZUSB_WaitForEEPROMWrite(LED_ADDR);
437 4 display = FALSE;
438 4 }
439 3 // Arm endpoint with # bytes to transfer
440 3 *EP0BUF = VX_C3;
441 3 EP0BCH = 0;
442 3 EP0BCL = 1; // Arm endpoint with # bytes to transfer
443 3 EP0CS |= bmHSNAK; // Acknowledge handshake phase of device request
444 3
445 3
446 3 // *EP0BUF = VX_C0;
447 3 break;
448 3 }
449 2
450 2
451 2 case VX_B7:
452 2 {
453 3 TD_Init( );
454 3 *EP0BUF = VX_B7;
455 3 EP0BCH = 0;
456 3 EP0BCL = 1; // Arm endpoint with # bytes to transfer
457 3 EP0CS |= bmHSNAK; // Acknowledge handshake phase of device request
458 3
459 3
460 3 break;
461 3 }
462 2 case VX_B8:
463 2 {
464 3 EP0BCH = 0;
465 3 EP0BCL = 1; // Arm endpoint with # bytes to transfer
466 3 EP0CS |= bmHSNAK; // Acknowledge handshake phase of device request
467 3 SYNCDELAY; // used here as "delay"
468 3 SYNCDELAY; // used here as "delay"
469 3
470 3 EA = 0;
471 3
472 3 // ...do a "soft" code only RESET... vector to ORG 0x0000
473 3 ( ( void ( code * ) ( void ) ) 0x0000 ) ( );
474 3
475 3 *EP0BUF = VX_B8;
476 3 EP0BCH = 0;
477 3 EP0BCL = 1; // Arm endpoint with # bytes to transfer
478 3 EP0CS |= bmHSNAK; // Acknowledge handshake phase of device request
479 3
480 3
481 3 break;
482 3 }
483 2 case VX_BA:
484 2 {
485 3 REVCTL = 0x01; // REVCTL.0=1 (enable enhanced packet handling)
486 3 SYNCDELAY; //
487 3 OUTPKTEND = 0x02; // commit out pkt, w/skip=0
488 3 SYNCDELAY; //
C51 COMPILER V7.50 SRCOUT_S 05/26/2006 20:44:33 PAGE 9
489 3 *EP0BUF = VX_BA;
490 3 EP0BCH = 0;
491 3 EP0BCL = 1; // Arm endpoint with # bytes to transfer
492 3 EP0CS |= bmHSNAK; // Acknowledge handshake phase of device request
493 3
494 3
495 3 break;
496 3 }
497 2 case VX_BB:
498 2 {
499 3 REVCTL = 0x01; // REVCTL.0=1
500 3 SYNCDELAY; //
501 3 INPKTEND = 0x06; // commit in pkt, w/skip=0
502 3 SYNCDELAY; //
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -