📄 et21x130c_usb_lib.c
字号:
IAP0=STACK_IAP0;
USB_Lib_Delay();
}
#endif
#if(_USB_DIS_ANO_INT)
M_ENI;
#endif
return;
}
////////////////////////////////////////////////////////////////////////////////////////
//. IDLE_ISR interrupt function,interrupt vector 0x98
// run when USB Bus Suspend Event Detect
// If you want to add code when USB Bus Suspend Event Detect
// ,revise AddUsbIdleIntSub().
// Call Function:AddUsbIdleIntSub();
////////////////////////////////////////////////////////////////////////////////////////
void Int_IdleInte() interrupt INT_IDLEINTE using USBBANK
{
#if(_USB_AUTO_SET_BANK ||_USB_AUTO_STORE_IAP0)
UsbIntPre();
#endif
STAINTE = 0x0F;
USB_Lib_Delay();
STAINTR = 253; //#0b11111101
USB_Lib_Delay();
M_BS2(GCNTR);
USB_Lib_Delay();
//. call macro _ADD_USB_IDLE_INT_SUB
AddUsbIdleIntSub();
Back_To_Mloop:
#if(_USB_AUTO_STORE_IAP0)
{
IAP0=STACK_IAP0;
USB_Lib_Delay();
}
#endif
#if(_USB_DIS_ANO_INT)
M_ENI;
#endif
return;
}
////////////////////////////////////////////////////////////////////////////////////////
//. RESUME_WAKEUP_ISR interrupt function,interrupt vector 0x98
// call when Function Remote Wake-Up Interrupt
// Call Function:AddUsbWakeup();
////////////////////////////////////////////////////////////////////////////////////////
void Int_FrwpInte() interrupt INT_FRWPINTE using USBBANK
{
#if(_USB_AUTO_SET_BANK ||_USB_AUTO_STORE_IAP0)
UsbIntPre();
#endif
if(M_ISBC2(STAINTR))
{
STAINTE = 7;
USB_Lib_Delay();
}
else
{
STAINTE = 0x0B;
USB_Lib_Delay();
}
//. call macro _ADD_USB_WAKEUP_INT_SUB
AddUsbWakeup();
Back_To_Mloop:
#if(_USB_AUTO_STORE_IAP0)
{
IAP0=STACK_IAP0;
USB_Lib_Delay();
}
#endif
#if(_USB_DIS_ANO_INT)
M_ENI;
#endif
return;
}
////////////////////////////////////////////////////////////////////////////////////////
//. RESUME_WAKEUP_ISR interrupt function,interrupt vector 0x98
// call when Hub EP0 USB RX Event Detect
// Call Function:
////////////////////////////////////////////////////////////////////////////////////////
#if _USB_HUB
void Int_Hint0Rxe() interrupt INT_HINT0RXE using USBBANK
{
#if(_USB_AUTO_SET_BANK ||_USB_AUTO_STORE_IAP0)
UsbIntPre();
#endif
if(M_ISBC0(HEP0RXTR))
{//. h_setup_package
if(M_ISBS1(HEP0RXTR))
HEP0RXTR = 253;// #0b11111101
else
HEP0RXTR = 251;// #0b11111011
USB_Lib_Delay();
_asm
MOV A,#_HbmRequestType
MOV _IAP0,A
NOP
_endasm;
while(M_ISBC3(IAP0))
{//. hReceiveCommand
IAC0 = HEP0RXDAR;
}
if(!nHwLength)
{
HEP0TXCTR = 0;
USB_Lib_Delay();
}
//. skip_hub_nodata_set
M_BC1(USB_STATUS);
M_BC0(USB_STATUS);
//_asm
// MOV A,#_HbmRequestType
//_endasm;
StageOne();
if(M_ISBS0(USB_STATUS))
{//. h_stall
M_BS1(HEP0RXCSR);
USB_Lib_Delay();
M_BS1(HEP0TXCSR);
USB_Lib_Delay();
}
else
{//. next_h_inout
goto Next_H_Inout;
}
}
else
{//. h_out_package
HEP0RXTR = 254; //#0b11111110
USB_Lib_Delay();
}
Next_H_Inout:
M_BC1(HEP0RXCSR);
USB_Lib_Delay();
M_BC1(HEP0TXCSR);
USB_Lib_Delay();
M_BC0(HEP0RXCSR);
USB_Lib_Delay();
M_BC0(HEP0TXCSR);
USB_Lib_Delay();
Back_To_Mloop:
#if(_USB_AUTO_STORE_IAP0)
{
IAP0=STACK_IAP0;
USB_Lib_Delay();
}
#endif
#if(_USB_DIS_ANO_INT)
M_ENI;
#endif
return;
}
#endif
//////////////////////////////////////////////////////////
#if _USB_HUB
//. HIN0_ISR
void Int_Hint0Ine() interrupt INT_HINT0INE using USBBANK
{
#if(_USB_AUTO_SET_BANK ||_USB_AUTO_STORE_IAP0)
UsbIntPre();
#endif
HINTR = 251;// #0b11111011
USB_Lib_Delay();
Back_To_Mloop:
#if(_USB_AUTO_STORE_IAP0)
{
IAP0=STACK_IAP0;
USB_Lib_Delay();
}
#endif
#if(_USB_DIS_ANO_INT)
M_ENI;
#endif
return;
}
#endif
#if _USB_HUB
//. HTX0_ISR
void Int_Hint0Txe() interrupt INT_HINT0TXE using USBBANK
{
#if(_USB_AUTO_SET_BANK ||_USB_AUTO_STORE_IAP0)
UsbIntPre();
#endif
if(M_ISBS1(HINTR))
{//. HTX0_ISR1
HINTR = 253;
USB_Lib_Delay();
HAR = ADDRESS_BUFh;
USB_Lib_Delay();
//. skip_hub_address_set
if(!HTBLL)
{//. exit_htx0
HEP0TXCTR = 0;
USB_Lib_Delay();
}
else if(HwLengthL)
{//. skip_hub_address_set1
nTable = nRomAdr;
USB_Lib_Delay();
HubTransmitTable();
}
else if(!HwLengthH)
{//. exit_htx0
HEP0TXCTR = 0;
USB_Lib_Delay();
}
}
else
{//. HTX1_ISR
M_BC1(HEP1TXCSR);
USB_Lib_Delay();
if(M_ISBS3(HUB_STATUS))
{
M_BC0(HEP1TXCSR);
}
else
{//. not_cleared_yet
M_BS0(HEP1TXCSR);
}
USB_Lib_Delay();
HINTR = 247;//#0b11110111
USB_Lib_Delay();
goto Back_To_Mloop;
}
Next_H_Inout:
M_BC1(HEP0RXCSR);
USB_Lib_Delay();
M_BC1(HEP0TXCSR);
USB_Lib_Delay();
M_BC0(HEP0RXCSR);
USB_Lib_Delay();
M_BC0(HEP0TXCSR);
USB_Lib_Delay();
Back_To_Mloop:
#if(_USB_AUTO_STORE_IAP0)
{
IAP0=STACK_IAP0;
USB_Lib_Delay();
}
#endif
#if(_USB_DIS_ANO_INT)
M_ENI;
#endif
return;
}
#endif
#if _USB_HUB
//. HPSTSC_ISR
void Int_HpstscInte() interrupt INT_HPSTSCINTE using USBBANK
{
#if(_USB_AUTO_SET_BANK ||_USB_AUTO_STORE_IAP0)
UsbIntPre();
#endif
M_BC3(HUB_STATUS);
HINTR = 127; //#0b01111111
USB_Lib_Delay();
if(12 & HSR) //#0b00001100
M_BS0(STATUS_BUF);
if(31 & HPSCR1)//#0b00011111
M_BS1(STATUS_BUF);
if(31 & HPSCR2)//#0b00011111
M_BS2(STATUS_BUF);
if(31 & HPSCR3)//#0b00011111
M_BS3(STATUS_BUF);
if(31 & HPSCR4)//#0b00011111
M_BS4(STATUS_BUF);
if(!(30 & STATUS_BUF) && M_ISBC0(STATUS_BUF))//#0b00011110
{//. response_nak
// if(M_ISBC0(STATUS_BUF))
{
M_BC1(HEP1TXCSR);
USB_Lib_Delay();
M_BC0(HEP1TXCSR);
USB_Lib_Delay();
goto Back_To_Mloop;
}
}
_asm
MOV _HEP1TXDAR,A
_endasm;
USB_Lib_Delay();
//. CHECK_PORT1_STATUS
if(M_ISBS1(STATUS_BUF))
{
_asm
MOV A,#_HSR+1
MOV _IAP0,A
NOP
_endasm;
if(M_ISBS4(IAC0))
goto NOT_ENABLE_HEP1;
}
if(M_ISBS1(STATUS_BUF))
{
_asm
MOV A,#_HSR+2
MOV _IAP0,A
NOP
_endasm;
if(M_ISBS4(IAC0))
goto NOT_ENABLE_HEP1;
}
if(M_ISBS1(STATUS_BUF))
{
_asm
MOV A,#_HSR+3
MOV _IAP0,A
NOP
_endasm;
if(M_ISBS4(IAC0))
goto NOT_ENABLE_HEP1;
}
if(M_ISBS1(STATUS_BUF))
{
_asm
MOV A,#_HSR+4
MOV _IAP0,A
NOP
_endasm;
if(M_ISBS4(IAC0))
goto NOT_ENABLE_HEP1;
}
M_BC1(HEP1TXCSR);
USB_Lib_Delay();
M_BC0(HEP1TXCSR);
USB_Lib_Delay();
goto Back_To_Mloop;
//. NOT_ENABLE_HEP1
NOT_ENABLE_HEP1:
HEP1_CNT = 16;
Back_To_Mloop:
#if(_USB_AUTO_STORE_IAP0)
{
IAP0=STACK_IAP0;
USB_Lib_Delay();
}
#endif
#if(_USB_DIS_ANO_INT)
M_ENI;
#endif
return;
}
#endif
//. SOF_ISR
void Int_SofInte() interrupt INT_SOFINTE using USBBANK
{
#if(_USB_AUTO_SET_BANK ||_USB_AUTO_STORE_IAP0)
UsbIntPre();
#endif
HINTR = 191;//#0b10111111
USB_Lib_Delay();
//. call macro _ADD_USB_SOF_INT_SUB
AddUsbSof();
if(HEP1_CNT)
{
if(--HEP1_CNT)
{//. ENABLE_HEP1
M_BC1(HEP1TXCSR);
USB_Lib_Delay();
M_BS0(HEP1TXCSR);
USB_Lib_Delay();
}
}
Back_To_Mloop:
#if(_USB_AUTO_STORE_IAP0)
{
IAP0=STACK_IAP0;
USB_Lib_Delay();
}
#endif
#if(_USB_DIS_ANO_INT)
M_ENI;
#endif
return;
}
void HubTransmitTable() using USBBANK
{
CTR_BUF = 0;
do
{
_asm
TBRDP _HEP0TXDAR
INC _CTR_BUF
_endasm;
nHwLength--;
HTBLL--;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -