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

📄 usb_hid_ad_usb_lib.c

📁 基于义统et44的AD与PWM控制程序,简单的输出输入动作控制程序,可用于自行设定任何控制.
💻 C
📖 第 1 页 / 共 4 页
字号:
                      M_NOP;                      return;                   }                   else if(IAC0 == hub_endpoint80)                   {//. ClearHEndpointStall80                      M_BS1(HEP0TXCSR);                      M_NOP;                      return;                                }                   else if(IAC0 == hub_endpoint81)                   {                      M_BC1(HEP1TXCSR);                      M_NOP;                      return;                                         }                }                  else                {                   temp = IAC0;                   IAP0--;                   switch(temp)                   {                     case 0: //. ClearFEndpointStall00                      M_BC1(EP0RXCSR);                      M_NOP;                      return;                    case 1: //. ClearFEndpointStall01                      if(_USB_EP1)                      {                         if(_USB_EP1_DIR != _IN_DIR)                         {                            M_BC1(EP1CSR);                                               M_NOP;                            return;                         }                         }                      break;                    case 2: //. ClearFEndpointStall02                      if(_USB_EP2)                      {                         if(_USB_EP2_DIR != _IN_DIR)                         {                            M_BC1(EP2CSR);                                               M_NOP;                            return;                         }                         }                      break;                    case 3: //. ClearFEndpointStall03                          if(_USB_EP3)                      {                         if(_USB_EP3_DIR != _IN_DIR)                         {                            M_BC1(EP3CSR);                                               M_NOP;                            return;                         }                         }                      break;                    case 80: //. ClearFEndpointStall80                       M_BC1(EP0TXCSR);                       M_NOP;                       return;                    case 81: //. ClearFEndpointStall81                       if(_USB_EP1 )                       {                          if(_USB_EP1_DIR == _IN_DIR)                          {                                       M_BC1(EP1CSR);                             M_NOP;                             return;                         }                       }                       break;                    case 82: //. ClearFEndpointStall82                      if(_USB_EP2 )                      {                         if(_USB_EP2_DIR == _IN_DIR)                         {                                      M_BC1(EP2CSR);                            M_NOP;                            return;                         }                      }                      break;                    case 83: //. ClearFEndpointStall83                      if(_USB_EP3 )                      {                         if(_USB_EP3_DIR == _IN_DIR)                         {                                      M_BC1(EP3CSR);                            M_NOP;                            return;                         }                      }                      break;                    }                }              }                       }       }       if(_RT0X02_Request_0X03 &&(TEMP_UREG ==request_set_feature))          {//. SetEndpointStall          if(_RT0X02_R0X03_Value0000 && (IAC0 = endpoint_stalled))          {             IAP0++;             if(_USB_HUB && M_ISBC1(USB_STATUS))             {                if(IAC0==0)                {//. SetHEndpointStall00                   M_BS1(HEP0RXCSR);                   M_NOP;                   return;                }                else if(IAC0 == hub_endpoint80)                {//. SetHEndpointStall80                   M_BS1(HEP0TXCSR);                   M_NOP;                   return;                             }                else if(IAC0 == hub_endpoint81)                {//. SetHEndpointStall81                   M_BC1(HEP1TXCSR);                   M_NOP;                   return;                                      }             }               else             {               temp = IAC0;               IAP0--;                         switch(temp)               {                  case 0: //. SetFEndpointStall00                    M_BS1(EP0RXCSR);                    M_NOP;                    return;                  case 1: //. SetFEndpointStall01                    if(_USB_EP1)                    {                       if(_USB_EP1_DIR != _IN_DIR)                       {                          M_BS1(EP1CSR);                                             M_NOP;                          return;                       }                       }                    break;                  case 2: //. SetFEndpointStall02                     if(_USB_EP2)                     {                        if(_USB_EP2_DIR != _IN_DIR)                        {                           M_BS1(EP2CSR);                                              M_NOP;                           return;                        }                        }                     break;                  case 3: //. SetFEndpointStall03                         if(_USB_EP3)                     {                        if(_USB_EP3_DIR != _IN_DIR)                        {                           M_BS1(EP3CSR);                                              M_NOP;                           return;                        }                        }                     break;                  case 80: //. SetFEndpointStall80                     M_BS1(EP0TXCSR);                     M_NOP;                     return;                  case 81: //. SetFEndpointStall81                     if(_USB_EP1 )                     {                        if(_USB_EP1_DIR == _IN_DIR)                        {                                     M_BS1(EP1CSR);                           M_NOP;                           return;                        }                     }                     break;                  case 82: //. SetFEndpointStall82                     if(_USB_EP2 )                     {                       if(_USB_EP2_DIR == _IN_DIR)                        {                                     M_BS1(EP2CSR);                           M_NOP;                           return;                        }                     }                     break;                  case 83: //. ClearFEndpointStall83                     if(_USB_EP3 )                     {                        if(_USB_EP3_DIR == _IN_DIR)                        {                                     M_BS1(EP3CSR);                           M_NOP;                           return;                        }                     }                     break;                 }             }             }       }       //. call _ADD_USB_RT0X02_Request       AddUsbRt0x02Request();           }    //. RequestType80    else if(_RequestType_0X80 && (TEMP_UREG==0x80))    {//. Get Status       TEMP_UREG = IAC0;              if(_RT0X80_Request_0X00 && (TEMP_UREG == request_get_status))       {//. GetDeviceStatus          if(_USB_HUB && M_ISBC1(USB_STATUS))          {             HEP0TXCTR = 2;             M_NOP;                          nHwLength = 0;             /*             HwLengthL = 0;             HwLengthH = 0;              */             _asm              SHRA  _HGSR,3              AND   A,#0b00000011              MOV	_HEP0TXDAR,A              NOP              NOP              NOP              MOV   A,#0b00000000              MOV   _HEP0TXDAR,A              NOP              NOP              NOP             _endasm;             return;           }          else          {             EP0TXCTR = 2;             M_NOP;                          nwLength = 0;             //wLengthL = 0;             //wLengthH = 0;             EP0TXDAR = 0;             M_NOP;             EP0TXDAR = 0;             M_NOP;             return;                                 }       }       // Get Descriptor       else if(_RT0X80_Request_0X06 && (TEMP_UREG == request_get_descriptor))       {//. GetDescriptor          IAP0++;          M_NOP;          TEMP_UREG = IAC0;          if(_RT0X80_R0X06_Value0100 && (TEMP_UREG == descriptor_types_device))                 {//. GetDeviceDescriptor                                    if(_USB_HUB && M_ISBS1(USB_STATUS))             {//. HGetConfigDesc_1                _asm                  MOV A,#High(_Hub_device_desc_table<<1)                  MOV _HTBL,A                  MOV A,#LOW(_Hub_device_desc_table<<1)                  MOV _LTBL,A                  NOP                  NOP                  TBRD _HTBLL                _endasm;                                                    //. call hTransmitTable                HubTransmitTable();                return;             }             else             {//. FcConfigDescriptor                _asm                  MOV A,#High(_Fc_device_desc_table<<1)                  MOV _HTBL,A                  MOV A,#LOW(_Fc_device_desc_table<<1)                  MOV _LTBL,A                  NOP                  NOP                  TBRD _TBLL                _endasm;                                              fTransmitTable();                return;             }           }          else if(_RT0X80_R0X06_Value0200 && (TEMP_UREG == descriptor_types_configuration))                 {//. GetConfigDescriptor             if(_USB_HUB && M_ISBC1(USB_STATUS))             {               // psz = &Hub_config_desc_table;                HTBLL = *(psz+2);                LTBL -=2;                                          HubTransmitTable();                return;                          }             else             {//. FcConfigDescriptor                _asm                  MOV A,#High(_Fc_config_desc_table<<1)                  MOV _HTBL,A                  MOV A,#LOW(_Fc_config_desc_table<<1)                  MOV _LTBL,A                  MOV A,#0x02                  ADD _LTBL,A                  NOP                  NOP                  TBRD _TBLL                  SUB _LTBL,A                _endasm;                                              fTransmitTable();                return;             }                   }          else if(_RT0X80_R0X06_Value0300 && (TEMP_UREG == descriptor_types_string))                 { //. STRING_COMMAND             if(wValueL==0)             {//. String_langid                _asm                  MOV A,#High(_String_langid_table<<1)                  MOV _HTBL,A                  MOV A,#LOW(_String_langid_table<<1)                  MOV _LTBL,A                  NOP                  NOP                  TBRD _TBLL                _endasm;                                              fTransmitTable();                return;             }             if(ET_USB_HD_iManufacture && (wValueL ==ET_USB_HD_iManufacture))             {//. String_index_HManufacture              //. call macro _ADD_USB_STRING_INDEX_HM                _asm                  MOV A,#High(_String_index_HManufacture_table<<1)                  MOV _HTBL,A                  MOV A,#LOW(_String_index_HManufacture_table<<1)                  MOV _LTBL,A                  NOP                  NOP                  TBRD _TBLL                _endasm;                                              fTransmitTable();                return;             }                              if(ET_USB_HD_iProduct && (wValueL == ET_USB_HD_iProduct))             {//. String_index_HProduct              //. call macro _ADD_USB_STRING_INDEX_HP                _asm                  MOV A,#High(_String_index_HManufacture_table<<1)                  MOV _HTBL,A                  MOV A,#LOW(_String_index_HManufacture_table<<1)                  MOV _LTBL,A                  NOP                  NOP                  TBRD _TBLL                _endasm;                                              fTransmitTable();                return;             }               if(ET_USB_HD_iSerialNumber && (wValueL == ET_USB_HD_iSerialNumber))             {//. String_index_HSerialNumber              //. call macro _ADD_USB_STRING_INDEX_HS              // null function             }             if(ET_USB_HC_iConfiguration && (wValueL == ET_USB_HC_iConfiguration))             {//. String_index_HConfiguration              //. call macro _ADD_USB_STRING_INDEX_HC              // null function             }             if(ET_USB_HI_iInterface && (wValueL == ET_USB_HI_iInterface))             {//. String_index_HInterface              //. call macro _ADD_USB_STRING_INDEX_HI              // null function             }               if(ET_USB_DD_iManufacture && (wValueL == ET_USB_DD_iManufacture))             {//. String_index_DManufacture              //. call macro _ADD_USB_STRING_INDEX_HM              // null function              /*                psz = &String_index_HManufacture_table;                TBLL = *psz;              */                _asm                  MOV A,#High(_String_index_DManufacture_table<<1)                  MOV _HTBL,A                  MOV A,#LOW(_String_index_DManufacture_table<<1)                  MOV _LTBL,A                  NOP                  NOP                  TBRD _TBLL                _endasm;                                              fTransmitTable();                return;             }                           if(ET_USB_DD_iProduct && (wValueL == ET_USB_DD_iProduct))             {//. String_index_DProduct              //. call macro _ADD_USB_STRING_INDEX_HP              // null function              /*                psz = &String_index_HProduct_table;                TBLL = *psz;              */                _asm                  MOV A,#High(_String_index_DProduct_table<<1)                  MOV _HTBL,A                  MOV A,#LOW(_String_index_DProduct_table<<1)                  MOV _LTBL,A                  NOP                  NOP                  TBRD _TBLL                _endasm;                                                    fTransmitTable();                return;             }               if(ET_USB_DD_iSerialNumber && (wValueL == ET_USB_DD_iSerialNumber))             {//. String_index_DSerialNumber              //. call macro _ADD_USB_STRING_INDEX_HS                _asm                  MOV A,#High(_String_index_DSerial_table<<1)                  MOV _HTBL,A                  MOV A,#LOW(_String_index_DSerial_table<<1)                  MOV _LTBL,A                  NOP                  NOP                  TBRD _TBLL                _endasm;                                                    fTransmitTable();                return;                                          // null function             }             if(ET_USB_CD_iConfiguration && (wValueL == ET_USB_CD_iConfiguration))             {//. String_index_DConfiguration              //. call macro _ADD_USB_STRING_INDEX_HC              // null function             }                                                              }                }         // Get Configuration        else if(_RT0X80_Request_0X08 && (TEMP_UREG ==request_get_configuration))       {//. GetConfiguration          if(_USB_HUB && M_ISBC1(USB_STATUS))          {//. GetFcConfig             HEP0TXCTR = 1;             M_NOP;             nHwLength = 0;             if(M_ISBS5(HGSR))             {                HEP0TXDAR = 1;             }             else             {                HEP0TXDAR = 0;             }             M_NOP;             return;            }          else          {             EP0TXCTR = 1;             M_NOP;             nwLength = 0;             if(M_ISBS4(FC_STATUS))             {                EP0TXDAR = 1;             }             else             {                EP0TXDAR = 0;             }             M_NOP;             return;                                                        }       }       //. call macro _ADD_USB_RT0X80_Request                AddUsbRt0x80Request();    }// end of RequestType80        //. RequestType81    else if(_RequestType_0X81 && (TEMP_UREG == 0x81))    {//. RequestType81       TEMP_UREG = IAC0;       if(_RT0X81_Request_0X00 && (TEMP_UREG ==request_get_status))       {//. GetInterfaceStatus           if(_USB_HUB && M_ISBC1(USB_STATUS))           {              HEP0TXCTR = 1;              M_NOP;              nHwLength = 0;              HEP0TXDAR = 0;              M_NOP;              return;                      }           EP0TXCTR = 1;           M_NOP;           nwLength = 0;           EP0TXDAR = 0;           M_NOP;           return;       }        else if(_RT0X81_Request_0X06 && (TEMP_UREG == request_get_descriptor))       {//. HID_report_descriptor          if(_RT0X81_R0X06_Value2100 && (wValueH == descriptor_types_HID))          {//. Descriptor_type_21                          if((_USB_HID)&&(wIndexL==0))             {// call macro _ADD_USB_HID_DESCRIPTION_SUB             /*                psz = &Descriptor_type_21_index00_table;                TBLL = *psz;              */                _asm                  MOV A,#High(_Descriptor_type_21_index_0_0_table<<1)                  MOV _HTBL,A                  MOV A,#LOW(_Descriptor_type_21_index_0_0_table<<1)                  MOV _LTBL,A                  NOP                  NOP                  TBRD _TBLL                _endasm;                                                                                 fTransmitTable();                return;             }             // use #if to reduce code             #if(ET_USB_CD_bNumInterface==2)             if(wIndexL==1)             {//. call macro _ADD_USB_HID_DESCRIPTION_SUB1                _asm                  MOV A,#High(_Descriptor_type_21_index_1_0_table<<1)                  MOV _HTBL,A                  MOV A,#LOW(_Descriptor_type_21_index_1_0_table<<1)                  MOV _LTBL,A                  NOP                  NOP                  TBRD _TBLL                _endasm;                                                      fTransmitTable();                return;                          }             #endif                    }            if(_RT0X81_R0X06_Value2200 && (wValueH == descriptor_types_Report))          {//. Descriptor_type_22                      if((_USB_HID)&&(wIndexL==0))             {//. call macro _ADD_USB_HID_REPORT_SUB1                //psz = &Descriptor_type_22_index00_table;                _asm                  MOV A,#High(_Descriptor_type_22_index_0_0_table<<1)                  MOV _HTBL,A

⌨️ 快捷键说明

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