|
|||||||||||
| 技術交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng) 驅動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產業(yè) | CAN-bus/DeviceNe |
提供用ATmega103的MP3解碼方案 |
| 作者:esuo 欄目:單片機 |
硬件: MCU:ATMEGA103 解碼芯片: MAS3507D DAC芯片: DAC3550A LCD: 64x128 (HD61202 chipset) 數(shù)據(jù)源:CD-ROM /ide HardDisk 提供C源代碼、原理圖、相關開發(fā)文檔。需要的請發(fā)Email到y(tǒng)orki@163.net,最好郵件聯(lián)系,我不經常來。 * - 本貼最后修改時間:2003-10-16 17:38:16 修改者:esuo
|
| 2樓: | >>參與討論 |
| 作者: esuo 于 2003/10/14 9:56:00 發(fā)布:
部分代碼 #define FAT_C #include "equates.h" u08 *pSecBuff = (u08 *)SEC_BUFFER; // pointer to Sector Buffer u08 *pFatBuff = (u08 *)FAT_BUFFER; // pointer to FileAlocationTable Buffer u08 *pTmpBuff = (u08 *)TMP_BUFFER; // pointer to TEMP LFN Buffer void FAT_FileInfo(STRUCT_FILE_INFO file){ #ifdef DEBUG_FILE printf("%20s ", file.NAME); printf("a:0x%x ", file.attr); printf("cls:%lu ", file.clus); printf("sz:%lu ", file.size); printf("dtsec:%lu ", file.dtSec); printf("dtde:%u\n\r", file.dtDE); #else printf(" %s", file.NAME); #endif } STRUCT_FILE_INFO FAT_ChangeDir(STRUCT_FILE_INFO dir){ STRUCT_FILE_INFO nextDir; nextDir = dir; nextDir.dtSec = FAT_cls2sec(dir.clus) - 1;//FAT_cls2sec(dir.clus); nextDir.dtDE = 15;//0; #ifdef DEBUG_FAT printf("\n\rCHANGE DIR\n\r"); printf("in dir.dtDE(%2u) .clus(%lu)\n\r", dir.dtDE, dir.clus); printf("out dir.dtDE(%2u) .dtSec(%lu)\n\r", nextDir.dtDE, nextDir.dtSec+1); #endif return nextDir; } STRUCT_FILE_INFO FAT_PrevFile(STRUCT_FILE_INFO file){ struct STRUCT_DIR_ENTRY *pDirEnt = 0; struct STRUCT_LFN_ENTRY *pLfnEnt; STRUCT_FILE_INFO prevFile; u08 sfn[13]; u08 lfnCnt; u08 sfnDE = 0; u32 sfnSec = 0; u08 sfnIS = FALSE; u08 sfnOK = FALSE; u08 lfnOK = FALSE; u16 i; u08 *p; if((file.dtSec == fat1stDataSec) && !file.dtDE){ return file; }else{ if(file.dtDE){ prevFile.dtSec = file.dtSec; prevFile.dtDE = file.dtDE - 1; }else{ prevFile.dtSec = file.dtSec - 1; prevFile.dtDE = 15; } } #ifdef DEBUG_DIR printf("\n\r"); #endif do{ if(prevFile.dtSec != curInSecBuff){ ATAPI_ReadSector(prevFile.dtSec, pSecBuff); curInSecBuff = prevFile.dtSec; #ifdef DEBUG_CURINBUF printf(" curInSecBuff(%lu)\n\r", curInSecBuff); #endif } pDirEnt = ((struct STRUCT_DIR_ENTRY *) pSecBuff) + prevFile.dtDE; pLfnEnt = (struct STRUCT_LFN_ENTRY *) pDirEnt; #ifdef DEBUG_DIR printf(" n<%x>a<%x>", pDirEnt->NAME[0], pDirEnt->attr); #endif if(pDirEnt->NAME[0] == DE_END) return file; // last DirEntry if(pDirEnt->NAME[0] == DE_FREE); // free DirEntry else if(*pDirEnt->NAME == '.'){ // dot & dotdot DirEntry if(pDirEnt->NAME[1] == '.'){ // dotdot prevFile.NAME[0] = '.'; prevFile.NAME[1] = '.'; prevFile.NAME[2] = 0; prevFile.clus = ((u32)pDirEnt->firstClusHI << 16) + pDirEnt->firstClusLO; prevFile.attr = pDirEnt->attr; prevFile.size = pDirEnt->fileSize; return prevFile; } else return file; // dot } else if(sfnIS && (pDirEnt->attr == ATTR_LONG_NAME)){ // lfn lfnCnt = 13 * ((pLfnEnt->cnt - 1) & CNT_MASK); p = &pTmpBuff[lfnCnt]; lfnOK = FALSE; for (i=0; i<10; i+=2) *p++ = pLfnEnt->NAME1[i]; // copy first PART for (i=0; i<12; i+=2) *p++ = pLfnEnt->NAME2[i]; // second PART for (i=0; i< 4; i+=2) *p++ = pLfnEnt->NAME3[i]; // and third PART if((pLfnEnt->cnt & CNT_1stMASK) == CNT_1stMASK){ *p = 0; lfnOK = TRUE; sfnOK = TRUE; sfnIS = FALSE; } } else if (((pDirEnt->attr & 0x1f) == ATTR_FILE)||(pDirEnt->attr == ATTR_DIRECTORY)){ // dir or file if(!sfnIS){ p = &sfn[0]; for (i=0; i<8; i++){ if(pDirEnt->NAME[i] != ' ') *p++ = pDirEnt->NAME[i]; } if((pDirEnt->attr & 0x1f) == ATTR_FILE) *p++ = '.'; for (i=0; i<3; i++){ if(pDirEnt->NAMEExt[i] != ' ') *p++ = pDirEnt->NAMEExt[i]; } *p = '\0'; prevFile.clus = ((u32)pDirEnt->firstClusHI << 16) + pDirEnt->firstClusLO; prevFile.attr = pDirEnt->attr; prevFile.size = pDirEnt->fileSize; sfnDE = prevFile.dtDE; sfnSec = prevFile.dtSec; sfnIS = TRUE; lfnOK = FALSE; } else sfnOK = TRUE; } else if(sfnIS) sfnOK = TRUE; if(lfnOK && sfnOK){ lfnOK = FALSE; for (i=0; |
|
| 3樓: | >>參與討論 |
| 作者: h2o 于 2003/10/15 14:53:00 發(fā)布:
好資料 剛收到資料,看了一偏,的確是學習的好東西,既可學習AVR,又可學習FAT、MP3、IDE接口,值得學習,我準備DIY一個MP3,希望與大家交流。 |
|
| 4樓: | >>參與討論 |
| 作者: 名良 于 2003/10/15 17:52:00 發(fā)布:
摟主水平不行嘛,還有飛阿飛的線 給我一份原理圖看看 masashinakayama@sina.com.cn 3X |
|
| 5樓: | >>參與討論 |
| 作者: esuo 于 2003/10/16 10:36:00 發(fā)布:
是PCB板加工不好 大家可以照著電路圖自己做PCB * - 本貼最后修改時間:2003-10-16 10:39:03 修改者:esuo |
|
| 6樓: | >>參與討論 |
| 作者: zhermit 于 2003/10/16 11:24:00 發(fā)布:
:(,能看嗎?發(fā)我的要密碼 :(,能看嗎?發(fā)我的要密碼 |
|
| 7樓: | >>參與討論 |
| 作者: win2kddk 于 2003/10/16 11:53:00 發(fā)布:
你還是DIY嗎? esuo,不是我說你,還好意思向大家要錢!你就差那點錢嗎?!你這樣做已經嚴重的違反了DIY的精神。別人的東西,你也要得著錢! http://www.indata.si/grega/megapeg.htm 全套資料!這才是DIY! |
|
| 8樓: | >>參與討論 |
| 作者: 牧碼天河 于 2003/10/16 13:10:00 發(fā)布:
http://elm-chan.org/works/mpc/report_e.html http://elm-chan.org/works/mpc/report_e.html 這里也有 |
|
| 9樓: | >>參與討論 |
| 作者: zhao74 于 2003/10/16 16:22:00 發(fā)布:
如果要錢就太過分了,不要就要提倡,兩年前我就DOWN |
|
| 10樓: | >>參與討論 |
| 作者: 代成志 于 2003/10/18 19:56:00 發(fā)布:
給我一份吧!daichengzhi.com@163.com |
|
| 11樓: | >>參與討論 |
| 作者: zzl_0426 于 2006/6/17 20:34:00 發(fā)布:
ziliao 我也正需要 那位老兄也傳給我一份吧 謝謝! zzl_0426@163.com |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號 |