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

📄 d12.c

📁 一种通过USB将显示数据送入NAND FLASH中
💻 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 + -