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

📄 usb_hid_ad_usb_lib.c

📁 基于义统et44的AD与PWM控制程序,简单的输出输入动作控制程序,可用于自行设定任何控制.
💻 C
📖 第 1 页 / 共 4 页
字号:
                  MOV A,#Low(_Descriptor_type_22_index_0_0_table<<1)                  MOV _LTBL,A                  _endasm;                TBLL = ET_USB_HID_wDescriptorLength_0_0;                fTransmitTable();                return;                              }             #if(ET_USB_CD_bNumInterface==2)             if(wIndexL ==1)             {//. call macro _ADD_USB_HID_REPORT_SUB2             /*                psz = &Descriptor_type_22_index01_table;                TBLL = ET_USB_HID_wDescriptorLength1;                */                _asm                  MOV A,#High(_Descriptor_type_22_index_1_0_table<<1)                  MOV _HTBL,A                  MOV A,#Low(_Descriptor_type_22_index_1_0_table<<1)                  MOV _LTBL,A                  _endasm;                TBLL = ET_USB_HID_wDescriptorLength_1_0;                                  fTransmitTable();                return;                          }             #endif             }                 else if(_RT0X81_R0X06_Value2300 && (wValueH == descriptor_types_Physical))          {//. Descriptor_type_23          //. call macro _ADD_USB_HID_PHYSCIAL_SUB                              }                   }          else if(_RT0X81_Request_0X0A && (TEMP_UREG == request_get_interface))       {//. GetInterface           if(_USB_HUB && M_ISBC1(USB_STATUS))           {              HEP0TXCTR = 1;              M_NOP;              nHwLength = 0;              _asm                MOV A,#0x00                MOV _HEP0TXDAR,A              _endasm;                M_NOP;              return;                      }           //. GetFcInterfaceStatus           EP0TXCTR = 1;           M_NOP;           nwLength = 0;           _asm             MOV A,#0x00             MOV _EP0TXDAR,A           _endasm;            M_NOP;           return;                         }               }// end of RequestType81        else if(_RequestType_0X82 && (TEMP_UREG == 0x82))    {//. RequestType82       if(_RT0X82_Request_0X00 && (IAC0 == request_get_status))       {//. GetEndpointStatus          if(_USB_HUB && M_ISBS1(USB_STATUS))          {             _asm              MOV A,#_HEP0RXCSR              MOV _IAP0,A             _endasm;                                if(HwIndexL!=0)                IAP0++;                else if(HwIndexL!=hub_endpoint80)                IAP0++;             HEP0TXCTR = 2;             nHwLength = 0;             if(M_ISBS1(IAC0))                HEP0TXDAR = 1;             else             {                _asm                 MOV A,#0x00                 MOV _HEP0TXDAR,A                _endasm;               //  HEP0TXDAR = 0;                      }                                   M_NOP;             return;                        }          //. GetFcEndpointStatus          temp = wIndexL;          switch(temp)          {             case 0: //. check_fc_ep00             {                _asm                  MOV A,#_EP0TXCSR                _endasm;                                          }             case 1: //. check_fc_ep01             {                if(_USB_EP1 && (_USB_EP1_DIR == _OUT_DIR))                {                   _asm                     MOV A,#_EP1CSR                   _endasm;                                     }                  else                    break;              }             case 2: //. check_fc_ep02             {                if(_USB_EP2 && (_USB_EP2_DIR == _OUT_DIR))                {                   _asm                     MOV A,#_EP2CSR                   _endasm;                                     }                      else                   break;             }             case 3: //. check_fc_ep03                break;                          case 80: //. check_fc_ep80             {                _asm                   MOV A,#_EP0RXCSR                _endasm;                                                           }             case 81: //. check_fc_ep81             {                if(_USB_EP1 && (_USB_EP1_DIR == _IN_DIR))                {                    _asm                     MOV A,#_EP1CSR                   _endasm;                                     }                      else                    break;             }             case 82: //. check_fc_ep82             {                if(_USB_EP2 && (_USB_EP2_DIR == _IN_DIR))                {                   _asm                     MOV A,#_EP2CSR                   _endasm;                                     }                      else                    break;             }             case 83: //. check_fc_ep83             {                break;             }             default:             //. check_fc_end              _asm                MOV _IAP0,A              _endasm;              EP0TXCTR = 1;              M_NOP;              nwLength = 0;              if(M_ISBS1(IAC0))                 EP0TXDAR = 1;              else                 EP0TXDAR = 0;              return;                        }       }       //. call macro _ADD_USB_RT0X82_Request       AddUsbRt0x82Request();       //goto  UNKNOWN_bRequest;    }        else if(_RequestType_0X20 && (TEMP_UREG == 0x20))    {//. RequestType20       TEMP_UREG = IAC0;       if(_RT0X20_Request_0X01 && (TEMP_UREG == request_clear_feature) && _USB_HUB)       {//. ClearHubFeature          if(HwValueL == c_hub_local_power)          {//. ClearLocalPowerChange             M_BC2(HSR);          }          else if(HwValueL == c_hub_over_current)          {//. ClearOverCurrentChange             M_BC3(HSR);          }          M_BC0(STATUS_BUF);          M_NOP;          return;                    }       else if(_RT0X20_Request_0X03 && (TEMP_UREG == request_set_feature) &&_USB_HUB )       {//. SetHubFeature             return;       }         else if(_RT0X20_Request_0X06 && (TEMP_UREG == request_set_descriptor))       {//. SetHubDescriptor                     }       //. call macro _ADD_USB_RT0X20_Request       AddUsbRt0x20Request();           }    else if(_RequestType_0X21 && (TEMP_UREG == 0x21))    {//. RequestType21       TEMP_UREG = IAC0;       if(_RT0X21_Request_0X09 && (TEMP_UREG == request_set_report))       {//. SetReport          M_BS2(FC_STATUS);          return;              }        if(_RT0X21_Request_0X0A && (TEMP_UREG == request_set_idle))       {//. SetIdleReport          IDLE_TIMER = wValueH;          EP0TXCTR = 0;          M_NOP;          return;              }            if(_RT0X21_Request_0X0B && (TEMP_UREG == request_set_protocol))       {//. SetProtocolReport          PROTOCOL = wValueL;          EP0TXCTR = 0;          M_NOP;          return;              }                //. call macro  _ADD_USB_RT0X21_Request       AddUsbRt0x21Request();    }    else if(_RequestType_0X23 && (TEMP_UREG == 0x23))    {//. RequestType23       TEMP_UREG = IAC0;       if(_RT0X23_Request_0X01 &&(TEMP_UREG==request_clear_feature))       {//. ClearPortFeature          if(_USB_HUB)          {             unsigned char temp=HwIndexL;             temp--;             // check port number = 1~4 ?             if((252 & temp))             {                M_BS0(USB_STATUS);                return;                       }             else if(HwValueL == port_enable)             {//. ClearPort_ENABLE                HPCONR = HwIndexL + 152;// 0b10011000                M_NOP;                return;             }             else if(HwValueL == port_suspend)             {//. ClearPortSuspend                HPCONR = HwIndexL + 160;// 0b10100000                M_NOP;                return;             }               else if(HwValueL == port_power)             {//. ClearPortPower                HPCONR = HwIndexL + 168;// 0b10101000                M_NOP;                return;             }                          if(HwIndexL ==1 )                M_BC1(STATUS_BUF);             else if(HwIndexL ==2 )                M_BC2(STATUS_BUF);             else if(HwIndexL ==3 )                M_BC3(STATUS_BUF);             else if(HwIndexL ==4 )                M_BC4(STATUS_BUF);                             if(!(30 & STATUS_BUF))                M_BS3(HUB_STATUS);                          //. ClearPortFeature_change             if(HwValueL == c_port_connection)             {//. ClearPortConnectionChange              //. CALL	SEARCH_CHANGE_PORT                SearchChangePort();                M_BC0(IAC0);                M_NOP;                return;             }             else if(HwValueL == c_port_enable)             {//. ClearPort_ENABLEChange              //. CALL	SEARCH_CHANGE_PORT                SearchChangePort();                M_BC1(IAC0);                M_NOP;                return;             }             else if(HwValueL == c_port_suspend)             {//. ClearPortSuspendChange              //. CALL	SEARCH_CHANGE_PORT                SearchChangePort();                M_BC2(IAC0);                M_NOP;                return;             }             else if(HwValueL == c_port_over_current)             {//. ClearPortOverCurrentChange              //. CALL	SEARCH_CHANGE_PORT                SearchChangePort();                M_BC3(IAC0);                M_NOP;                return;             }             else if(HwValueL == c_port_reset)             {//. ClearPortResetChange              //. CALL	SEARCH_CHANGE_PORT                SearchChangePort();                M_BC4(IAC0);                M_NOP;                return;             }          }       }       else if(_RT0X23_Request_0X03 &&(TEMP_UREG==request_set_feature))       {//. SetPortFeature         if(_USB_HUB)         {            unsigned char temp=HwIndexL;            temp--;            // check port number = 1~4 ?            if((252 & temp))            {                M_BS0(USB_STATUS);                return;                      }                        if(HwValueL == port_reset)            {//. SetPortReset               HPCONR = HwIndexL + 136;//0b10001000               M_NOP;               //.//Embedded port?               if(temp==1)               {                  M_BS4(GCNTR);                  M_NOP;                  FAR = 0;                  M_NOP;                  ADDRESS_BUFf = 0;               }               return;                        }            if(HwValueL == port_power)            {//. SetPortPower               HPCONR = HwIndexL + 144;//0b10010000               M_NOP;               return;                        }            if(HwValueL == port_suspend)            {//. SetPortSuspend               if(temp==1)               {                  M_NOP;               }               HPCONR = HwIndexL + 128;//0b10010000               M_NOP;               return;                        }            return;                  }              }       //. call macro _ADD_USB_RT0X23_Request       AddUsbRt0x23Request();    }    else if(_RequestType_0XA0 && (TEMP_UREG == 0xA0))    {//. RequestTypeA0       TEMP_UREG = IAC0;       if(_RT0XA0_Request_0X00 &&(TEMP_UREG==request_get_status) && _USB_HUB)       {//. GetHubStatus             HEP0TXCTR = 4;             nHwLength = 0;             HEP0TXDAR = HSR + 3;             M_NOP;             _asm               MOV A,#0x00               MOV _HEP0TXDAR,A             _endasm;               M_NOP;             _asm               MOV A,_HSR               SHRA _HSR,2               AND A,#0b00000011               MOV _HEP0TXDAR,A             _endasm;             M_NOP;             _asm               MOV A,#0x00               MOV _HEP0TXDAR,A             _endasm;               M_NOP;                          return;                   }       else if(_RT0XA0_Request_0X06 &&(TEMP_UREG==request_get_descriptor) && _USB_HUB)       {//. GetHubDescriptor            //  psz = &Hub_class_desc_table;             HTBLL = *psz;             HubTransmitTable();             return;       }       //. call macro _ADD_USB_RT0XA0_Request       AddUsbRt0xA0Request();    }        else if(_RequestType_0XA1 && (TEMP_UREG == 0xA1))    {//. RequestTypeA1       TEMP_UREG = IAC0;       if(_RT0XA1_Request_0X01 &&(TEMP_UREG==request_get_report))       {//. GetReport          M_BS5(FC_STATUS);          //. call macro _ADD_USB_GET_REPORT_SUB          AddUsbGetReportSub();          return;       }       else if(_RT0XA1_Request_0X02 &&(TEMP_UREG==request_get_idle))       {//. GetIdleReport          EP0TXCTR = 1;          M_NOP;          EP0TXDAR = IDLE_TIMER;          M_NOP;          return;       }       else if(_RT0XA1_Request_0X03 &&(TEMP_UREG==request_get_protocol))       {//. GetProtocolReport          EP0TXCTR = 1;          M_NOP;          EP0TXDAR = PROTOCOL;          M_NOP;          return;       }       //. call macro  _ADD_USB_RT0XA1_Request       AddUsbRt0xA1Request();    }    else if(_RequestType_0XA3 && (TEMP_UREG == 0xA3))    {//. RequestTypeA3       TEMP_UREG = IAC0;       if(_RT0XA3_Request_0X00 &&(TEMP_UREG==request_get_status) && _USB_HUB)       {//. GetPortStatus             unsigned char temp=HwIndexL;             temp--;             if((252 & temp))             {                M_BS0(USB_STATUS);                return;                       }             HEP0TXCTR = 4;             M_NOP;             nHwLength = 0;                          _asm               MOV A,#_HSR               ADD A,_HwIndexL               MOV _IAP0,A               NOP               MOV A,_IAC0               DEC _IAP0               AND A,#0b00011111               MOV _HEP0TXDAR,A             _endasm;                          M_NOP;                          _asm               RLCA	_IAC0,4               AND	A,#0b00000011               MOV	_HEP0TXDAR,A             _endasm;                           M_NOP;                         _asm               MOV	A,#_HPSR4-_HSR-1               ADD	_IAP0,A               NOP               MOV	A,_IAC0               AND	A,#0b00011111               MOV	_HEP0TXDAR,A             _endasm;                         M_NOP;                         _asm               MOV	A,#0b00000000               MOV	_HEP0TXDAR,A             _endasm;                           M_NOP;             return;                    }       else if(_RT0XA3_Request_0X02 &&(TEMP_UREG==request_get_state) && _USB_HUB)       {//. GetBusState             unsigned char temp;                          HEP0TXCTR = 1;             M_NOP;             nHwLength = 0;                          temp=HwIndexL;             temp--;             if((252 & temp))             {                M_BS0(USB_STATUS);                return;                       }                             if(HwIndexL == 1)             {//. Port1State                _asm                  MOV	A,_HPSTAR1                _endasm;               }             else if(HwIndexL == 2)             {//. Port2State                _asm                  SHRA _HPSTAR1,2                _endasm;             }             else if(HwIndexL == 3)             {//. Port3State                _asm                  SHRA	_HPSTAR1,4                _endasm;                          }               else if(HwIndexL == 4)             {//. Port3State                _asm                  RLCA	_HPSTAR1,3                _endasm;                          }               //. put_data             _asm               AND A,#0b00000011             _endasm;               if(M_ISBC2(STATUS))             {                _asm                  XOR A,#0b00000011                _endasm;             }             _asm              MOV _HEP0TXDAR,A             _endasm;                            M_NOP;             return;           }       //. call macro _ADD_USB_RT0XA3_Request       AddUsbRt0xA3Request();       return;    }    else    {    //. call macro _ADD_USB_bmRequestType       AddUsbBmRequestType();       return;    }/*UNKNOWN_bRequest:  UNKNOWN_wValueL:UNKNOWN_wIndex:UNKNOWN_wLength:UNDEFINE_COMMAND:*/    M_BS0(USB_STATUS);    return;    }

⌨️ 快捷键说明

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