📄 ctrlreq.lst
字号:
569 2 while (EP0TXCS & bmTX0_EN);
570 2 }
571 1 }
572 /*$PAGE*/
573
574 /*
575 *********************************************************************************************************
576 * GD_DEVICEQUALDSCR
577 *
578 * Description: Get device qualifier descriptor
579 *
580 * Arguments : none
581 *
582 * Returns : none
583 *********************************************************************************************************
584 */
585 void GD_DeviceQualDscr (void)
586 {
587 1 BOOLEAN ShortPacket;
588 1 INT8U i = 0, j, count, SendSize;
589 1
590 1 count = SetupData[6];
591 1 ShortPacket = FALSE;
592 1 if (count > DSCR_DEVICE_QUALIFIER_LEN)
593 1 {
594 2 count = DSCR_DEVICE_QUALIFIER_LEN;
595 2 ShortPacket = TRUE;
596 2 }
597 1
598 1 while (count)
599 1 {
600 2 if (count < PacketSize)
601 2 {
602 3 SendSize = count;
603 3 }
604 2 else
605 2 {
606 3 SendSize = PacketSize;
607 3 }
608 2 count = count - SendSize;
609 2 for (j = 0; j < SendSize; j++)
610 2 {
611 3 EP0TXDAT = DeviceQualDscr[i++];
612 3 }
C51 COMPILER V7.50 CTRLREQ 04/17/2007 10:42:46 PAGE 11
613 2 EP0TXCNT = SendSize;
614 2 EP0TXCS = EP0TXCS | bmTX0_EN;
615 2 while (EP0TXCS & bmTX0_EN);
616 2 }
617 1 if (ShortPacket && (SendSize == PacketSize))
618 1 {
619 2 EP0TXCNT = 0;
620 2 EP0TXCS = EP0TXCS | bmTX0_EN;
621 2 while (EP0TXCS & bmTX0_EN);
622 2 }
623 1 }
624 /*$PAGE*/
625
626 /*
627 *********************************************************************************************************
628 * GD_CONFIGDSCR
629 *
630 * Description: Get config descriptor
631 *
632 * Arguments : none
633 *
634 * Returns : none
635 *********************************************************************************************************
636 */
637 void GD_ConfigDscr (void)
638 {
639 1 BOOLEAN ShortPacket;
640 1 INT8U i = 0, j, count, SendSize;
641 1
642 1 count = SetupData[6];
643 1 ShortPacket = FALSE;
644 1 if (count > DSCR_CONFIGURATION_TOTALLEN)
645 1 {
646 2 count = DSCR_CONFIGURATION_TOTALLEN;
647 2 ShortPacket = TRUE;
648 2 }
649 1
650 1 while (count)
651 1 {
652 2 if (count < PacketSize)
653 2 {
654 3 SendSize = count;
655 3 }
656 2 else
657 2 {
658 3 SendSize = PacketSize;
659 3 }
660 2 count = count - SendSize;
661 2 for (j = 0; j < SendSize; j++)
662 2 {
663 3 EP0TXDAT = HighSpeedConfigDscr[i++];
664 3 }
665 2 EP0TXCNT = SendSize;
666 2 EP0TXCS = EP0TXCS | bmTX0_EN;
667 2 while (EP0TXCS & bmTX0_EN);
668 2 }
669 1 if (ShortPacket && (SendSize == PacketSize))
670 1 {
671 2 EP0TXCNT = 0;
672 2 EP0TXCS = EP0TXCS | bmTX0_EN;
673 2 while (EP0TXCS & bmTX0_EN);
674 2 }
C51 COMPILER V7.50 CTRLREQ 04/17/2007 10:42:46 PAGE 12
675 1 }
676 /*$PAGE*/
677
678 /*
679 *********************************************************************************************************
680 * GD_OTHERCONFIGDSCR
681 *
682 * Description: Get other configuration descriptor
683 *
684 * Arguments : none
685 *
686 * Returns : none
687 *********************************************************************************************************
688 */
689 void GD_OtherConfigDscr (void)
690 {
691 1 BOOLEAN ShortPacket;
692 1 INT8U i = 0, j, count, SendSize;
693 1
694 1 count = SetupData[6];
695 1 ShortPacket = FALSE;
696 1 if (count > DSCR_CONFIGURATION_TOTALLEN)
697 1 {
698 2 count = DSCR_CONFIGURATION_TOTALLEN;
699 2 ShortPacket = TRUE;
700 2 }
701 1
702 1 while (count)
703 1 {
704 2 if (count < PacketSize)
705 2 {
706 3 SendSize = count;
707 3 }
708 2 else
709 2 {
710 3 SendSize = PacketSize;
711 3 }
712 2 count = count - SendSize;
713 2 for (j = 0; j < SendSize; j++)
714 2 {
715 3 EP0TXDAT = FullSpeedConfigDscr[i++];
716 3 }
717 2 EP0TXCNT = SendSize;
718 2 EP0TXCS = EP0TXCS | bmTX0_EN;
719 2 while (EP0TXCS & bmTX0_EN);
720 2 }
721 1 if (ShortPacket && (SendSize == PacketSize))
722 1 {
723 2 EP0TXCNT = 0;
724 2 EP0TXCS = EP0TXCS | bmTX0_EN;
725 2 while (EP0TXCS & bmTX0_EN);
726 2 }
727 1 }
728 /*$PAGE*/
729
730 /*
731 *********************************************************************************************************
732 * GD_STRING
733 *
734 * Description: Get string
735 *
736 * Arguments : none
C51 COMPILER V7.50 CTRLREQ 04/17/2007 10:42:46 PAGE 13
737 *
738 * Returns : none
739 *********************************************************************************************************
740 */
741 void GD_String (void)
742 {
743 1 BOOLEAN ShortPacket;
744 1 INT8U i = 0, j, count, SendSize;
745 1
746 1 count = SetupData[6];
747 1 ShortPacket = FALSE;
748 1 switch (SetupData[2])
749 1 {
750 2 case 0:
751 2 if (count > DSCR_STRING0_LEN)
752 2 {
753 3 count = DSCR_STRING0_LEN;
754 3 ShortPacket = TRUE;
755 3 }
756 2
757 2 while (count)
758 2 {
759 3 if (count < PacketSize)
760 3 {
761 4 SendSize = count;
762 4 }
763 3 else
764 3 {
765 4 SendSize = PacketSize;
766 4 }
767 3 count = count - SendSize;
768 3 for (j = 0; j < SendSize; j++)
769 3 {
770 4 EP0TXDAT = StringDscr0[i++];
771 4 }
772 3 EP0TXCNT = SendSize;
773 3 EP0TXCS = EP0TXCS | bmTX0_EN;
774 3 while (EP0TXCS & bmTX0_EN);
775 3 }
776 2 break;
777 2 case 1:
778 2 if (count > DSCR_STRING1_LEN)
779 2 {
780 3 count = DSCR_STRING1_LEN;
781 3 ShortPacket = TRUE;
782 3 }
783 2
784 2 while (count)
785 2 {
786 3 if (count < PacketSize)
787 3 {
788 4 SendSize = count;
789 4 }
790 3 else
791 3 {
792 4 SendSize = PacketSize;
793 4 }
794 3 count = count - SendSize;
795 3 for (j = 0; j < SendSize; j++)
796 3 {
797 4 EP0TXDAT = StringDscr1[i++];
798 4 }
C51 COMPILER V7.50 CTRLREQ 04/17/2007 10:42:46 PAGE 14
799 3 EP0TXCNT = SendSize;
800 3 EP0TXCS = EP0TXCS | bmTX0_EN;
801 3 while (EP0TXCS & bmTX0_EN);
802 3 }
803 2 break;
804 2 case 2:
805 2 if (count > DSCR_STRING2_LEN)
806 2 {
807 3 count = DSCR_STRING2_LEN;
808 3 ShortPacket = TRUE;
809 3 }
810 2
811 2 while (count)
812 2 {
813 3 if (count < PacketSize)
814 3 {
815 4 SendSize = count;
816 4 }
817 3 else
818 3 {
819 4 SendSize = PacketSize;
820 4 }
821 3 count = count - SendSize;
822 3 for (j = 0; j < SendSize; j++)
823 3 {
824 4 EP0TXDAT = StringDscr2[i++];
825 4 }
826 3 EP0TXCNT = SendSize;
827 3 EP0TXCS = EP0TXCS | bmTX0_EN;
828 3 while (EP0TXCS & bmTX0_EN);
829 3 }
830 2 break;
831 2 default:
832 2 USB_STALL_EP0();
833 2 return;
834 2 }
835 1 if (ShortPacket && (SendSize == PacketSize))
836 1 {
837 2 EP0TXCNT = 0;
838 2 EP0TXCS = EP0TXCS | bmTX0_EN;
839 2 while (EP0TXCS & bmTX0_EN);
840 2 }
841 1 }
842 /*$PAGE*/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1755 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 148 ----
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 + -