单片机+CH375+VS1003制作MP3原理图+程序(6)

1970-01-01 08:00

SectorPerClus = buf[13] ; //每簇扇区数

reserved_sector = buf[14] ; //保留扇区,一般为32,但有的不是,

所以读出 }

//簇号转为逻辑扇区号

unsigned long int ClusToLba (unsigned long int clus) //ok {

return (unsigned long int)((clus-2) * (unsigned long int)SectorPerClus + DataStartSector); }

//通过当前簇,查找下一簇

unsigned long int SearchNextClus (unsigned long int this_clus, unsigned char *buf) {

if (buf[4 * offset + 3] == 0X0F ) return 0 ; //the end READ_SECTOR(FatStartSector + fat_offset, buf);

fat_offset = this_clus/128 ; //每扇区存放128个FAT项 offset = this_clus % 128 ; unsigned long int fat_offset ; unsigned char offset ; fat_size = buf[36]

+ buf[37]*256

+ buf[38]*65536 + buf[39]*65536*256;

fat_size = fat_size * 2;

FatStartSector = DosBootSector + reserved_sector; DataStartSector = FatStartSector + fat_size ;

} //

return (unsigned long int)( buf[4*offset]

+ buf[4*offset+1]*256

+ buf[4*offset+2]*65536 + buf[4*offset+3]*65536*256);

void InitFat (unsigned char *buf) {

RdMBR(buf); //读主引导扇区 RdDBR(buf);

//读操作系统引导扇区,获取该分区文件系统信息

sprintf(buf,\UartSendStr(buf);

sprintf(buf,\

int)SectorPerClus); }

#include \ file.c

//查找以index为索引的文件

unsigned char SearchFile (unsigned long int entry, {

unsigned int index, char *type, unsigned char *buf, FILE *pfile)

UartSendStr(buf);

sprintf(buf,\UartSendStr(buf);

sprintf(buf,\UartSendStr(buf);

unsigned char i ;

unsigned int file_num = 0 ; unsigned char sector_count = 0;

unsigned char *pdir; unsigned char dir_count;

unsigned long int addr = ClusToLba(entry);

while (1) {

if(sector_count++ < SectorPerClus) {

READ_SECTOR(addr++, buf);

} else { }

SearchNextClus(entry++, buf); addr = ClusToLba(entry); sector_count = 1 ;

READ_SECTOR(addr++, buf);

for (dir_count = 0; dir_count < 16; dir_count++) //每扇区有16个目录项 {

pdir = &buf[dir_count*32];

if (pdir[0] == 0) { //结束,未找到

return 0 ;

} else if ((pdir[0] != 0xe5) && //未删除

(pdir[8] == type[0]) &&

(pdir[9] == type[1]) && (pdir[10] == type[2])) {

if (++file_num == index) { //找到文件

for (i = 0; i < 11; i++) { // copy short name

pfile -> short_name[i] = pdir[i];

}

}

}

pfile -> short_name[11] = '\\0'; pfile -> attr = pdir[11] ; //属性字节 pfile -> start_clus = pdir[20]*65536

+ pdir[21]*256*65536

+ pdir[26] + pdir[27]*256;

pfile -> size = pdir[30]*65536 + pdir[31]*256*65536

+ pdir[28] + pdir[29]*256;

UartSendStr(\UartSendStr(pfile -> short_name);

}

}

}

//查找某一个目录下指定文件的个数

unsigned int StatFileNum (unsigned long int entry, //入口簇 {

while (1) {

if(sector_count++ < SectorPerClus) { idata unsigned int file_num = 0 ; idata unsigned char sector_count = 0;

unsigned char *pdir; idata unsigned char dir_count;

idata unsigned long int addr = ClusToLba(entry);

char *type, //查找类型 unsigned char *buf) //扇区缓冲区

READ_SECTOR(addr++, buf);

} else { }

SearchNextClus(entry++, buf); addr = ClusToLba(entry); sector_count = 1 ;

READ_SECTOR(addr++, buf);

for (dir_count = 0; dir_count < 16; dir_count++) //每扇区有16个目录项 {

pdir = &buf[dir_count*32];

if (pdir[0] == 0) { //查找结束,返回文件个

}

}

return file_num;

} else if ((pdir[0] != 0xe5) && //未删除 }

(pdir[8] == type[0]) &&

(pdir[9] == type[1]) && (pdir[10] == type[2])) {

file_num++; //找到文件 continue ;

1234+5vS1RXDDS2TXDT2/P1.0T2EX/P1.1P1.2P1.3P1.4P1.5P1.6P1.7RSTRXD/P3.0EATXD/P3.1ALE/PROGINT0 /P3.2PSENINT1 /P3.3T0/P3.4T1/P3.5WR /P3.6RD/P3.7XTAL2XTAL1GNDSTC89C58P2.7/A15P2.6/A14P2.5/A13P2.4/A12P2.3/A11P2.2/A10P2.1/A9P2.0/A81819203130292827262524232221+5VVCCP0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7C240.1uDINCLKSCLKSI+3.3vSOR110k9S5T1SW-PBRXDTXDINT#INT1T0T1WR#RD#1011121314151617SW-PBS612345678SW-PBR124.7kU1+5V4039D038D137D236D335D434D533D632D7+C2347uVDDCLKDIND/CCSOCSGNDVOUTRSTSW-PB+3.3V1CLK2DIN3D/C45CS6+3.3VC22781049RSTFIX1FIX2141519U4NC2LED1ALED1KLED2ALED2KFIX3FIX4NC11011R11D1kS3INT1S4T0SW-PBSW-PB1213R101k5110 LCD1617180.1u+3.3vD/CXDCS/BSYNCDREQXRESETXCSCSA0RSTMICP1MICN2XRESET34CVDD05C6+2.5VIOVDD067DREQ80.1u9R3100k10R4100k111248LEFT470.1uC15C16+3.3v0.1uC17U3INT#CWR#RD#R22Y1C130MHz22pA0USBVCCD-D+GNDUD-UD+USBY2C312MHz22pB22pMK1uC12100pC13MICROPHONE2MICN1uC4C14MICP0.1uCH3751234UD+UD-0.01uC5+5vINT#RSTIWR#RD#TXDRXDNC。A0V3UD+UD-GNDXIXOVCCCS#RST#RSTACT#GNDD7D6D5D4D3D2D1D01234567891011121314+5v2827262524232221201918171615+3.3v464544GBUF4342RIG41HT40393837U2AGND3LEDFTAVD2CAARVDDP1BUAGGNDF2AGND1RIGHTAVDD0AGND0LINEINCC7+2.5VCVDD0C8+3.3VIOVDD00.1uXDCS/BSYNCMICPMICNXRESETDGND0CVDD0IOVDD0CVDD1DREQGPIO2/DCLKDPIO3/SDATANCNCIOVDD1DVGNC0D1XTALOXTALIIOVDD2VS1003NCNCGPIO1GPIO0/SPIBOOTTESTCVDD3SOSISCLKTXRXNCDGND2DGND3DGND4CXVDCSD2363534R6100K3332+3.3v31C180.1u30SO29SI+2.5v28SCLK2726+3.3v25B131415161718192021222324XDCS/BSYNCC11U6SPX1117VOUT2+3.3v+5v3VINVOUT2+2.5vXCSU5SPX1117+5vC2510u3VINGNDC19C20C2110nF10nF10nFR5R920C290.1uGND104R820+C28C300.1uR7201MC260.1uC270.1u1Y310uC912.288M22p22pJ11C10LEFT} ARIGHTGBUF TitlePHONEJACK STEREOSizeA4Date:File:123NumberARevision1-Dec-2011 I:\\PROTEL 99SE\\MP3.ddbSheet of Drawn By:4


单片机+CH375+VS1003制作MP3原理图+程序(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2013年获部级及以上科技奖励汇总表-河海大学科技处

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: