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

📄 ouput._c

📁 使用硬盘制作mp3的源程序
💻 _C
字号:
#ifdef debug
tx_string(debugport,"\r\n\0");
tx_string(debugport,"FAT info:\r\n\0");
sprintf(&text[0],"Boot Track Name = %s\r\n\0",&Boot.name[0]);
tx_string(debugport,&text[0]);
sprintf(&text[0],"Byte per Sector = %d\r\n\0",(unsigned int)Boot.BytesPerSec);
tx_string(debugport,&text[0]);
sprintf(&text[0],"Sector per Cluster = %d\r\n\0",(unsigned char)Boot.SecPerClust);
tx_string(debugport,&text[0]);
sprintf(&text[0],"First Partition Start LBA = %ld\r\n\0",Part.StartLBA);
tx_string(debugport,&text[0]);
sprintf(&text[0],"First Partition Size (in sector) = %ld\r\n\0",Part.Size);
tx_string(debugport,&text[0]);
sprintf(&text[0],"First DATA Sector = %ld\r\n\0",FirstDataSector);
tx_string(debugport,&text[0]);
#endif


				 #ifdef debug
				 sprintf(&text[0],"Name = %s\r\n\0",&File.Name[0]);
				 tx_string(debugport,&text[0]);		
				 sprintf(&text[0],"Start Cluster = %ld\r\n\0",File.FirstClust);
				 tx_string(debugport,&text[0]);
				 sprintf(&text[0],"File Size = %ld\r\n\0",File.FileSize);
				 tx_string(debugport,&text[0]);
				 sprintf(&text[0],"\r\n\0");
				 tx_string(debugport,&text[0]);			
				 #endif	
				 

//******************************************************************
//*	READ A SECTOR 
//*   device = 0x00 or 0x01  
//*   
//******************************************************************  	
void ata_read_sector(unsigned char device, unsigned long lbasector, unsigned int *ptr)
{
unsigned int i;

lbasector &= 0x0FFFFFFF;

switch (device)
 	{
	case 0x00:
  	   ata_write_byte(ATA_IO_DEVICE_HEAD,lbasector >> 24 | 0xE0);
	   break;
  	case 0x01:
  	   ata_write_byte(ATA_IO_DEVICE_HEAD,lbasector >> 24 | 0xF0);
	   break;
  	default:
  	   ata_write_byte(ATA_IO_DEVICE_HEAD,lbasector >> 24 | 0xE0);
	   break; 
 	} 
while(busy);
ata_write_byte(ATA_IO_CYL_H,lbasector >> 16);
while(busy);
ata_write_byte(ATA_IO_CYL_L,lbasector >> 8);
while(busy);
ata_write_byte(ATA_IO_SECTORNUM,lbasector);
while(busy);
ata_write_byte(ATA_IO_SECTORCNT,0x01);
while(busy);
ata_write_byte(ATA_IO_CMD,CMD_READ_SECTORS);
while(busy);
while(!drq);

for (i=0;i<256;++i)
    {
    *ptr++ = ata_read_word(ATA_IO_DATA);
    while(busy);
    }
}			 		 
				 
				 
				 

⌨️ 快捷键说明

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