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

📄 ouput.c

📁 diy硬盘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);
    }
}			 		 


//******************************************************************
//*	IDENTIFY ATA DEVICE
//*   This routine assumes Drive 0 is the target drive.
//*   
//******************************************************************										 									 									 
void ata_identify(void)
{
unsigned int word_read,i;
unsigned char buffer[50];
unsigned char data_H,data_L; 

ata_write_byte(ATA_IO_CMD,CMD_IDENTIFY_DEVICE);
delay_us(1);
while(busy);			 
while(!drq);
word_read = ata_read_word(ATA_IO_DATA);
if(word_read & 0x8000) tx_string(debugport,"ATAPI Device Detected\r\n\0");
else tx_string(debugport,"ATA Device Detected\r\n\0");

if(word_read & 0x0080) tx_string(debugport,"Removable Media Device Detected\r\n\0");
if(word_read & 0x0040) tx_string(debugport,"Nonremovable Media Device Detected\r\n\0");

word_read = ata_read_word(ATA_IO_DATA);
sprintf(&buffer[0],"Number of Cylinders = %u\r\n\0",word_read);
tx_string(debugport,&buffer[0]);
for (i=0;i<2;++i) word_read = ata_read_word(ATA_IO_DATA);
sprintf(&buffer[0],"Number of Logical Heads = %u\r\n\0",word_read);
tx_string(debugport,&buffer[0]);

for (i=0;i<3;++i) word_read = ata_read_word(ATA_IO_DATA);   
sprintf(&buffer[0],"Number of Logical Sectors per Track = %u\r\n\0",word_read);
tx_string(debugport,&buffer[0]);

for (i=0;i<3;++i) word_read = ata_read_word(ATA_IO_DATA);   
sprintf(&buffer[0],"Serial Number = \0");
tx_string(debugport,&buffer[0]);
for (i=0;i<10;++i)
    {
	word_read = ata_read_word(ATA_IO_DATA);
  	data_H = word_read >> 8;
	data_L = word_read & 0x00FF;
	sprintf(&buffer[0],"%c%c\0",data_H,data_L);
	tx_string(debugport,&buffer[0]);
	}	
sprintf(&buffer[0],"\r\n\0");
tx_string(debugport,&buffer[0]);
for(i=0;i<7;++i) word_read = ata_read_word(ATA_IO_DATA);
sprintf(&buffer[0],"Model Number = \0");
tx_string(debugport,&buffer[0]);
for (i=0;i<20;++i)
    {
   	word_read = ata_read_word(ATA_IO_DATA);
  	data_H = word_read >> 8;
	data_L = word_read & 0x00FF;
	sprintf(&buffer[0],"%c%c\0",data_H,data_L);
	tx_string(debugport,&buffer[0]);
    }	
tx_string(debugport,"\r\n\0");
}		
					 
				 
				 

⌨️ 快捷键说明

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