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

📄 d12ci._c

📁 采用Atmeag162单片机来制作的U盘程序源码
💻 _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 + -