freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于單片機(jī)的數(shù)碼錄音與播放系統(tǒng)設(shè)計(jì)-精品-閱讀頁

2024-11-30 02:47本頁面
  

【正文】 l F_ SACM_DVR _ Status [返回值 ]=R1 【功能說明】獲取 SACM_DVR 模塊的狀態(tài)。 【返回值】當(dāng) R1 中 bit0=0,表示語音播放結(jié)束; bit0=1,表示語音在播放中。 圖 SACM_DVR狀態(tài)返回值 【備注】該函數(shù)僅使用于 DVR的手動(dòng)方式下。 【參數(shù)】 Channel=1, 2, 3;分別表示使用 DAC DAC2 信道以及 DAC1 和 DAC2雙通道。 【備注】用戶只能通過非自動(dòng)方式對語音資料解壓縮。 【參數(shù)】無。 【備注】用戶僅能通過非自動(dòng)方式對語音資料進(jìn)行譯碼。 【參數(shù)】無。 【備注 】 用戶僅能通過非自動(dòng)方式測試語音隊(duì)列狀態(tài)。 【參數(shù)】無。 【備注】 ① 采用 SACM_A2020 編碼格 式編碼 ② 僅用于非自動(dòng)方式下 程序 11 外擴(kuò) SRAM 需要 SRAM 寫初始化( InitWriteSRAM) ,及寫( WriteSRAM) 子函數(shù)。 Addr=0。 //用戶需外接 SRAM SACM_DVR_InitEncoder()。 //獲取數(shù)據(jù)并譯碼 If(SACM_DVR_TestQueue()!=Empty) //若隊(duì)列不空 ,則存儲資料 { ret=SACM_DVR_FetchQueue()。 //存入用戶存儲區(qū) Addr+=2。 【返回值】無。 ② 從語音隊(duì)列里至少每 48ms 獲取 48 個(gè)字資料( 16K 資料采樣率)。 12)【 API 格式】 C: int GetResource(long Address); 【功能說明】從資源文件里獲取一個(gè)字型語音資料。 【返回值】一個(gè)字型語音資料。通過前臺子程序(自動(dòng)方式的 SACM_DVR _ServiceLoop 及手動(dòng)方式的 SACM_DVR _Decode)對語音資料進(jìn)行譯碼,然后將其送入 DAC 通道播放。 【參數(shù)】無。 【備注】 SACM_DVR 語音背景子程序只有匯編指令形式,且應(yīng)將此子程序安置在 TMA_FIQ 中斷源上。 W29C040 與 SPCE061A 的系統(tǒng)軟件設(shè)計(jì) 本系統(tǒng)軟件實(shí)際流程圖 本軟件系統(tǒng)設(shè)計(jì)簡單。例如本系統(tǒng)的語音錄入和播放代碼如下: 語音的錄入: SP_InitW29C040Flash()。 SACM_DVR_InitEncoder(RceMonitorOn)。 many_data_write(M_AddrH,M_AddrL,page_buf,n)。 SACM_DVR_InitDecoder(DAC1+DAC2)。 SACM_DVR_FillQueue(Ret)。 } //語音數(shù)據(jù)以非自動(dòng)方式解碼 //獲取一個(gè)字型語音數(shù)據(jù) //填入語音隊(duì)列等候解碼 //獲取資源并進(jìn)行解碼, 只需要以上的幾條簡單語句調(diào)用就可以完成語音錄入和播放。本系統(tǒng)底層驅(qū)動(dòng)部分包括 W29C040 的讀寫、擦除使用的是匯編語言編寫的。提供獨(dú)立的 W29C040 的讀、寫、擦除代碼模塊。 SACMDVR 相關(guān)的 API 函數(shù)如下所示: int SACM_DVR_Initial(int Init_Index) void SACM_DVR_ServiceLoop(void) void SACM_DVR_Encode(void) SACM_DVR_StopEncoder(void) 。 unsigned int SACM_DVR _ TestQueue(void) int SACM_DVR _Fetchqueue(void) void SACM_DVR_FillQueue(unsigned int encodeddata) int GetResource(long //初始化 //獲取資料,填入譯碼隊(duì)列 //錄音 //停止編碼 //初始化解碼器 //停止錄音 //開始播放 //獲取 SACM_DVR 模塊的狀態(tài) //開始譯碼 //獲取語音資料并譯碼,中斷播放 //停止解碼 //獲取語音隊(duì)列狀態(tài) //獲取錄音編碼數(shù)據(jù) //填充資料到語音隊(duì)列,等待播放 //語音播放 //語音錄制 Address) —— (Manual) 中斷服務(wù)函數(shù): Call F_FIQ_Service_ SACM_DVR Call F_IRQ1_Service_ SACM_DVR 程序源代碼: include define SRAM_Size 0x1ffff4 define Stop 0 define Record 1 define Play 2 define Full 1 define Empty 2 define DAC1 1 // DAC output define DAC2 2 define RceMonitorOff 0 define RceMonitorOn 1 define Manual 0 define Auto 1 unsigned int aWriteData[130]。 unsigned int G_TestValue=0。 //unsigned int Addr_Counter=0。 unsigned int Key, Mode, Status。 unsigned long int Addr_Long。 unsigned int Write_W29C040_Status_Check(unsigned long int,unsigned int)。 unsigned int i=0,j=0。 //手工方式 System_Initial()。 //DVR初始化 Status = Stop。 Key=GetKeyScanValue()。 case 0x01: // 錄音鍵 Status = Record。 Addr_Counter_Tmp=0。 //寫初始化 SP_InitW29C040Flash()。 SACM_DVR_InitQueue()。 break。 while(SACM_DVR_TestQueue() != Empty) { Ret = SACM_DVR_FetchQueue()。 //將隊(duì)列中的數(shù)據(jù)寫入 HM628128A //SP_InitWriteW29C040Flash()。 Addr += 2。 //寫結(jié)束標(biāo)志連續(xù)三字節(jié) FF //SP_InitWriteW29C040Flash()。 Addr += 2。 // //SP_InitWriteW29C040Flash()。 break。 break。 */ break。 if(Status == Record)//如果處于錄音狀態(tài) , 執(zhí)行關(guān)閉錄音處理 { while(SACM_DVR_TestQueue() != Empty) { aWriteData[Addr_Counter_Tmp] = SACM_DVR_FetchQueue()。 //SP_WriteSRAM(Addr,Ret)。 if(Addr_Counter_Tmp==128) { if(Write256BytesFlag==1) { while(Write_W29C040_Status_Check(Addr,G_TestValue)==0)。i128。 Addr += 2。 Addr_Counter_Tmp=0。 } for(i=0。i++) { SP_Write_W29C040_One_Word(Addr,aWriteData[i])。 } Addr_Counter_Tmp=1。 for(i=0。i++)。 Addr_Counter_Tmp=0。 } /* //SP_WriteSRAM(Addr,0xFFFF)。 Addr += 2。 SP_Write_W29C040_One_Word(Addr,0x00FF)。j0x500。//看情況刪掉 ???????????? */ } for(i=0。i++)。 //置為播放模式 Addr = 0。 //讀初始化 SP_InitReadW29C040Flash()。 while(SACM_DVR_TestQueue() != Full) { //Ret = SP_ReadSRAM(Addr)。 ReadData=SP_Read_W29C040_One_Word(Addr)。 // Addr += 2。 break。 } // end of switch(Key) }// end if(key0) switch(Status) { case Record: if(Addr SRAM_Size) { SACM_DVR_Encode()。 // //SP_InitWriteW29C040Flash()。 Addr_Counter_Tmp++。 Write256BytesFlag=1。 while(Write_W29C040_Status_Check(Addr,G_TestValue)==0)。 Write256BytesFlag=1。 } SP_InitWriteW29C040Flash()。i128。 Addr += 2。 Write256BytesFlag=0x0001。 } /* if(((Addr_Counteramp。0x00ff)==0)) { for(i=0。i++) { SP_Write_W29C040_One_Word(Addr,Ret[i])。 } Addr_Counter_Tmp=0。j0x500。//看情況刪掉 } */ } } break。 0x01) { if(SACM_DVR_TestQueue() != Full) { //Ret = SP_ReadSRAM(Addr)。 ReadData=SP_Read_W29C040_One_Word(Addr)。 // Addr += 2。 Status = Stop。 break。 }// end of switch(Status) }// end of while(1) return 0。 Addr_Test=2。 ReadCheckWord=SP_Read_W29C040_One_Word(Addr_Test)。 SP_InitWriteW29C040Flash()。 } else { Addr_Test+=2。 return 1。但是,由于時(shí)間和能力,以及其他的不可抗拒的因素,這次只是 SPCE061A 在語音方面的初步應(yīng)用。 凌陽公司的十六位單片機(jī) SPCE061A 是一種款式新穎,性價(jià)比極高的單片機(jī)。因此,開發(fā)者可以在此基礎(chǔ)上擴(kuò)展系統(tǒng)的功能,比如,使用 SPCE061A 的通用異步串行接口 UART 來實(shí)現(xiàn)與 PC 機(jī)的通訊,或者使用其他的 IO 口來外掛 USB 器件實(shí)現(xiàn)與 PC 機(jī)的 USB 通訊,制作復(fù)雜的錄、放音系統(tǒng)。 隨著市場競爭的激烈,開發(fā)者對產(chǎn)品開發(fā)的資金
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1