📄 d12.c
字号:
extern void delay(unsigned int Len);
extern void send_wr_test(unsigned char i);
extern void send_rd_test(unsigned char i);
extern xdata unsigned char wr_test[16];
extern xdata unsigned char rd_test[16];
extern unsigned char test_flag;
void D12_SetAddressEnable(unsigned char B_Addr,unsigned char B_Enable)
{
if(GETBIT(B_D12_Lb,INT_ISR) == 0) DISABLE;
MCU_D12CS=0;
D12_COMMAND = 0xd0;
if(B_Enable) B_Addr |= 0x80;
else B_Addr &= ~0x80;
D12_DATA = B_Addr;
MCU_D12CS=1;
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;
MCU_D12CS=0;
D12_COMMAND = 0xd8;
D12_DATA = B_Enable;
MCU_D12CS=1;
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;
MCU_D12CS=0;
D12_COMMAND = 0xf3;
D12_DATA = B_Config;
D12_DATA = B_ClkDiv;
MCU_D12CS=1;
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;
MCU_D12CS=0;
D12_COMMAND = 0xfb;
D12_DATA = B_Mode;
MCU_D12CS=1;
if(GETBIT(B_D12_Lb,INT_ISR) == 0) ENABLE;
}
unsigned int D12_ReadInterruptRegister(void)
{
unsigned int i;
unsigned char j;
MCU_D12CS=0;
D12_COMMAND = 0xf4;
j = D12_DATA;
i = D12_DATA;
MCU_D12CS=1;
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;
MCU_D12CS=0;
D12_COMMAND = B_Endp;
B_Reg = D12_DATA;
MCU_D12CS=1;
if(GETBIT(B_D12_Lb,INT_ISR) == 0) ENABLE;
return (B_Reg);
}
unsigned char D12_ReadLastTransactionStatus(unsigned char B_Endp)
{
unsigned char i;
MCU_D12CS=0;
D12_COMMAND = B_Endp + 0x40;
i=D12_DATA;
MCU_D12CS=1;
return (i);
}
unsigned char D12_ReadEndpointStatus(unsigned char B_Endp)
{
unsigned char i,j;
j=0x80+B_Endp;
MCU_D12CS=0;
D12_COMMAND = j;
i = D12_DATA;
MCU_D12CS=1;
return (i);
}
unsigned char D12_ReadEndpoint(unsigned char B_Endp, unsigned char B_Len, unsigned char * B_Buf)
{
unsigned char i,j;
// SerialTran(B_Len);
// delay(2);
if(GETBIT(B_D12_Lb,INT_ISR) == 0) DISABLE;
MCU_D12CS=0;
D12_COMMAND = B_Endp;
i = D12_DATA;
if(!(i & D12_FULLEMPTY))
{
j = 0;
}
else
{
D12_COMMAND = 0xf0;
j = D12_DATA;
j = D12_DATA;
if(j > B_Len) j = B_Len;
for(i=0;i<j;i++)
{
// rd_test[i] = D12_DATA;
// B_Buf[i] = rd_test[i];
B_Buf[i] = D12_DATA;
}
// SerialTran(0xe8);
// delay(2);
// send_rd_test(B_Len);
D12_COMMAND = 0xF2;
}
MCU_D12CS=1;
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;
MCU_D12CS=0;
D12_COMMAND = B_Endp;
i = D12_DATA;
D12_COMMAND = 0xF0;
D12_DATA = 0;
D12_DATA = B_Len;
for(i=0;i<B_Len;i++)
{
// wr_test[i] = B_Buf[i];
// D12_DATA = wr_test[i];
D12_DATA = B_Buf[i];
}
D12_COMMAND = 0xfa;
MCU_D12CS=1;
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;
MCU_D12CS=0;
D12_COMMAND = 0x40 + B_Endp;
D12_DATA = B_Stall;
MCU_D12CS=1;
if(GETBIT(B_D12_Lb,INT_ISR) == 0) ENABLE;
}
void D12_AcknowledgeEndpoint(unsigned char B_Endp)
{
MCU_D12CS=0;
D12_COMMAND = B_Endp;
D12_COMMAND = 0xf1;
if(B_Endp == 0) D12_COMMAND = 0xf2;
MCU_D12CS=1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -