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

📄 usbofcompuer00.lst

📁 基于PHILIPS的D12芯片USB固件的源代码
💻 LST
📖 第 1 页 / 共 5 页
字号:
              #endif
1019   1      }
1020          /******************************************************************************/
1021          
1022          /**********************获取空闲状态*********************************************/
1023          void get_idle(void)
1024          {
1025   1      #ifdef debug
               Prints("    获取空闲.\r\n");
              #endif
1028   1       write_endpoint_buff(1,1,&idle);
1029   1       usb_flags.flags.usb_endp0_in=0;
1030   1      }
1031          /******************************************************************************/
1032          
1033          /*************************获取协议**********************************************/
1034          void get_protocol(void)
1035          {
1036   1      #ifdef debug
               Prints("    获取协议.\r\n");
              #endif
1039   1       write_endpoint_buff(1,1,&protocol);
1040   1       usb_flags.flags.usb_endp0_in=0;
1041   1      }
1042          /******************************************************************************/
1043          
1044          /***********************设置报告***********************************************/
1045          void set_report(void)
C51 COMPILER V7.06   USBOFCOMPUER00                                                        03/13/2008 12:38:31 PAGE 18  

1046          {
1047   1      #ifdef debug
               Prints("    设置报告.\r\n");
              #endif
1050   1      }
1051          /******************************************************************************/
1052          
1053          /***********************设置空闲***********************************************/
1054          void set_idle(void)
1055          {
1056   1      #ifdef debug
               Prints("    设置空闲.\r\n");
              #endif
1059   1       while(select_endpoint(1)&0x01);
1060   1       write_endpoint_buff(1,0,0);
1061   1       idle=Control_Data.DeviceRequest.wValue;
1062   1       usb_flags.flags.usb_endp0_in=0;
1063   1       usb_flags.flags.setup_packet_out=0;
1064   1      }
1065          /******************************************************************************/
1066          
1067          /**********************设置协议**************************************************/
1068          void set_protocol(void)
1069          {
1070   1      #ifdef debug
               Prints("    设置协议.\r\n");
              #endif
1073   1       while(select_endpoint(1)&0x01);
1074   1       write_endpoint_buff(1,0,0);
1075   1       protocol=Control_Data.DeviceRequest.wValue;
1076   1       usb_flags.flags.usb_endp0_in=0;
1077   1       usb_flags.flags.setup_packet_out=0;
1078   1      }
1079          /******************************************************************************/
1080          
1081          /****************************终端点0输入处理**************************************/
1082          void endp0_in(void)
1083          {
1084   1       read_last_status(1);
1085   1       //如果是输入请求包
1086   1       if(usb_flags.flags.setup_packet_in||usb_flags.flags.not_end)
1087   1        {
1088   2          switch(Control_Data.DeviceRequest.bmRequestType&0x60)
1089   2               {
1090   3                 case 0x00:  //标准请求
1091   3                 #ifdef debug
                         Prints("USB标准输入请求.\r\n");
                         #endif
1094   3                 switch(Control_Data.DeviceRequest.bmRequestType&0x1F)
1095   3                  {
1096   4                       case 0: //到设备
1097   4                         switch (Control_Data.DeviceRequest.bRequest)
1098   4                          {
1099   5                           case 0: get_status(0);break;
1100   5                           case 6: get_descriptor();break;
1101   5                           case 8: get_configuration();break;
1102   5                               default:break;
1103   5                          }
1104   4                       break;
1105   4      
1106   4                       case 1:  //到接口
1107   4                         switch (Control_Data.DeviceRequest.bRequest)
C51 COMPILER V7.06   USBOFCOMPUER00                                                        03/13/2008 12:38:31 PAGE 19  

1108   4                          {
1109   5                       case  0: get_status(1);break;
1110   5                                case 6: get_descriptor_interface();break;
1111   5                           case 10: get_interface();break;
1112   5                       default: break;
1113   5                              }
1114   4                       break;
1115   4      
1116   4                       case 2:  //到端点
1117   4                        {
1118   5                     if(Control_Data.DeviceRequest.bRequest==0)get_status(2);  
1119   5                        }
1120   4                       default: break;
1121   4                  }
1122   3                 break;
1123   3      
1124   3                 case 0x20:  //类请求
1125   3                 #ifdef debug
                     Prints("USB类输入请求.\r\n");
                         #endif
1128   3                 switch(Control_Data.DeviceRequest.bmRequestType&0x1F)
1129   3                  {
1130   4                       case 0:  //到设备
1131   4                         switch (Control_Data.DeviceRequest.bRequest)
1132   4                          {
1133   5                               default:break;
1134   5                          }
1135   4                       break;
1136   4      
1137   4                       case 1:  //到接口
1138   4                         switch (Control_Data.DeviceRequest.bRequest)
1139   4                          {
1140   5      
1141   5                               case   GET_REPORT: get_report();   break; //获取报告
1142   5                   case     GET_IDLE: get_idle();     break; //获取空闲状态
1143   5                   case GET_PROTOCOL: get_protocol(); break; //获取协议
1144   5                       default: break;
1145   5                              }
1146   4                       break;
1147   4      
1148   4                       case 2:  //到端点
1149   4                        {
1150   5                         switch (Control_Data.DeviceRequest.bRequest)
1151   5                          {
1152   6                       default: break;
1153   6                              }  
1154   5                        }
1155   4                       default: break;
1156   4                  }
1157   3                 break;
1158   3      
1159   3                 case 0x40:  //用户请求
1160   3                 #ifdef debug
                     Prints("USB用户输入请求.\r\n");
                         #endif
1163   3                 switch(Control_Data.DeviceRequest.bmRequestType&0x1F)
1164   3                  {
1165   4                       case 0:  //到设备
1166   4                         switch (Control_Data.DeviceRequest.bRequest)
1167   4                          {
1168   5                               default: break;
1169   5                          }
C51 COMPILER V7.06   USBOFCOMPUER00                                                        03/13/2008 12:38:31 PAGE 20  

1170   4                   break;
1171   4      
1172   4                       case 1:   //到接口
1173   4                         switch (Control_Data.DeviceRequest.bRequest)
1174   4                          {
1175   5                       default: break;
1176   5                              }
1177   4               break;
1178   4      
1179   4                       case 2:  //到端点
1180   4                        {
1181   5                         switch (Control_Data.DeviceRequest.bRequest)
1182   5                          {
1183   6                       default: break;
1184   6                              }  
1185   5                        }
1186   4                       default: break;
1187   4                  }
1188   3              }
1189   2          return;
1190   2        }
1191   1      
1192   1        //如果是输出请求包
1193   1       if(usb_flags.flags.setup_packet_out) 
1194   1        {
1195   2          switch(Control_Data.DeviceRequest.bmRequestType&0x60)
1196   2               {
1197   3                 case 0x00:  //标准请求
1198   3                 #ifdef debug
                         Prints("USB标准输出请求.\r\n");
                         #endif
1201   3                 switch(Control_Data.DeviceRequest.bmRequestType&0x1F)
1202   3                  {
1203   4                       case 0:   //到设备
1204   4                   switch (Control_Data.DeviceRequest.bRequest)
1205   4                    {
1206   5                         case     CLEAR_FEATURE: clear_feature(0);break;
1207   5                         case       SET_FEATURE: set_feature(0);break;
1208   5                         case       SET_ADDRESS: set_usb_address();break;          //set_address                 
1209   5                         case    SET_DESCRIPTOR: set_descriptor();break;           //set_descriptor
1210   5                         case SET_CONFIGURATION: set_configuration(); break;       //set_configurat                             
1211   5                         default: break;
1212   5                        }
1213   4                       break;
1214   4                       
1215   4                       case 1:   //到接口
1216   4                    switch (Control_Data.DeviceRequest.bRequest)
1217   4                         {
1218   5                          case CLEAR_FEATURE:  clear_feature(1);break;
1219   5                          case   SET_FEATURE:  set_feature(1); break;
1220   5                      case SET_INTERFACE: set_interface();break;
1221   5                          default: break;
1222   5                      }
1223   4                       break;
1224   4                       
1225   4                       case 2:   //到端点
1226   4                        switch (Control_Data.DeviceRequest.bRequest)
1227   4                         {
1228   5                          case CLEAR_FEATURE: clear_feature(2);break;
1229   5                          case   SET_FEATURE: set_feature(2);break;
1230   5                      default: break;      
1231   5                         }
C51 COMPILER V7.06   USBOFCOMPUER00                                                        03/13/2008 12:38:31 PAGE 21  

1232   4                       break;
1233   4      
1234   4                       default: break;
1235   4                  }
1236   3            break;
1237   3      
1238   3                case 0x20:  //类请求
1239   3                #ifdef debug
                    Prints("USB类输出请求.\r\n");
                        #endif
1242   3                 switch(Control_Data.DeviceRequest.bmRequestType&0x1F)
1243   3                  {
1244   4                       case 0:    //接收者为设备
1245   4                   switch (Control_Data.DeviceRequest.bRequest)
1246   4                    {                           
1247   5                         default: break;
1248   5                        }
1249   4                       break;
1250   4      
1251   4                       case 1:   //接收者为接口
1252   4                    switch (Control_Data.DeviceRequest.bRequest)
1253   4                         {
1254   5                  case   SET_REPORT: set_report();   break; //设置报告
1255   5                  case     SET_IDLE: set_idle();     break; //设置空闲
1256   5                  case SET_PROTOCOL: set_protocol(); break; //设置协议
1257   5                          default: break;
1258   5                      }
1259   4                       
1260   4                       break;
1261   4      
1262   4                       case 2:   //接收者为端点
1263   4                        switch (Control_Data.DeviceRequest.bRequest)
1264   4                         {
1265   5                      default: break;      
1266   5                         }
1267   4                       break;
1268   4                       
1269   4                       case 3: //其它接收者
1270   4                        switch (Control_Data.DeviceRequest.bRequest)
1271   4                         {
1272   5                  

⌨️ 快捷键说明

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