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

📄 ideio.c

📁 8051实现的MP3播放程序,大家可以一起学习.
💻 C
📖 第 1 页 / 共 2 页
字号:
        Usb_write_byte(hdd_read_byte());
        Usb_write_byte(hdd_read_byte());        
        Usb_write_byte(hdd_read_byte());
        Usb_write_byte(hdd_read_byte());        
        Usb_write_byte(hdd_read_byte());
        Usb_write_byte(hdd_read_byte());        
        Usb_write_byte(hdd_read_byte());
        Usb_write_byte(hdd_read_byte());        
        Usb_write_byte(hdd_read_byte());
        Usb_write_byte(hdd_read_byte());        
        Usb_write_byte(hdd_read_byte());
        Usb_write_byte(hdd_read_byte());        
        Usb_write_byte(hdd_read_byte());
        Usb_write_byte(hdd_read_byte());        
        Usb_write_byte(hdd_read_byte());
        Usb_write_byte(hdd_read_byte());        
        Usb_write_byte(hdd_read_byte());
        Usb_write_byte(hdd_read_byte());        
        Usb_write_byte(hdd_read_byte());
        Usb_write_byte(hdd_read_byte());        
        Usb_write_byte(hdd_read_byte());
        Usb_write_byte(hdd_read_byte());        
        Usb_write_byte(hdd_read_byte());
        Usb_write_byte(hdd_read_byte());        
        Usb_write_byte(hdd_read_byte());
        Usb_write_byte(hdd_read_byte());        
        Usb_write_byte(hdd_read_byte());
        Usb_write_byte(hdd_read_byte());        
        Usb_write_byte(hdd_read_byte());
        Usb_write_byte(hdd_read_byte());        
        Usb_write_byte(hdd_read_byte());
        Usb_write_byte(hdd_read_byte());        
        Usb_write_byte(hdd_read_byte());
        Usb_write_byte(hdd_read_byte());        
        Usb_write_byte(hdd_read_byte());
        Usb_write_byte(hdd_read_byte());        
        Usb_write_byte(hdd_read_byte());
        Usb_write_byte(hdd_read_byte());        
        Usb_write_byte(hdd_read_byte());
        Usb_write_byte(hdd_read_byte());        
        Usb_write_byte(hdd_read_byte());
        Usb_write_byte(hdd_read_byte());        
        Usb_write_byte(hdd_read_byte());
        Usb_write_byte(hdd_read_byte());        
        Usb_write_byte(hdd_read_byte());
        Usb_write_byte(hdd_read_byte());        
        Usb_write_byte(hdd_read_byte());
        Usb_write_byte(hdd_read_byte());        
        Usb_write_byte(hdd_read_byte());
        Usb_write_byte(hdd_read_byte());        
        Usb_write_byte(hdd_read_byte());
        Usb_write_byte(hdd_read_byte());        
        Usb_write_byte(hdd_read_byte());
     
      Usb_set_TXRDY();
      Usb_select_ep(EP_IN);
      while (!Usb_tx_complete());
      Usb_clear_TXCMPL();  
     }	 
     hdd_read_close();

     return OK;
   }
  return KO;
}


/**********************************************************
*函数名称:bit hdd_write_open(Uint32 hdd_sector)           *
*用途:写硬盘OPEN动作                                      *
***********************************************************/ 
bit hdd_write_open(Uint32 hdd_sector)
{
 uchar head,cylinderh,cylinderl,sector;
   head      = ((Byte*)&hdd_sector)[0];
   cylinderh = ((Byte*)&hdd_sector)[1];
   cylinderl = ((Byte*)&hdd_sector)[2];
   sector    = ((Byte*)&hdd_sector)[3];

   do{ACC = FILE7;} while(BSY);
    FILE6 = (0xe0 | (head & 0x0f));
    FILE5 = cylinderh;    //high 2-bit cylinder
    FILE4 = cylinderl;//low 8-bit cylinder
    FILE3 = sector; //start sector
    FILE2 = 1;   //sector counter
    
    WriteCommand(0x30); 

  do{ACC = FILE7;} while(BSY |! DRQ); //wait for noBUSY and data request
  
  ACC = FILE7;
   if (ERR)
     return KO;

     return OK;
}


/**********************************************************
*函数名称:bit hdd_write_byte(Byte hdd_data)               *
*用途:写硬盘CLOSE动作                                     *
***********************************************************/ 
bit   hdd_write_byte(Byte hdd_data)
{
 gl_hdd_buffer[gl_hdd_buffer_ptr++] = hdd_data ;
 return OK;
}

/**********************************************************
*函数名称:bit hdd_write_close(void)                       *
*用途:写硬盘CLOSE动作                                     *
***********************************************************/ 
bit hdd_write_close(void)
{uint i;
  for(i = 0; i < 512; i+=2)
   {
    DAT16H = gl_hdd_buffer[i+1];
    FILE0  = gl_hdd_buffer[i];	   	   	   	   	   	   	   	   	   	   	   	   	   	   	   	   	   	   	   	   	   	   	   	   	   	   
   }

  do{ACC = FILE7;} while(BSY); 

  return OK;
   
}



/**********************************************************
*函数名称:bit hdd_write_usb_sector(Uint32 hdd_sector)     *
*用途:将USB接收到的一个扇区的数据写入硬盘                 *
***********************************************************/ 
bit hdd_write_usb_sector(Uint32 hdd_sector)
{uchar j;

   Usb_select_ep(EP_OUT);   
   gl_hdd_buffer_ptr = 0;

   for (j = 0; j < 8; j++)
       {
	    while(!Usb_rx_complete());          /* wait end of reception */
		  hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
	      hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
	      hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());
          hdd_write_byte(Usb_read_byte());

	      Usb_clear_RXOUT_PP();	     
        }
  
    hdd_write_open(hdd_sector);
    hdd_write_close();
	return OK;
}



Uint32 hdd_read_long_big_endian()
{
 Uint32  cluster;

  ((Byte*)&cluster)[3] = hdd_read_byte();
  ((Byte*)&cluster)[2] = hdd_read_byte();   
  ((Byte*)&cluster)[1] = hdd_read_byte();   
  ((Byte*)&cluster)[0] = hdd_read_byte();

   return  cluster;
}




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -