📄 d12.c
字号:
void D12_SetAddressEnable(unsigned char B_Addr,unsigned char B_Enable)
{
if(GETBIT(B_D12_Lb,INT_ISR) == 0) DISABLE;
D12_COMMAND = 0xd0;
if(B_Enable) B_Addr |= 0x80;
else B_Addr &= ~0x80;
D12_DATA = B_Addr;
if(GETBIT(B_D12_Lb,INT_ISR) == 0) ENABLE;
}
void D12_SetEndpointEnable(unsigned char B_Enable)
{
if(GETBIT(B_D12_Lb,INT_ISR) == 0) DISABLE;
D12_COMMAND = 0xd8;
D12_DATA = B_Enable;
if(GETBIT(B_D12_Lb,INT_ISR) == 0) ENABLE;
}
void D12_SetMode(unsigned char B_Config,unsigned char B_ClkDiv)
{
if(GETBIT(B_D12_Lb,INT_ISR) == 0) DISABLE;
D12_COMMAND = 0xf3;
D12_DATA = B_Config;
D12_DATA = B_ClkDiv;
if(GETBIT(B_D12_Lb,INT_ISR) == 0) ENABLE;
}
void D12_SetDMA(unsigned char B_Mode)
{
if(GETBIT(B_D12_Lb,INT_ISR) == 0) DISABLE;
D12_COMMAND = 0xfb;
D12_DATA = B_Mode;
if(GETBIT(B_D12_Lb,INT_ISR) == 0) ENABLE;
}
unsigned int D12_ReadInterruptRegister(void)
{
unsigned int i;
unsigned char j;
D12_COMMAND = 0xf4;
j = D12_DATA;
i = D12_DATA;
i = (i << 8) + j;
return (i);
}
unsigned char D12_SelectEndpoint(unsigned char B_Endp)
{
unsigned char B_Reg;
if(GETBIT(B_D12_Lb,INT_ISR) == 0) DISABLE;
D12_COMMAND = B_Endp;
B_Reg = D12_DATA;
if(GETBIT(B_D12_Lb,INT_ISR) == 0) ENABLE;
return (B_Reg);
}
unsigned char D12_ReadLastTransactionStatus(unsigned char B_Endp)
{
D12_COMMAND = B_Endp + 0x40;
return (D12_DATA);
}
unsigned char D12_ReadEndpoint(unsigned char B_Endp, unsigned char B_Len, unsigned char * B_Buf)
{
unsigned char i,j;
if(GETBIT(B_D12_Lb,INT_ISR) == 0) DISABLE;
D12_COMMAND = B_Endp;
i = D12_DATA;
if(i & D12_FULLEMPTY)//define D12_FULLEMPTY 0x01 buff full no read??
{
j = 0;
}
else
{
D12_COMMAND = 0xf0;//read buff
j = D12_DATA;
j = D12_DATA;
if(j > B_Len) j = B_Len;
for(i=0;i<j;i++) B_Buf[i] = D12_DATA;
D12_COMMAND = 0xF2;//clear buff for receive new data
}
if(GETBIT(B_D12_Lb,INT_ISR) == 0) ENABLE;
return (j);
}
unsigned char D12_WriteEndpoint(unsigned char B_Endp, unsigned char B_Len, unsigned char * B_Buf)
{
unsigned char i;
if(GETBIT(B_D12_Lb,INT_ISR) == 0) DISABLE;
D12_COMMAND = B_Endp;//select endpoint
i = D12_DATA;//not use
D12_COMMAND = 0xF0;//write buff
D12_DATA = 0;
D12_DATA = B_Len;
for(i=0;i<B_Len;i++) D12_DATA = B_Buf[i];
D12_COMMAND = 0xfa;//validate buff
if(GETBIT(B_D12_Lb,INT_ISR) == 0) ENABLE;
return (B_Len);
}
void D12_SetEndpointStatus(unsigned char B_Endp,unsigned char B_Stall)
{
if(GETBIT(B_D12_Lb,INT_ISR) == 0) DISABLE;
D12_COMMAND = 0x40 + B_Endp;
D12_DATA = B_Stall;
if(GETBIT(B_D12_Lb,INT_ISR) == 0) ENABLE;
}
void D12_AcknowledgeEndpoint(unsigned char B_Endp)
{
D12_COMMAND = B_Endp;
D12_COMMAND = 0xf1;
if(B_Endp == 0) D12_COMMAND = 0xf2;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -