📄 d12ci._c
字号:
#include <macros.h>
#include "D12CI.h"
#include "MAIN.h"
#define cwait asm("nop")
#define cwait1 asm("nop");asm("nop")
extern EPPFLAGS bEPPflags;
void D12_SetEndpointEnable(unsigned char bEnable)
{
D12_COMMAND=0xD8;
if(bEnable)
D12_DATA=1;
else
D12_DATA=0;
}
void D12_SetAddressEnable(unsigned char bAddress, unsigned char bEnable)
{
D12_COMMAND=0xD0;
if(bEnable)
bAddress|=0x80;
D12_DATA=bAddress;
}
void D12_SetMode(unsigned char bConfig, unsigned char bClkDiv)
{
D12_COMMAND=0xF3;
D12_DATA=bConfig;
cwait1;
D12_DATA=bClkDiv;
}
void D12_SetDMA(unsigned char bMode)
{
D12_COMMAND=0xFB;
cwait;
D12_DATA=bMode;
}
unsigned char D12_ReadInterruptRegister(void)
{
unsigned char bl;
unsigned char j;
j=0;
D12_COMMAND=0xF4;
cwait;
bl=D12_DATA;
cwait1;
j=D12_DATA;
return bl;
}
unsigned char D12_SelectEndpoint(unsigned char bEndp)
{
unsigned char c;
D12_COMMAND=bEndp;
cwait;
c=D12_DATA;
return c;
}
unsigned char D12_ReadLastTransactionStatus(unsigned char bEndp)
{
D12_COMMAND=0x40+bEndp;
cwait;
return D12_DATA;
}
unsigned char D12_ReadEndpointStatus(unsigned char bEndp)
{
D12_COMMAND=0x80+bEndp;
cwait;
return D12_DATA;
}
void D12_SetEndpointStatus(unsigned char bEndp, unsigned char bStalled)
{
unsigned char c;
D12_COMMAND=0x40+bEndp;
cwait;
D12_DATA=bStalled;
}
unsigned char D12_ReadEndpoint(unsigned char endp, unsigned char len,
unsigned char * buf)
{
unsigned char i,j;
D12_COMMAND=endp;
cwait;
i=D12_DATA;
if((i&D12_FULLEMPTY)==0)
return 0;
D12_COMMAND=0xF0;
cwait;
j=D12_DATA;
cwait1;
j=D12_DATA;
if(j>len)j=len;
for(i=0;i<j;i++)
{
*(buf+i)=D12_DATA;
cwait1;
}
D12_COMMAND=0xF2;
cwait;
return j;
}
unsigned char D12_WriteEndpoint(unsigned char endp, unsigned char len,
unsigned char * buf)
{
unsigned char i;
D12_COMMAND=endp;
D12_DATA;
D12_COMMAND=0xF0;
cwait;
D12_DATA=0;
cwait1;
D12_DATA=len;
for(i=0;i<len;i++)
{
D12_DATA=*(buf+i);
cwait1;
}
D12_COMMAND=0xFA;
cwait;
return len;
}
unsigned char D12_CWriteEndpoint(unsigned char endp, unsigned char len,
const unsigned char * buf)
{
unsigned char i;
D12_COMMAND=endp;
cwait;
D12_DATA;
cwait;
D12_COMMAND=0xF0;
cwait;
D12_DATA=0;
cwait1;
D12_DATA=len;
for(i=0;i<len;i++)
{
D12_DATA=*(buf+i);
cwait1;
}
D12_COMMAND=0xFA;
return len;
}
void D12_AcknowledgeEndpoint(unsigned char endp)
{
D12_COMMAND=endp;
cwait;
D12_COMMAND=0xF1;
if(endp==0)
D12_COMMAND=0xF2;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -