📄 ctrlreq.lst
字号:
330 2 if (HighSpeed) //Jason 08/28/2006
331 2 {
332 3 HighSpeedConfigDscr[1] = DSCR_CONFIGURATION;//Kimi 12/19/2006-For chapter9 test!
333 3 GD_ConfigDscr();
334 3 }
335 2 else
336 2 {
337 3 FullSpeedConfigDscr[1] = DSCR_CONFIGURATION;//Kimi 12/19/2006-For chapter9 test!
338 3 GD_OtherConfigDscr();
339 3 }
340 2 break;
341 2 case GD_STRING:
342 2 GD_String();
343 2 break;
344 2 case GD_DEVICE_QUALIFIER:
345 2 GD_DeviceQualDscr();
346 2 break;
347 2 case GD_OTHER_SPEED_CONFIGURATION:
348 2 if (!HighSpeed) //Jason 08/28/2006
349 2 {
350 3 HighSpeedConfigDscr[1] = DSCR_OTHER_SPEED_CONFIGURATION;//Kimi 12/19/2006-For chapter9 test!
351 3 GD_ConfigDscr();
352 3 }
353 2 else
354 2 {
355 3 FullSpeedConfigDscr[1] = DSCR_OTHER_SPEED_CONFIGURATION;//Kimi 12/19/2006-For chapter9 test!
356 3 GD_OtherConfigDscr();
357 3 }
358 2 break;
359 2 default:
360 2 USB_STALL_EP0();
361 2 break;
362 2 }
363 1 }
364 /*$PAGE*/
C51 COMPILER V7.02b CTRLREQ 02/27/2008 12:54:49 PAGE 7
365
366 /*
367 *********************************************************************************************************
368 * DR_GETCONFIGURATION
369 *
370 * Description: Get configuration
371 *
372 * Arguments : none
373 *
374 * Returns : none
375 *********************************************************************************************************
376 */
377 void DR_GetConfiguration (void)
378 {
379 1 EP0TXCNT = 1;
380 1 EP0TXDAT = Configuration;
381 1 EP0TXCS = EP0TXCS | bmTX0_EN;
382 1 }
383 /*$PAGE*/
384
385 /*
386 *********************************************************************************************************
387 * DR_SETCONFIGURATION
388 *
389 * Description: Set configuration
390 *
391 * Arguments : none
392 *
393 * Returns : none
394 *********************************************************************************************************
395 */
396 void DR_SetConfiguration (void)
397 {
398 1 Configuration = SetupData[2];
399 1 EP0TXCNT = 0;
400 1 EP0TXCS = EP0TXCS | bmTX0_EN;
401 1 }
402 /*$PAGE*/
403
404 /*
405 *********************************************************************************************************
406 * DR_GETINTERFACE
407 *
408 * Description: Get interface
409 *
410 * Arguments : none
411 *
412 * Returns : none
413 *********************************************************************************************************
414 */
415 void DR_GetInterface (void)
416 {
417 1 EP0TXCNT = 1; // Write data length
418 1 EP0TXDAT = AlternateSetting; // Write data
419 1 EP0TXCS = EP0TXCS | bmTX0_EN; // Enable TX
420 1 }
421 /*$PAGE*/
422
423 /*
424 *********************************************************************************************************
425 * DR_SETINTERFACE
426 *
C51 COMPILER V7.02b CTRLREQ 02/27/2008 12:54:49 PAGE 8
427 * Description: Set interface
428 *
429 * Arguments : none
430 *
431 * Returns : none
432 *********************************************************************************************************
433 */
434 void DR_SetInterface (void)
435 {
436 1 AlternateSetting = SetupData[2];
437 1 EP0TXCNT = 0;
438 1 EP0TXCS = EP0TXCS | bmTX0_EN;
439 1 }
440 /*$PAGE*/
441
442 /*
443 *********************************************************************************************************
444 * GD_DEVICEDSCR
445 *
446 * Description: Get device descriptor
447 *
448 * Arguments : none
449 *
450 * Returns : none
451 *********************************************************************************************************
452 */
453 void GD_DeviceDscr (void)
454 {
455 1 INT8U i = 0, count;
456 1
457 1 count = SetupData[6];
458 1 if (count > DSCR_DEVICE_LEN)
459 1 {
460 2 count = DSCR_DEVICE_LEN;
461 2 }
462 1 /*if (USBFADDR == 0)
463 1 {
464 1 count = 8;
465 1 }*/
466 1 EP0TXCNT = count;
467 1 while (count)
468 1 {
469 2 EP0TXDAT = DeviceDscr[i];
470 2 i++;
471 2 count--;
472 2 }
473 1 EP0TXCS = EP0TXCS | bmTX0_EN;
474 1 while (EP0TXCS & bmTX0_EN);
475 1 }
476 /*$PAGE*/
477
478 /*
479 *********************************************************************************************************
480 * GD_DEVICEQUALDSCR
481 *
482 * Description: Get device qualifier descriptor
483 *
484 * Arguments : none
485 *
486 * Returns : none
487 *********************************************************************************************************
488 */
C51 COMPILER V7.02b CTRLREQ 02/27/2008 12:54:49 PAGE 9
489 void GD_DeviceQualDscr (void)
490 {
491 1 INT8U i = 0, count;
492 1
493 1 count = SetupData[6];
494 1 if (count > DSCR_DEVICE_QUALIFIER_LEN)
495 1 {
496 2 count = DSCR_DEVICE_QUALIFIER_LEN;
497 2 }
498 1 EP0TXCNT = count;
499 1 while (count)
500 1 {
501 2 EP0TXDAT = DeviceQualDscr[i];
502 2 i++;
503 2 count--;
504 2 }
505 1 EP0TXCS = EP0TXCS | bmTX0_EN;
506 1 while (EP0TXCS & bmTX0_EN);
507 1 }
508 /*$PAGE*/
509
510 /*
511 *********************************************************************************************************
512 * GD_CONFIGDSCR
513 *
514 * Description: Get config descriptor
515 *
516 * Arguments : none
517 *
518 * Returns : none
519 *********************************************************************************************************
520 */
521 void GD_ConfigDscr (void)
522 {
523 1 INT8U i = 0, count;
524 1
525 1 count = SetupData[6];
526 1 if (count > DSCR_CONFIGURATION_TOTALLEN)
527 1 {
528 2 count = DSCR_CONFIGURATION_TOTALLEN;
529 2 }
530 1 EP0TXCNT = count;
531 1 while (count)
532 1 {
533 2 EP0TXDAT = HighSpeedConfigDscr[i];
534 2 i++;
535 2 count--;
536 2 }
537 1 EP0TXCS = EP0TXCS | bmTX0_EN;
538 1 while (EP0TXCS & bmTX0_EN);
539 1 }
540 /*$PAGE*/
541
542 /*
543 *********************************************************************************************************
544 * GD_OTHERCONFIGDSCR
545 *
546 * Description: Get other configuration descriptor
547 *
548 * Arguments : none
549 *
550 * Returns : none
C51 COMPILER V7.02b CTRLREQ 02/27/2008 12:54:49 PAGE 10
551 *********************************************************************************************************
552 */
553 void GD_OtherConfigDscr (void)
554 {
555 1 INT8U i = 0, count;
556 1
557 1 count = SetupData[6];
558 1 if (count > DSCR_CONFIGURATION_TOTALLEN)
559 1 {
560 2 count = DSCR_CONFIGURATION_TOTALLEN;
561 2 }
562 1 EP0TXCNT = count;
563 1 while (count)
564 1 {
565 2 EP0TXDAT = FullSpeedConfigDscr[i];
566 2 i++;
567 2 count--;
568 2 }
569 1 EP0TXCS = EP0TXCS | bmTX0_EN;
570 1 while (EP0TXCS & bmTX0_EN);
571 1 }
572 /*$PAGE*/
573
574 /*
575 *********************************************************************************************************
576 * GD_STRING
577 *
578 * Description: Get string
579 *
580 * Arguments : none
581 *
582 * Returns : none
583 *********************************************************************************************************
584 */
585 void GD_String (void)
586 {
587 1 INT8U i = 0, count;
588 1
589 1 count = SetupData[6];
590 1 switch (SetupData[2])
591 1 {
592 2 case 0:
593 2 if (count > DSCR_STRING0_LEN)
594 2 {
595 3 count = DSCR_STRING0_LEN;
596 3 }
597 2 EP0TXCNT = count;
598 2 while (count)
599 2 {
600 3 EP0TXDAT = StringDscr0[i];
601 3 i++;
602 3 count--;
603 3 }
604 2 break;
605 2 case 1:
606 2 if (count > DSCR_STRING1_LEN)
607 2 {
608 3 count = DSCR_STRING1_LEN;
609 3 }
610 2 EP0TXCNT = count;
611 2 while (count)
612 2 {
C51 COMPILER V7.02b CTRLREQ 02/27/2008 12:54:49 PAGE 11
613 3 EP0TXDAT = StringDscr1[i];
614 3 i++;
615 3 count--;
616 3 }
617 2 break;
618 2 case 2:
619 2 if (count > DSCR_STRING2_LEN)
620 2 {
621 3 count = DSCR_STRING2_LEN;
622 3 }
623 2 EP0TXCNT = count;
624 2 while (count)
625 2 {
626 3 EP0TXDAT = StringDscr2[i];
627 3 i++;
628 3 count--;
629 3 }
630 2 break;
631 2 case 3:
632 2 if (count > DSCR_STRING3_LEN)
633 2 {
634 3 count = DSCR_STRING3_LEN;
635 3 }
636 2 EP0TXCNT = count;
637 2 while (count)
638 2 {
639 3 EP0TXDAT = StringDscr3[i];
640 3 i++;
641 3 count--;
642 3 }
643 2 break;
644 2 default:
645 2 EP0TXCNT = 0;
646 2 break;
647 2 }
648 1 EP0TXCS = EP0TXCS | bmTX0_EN;
649 1 while (EP0TXCS & bmTX0_EN);
650 1 }
651 /*$PAGE*/
652
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1074 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 169 ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -