📄 test02.lst
字号:
809 7 else {
810 8 USB_CTL1 = 0x40;
811 8 USB_CTL1 = USB_CTL1 | len;
812 8 if(toggle) USB_CTL1 = USB_CTL1 | 0x90;
813 8 else USB_CTL1 = USB_CTL1 | 0x80;
814 8 }
815 7
816 7 len -= len1;
817 7 while(!(USB_STA0 & 0x02)) if(USB_STA0 & 0x01) {out_status(); return;}
818 7 USB_CTL1 = USB_CTL1 & 0x7F; //clear tx0e
819 7 USB_STA0 = USB_STA0 | 0x02; //txd0f=0
820 7 toggle = ~toggle;
821 7
822 7 if((len1==8) & (len==0)) {
823 8 USB_CTL1 = 0x40;
824 8 if(toggle) USB_CTL1 = USB_CTL1 | 0x10;
825 8 USB_CTL1 = USB_CTL1 | 0x80;
826 8 while(!(USB_STA0 & 0x02)) if(USB_STA0 & 0x01) {out_status(); return;}
827 8 USB_CTL1 = USB_CTL1 & 0x7F; //clear tx0e
828 8 USB_STA0 = USB_STA0 | 0x02; //txd0f=0
829 8 }
830 7 }
831 6 out_status();
832 6 }
833 5 else if((SETUPR0 == 0x81) & (SETUPR4==1)){//interface 1
834 6 //
835 6 if((SETUPR7==0)& (SETUPR6 < 0x66)) len = SETUPR6;
836 6 else len = 0x66;
837 6
838 6 toggle = 1;
839 6 j=0;
840 6 USB_CTL1 = USB_CTL1 | 0x40; //enable rxd0e
841 6 while(len){
842 7 if(len > 0x08) len1 = 0x08;
843 7 else len1 = len;
844 7 USB_EPP = 0;
845 7 for(i=0;i<len1;i++,j++) USB_EP0 = mouse_report[j];
846 7 if(len >= 0x08) {
847 8 USB_CTL1 = 0x40;
848 8 if(toggle) USB_CTL1 = USB_CTL1 | 0x98;
849 8 else USB_CTL1 = USB_CTL1 | 0x88;
850 8 }
851 7 else {
852 8 USB_CTL1 = 0x40;
853 8 USB_CTL1 = USB_CTL1 | len;
854 8 if(toggle) USB_CTL1 = USB_CTL1 | 0x90;
855 8 else USB_CTL1 = USB_CTL1 | 0x80;
856 8 }
857 7
858 7 len -= len1;
859 7 while(!(USB_STA0 & 0x02)) if(USB_STA0 & 0x01) {out_status(); return;}
860 7 USB_CTL1 = USB_CTL1 & 0x7F; //clear tx0e
C51 COMPILER V7.07 TEST02 01/26/2007 14:58:49 PAGE 15
861 7 USB_STA0 = USB_STA0 | 0x02; //txd0f=0
862 7 toggle = ~toggle;
863 7
864 7 if((len1==8) & (len==0)) {
865 8 USB_CTL1 = 0x40;
866 8 if(toggle) USB_CTL1 = USB_CTL1 | 0x10;
867 8 USB_CTL1 = USB_CTL1 | 0x80;
868 8 while(!(USB_STA0 & 0x02)) if(USB_STA0 & 0x01) {out_status(); return;}
869 8 USB_CTL1 = USB_CTL1 & 0x7F; //clear tx0e
870 8 USB_STA0 = USB_STA0 | 0x02; //txd0f=0
871 8 }
872 7 }
873 6 out_status();
874 6 }
875 5 else {
876 6 USB_CTL2 = USB_CTL2 | 0x40; // Invalid request
877 6 USB_CTL1 = USB_CTL1 | 0x20;
878 6 }
879 5 break;
880 5
881 5 default:
882 5 USB_CTL2 = USB_CTL2 | 0x40; // Invalid request
883 5 USB_CTL1 = USB_CTL1 | 0x20;
884 5 break;
885 5 } //get descriptor case
886 4 break;
887 4
888 4 case SET_CONFIGURATION:
889 4 if((SETUPR6==0) & (SETUPR7==0)){
890 5 configuration = SETUPR2;
891 5 if(configuration==0) configured = 0;
892 5 else configured = 1;
893 5 if(configured==1){
894 6 //enable endpoint 1, 2
895 6 USB_CTL0 = 0xf0;
896 6 //
897 6 }
898 5 else {
899 6 //disable endpoint 1, 2
900 6 USB_CTL0 = 0x90;
901 6 //USB_CTL4 = USB_CTL4 & 0xe3;
902 6 }
903 5 //
904 5 USB_CTL2 = USB_CTL2 & 0x40;
905 5 ep1toggle = 0;
906 5 ep2toggle = 0;
907 5 in_status();
908 5 }
909 4 else {
910 5 USB_CTL1 = USB_CTL1 | 0x20; //ostall0 = 1
911 5 USB_CTL2 = USB_CTL2 | 0x40; //istall0 = 1
912 5 }
913 4 break;
914 4
915 4 case GET_CONFIGURATION:
916 4 if((SETUPR6==1) & (SETUPR7==0)){
917 5 USB_EPP = 0;
918 5 USB_EPP = configuration;
919 5 USB_CTL1 = 0x91;
920 5 while(!(USB_STA0 & 0x02)); //wait until txd0f=1
921 5 USB_CTL1 = USB_CTL1 & 0x7F; //clear tx0e
922 5 USB_STA0 = USB_STA0 | 0x02; //txd0f=0
C51 COMPILER V7.07 TEST02 01/26/2007 14:58:49 PAGE 16
923 5 out_status();
924 5 }
925 4 else {
926 5 USB_CTL1 = USB_CTL1 | 0x20; //ostall0 = 1
927 5 USB_CTL2 = USB_CTL2 | 0x40; //istall0 = 1
928 5 }
929 4 break;
930 4
931 4 case GET_STATUS:
932 4 switch(SETUPR0)
933 4 {
934 5 case 0x80: // Device rmwake=0, selpower=0
935 5 if((SETUPR6==2) & (SETUPR7==0)){
936 6 USB_EPP = 0;
937 6 USB_EP0 = (unsigned char) remote_wku_enable;
938 6 USB_EP0 = 0; //bus powered
939 6 USB_CTL1 = 0x92;
940 6 while(!(USB_STA0 & 0x02));
941 6 USB_CTL1 = USB_CTL1 & 0x7F; //clear tx0e
942 6 USB_STA0 = USB_STA0 | 0x02; //txd0f=0
943 6 out_status();
944 6 }
945 5 else {
946 6 USB_CTL1 = USB_CTL1 | 0x20; //ostall0 = 1
947 6 USB_CTL2 = USB_CTL2 | 0x40; //istall0 = 1
948 6 }
949 5 break;
950 5 case 0x81: // Interface
951 5 case 0x82: // End Point halt
952 5 if((SETUPR6==2) & (SETUPR7==0)){
953 6 USB_EPP = 0;
954 6 USB_EP0 = 0;
955 6 USB_EP0 = 0;
956 6 USB_CTL1 = 0x92;
957 6 while(!(USB_STA0 & 0x02));
958 6 USB_CTL1 = USB_CTL1 & 0x7F; //clear tx0e
959 6 USB_STA0 = USB_STA0 | 0x02; //txd0f=0
960 6 out_status();
961 6 }
962 5 else {
963 6 USB_CTL1 = USB_CTL1 | 0x20; //ostall0 = 1
964 6 USB_CTL2 = USB_CTL2 | 0x40; //istall0 = 1
965 6 }
966 5 break;
967 5 default: // Invalid Command
968 5 USB_CTL1 = USB_CTL1 | 0x20; //ostall0 = 1
969 5 USB_CTL2 = USB_CTL2 | 0x40; //istall0 = 1
970 5 break;
971 5 }
972 4 break;
973 4
974 4 case CLEAR_FEATURE:
975 4 switch(SETUPR0)
976 4 {
977 5 case 0x00: // Device
978 5 if((SETUPR2 == 1) & (SETUPR6==0) & (SETUPR7==0)) {
979 6 remote_wku_enable = 0; // Disable Remote Wakeup
980 6 in_status();
981 6 }
982 5 else {
983 6 USB_CTL1 = USB_CTL1 | 0x20; //ostall0 = 1
984 6 USB_CTL2 = USB_CTL2 | 0x40; //istall0 = 1
C51 COMPILER V7.07 TEST02 01/26/2007 14:58:49 PAGE 17
985 6 }
986 5 break;
987 5 case 0x02: // End Point stall
988 5 if((SETUPR2 == 0) & (SETUPR6==0) & (SETUPR7==0))
989 5 {
990 6 if((SETUPR4 == 0x81))
991 6 {
992 7 //reset in ep1 toggle/stall bit
993 7 USB_CTL2 = USB_CTL2 & 0xCF;
994 7 }
995 6 if((SETUPR4 == 0x82))
996 6 {
997 7 //reset in ep2 toggle/stall bit
998 7 USB_CTL3 = USB_CTL3 & 0xCF;
999 7 }
1000 6 in_status();
1001 6 }
1002 5 else {
1003 6 USB_CTL1 = USB_CTL1 | 0x20; //ostall0 = 1
1004 6 USB_CTL2 = USB_CTL2 | 0x40; //istall0 = 1
1005 6 }
1006 5 break;
1007 5 default: {
1008 6 USB_CTL1 = USB_CTL1 | 0x20; //ostall0 = 1
1009 6 USB_CTL2 = USB_CTL2 | 0x40; //istall0 = 1
1010 6
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -