📄 usb.lst
字号:
703 5 while (!(Usb_send_data_complete()));
704 5 Usb_clear_TXCMPL_bit();
705 5 break;
C51 COMPILER V7.50 USB 11/03/2008 13:09:02 PAGE 13
706 5 }
707 4 case 0x01:
708 4 {
709 5
710 5 Usb_sel_ep(1);
711 5 Usb_clear_STALLRQ_bit();
712 5 Usb_set_EP1RST();
713 5 Usb_clr_EP1RST();
714 5 ep_status[1] =0x00;
715 5 Usb_sel_ep(0);
716 5 Usb_clr_rxsetup_bit();
717 5 Usb_set_TXRDY_bit();
718 5 while (!(Usb_send_data_complete()));
719 5 Usb_clear_TXCMPL_bit();
720 5 break;
721 5 }
722 4 case 0x02:
723 4 {
724 5
725 5 Usb_sel_ep(2);
726 5 Usb_clear_STALLRQ_bit();
727 5 Usb_set_EP2RST();
728 5 Usb_clr_EP2RST();
729 5 ep_status[2] = 0x00;
730 5 Usb_sel_ep(0);
731 5 Usb_clr_rxsetup_bit();
732 5 Usb_set_TXRDY_bit();
733 5 while (!(Usb_send_data_complete()));
734 5 Usb_clear_TXCMPL_bit();
735 5 break;
736 5 }
737 4 default:
738 4 {
739 5 Usb_clr_rxsetup_bit();
740 5 Usb_set_STALLRQ_bit();
741 5 while (!(Usb_stall_sent_complete()));
742 5 Usb_clear_STALLRQ_bit();
743 5 break;
744 5 }
745 4 }
746 3 }
747 2 }
748 1
749 1 }
750
751 /**************************************************************************
752 *
-
753 * Function Name:usb_set_feature
-
754 *
-
755 * Descriptions:
756 *
757 * Arguments:
758 *
759 * Returns: None
760 *
761 **************************************************************************/
762 void usb_set_feature (void)
763 {
764 1
C51 COMPILER V7.50 USB 11/03/2008 13:09:02 PAGE 14
765 1
766 1 if (UsbCtrlCmd.bmRequestType == 0x00)
767 1 {
768 2 Usb_clr_rxsetup_bit();
769 2 Usb_set_STALLRQ_bit();
770 2 while (!(Usb_stall_sent_complete()));
771 2 Usb_clear_STALLRQ_bit();
772 2 }
773 1 if (UsbCtrlCmd.bmRequestType == 0x01)
774 1 {
775 2
776 2 Usb_clr_rxsetup_bit();
777 2 Usb_set_STALLRQ_bit();
778 2 while (!(Usb_stall_sent_complete()));
779 2 Usb_clear_STALLRQ_bit();
780 2 }
781 1
782 1
783 1 if (UsbCtrlCmd.bmRequestType == 0x02)
784 1 {
785 2
786 2 if ((UsbCtrlCmd.wValue&0xff) == 0x00)/*feature selector*/
787 2 {
788 3
789 3
790 3 switch (UsbCtrlCmd.wIndex & 0x7f) // check wIndex
791 3 {
792 4 case 0x01:
793 4 {
794 5 Usb_sel_ep(1);
795 5 Usb_set_STALLRQ_bit();
796 5 Usb_sel_ep(0);
797 5 ep_status[1] = 0x01;
798 5 Usb_clr_rxsetup_bit();
799 5 Usb_set_TXRDY_bit();
800 5 while (!(Usb_send_data_complete()));
801 5 Usb_clear_TXCMPL_bit();
802 5 break;
803 5 }
804 4 case 0x02:
805 4 {
806 5 Usb_sel_ep(2);
807 5 Usb_set_STALLRQ_bit();
808 5 Usb_sel_ep(0);
809 5 ep_status[2] = 0x01;
810 5 Usb_clr_rxsetup_bit();
811 5 Usb_set_TXRDY_bit();
812 5 while (!(Usb_send_data_complete()));
813 5 Usb_clear_TXCMPL_bit();
814 5 break;
815 5 }
816 4 default:
817 4 {
818 5
819 5 break;
820 5 }
821 4 }
822 3 }
823 2 }
824 1 }
825
826 /**************************************************************************
C51 COMPILER V7.50 USB 11/03/2008 13:09:02 PAGE 15
827 *
-
828 * Function Name:usb_get_status
-
829 *
-
830 * Descriptions:
831 *
832 * Arguments:
833 *
834 * Returns: None
835 *
836 **************************************************************************/
837 void usb_get_status (void)
838 {
839 1
840 1
841 1 UINT8 wIndex;
842 1 Usb_clr_rxsetup_bit();
843 1 Usb_set_DIR_bit();
844 1 switch(UsbCtrlCmd.bmRequestType)
845 1 {
846 2 case 0x80:
847 2 {
848 3 UEPDATX = 0x01;
849 3 break;
850 3 }
851 2 case 0x81:
852 2 {
853 3
854 3 UEPDATX = 0x00;
855 3 break;
856 3 }
857 2 case 0x82:
858 2 {
859 3 wIndex = UsbCtrlCmd.wIndex & 0x7f;
860 3 UEPDATX = ep_status[wIndex];
861 3 break;
862 3 }
863 2 }
864 1 UEPDATX = 0x00;
865 1 Usb_set_TXRDY_bit();
866 1 while ((!(Usb_send_data_complete())) || (Usb_setup_packet_receive()));
867 1 Usb_clear_TXCMPL_bit();
868 1 while ((!(Usb_receive_out_data())) || (Usb_setup_packet_receive()));
869 1 Usb_clear_DIR_bit();
870 1 Usb_clear_RXOUTB0_bit();
871 1
872 1 }
873
874 /**************************************************************************
875 *
-
876 * Function Name:hid_set_idle
-
877 *
-
878 * Descriptions:
879 *
880 * Arguments:
881 *
882 * Returns: None
C51 COMPILER V7.50 USB 11/03/2008 13:09:02 PAGE 16
883 *
884 **************************************************************************/
885 void hid_set_idle(void)
886 {
887 1
888 1
889 1 Usb_clear_DIR_bit();
890 1 Usb_clr_rxsetup_bit();
891 1 Usb_set_TXRDY_bit();
892 1 while (!(Usb_send_data_complete()));
893 1 Usb_clear_TXCMPL_bit();
894 1 }
895
896 /**************************************************************************
897 *
-
898 * Function Name:usb_get_max_lun
-
899 *
-
900 * Descriptions:
901 *
902 * Arguments:
903 *
904 * Returns: None
905 *
906 **************************************************************************/
907 void usb_get_max_lun(void)
908 {
909 1
910 1 Usb_clr_rxsetup_bit();
911 1 Usb_set_DIR_bit();
912 1 UEPDATX = 0x00;
913 1 Usb_set_TXRDY_bit();
914 1 while ((!(Usb_send_data_complete())) || (Usb_setup_packet_receive()));
915 1 Usb_clear_TXCMPL_bit();
916 1 while ((!(Usb_receive_out_data())) || (Usb_setup_packet_receive()));
917 1 Usb_clear_DIR_bit();
918 1 Usb_clear_RXOUTB0_bit();
919 1
920 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1106 ----
CONSTANT SIZE = 191 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 5
IDATA SIZE = 3 ----
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 + -