⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usbmouse.lst

📁 USB Mouse
💻 LST
📖 第 1 页 / 共 5 页
字号:
 776   2        if(Control_Data.DeviceRequest.bmRequestType&0x80)
 777   2        {
 778   3         usb_flags.flags.setup_packet_in=1;
 779   3         usb_flags.flags.setup_packet_out=0;
 780   3         return;
 781   3        }
 782   2        else 
 783   2        {
 784   3         usb_flags.flags.setup_packet_in=0;
 785   3         usb_flags.flags.setup_packet_out=1;
 786   3         if(Control_Data.wLength!=0)
 787   3         {
 788   4          usb_flags.flags.usb_endp0_in=0;
 789   4         }
 790   3         return;
 791   3        }
 792   2       }
 793   1       else
 794   1       {
 795   2        if(usb_flags.flags.setup_packet_out) 
 796   2        {
 797   3         usb_flags.flags.usb_endp0_in=1;
C51 COMPILER V7.06   USBMOUSE                                                              12/10/2007 14:20:43 PAGE 14  

 798   3        }
 799   2        else
 800   2        {
 801   3         select_endpoint(0);
 802   3         clear_buffer();
 803   3        }
 804   2       }
 805   1      }
 806          /******************************************************************************/
 807          
 808          /***********************获取报告*********************************************/
 809          void get_report(void)
 810          {
 811   1       Prints("        获取报告.\r\n");
 812   1      }
 813          /******************************************************************************/
 814          
 815          /**********************获取空闲状态*********************************************/
 816          void get_idle(void)
 817          {
 818   1       Prints("    获取空闲.\r\n");
 819   1       write_endpoint_buff(1,1,&idle);
 820   1       usb_flags.flags.usb_endp0_in=0;
 821   1      }
 822          /******************************************************************************/
 823          
 824          /*************************获取协议**********************************************/
 825          void get_protocol(void)
 826          {
 827   1       Prints("    获取协议.\r\n");
 828   1       write_endpoint_buff(1,1,&protocol);
 829   1       usb_flags.flags.usb_endp0_in=0;
 830   1      }
 831          /******************************************************************************/
 832          
 833          /***********************设置报告***********************************************/
 834          void set_report(void)
 835          {
 836   1       Prints("    设置报告.\r\n");
 837   1      }
 838          /******************************************************************************/
 839          
 840          /***********************设置空闲***********************************************/
 841          void set_idle(void)
 842          {
 843   1       Prints("    设置空闲.\r\n");
 844   1       while(select_endpoint(1)&0x01);
 845   1       write_endpoint_buff(1,0,0);
 846   1       idle=Control_Data.DeviceRequest.wValue;
 847   1       usb_flags.flags.usb_endp0_in=0;
 848   1       usb_flags.flags.setup_packet_out=0;
 849   1      }
 850          /******************************************************************************/
 851          
 852          /**********************设置协议**************************************************/
 853          void set_protocol(void)
 854          {
 855   1       Prints("    设置协议.\r\n");
 856   1       while(select_endpoint(1)&0x01);
 857   1       write_endpoint_buff(1,0,0);
 858   1       protocol=Control_Data.DeviceRequest.wValue;
 859   1       usb_flags.flags.usb_endp0_in=0;
C51 COMPILER V7.06   USBMOUSE                                                              12/10/2007 14:20:43 PAGE 15  

 860   1       usb_flags.flags.setup_packet_out=0;
 861   1      }
 862          /******************************************************************************/
 863          
 864          /****************************终端点0输入处理**************************************/
 865          void endp0_in(void)
 866          {
 867   1       read_last_status(1);
 868   1       //如果是输入请求包
 869   1       if(usb_flags.flags.setup_packet_in||usb_flags.flags.not_end)
 870   1        {
 871   2          switch(Control_Data.DeviceRequest.bmRequestType&0x60)
 872   2               {
 873   3                 case 0x00:  //标准请求
 874   3                 Prints("USB标准请求.\r\n");
 875   3                 switch(Control_Data.DeviceRequest.bmRequestType&0x1F)
 876   3                  {
 877   4                       case 0: //到设备
 878   4                         switch (Control_Data.DeviceRequest.bRequest)
 879   4                          {
 880   5                           case 0: get_status(0);break;
 881   5                           case 6: get_descriptor();break;
 882   5                           case 8: get_configuration();break;
 883   5                               default:break;
 884   5                          }
 885   4                       break;
 886   4      
 887   4                       case 1:  //到接口
 888   4                         switch (Control_Data.DeviceRequest.bRequest)
 889   4                          {
 890   5                       case  0: get_status(1);break;
 891   5                                case 6: get_descriptor_interface();break;
 892   5                           case 10: get_interface();break;
 893   5                       default: break;
 894   5                              }
 895   4                       break;
 896   4      
 897   4                       case 2:  //到端点
 898   4                        {
 899   5                     if(Control_Data.DeviceRequest.bRequest==0)get_status(2);  
 900   5                        }
 901   4                       default: break;
 902   4                  }
 903   3                 break;
 904   3      
 905   3                 case 0x20:  //类请求
 906   3             Prints("USB类请求.\r\n");
 907   3                 switch(Control_Data.DeviceRequest.bmRequestType&0x1F)
 908   3                  {
 909   4                       case 0:  //到设备
 910   4                         switch (Control_Data.DeviceRequest.bRequest)
 911   4                          {
 912   5                               default:break;
 913   5                          }
 914   4                       break;
 915   4      
 916   4                       case 1:  //到接口
 917   4                         switch (Control_Data.DeviceRequest.bRequest)
 918   4                          {
 919   5      
 920   5                               case   GET_REPORT: get_report();   break; //获取报告
 921   5                   case     GET_IDLE: get_idle();     break; //获取空闲状态
C51 COMPILER V7.06   USBMOUSE                                                              12/10/2007 14:20:43 PAGE 16  

 922   5                   case GET_PROTOCOL: get_protocol(); break; //获取协议
 923   5                       default: break;
 924   5                              }
 925   4                       break;
 926   4      
 927   4                       case 2:  //到端点
 928   4                        {
 929   5                         switch (Control_Data.DeviceRequest.bRequest)
 930   5                          {
 931   6                       default: break;
 932   6                              }  
 933   5                        }
 934   4                       default: break;
 935   4                  }
 936   3                 break;
 937   3      
 938   3                 case 0x40:  //用户请求
 939   3             Prints("USB用户请求.\r\n");
 940   3                 switch(Control_Data.DeviceRequest.bmRequestType&0x1F)
 941   3                  {
 942   4                       case 0:  //到设备
 943   4                         switch (Control_Data.DeviceRequest.bRequest)
 944   4                          {
 945   5                               default: break;
 946   5                          }
 947   4                   break;
 948   4      
 949   4                       case 1:   //到接口
 950   4                         switch (Control_Data.DeviceRequest.bRequest)
 951   4                          {
 952   5                       default: break;
 953   5                              }
 954   4               break;
 955   4      
 956   4                       case 2:  //到端点
 957   4                        {
 958   5                         switch (Control_Data.DeviceRequest.bRequest)
 959   5                          {
 960   6                       default: break;
 961   6                              }  
 962   5                        }
 963   4                       default: break;
 964   4                  }
 965   3              }
 966   2          return;
 967   2        }
 968   1      
 969   1        //如果是输出请求包
 970   1       if(usb_flags.flags.setup_packet_out) 
 971   1        {
 972   2          switch(Control_Data.DeviceRequest.bmRequestType&0x60)
 973   2               {
 974   3                 case 0x00:  //标准请求
 975   3                 Prints("USB标准请求.\r\n");
 976   3                 switch(Control_Data.DeviceRequest.bmRequestType&0x1F)
 977   3                  {
 978   4                       case 0:   //到设备
 979   4                   switch (Control_Data.DeviceRequest.bRequest)
 980   4                    {
 981   5                         case     CLEAR_FEATURE: clear_feature(0);break;
 982   5                         case       SET_FEATURE: set_feature(0);break;
 983   5                         case       SET_ADDRESS: set_usb_address();break;          //set_address                 
C51 COMPILER V7.06   USBMOUSE                                                              12/10/2007 14:20:43 PAGE 17  

 984   5                         case    SET_DESCRIPTOR: set_descriptor();break;           //set_descriptor
 985   5                         case SET_CONFIGURATION: set_configuration(); break;       //set_configurat                             
 986   5                         default: break;
 987   5                        }
 988   4                       break;
 989   4                       
 990   4                       case 1:   //到接口
 991   4                    switch (Control_Data.DeviceRequest.bRequest)
 992   4                         {
 993   5                          case CLEAR_FEATURE:  clear_feature(1);break;
 994   5                          case   SET_FEATURE:  set_feature(1); break;
 995   5                      case SET_INTERFACE: set_interface();break;
 996   5                          default: break;
 997   5                      }
 998   4                       break;
 999   4                       
1000   4                       case 2:   //到端点
1001   4                        switch (Control_Data.DeviceRequest.bRequest)
1002   4                         {
1003   5                          case CLEAR_FEATURE: clear_feature(2);break;
1004   5                          case   SET_FEATURE: set_feature(2);break;
1005   5                      default: break;      
1006   5                         }
1007   4                       break;
1008   4      
1009   4                       default: break;
1010   4                  }
1011   3            break;
1012   3      
1013   3                case 0x20:  //类请求
1014   3            Prints("USB类请求.\r\n");
1015   3                 switch(Control_Data.DeviceRequest.bmRequestType&0x1F)
1016   3                  {
1017   4                       case 0:    //接收者为设备
1018   4                   switch (Control_Data.DeviceRequest.bRequest)
1019   4                    {                           
1020   5                         default: break;
1021   5                        }
1022   4                       break;
1023   4      
1024   4                       case 1:   //接收者为接口
1025   4                    switch (Control_Data.DeviceRequest.bRequest)
1026   4                         {
1027   5                  case   SET_REPORT: set_report();   break; //设置报告
1028   5                  case     SET_IDLE: set_idle();     break; //设置空闲
1029   5                  case SET_PROTOCOL: set_protocol(); break; //设置协议
1030   5                          default: break;
1031   5                      }
1032   4                       
1033   4                       break;
1034   4      
1035   4                       case 2:   //接收者为端点
1036   4                        switch (Control_Data.DeviceRequest.bRequest)
1037   4                         {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -