專利名稱:一種解析音頻數(shù)據(jù)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信領(lǐng)域,特別涉及一種解析音頻數(shù)據(jù)的方法。
背景技術(shù):
智能密鑰設(shè)備,是一種帶有處理器和存儲(chǔ)器的小型硬件裝置,主要用于身份認(rèn)證、軟件保護(hù)等領(lǐng)域,它通過(guò)計(jì)算機(jī)的數(shù)據(jù)通訊接口與計(jì)算機(jī)連接,然而隨著手機(jī)技術(shù)的發(fā)展,手機(jī)越來(lái)越多的替代了計(jì)算機(jī)的功能;發(fā)明人在實(shí)現(xiàn)本發(fā)明的過(guò)程中發(fā)現(xiàn),目前尚無(wú)一種有效的方法實(shí)現(xiàn)在手機(jī)上使用智能密鑰設(shè)備進(jìn)行數(shù)字通訊。
發(fā)明內(nèi)容
為了解決現(xiàn)有技術(shù)中存在的問(wèn)題,本發(fā)明提供了一種解析音頻數(shù)據(jù)的方法。本發(fā)明方法是通過(guò)下述技術(shù)方案實(shí)現(xiàn)的:一種解析音頻數(shù)據(jù)的方法,其基本實(shí)施過(guò)程如下:步驟A:根據(jù)解析索引值判斷上升沿?cái)?shù)組和下降沿?cái)?shù)組中是否有滿足預(yù)設(shè)條件的字節(jié),是則將有滿足預(yù)設(shè)條件的字節(jié)的數(shù)組作為當(dāng)前數(shù)組,關(guān)閉另外一個(gè)數(shù)組對(duì)應(yīng)的中斷,執(zhí)行步驟C,否則執(zhí)行步驟B;步驟B:按照第一預(yù)設(shè)方法更新所述解析索引值,返回執(zhí)行步驟A ;步驟C:按照第二預(yù)設(shè)方法更新所述解析索引值,根據(jù)所述解析索引值獲取當(dāng)前數(shù)組的當(dāng)前字節(jié)存入第一 寄存器的第一指定位置;步驟D:按照第一預(yù)設(shè)方法更新所述解析索引值,根據(jù)所述解析索引值獲取當(dāng)前數(shù)組的當(dāng)前字節(jié)存入所述第一寄存器的第二指定位置,判斷所述第一寄存器中數(shù)據(jù)的值是否滿足預(yù)設(shè)要求,是則執(zhí)行步驟E,否則清空當(dāng)前數(shù)組,打開(kāi)關(guān)閉的所述另外一個(gè)數(shù)組對(duì)應(yīng)的中斷,報(bào)錯(cuò),返回執(zhí)行步驟A ;步驟E:按照第一預(yù)設(shè)方法更新所述解析索引值,按照第三預(yù)設(shè)方法更新索引值更新次數(shù),根據(jù)所述解析索引值獲取當(dāng)前數(shù)組的當(dāng)前字節(jié),存入第二寄存器;步驟F:按照第一預(yù)設(shè)方法更新所述解析索引值,按照第三預(yù)設(shè)方法更新索引值更新次數(shù),根據(jù)所述解析索引值獲取當(dāng)前數(shù)組的當(dāng)前字節(jié),存入第三寄存器;步驟G:將所述第二寄存器中的數(shù)據(jù)與所述第三寄存器中的數(shù)據(jù)進(jìn)行校驗(yàn)運(yùn)算,用運(yùn)算結(jié)果替換所述第二寄存器中的數(shù)據(jù),判斷所述索引值更新次數(shù)是否等于所述第一寄存器中數(shù)據(jù)的值,是則執(zhí)行步驟H,否則返回執(zhí)行步驟F ;步驟H:按照第一預(yù)設(shè)方法更新所述解析索引值,根據(jù)所述解析索引值獲取當(dāng)前數(shù)組的當(dāng)前字節(jié)并用其替換所述第三寄存器中的數(shù)據(jù),判斷所述第二寄存器中數(shù)據(jù)的值是否等于第三寄存器中數(shù)據(jù)的值,是則提示接收到的數(shù)據(jù)正確,結(jié)束,否則清空當(dāng)前數(shù)組,打開(kāi)關(guān)閉的所述另外一個(gè)數(shù)組對(duì)應(yīng)的中斷,報(bào)錯(cuò),返回執(zhí)行步驟A ;其中,所述步驟A包括:
步驟Al:根據(jù)所述解析索引值判斷上升沿?cái)?shù)組的當(dāng)前字節(jié)以及下降沿?cái)?shù)組的當(dāng)前字節(jié)中是否有等于第一數(shù)值的,是則執(zhí)行步驟A3,否則執(zhí)行步驟B ;步驟A2:判斷上升沿?cái)?shù)組和下降沿?cái)?shù)組中哪一個(gè)數(shù)組的當(dāng)前字節(jié)等于第一數(shù)值,若是上升沿?cái)?shù)組的當(dāng)前字節(jié)則關(guān)閉下降沿中斷,將上升沿?cái)?shù)組作為當(dāng)前數(shù)組,執(zhí)行步驟A3,若是下降沿?cái)?shù)組的當(dāng)前字節(jié)則關(guān)閉上升沿中斷,將下降沿?cái)?shù)組作為當(dāng)前數(shù)組,執(zhí)行步驟A3 ;步驟A3:按照第一預(yù)設(shè)方法更新所述解析索引值,根據(jù)所述解析索引值判斷當(dāng)前數(shù)組的當(dāng)前字節(jié)是否等于第二數(shù)值,是則執(zhí)行步驟A4,否則打開(kāi)關(guān)閉的中斷,返回執(zhí)行步驟Al ;步驟A4:按照第一預(yù)設(shè)方法更新所述解析索引值,根據(jù)所述解析索引值判斷當(dāng)前數(shù)組的當(dāng)前字節(jié)是否等于第三數(shù)值,是則執(zhí)行步驟A5,否則打開(kāi)關(guān)閉的中斷,返回執(zhí)行步驟Al ;步驟A5:按照第一預(yù)設(shè)方法更新所述解析索引值,根據(jù)所述解析索引值判斷當(dāng)前數(shù)組的當(dāng)前字節(jié)是否等于第四數(shù)值,是則執(zhí)行步驟C,否則打開(kāi)關(guān)閉的中斷,返回執(zhí)行步驟Al ;所述將所述第二寄存器中的數(shù)據(jù)與所述第三寄存器中的數(shù)據(jù)進(jìn)行校驗(yàn)運(yùn)算具體為將所述第二寄存器中的數(shù)據(jù)與所述第三寄存器中的數(shù)據(jù)進(jìn)行異或運(yùn)算;所述根據(jù)所述解析索引值獲取當(dāng)前數(shù)組的當(dāng)前字節(jié)存入第一寄存器的第一指定位置具體為根據(jù)所述解析索引值獲取當(dāng)前數(shù)組的當(dāng)前字節(jié)存入第一寄存器的低位端;所述根據(jù)所述解析索引值獲取當(dāng)前數(shù)組的當(dāng)前字節(jié)存入第一寄存器的第二指定位置具體為根據(jù)所述解析索引值獲取當(dāng)前數(shù)組的當(dāng)前字節(jié)存入第一寄存器的高位端;所述判斷所述第一寄存器中數(shù)據(jù)的值是否滿足預(yù)設(shè)要求具體為判斷所述第一寄存器中數(shù)據(jù)的值是否不大于緩存的大小;所述按照第一預(yù)設(shè)方法更新所述解析索引值具體為將所述解析索引值更新為其當(dāng)前值加I ;所述按照第二預(yù)設(shè)方法更新所述解析索引值具體為將所述解析索引值更新為其當(dāng)前值加4 ;所述按照第三預(yù)設(shè)方法更新索引值更新次數(shù)具體為將所述索引值更新次數(shù)更新為其當(dāng)前值加I ;進(jìn)一步地,所述步驟A之前包括:將音頻模擬信號(hào)通過(guò)濾波電路濾除雜波,通過(guò)波形整波電路整形為數(shù)字信號(hào)后再通過(guò)濾波電路濾除雜波,輸入到單片機(jī)的IO 口當(dāng)所述IO口檢測(cè)到上升沿中斷時(shí),跳轉(zhuǎn)至上升沿中斷處理流程,執(zhí)行步驟Si后繼續(xù)檢測(cè)到上升沿中斷時(shí)正在執(zhí)行的操作,當(dāng)所述IO 口檢測(cè)到下降沿中斷時(shí),跳轉(zhuǎn)至下降沿中斷處理流程,執(zhí)行步驟S2后繼續(xù)檢測(cè)到下降沿中斷時(shí)正在執(zhí)行的操作;步驟S1:記錄當(dāng)前定時(shí)器的值,計(jì)算每?jī)蓚€(gè)相鄰記錄值之差的絕對(duì)值,當(dāng)所述絕對(duì)值符合預(yù)設(shè)要求時(shí)從下一絕對(duì)值開(kāi)始依次判斷每個(gè)絕對(duì)值是否在預(yù)設(shè)范圍內(nèi),是則向第一數(shù)組中寫入I個(gè)數(shù)據(jù)位1,否則向所述第一數(shù)組中寫入I個(gè)數(shù)據(jù)位0,當(dāng)所述第一數(shù)組中寫滿8個(gè)數(shù)據(jù)位時(shí),將所述第一數(shù)組中的數(shù)據(jù)寫入上升沿?cái)?shù)組;步驟S2:記錄當(dāng)前定時(shí)器的值,計(jì)算每?jī)蓚€(gè)相鄰記錄值之差的絕對(duì)值,當(dāng)所述絕對(duì)值符合預(yù)設(shè)要求時(shí)從下一絕對(duì)值開(kāi)始依次判斷每個(gè)絕對(duì)值是否在預(yù)設(shè)范圍內(nèi),是則向第二數(shù)組中寫入I個(gè)數(shù)據(jù)位1,否則向所述第二數(shù)組中寫入I個(gè)數(shù)據(jù)位O,當(dāng)所述第二數(shù)組中寫滿8個(gè)數(shù)據(jù)位時(shí),將所述第二數(shù)組中的數(shù)據(jù)寫入下降沿?cái)?shù)組;其中,所述步驟SI包括:步驟Sl-1:判斷首次上升沿中斷觸發(fā)標(biāo)志是否置位,是則執(zhí)行步驟S1-2,否則執(zhí)行步驟S1-3 ;步驟S1-2:記錄當(dāng)前時(shí)刻定時(shí)器的計(jì)數(shù)值到第四寄存器,將所述首次上升沿觸發(fā)標(biāo)志復(fù)位,返回執(zhí)行步驟Sl-1 ;步驟S1-3:記錄當(dāng)前時(shí)刻定時(shí)器的計(jì)數(shù)值到第五寄存器,計(jì)算所述第五寄存器中數(shù)據(jù)與所述第四寄存器中數(shù)據(jù)差的絕對(duì)值,用所述第五寄存器中的數(shù)據(jù)替換所述第四寄存器中的數(shù)據(jù),判斷第一數(shù)據(jù)開(kāi)始標(biāo)志是否置位,是則執(zhí)行步驟S1-5,否則執(zhí)行步驟S1-4 ;步驟S1-4:判斷所述絕對(duì)值是否滿足預(yù)設(shè)條件,是則將所述第一數(shù)據(jù)開(kāi)始標(biāo)志置位,返回執(zhí)行步驟S1-1,否則直接返回執(zhí)行步驟Sl-1 ;步驟S1-5:判斷所述絕對(duì)值是否在預(yù)設(shè)范圍內(nèi),是則向第一數(shù)組中寫入I個(gè)數(shù)據(jù)位1,執(zhí)行步驟S1-6,否則向第一數(shù)組中寫入I個(gè)數(shù)據(jù)位0,執(zhí)行步驟S1-6;步驟S1-6:按照第四預(yù)設(shè)方法修改第一寫入次數(shù)變量的值,判斷所述第一寫入次數(shù)變量的當(dāng)前值是否為預(yù)設(shè)值,是則修改所述第一寫入次數(shù)變量的值為其初始值,根據(jù)第一接收索引值將所述第一數(shù)組中的數(shù)據(jù)寫入所述上升沿?cái)?shù)組的指定位置,按照第五預(yù)設(shè)方法更新所述第一接收索引值,否則返回執(zhí)行步驟Sl-1 ;其中,所述首次上升沿中斷觸發(fā)標(biāo)志的初始狀態(tài)為置位,所述第一數(shù)據(jù)開(kāi)始標(biāo)志的初始狀態(tài)為復(fù)位;所述步驟S2包括:步驟S2-1:判斷首次下降沿中斷觸發(fā)標(biāo)志是否置位,是則執(zhí)行步驟S2-2,否則執(zhí)行步驟S2-3 ;步驟S2-2:記錄當(dāng)前時(shí)刻定時(shí)器的計(jì)數(shù)值到第六寄存器,將所述首次下降沿觸發(fā)標(biāo)志復(fù)位,返回執(zhí)行步驟S2-1 ;步驟S2-3:記錄當(dāng)前時(shí)刻定時(shí)器的計(jì)數(shù)值到第七寄存器,計(jì)算所述第七寄存器中數(shù)據(jù)與所述第六寄存器中數(shù)據(jù)差的絕對(duì)值,用所述第七寄存器中的數(shù)據(jù)替換所述第六寄存器中的數(shù)據(jù),判斷第二數(shù)據(jù)開(kāi)始標(biāo)志是否置位,是則執(zhí)行步驟S2-5,否則執(zhí)行步驟S2-4 ;步驟S2-4:判斷所述絕對(duì)值是否滿足預(yù)設(shè)條件,是則將所述第二數(shù)據(jù)開(kāi)始標(biāo)志置位,返回執(zhí)行步驟S2-1,否則直接返回執(zhí)行步驟S2-1 ;步驟S2-5:判斷所述絕對(duì)值是否在預(yù)設(shè)范圍內(nèi),是則向第二數(shù)組中寫入I個(gè)數(shù)據(jù)位1,執(zhí)行步驟S2-6,否則向第二數(shù)組中寫入I個(gè)數(shù)據(jù)位0,執(zhí)行步驟S2-6;步驟S2-6:按照第六預(yù)設(shè)方法修改第二寫入次數(shù)變量的值,判斷所述第二寫入次數(shù)變量的當(dāng)前值是否為第二預(yù)設(shè)值,是則修改所述第二寫入次數(shù)變量的值為其初始值,根據(jù)第二接收索引值將所述第二數(shù)組中的數(shù)據(jù)寫入所述下降沿?cái)?shù)組的指定位置,按照第七預(yù)設(shè)方法更新所述第二接收索引值,否則返回執(zhí)行步驟S2-1 ;其中,所述首次下降沿中斷觸發(fā)標(biāo)志的初始狀態(tài)為置位,所述第二數(shù)據(jù)開(kāi)始標(biāo)志的初始狀態(tài)為復(fù)位;更進(jìn)一步地,所述第一寫入次數(shù)變量的初始值為O ;
所述按照第四預(yù)設(shè)方法修改第一寫入次數(shù)變量具體為修改所述第一寫入次數(shù)變量的值為其當(dāng)前值加I ;所述判斷所述第一寫入次數(shù)變量的當(dāng)前值是否為預(yù)設(shè)值具體為判斷所述第一寫入次數(shù)變量的當(dāng)前值是否為8 ;所述步驟S1-5具體包括:判斷所述絕對(duì)值是否在預(yù)設(shè)范圍內(nèi),是則向所述第一數(shù)組的低位端寫入I個(gè)數(shù)據(jù)位1,并將寫入的數(shù)據(jù)位I左移,左移位數(shù)等于所述第一寫入次數(shù)變量當(dāng)前值大小,執(zhí)行步驟S1-6,否則直接執(zhí)行步驟S1-6 ;其中,所述第一數(shù)組中存儲(chǔ)的初始數(shù)據(jù)為0x00 ;或者包括:判斷所述絕對(duì)值是否在預(yù)設(shè)范圍內(nèi),是則根據(jù)所述第一寫入次數(shù)變量當(dāng)前值向所述第一數(shù)組指定位寫入I個(gè)數(shù)據(jù)位1,執(zhí)行步驟S1-6,否則直接執(zhí)行步驟
51-6;其中,所述第一數(shù)組中存儲(chǔ)的初始數(shù)據(jù)為0x00 ;所述第一接收索引值的初始值為0,指向所述上升沿?cái)?shù)組的第O個(gè)字節(jié);所述按照第五預(yù)設(shè)方法更新所述第一接收索引值具體為更新所述第一接收索引值為其當(dāng)前值加I;所述第二寫入次數(shù)變量的初始值為O ;所述按照第六預(yù)設(shè)方法修改第二寫入次數(shù)變量具體為修改所述第二寫入次數(shù)變量的值為其當(dāng)前值加I ;所述判斷所述第二寫入次數(shù)變量的當(dāng)前值是否為第二預(yù)設(shè)值具體為判斷所述第二寫入次數(shù)變量的當(dāng)前值是否為8 ;所述步驟S2-5具體包括:判斷所述絕對(duì)值是否在預(yù)設(shè)范圍內(nèi),是則向所述第二數(shù)組的低位端寫入I個(gè)數(shù)據(jù)位1,并將寫入的數(shù)據(jù)位I左移,左移位數(shù)等于所述第二寫入次數(shù)變量當(dāng)前值大小,執(zhí)行步驟S2-6,否則直接執(zhí)行步驟S2-6 ;其中,所述第二數(shù)組中存儲(chǔ)的初始數(shù)據(jù)為0x00 ;或者包括:判斷所述絕對(duì)值是否在預(yù)設(shè)范圍內(nèi),是則根據(jù)所述第二寫入次數(shù)變量當(dāng)前值向所述第二數(shù)組指定位寫入I個(gè)數(shù)據(jù)位1,執(zhí)行步驟S2-6,否則直接執(zhí)行步驟
52-6;其中,所述第二數(shù)組中存儲(chǔ)的初始數(shù)據(jù)為0x00 ;所述第二接收索引值的初始值為0,指向所述下降沿?cái)?shù)組的第O個(gè)字節(jié);所述按照第七預(yù)設(shè)方法更新所述第二接收索引值具體為更新所述第二接收索引值為其當(dāng)前值加I。本發(fā)明方法的有益效果在于:提高了音頻數(shù)據(jù)解析的效率和音頻通信的兼容性,廣泛適用于基于耳機(jī)通信的雙方進(jìn)行數(shù)字通信。
為了更清楚的說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單的介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明實(shí)施例一中提供的一種解析音頻數(shù)據(jù)的方法流程圖;圖2為上升沿?cái)?shù)組和下降沿?cái)?shù)組的結(jié)構(gòu)示意圖;圖3為本發(fā)明實(shí)施例二中提供的一種解析音頻數(shù)據(jù)方法的上升沿中斷處理流程圖4為本發(fā)明實(shí)施例二中提供的上升沿中斷處理實(shí)例圖;圖5為本發(fā)明實(shí)施例三中提供的一種解析音頻數(shù)據(jù)方法的下降沿中斷處理流程圖;圖6為本發(fā)明實(shí)施例三中提供的下降沿中斷處理實(shí)例圖。
具體實(shí)施例方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。實(shí)施例一參見(jiàn)圖1,本發(fā)明實(shí)施例提供的一種解析音頻數(shù)據(jù)的方法,本方法中,首先將手機(jī)終端音頻接口輸出的模擬信號(hào)通過(guò)濾波電路濾除雜波,然后通過(guò)波形整形電路將模擬信號(hào)整形為數(shù)字信號(hào),最后再通過(guò)濾波電路濾除雜波,輸入到單片機(jī)的IO 口,當(dāng)IO 口有上升沿中斷觸發(fā)時(shí),跳轉(zhuǎn)至上升沿中斷處理流程,記錄當(dāng)前定時(shí)器的值,計(jì)算每?jī)蓚€(gè)相鄰記錄值之差的絕對(duì)值,當(dāng)所述絕對(duì)值符合預(yù)設(shè)要求時(shí)從下一絕對(duì)值開(kāi)始依次判斷每個(gè)絕對(duì)值是否在預(yù)設(shè)范圍內(nèi),是則向第一數(shù)組中寫入I個(gè)數(shù)據(jù)位I,否則向第一數(shù)組中寫入I個(gè)數(shù)據(jù)位0,當(dāng)?shù)谝粩?shù)組中寫滿8個(gè)數(shù)據(jù)位時(shí),將第一數(shù)組中的數(shù)據(jù)寫入上升沿?cái)?shù)組,然后繼續(xù)執(zhí)行檢測(cè)到上升沿中斷處理流程;當(dāng)IO 口有下降沿中斷觸發(fā)時(shí),跳轉(zhuǎn)至下降沿處理流程,記錄當(dāng)前定時(shí)器的值,計(jì)算每?jī)蓚€(gè)相鄰記錄值之差的絕對(duì)值,當(dāng)所述絕對(duì)值符合預(yù)設(shè)要求時(shí)從下一絕對(duì)值開(kāi)始依次判斷每個(gè)絕對(duì)值是否在預(yù)設(shè)范圍內(nèi),是則向第二數(shù)組中寫入I個(gè)數(shù)據(jù)位1,否則向第二數(shù)組中寫入I個(gè)數(shù)據(jù)位0,當(dāng)?shù)诙?shù)組中寫滿8個(gè)數(shù)據(jù)位時(shí),將第二數(shù)組中的數(shù)據(jù)寫入下降沿?cái)?shù)組,然后繼續(xù)執(zhí)行檢測(cè)到下降沿中斷時(shí)正在執(zhí)行的操作;所述方法具體包括以下步驟:步驟101:初始化解析過(guò)程中的索引值、標(biāo)志、數(shù)組和寄存器,開(kāi)啟上升沿中斷和下降沿中斷;步驟102:根據(jù)解析索引值判斷上升沿?cái)?shù)組的當(dāng)前字節(jié)以及下降沿?cái)?shù)組的當(dāng)前字節(jié)中是否有等于第一數(shù)值的,是則執(zhí)行步驟104,否則執(zhí)行步驟103 ;具體地,在本實(shí)施例中,所述解析索引值的初始值為0,指向上升沿?cái)?shù)組的第O個(gè)字節(jié)和下降沿?cái)?shù)組的第O個(gè)字節(jié),所述第一數(shù)值為OxOf,所述上升沿?cái)?shù)組和下降沿?cái)?shù)組的結(jié)構(gòu)示意圖可參見(jiàn)圖2,圖2中以接收到的為取隨機(jī)數(shù)指令且為上升沿中斷觸發(fā)為例,當(dāng)判斷出上升沿?cái)?shù)組中某一字節(jié)為OxOf時(shí)關(guān)閉下降沿中斷;在后面的內(nèi)容中,本實(shí)施例以檢測(cè)出上升沿?cái)?shù)組或下降沿?cái)?shù)組中的當(dāng)前字節(jié)等于第一數(shù)值時(shí)即關(guān)閉另一中斷為例進(jìn)行說(shuō)明,顯然,為了提高準(zhǔn)確性,在檢測(cè)出上升沿?cái)?shù)組或下降沿?cái)?shù)組中有預(yù)先約定的音頻通信雙方進(jìn)行通信的數(shù)據(jù)幀的幀頭的更多部分甚至全部都是可以的,在此不再贅述。步驟103:更新解析索引值,返回執(zhí)行步驟102 ;具體地,將所述解析索引值更新為其當(dāng)前值加I。步驟104:判斷上升沿?cái)?shù)組和下降沿?cái)?shù)組中哪一個(gè)數(shù)組的當(dāng)前字節(jié)等于第一數(shù)值,若是上升沿?cái)?shù)組的當(dāng)前字節(jié)則執(zhí)行步驟105,若為下降沿?cái)?shù)組的當(dāng)前字節(jié)則執(zhí)行步驟106 ;步驟105:關(guān)閉下降沿中斷,將上升沿?cái)?shù)組作為當(dāng)前數(shù)組,執(zhí)行步驟107 ;步驟106:關(guān)閉上升沿中斷,將下降沿?cái)?shù)組作為當(dāng)前數(shù)組,執(zhí)行步驟107 ;步驟107:更新解析索引值,判斷當(dāng)前數(shù)組的當(dāng)前字節(jié)是否等于第二數(shù)值,是則執(zhí)行步驟108,否則打開(kāi)關(guān)閉的中斷,返回執(zhí)行步驟102 ;具體地,將所述解析索引值更新為其當(dāng)前值加1,所述第二數(shù)值為OxfO。步驟108:更新解析索引值,判斷當(dāng)前數(shù)組的當(dāng)前字節(jié)是否等于第三數(shù)值,是則執(zhí)行步驟109,否則打開(kāi)關(guān)閉的中斷,返回執(zhí)行步驟102 ;具體地,將所述解析索引值更新為其當(dāng)前值加1,所述第三數(shù)值為0x55。步驟109:更新解析索引值,判斷當(dāng)前數(shù)組的當(dāng)前字節(jié)是否等于第四數(shù)值,是則執(zhí)行步驟110,否則打開(kāi)關(guān)閉的中斷,返回執(zhí)行步驟102 ;具體地,將所述解析索引值更新為其當(dāng)前值加1,所述第四數(shù)值為Oxaa。步驟110:更新解析索引值,獲取當(dāng)前數(shù)組的當(dāng)前字節(jié)存入第一寄存器的低位端;具體地,將所述解析索引值更新為其當(dāng)前值加4 ;在本實(shí)施例中,連續(xù)的四個(gè)字節(jié):0x0f OxfO 0x55 Oxaa為預(yù)先約定的音頻通信雙方進(jìn)行通信的數(shù)據(jù)幀的幀頭,所述幀頭后約定有三個(gè)字節(jié)的冗余數(shù)據(jù),所述冗余數(shù)據(jù)后為兩個(gè)字節(jié)的數(shù)據(jù)長(zhǎng)度。步驟111:更新解析索引值,獲取當(dāng)前數(shù)組的當(dāng)前字節(jié)存入第一寄存器的高位端;具體地,將所述解析指針更新為其當(dāng)前值加I。步驟112:判斷第一寄存器中數(shù)據(jù)的值是否大于緩存的大小,是則清空當(dāng)前數(shù)組,打開(kāi)關(guān)閉的中斷,報(bào)錯(cuò),返回執(zhí)行步驟102,否則執(zhí)行步驟113 ;具體地,在本實(shí)施例中,所述緩存的大小為300字節(jié)。步驟113:初始化索引值更新次數(shù)為O ;步驟114:更新解析索引值和索引值更新次數(shù),獲取當(dāng)前數(shù)組的當(dāng)前字節(jié),存入第
二寄存器;具體地,將所述解析索引值更新為其當(dāng)前值加1,將所述索引值更新次數(shù)更新為其當(dāng)前值加I。步驟115:更新解析索引值和索引值更新次數(shù),獲取當(dāng)前數(shù)組的當(dāng)前字節(jié),存入第
三寄存器;具體地,將所述解析索引值更新為其當(dāng)前值加1,將所述索引值更新次數(shù)更新為其當(dāng)前值加I。步驟116:將第二寄存器中的數(shù)據(jù)與第三寄存器中的數(shù)據(jù)進(jìn)行異或,用異或結(jié)果替換第二寄存器中的數(shù)據(jù);步驟117:判斷索引值更新次數(shù)是否等于第一寄存器中數(shù)據(jù)的值,是則執(zhí)行步驟118,否則返回執(zhí)行步驟115;步驟118:更新解析索引值,獲取當(dāng)前數(shù)組的當(dāng)前字節(jié)并用其替換第三寄存器中的數(shù)據(jù),判斷第二寄存器中數(shù)據(jù)的值是否等于第三寄存器中數(shù)據(jù)的值,是則提示接收到的數(shù)據(jù)正確,否則清空當(dāng)前數(shù)組,打開(kāi)關(guān)閉的中斷,報(bào)錯(cuò),返回執(zhí)行步驟102。
具體地,將所述解析索引值更新為其當(dāng)前值加I。實(shí)施例二實(shí)施例一所提供的解析音頻數(shù)據(jù)方法中,當(dāng)檢測(cè)到上升沿中斷時(shí),跳轉(zhuǎn)至上升沿中斷處理流程,待所述上升沿中斷處理流程結(jié)束后繼續(xù)執(zhí)行檢測(cè)到上升沿中斷時(shí)正在執(zhí)行的操作,優(yōu)選地,參見(jiàn)圖3,所述上升沿中斷處理流程包括:步驟201:判斷首次上升沿中斷觸發(fā)標(biāo)志是否置位,是則執(zhí)行步驟202,否則執(zhí)行步驟203 ;具體地,在本實(shí)施例中,所述首次上升沿觸發(fā)標(biāo)志的初始狀態(tài)為置位。步驟202:記錄當(dāng)前時(shí)刻定時(shí)器的計(jì)數(shù)值到第四寄存器,將首次上升沿觸發(fā)標(biāo)志復(fù)位,返回執(zhí)行步驟201 ;步驟203:記錄當(dāng)前時(shí)刻定時(shí)器的計(jì)數(shù)值到第五寄存器;步驟204:計(jì)算第五寄存器中數(shù)據(jù)與第四寄存器中數(shù)據(jù)差的絕對(duì)值,用第五寄存器中的數(shù)據(jù)替換第四寄存器中的數(shù)據(jù);步驟205:判斷第一數(shù)據(jù)開(kāi)始標(biāo)志是否置位,是則執(zhí)行步驟207,否則執(zhí)行步驟206 ;具體地,在本實(shí)施例中,所述第一數(shù)據(jù)開(kāi)始標(biāo)志的初始狀態(tài)為復(fù)位。步驟206:判斷所述絕對(duì)值是否滿足預(yù)設(shè)條件,是則將第一數(shù)據(jù)開(kāi)始標(biāo)志置位,返回執(zhí)行步驟201,否則直接返回執(zhí)行步驟201 ;具體地,在本實(shí)施例中,當(dāng)所述絕對(duì)值大于第一預(yù)設(shè)值且小于第二預(yù)設(shè)值時(shí)滿足預(yù)設(shè)條件,否則所述絕對(duì)值不滿足預(yù)設(shè)條件,例如,所述第一預(yù)設(shè)值為0x047c,第二預(yù)設(shè)值為 0x08f8。步驟207:判斷所述絕對(duì)值是否在預(yù)設(shè)范圍內(nèi),是則向第一數(shù)組中寫入一個(gè)數(shù)據(jù)位1,執(zhí)行步驟208,否則向第一數(shù)組中寫入一個(gè)數(shù)據(jù)位0,執(zhí)行步驟208 ;具體地,步驟207包含但不限于如下兩種實(shí)現(xiàn)方法:1、判斷所述絕對(duì)值是否在預(yù)設(shè)范圍內(nèi),是則向所述第一數(shù)組的低位端寫入一個(gè)數(shù)據(jù)位1,并將寫入的數(shù)據(jù)位I左移,左移位數(shù)等于第一寫入次數(shù)變量當(dāng)前值(例如,所述第一寫入次數(shù)變量當(dāng)前值為3,則將寫入的數(shù)據(jù)位I左移3位),執(zhí)行步驟208,否則直接執(zhí)行步驟208 ;采用本實(shí)現(xiàn)方法時(shí),在步驟101中將第一數(shù)組中存儲(chǔ)的數(shù)據(jù)初始化為0x00 ;2、判斷所述絕對(duì)值是否在預(yù)設(shè)范圍內(nèi),是則根據(jù)第一寫入次數(shù)變量當(dāng)前值向所述第一數(shù)組指定位寫入一個(gè)數(shù)據(jù)位I (例如,所述第一寫入次數(shù)變量當(dāng)前值為3,則向第一數(shù)組低位端起第4位寫入一個(gè)數(shù)據(jù)位1),執(zhí)行步驟208,否則直接執(zhí)行步驟208 ;采用本實(shí)現(xiàn)方法時(shí),在步驟101中將第一數(shù)組中存儲(chǔ)的數(shù)據(jù)初始化為0x00。步驟208:按照預(yù)先設(shè)定的方法修改第一寫入次數(shù)變量的值,判斷所述第一寫入次數(shù)變量的當(dāng)前值是否為8,是則執(zhí)行步驟209,否則返回執(zhí)行步驟201 ;具體地,所述第一寫入次數(shù)變量的初始值為0,修改第一寫入次數(shù)變量的值為其當(dāng)前值加I。步驟209:修改第一寫入次數(shù)變量的值為其初始值,根據(jù)第一接收索引值將第一數(shù)組中的數(shù)據(jù)寫入上升沿?cái)?shù)組的指定位置,更新第一接收索引值。具體地,所述第一接收索引值的初始值為0,指向上升沿?cái)?shù)組的第O個(gè)字節(jié),將所述第一接收索引值更新為其當(dāng)前值加1,指向上升沿?cái)?shù)組的下一字節(jié)。舉例說(shuō)明上述過(guò)程,具體可參見(jiàn)圖4。實(shí)施例三實(shí)施例一中,當(dāng)檢測(cè)到下降沿中斷時(shí),跳轉(zhuǎn)至下降沿中斷處理流程,待所述下降沿中斷處理流程結(jié)束后繼續(xù)執(zhí)行檢測(cè)到下降沿中斷時(shí)正在執(zhí)行的操作,優(yōu)選地,參見(jiàn)圖5,所述下降沿中斷處理流程包括:步驟301:判斷首次下降沿觸發(fā)標(biāo)志是否置位,是則執(zhí)行步驟302,否則執(zhí)行步驟303 ;具體地,在本實(shí)施例中,所述首次下降沿觸發(fā)標(biāo)志的初始狀態(tài)為置位。步驟302:記錄當(dāng)前時(shí)刻定時(shí)器的計(jì)數(shù)值到第六寄存器,將首次下降沿觸發(fā)標(biāo)志復(fù)位,返回執(zhí)行步驟301 ;步驟303:記錄當(dāng)前時(shí)刻定時(shí)器的計(jì)數(shù)值到第七寄存器;步驟304:計(jì)算第七寄存器中數(shù)據(jù)與第六寄存器中數(shù)據(jù)差的絕對(duì)值,用第七寄存器中的數(shù)據(jù)替換第六寄存器中的數(shù)據(jù);步驟305:判斷第二數(shù)據(jù)開(kāi)始標(biāo)志是否置位,是則執(zhí)行步驟307,否則執(zhí)行步驟306 ;具體地,在本實(shí)施例中,所述第二數(shù)據(jù)開(kāi)始標(biāo)志的初始狀態(tài)為復(fù)位。步驟306:判斷所述絕對(duì)值是否滿足預(yù)設(shè)條件,是則將第二數(shù)據(jù)開(kāi)始標(biāo)志置位,返回執(zhí)行步驟301,否則直接返回執(zhí)行步驟301 ;具體地,在本實(shí)施例中,當(dāng)所述絕對(duì)值大于第一預(yù)設(shè)值且小于第二預(yù)設(shè)值時(shí)滿足預(yù)設(shè)條件,否則所述絕對(duì)值不滿足預(yù)設(shè)條件,例如,所述第一預(yù)設(shè)值為0x047c,第二預(yù)設(shè)值為 0x08f8。步驟307:判斷所述絕對(duì)值是否在預(yù)設(shè)范圍內(nèi),是則向第二數(shù)組中寫入一個(gè)數(shù)據(jù)位1,執(zhí)行步驟308,否則向第二數(shù)組中寫入一個(gè)數(shù)據(jù)位0,執(zhí)行步驟308 ;具體地,步驟307包含但不限于如下兩種實(shí)現(xiàn)方法:1、判斷所述絕對(duì)值是否在預(yù)設(shè)范圍內(nèi),是則向所述第二數(shù)組的低位端寫入一個(gè)數(shù)據(jù)位1,并將寫入的數(shù)據(jù)位I左移第二寫入次數(shù)變量當(dāng)前值大小位(例如,所述第二寫入次數(shù)變量當(dāng)前值為2,則將寫入的數(shù)據(jù)位I左移2位),執(zhí)行步驟308,否則直接執(zhí)行步驟308 ;采用本實(shí)現(xiàn)方法時(shí),在步驟101中將第二數(shù)組中存儲(chǔ)的數(shù)據(jù)初始化為0x00 ;2、判斷所述絕對(duì)值是否在預(yù)設(shè)范圍內(nèi),是則根據(jù)第二寫入次數(shù)變量當(dāng)前值向所述第二數(shù)組指定位寫入一個(gè)數(shù)據(jù)位I (例如,所述第二寫入次數(shù)變量當(dāng)前值為2,則向第二數(shù)組低位端起第3位寫入一個(gè)數(shù)據(jù)位1),執(zhí)行步驟308,否則直接執(zhí)行步驟308 ;采用本實(shí)現(xiàn)方法時(shí),在步驟101中將第二數(shù)組中存儲(chǔ)的數(shù)據(jù)初始化為0x00。步驟308:按照預(yù)先設(shè)定的方法修改第二寫入次數(shù)變量的值,判斷所述第二寫入次數(shù)變量的當(dāng)前值是否為8,是則執(zhí)行步驟309,否則返回執(zhí)行步驟301 ;具體地,在本實(shí)施例中,所述第二寫入次數(shù)變量的初始值為0,修改第二寫入次數(shù)變量的值為其當(dāng)前值加I。步驟309:修改第二寫入次數(shù)變量的值為其初始值,根據(jù)第二接收索引值將第二數(shù)組中的數(shù)據(jù)寫入下降沿?cái)?shù)組的指定位置,更新第二接收索引值。
具體地,在本實(shí)施例中,所述第二接收索引值的初始值為0,指向下降沿?cái)?shù)組的第O個(gè)字節(jié),將所述第二接收索引值更新為其當(dāng)前值加1,指向下降沿?cái)?shù)組的下一字節(jié)。舉例說(shuō)明上述過(guò)程,具體可參見(jiàn)圖6,圖中的音頻數(shù)據(jù)與圖4中音頻數(shù)據(jù)相同,圖4和圖6是對(duì)于相同的音頻數(shù)據(jù)根據(jù)上升沿中斷和下降沿中斷處理得到不同的數(shù)據(jù)。以上所述的實(shí)施例只是本發(fā)明較優(yōu)選的具體實(shí)施方式
,本領(lǐng)域的技術(shù)人員在本發(fā)明技術(shù)方案范圍內(nèi)進(jìn)行的通常變化和替換都應(yīng)包含在本發(fā)明的保護(hù)范圍內(nèi)。
權(quán)利要求
1.一種解析音頻數(shù)據(jù)的方法,其特征在于,包括: 步驟A:根據(jù)解析索引值判斷上升沿?cái)?shù)組和下降沿?cái)?shù)組中是否有滿足預(yù)設(shè)條件的字節(jié),是則將有滿足預(yù)設(shè)條件的字節(jié)的數(shù)組作為當(dāng)前數(shù)組,關(guān)閉另外一個(gè)數(shù)組對(duì)應(yīng)的中斷,執(zhí)行步驟C,否則執(zhí)行步驟B; 步驟B:按照第一預(yù)設(shè)方法更新所述解析索引值,返回執(zhí)行步驟A ; 步驟C:按照第二預(yù)設(shè)方法更新所述解析索引值,根據(jù)所述解析索引值獲取當(dāng)前數(shù)組的當(dāng)前字節(jié)存入第一寄存器的第一指定位置; 步驟D:按照第一預(yù)設(shè)方法更新所述解析索引值,根據(jù)所述解析索引值獲取當(dāng)前數(shù)組的當(dāng)前字節(jié)存入所述第一寄存器的第二指定位置,判斷所述第一寄存器中數(shù)據(jù)的值是否滿足預(yù)設(shè)要求,是則執(zhí)行步驟E,否則清空當(dāng)前數(shù)組,打開(kāi)關(guān)閉的所述另外一個(gè)數(shù)組對(duì)應(yīng)的中斷,報(bào)錯(cuò),返回執(zhí)行步驟A ; 步驟E:按照第一預(yù)設(shè)方法更新所述解析索引值,按照第三預(yù)設(shè)方法更新索引值更新次數(shù),根據(jù)所述解析索引值獲取當(dāng)前數(shù)組的當(dāng)前字節(jié),存入第二寄存器; 步驟F:按照第一預(yù)設(shè)方法更新所述解析索引值,按照第三預(yù)設(shè)方法更新索引值更新次數(shù),根據(jù)所述解析索引值獲取當(dāng)前數(shù)組的當(dāng)前字節(jié),存入第三寄存器; 步驟G:將所述第二寄存器中的數(shù)據(jù)與所述第三寄存器中的數(shù)據(jù)進(jìn)行校驗(yàn)運(yùn)算,用運(yùn)算結(jié)果替換所述第二寄存器中的數(shù)據(jù),判斷所述索引值更新次數(shù)是否等于所述第一寄存器中數(shù)據(jù)的值,是則執(zhí)行步驟H,否則返回執(zhí)行步驟F ; 步驟H:按照第一預(yù)設(shè)方法更新所述解析索引值,根據(jù)所述解析索引值獲取當(dāng)前數(shù)組的當(dāng)前字節(jié)并用其替換所述第三寄存器中的數(shù)據(jù),判斷所述第二寄存器中數(shù)據(jù)的值是否等于第三寄存器中數(shù)據(jù)的值,是則提示接收到的數(shù)據(jù)正確,結(jié)束,否則清空當(dāng)前數(shù)組,打開(kāi)關(guān)閉的所述另外一個(gè)數(shù)組對(duì)應(yīng)的中斷,報(bào)錯(cuò),返回執(zhí)行步驟A。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟A包括: 步驟Al:根據(jù)所述解析索引值判斷上升沿?cái)?shù)組的當(dāng)前字節(jié)以及下降沿?cái)?shù)組的當(dāng)前字節(jié)中是否有等于第一數(shù)值的,是則執(zhí)行步驟A3,否則執(zhí)行步驟B ; 步驟A2:判斷上升沿?cái)?shù)組和下降沿?cái)?shù)組中哪一個(gè)數(shù)組的當(dāng)前字節(jié)等于第一數(shù)值,若是上升沿?cái)?shù)組的當(dāng)前字節(jié)則關(guān)閉下降沿中斷,將上升沿?cái)?shù)組作為當(dāng)前數(shù)組,執(zhí)行步驟A3,若是下降沿?cái)?shù)組的當(dāng)前字節(jié)則關(guān)閉上升沿中斷,將下降沿?cái)?shù)組作為當(dāng)前數(shù)組,執(zhí)行步驟A3 ;步驟A3:按照第一預(yù)設(shè)方法更新所述解析索引值,根據(jù)所述解析索引值判斷當(dāng)前數(shù)組的當(dāng)前字節(jié)是否等于第二數(shù)值,是則執(zhí)行步驟A4,否則打開(kāi)關(guān)閉的中斷,返回執(zhí)行步驟Al ;步驟A4:按照第一預(yù)設(shè)方法更新所述解析索引值,根據(jù)所述解析索引值判斷當(dāng)前數(shù)組的當(dāng)前字節(jié)是否等于第三數(shù)值,是則執(zhí)行步驟A5,否則打開(kāi)關(guān)閉的中斷,返回執(zhí)行步驟Al ;步驟A5:按照第一預(yù)設(shè)方法更新所述解析索引值,根據(jù)所述解析索引值判斷當(dāng)前數(shù)組的當(dāng)前字節(jié)是否等于第四數(shù)值,是則執(zhí)行步驟C,否則打開(kāi)關(guān)閉的中斷,返回執(zhí)行步驟Al。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于, 所述將所述第二寄存器中的數(shù)據(jù)與所述第三寄存器中的數(shù)據(jù)進(jìn)行校驗(yàn)運(yùn)算具體為將所述第二寄存器中的數(shù)據(jù)與所述第三寄存器中的數(shù)據(jù)進(jìn)行異或運(yùn)算。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于, 所述根據(jù)所述解析索引值獲取當(dāng)前數(shù)組的當(dāng)前字節(jié)存入第一寄存器的第一指定位置具體為根據(jù)所述解析索引值獲取當(dāng)前數(shù)組的當(dāng)前字節(jié)存入第一寄存器的低位端; 所述根據(jù)所述解析索引值獲取當(dāng)前數(shù)組的當(dāng)前字節(jié)存入第一寄存器的第二指定位置具體為根據(jù)所述解析索引值獲取當(dāng)前數(shù)組的當(dāng)前字節(jié)存入第一寄存器的高位端; 所述判斷所述第一寄存器中數(shù)據(jù)的值是否滿足預(yù)設(shè)要求具體為判斷所述第一寄存器中數(shù)據(jù)的值是否不大于緩存的大小。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于, 所述解析索引值、所述索引值更新次數(shù)的初始值均為O ; 所述按照第一預(yù)設(shè)方法更新所述解析索引值具體為將所述解析索引值更新為其當(dāng)前值加I ; 所述按照第二預(yù)設(shè)方法更新所述解析索引值具體為將所述解析索引值更新為其當(dāng)前值加4 ; 所述按照第三預(yù)設(shè)方法更新索引值更新次數(shù)具體為將所述索引值更新次數(shù)更新為其當(dāng)前值加I。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟A之前包括:將音頻模擬信號(hào)通過(guò)濾波電路濾除雜波,通過(guò)波形整波電路整形為數(shù)字信號(hào)后再通過(guò)濾波電路濾除雜波,輸入到單片機(jī)的IO 口。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,當(dāng)所述IO口檢測(cè)到上升沿中斷時(shí),跳轉(zhuǎn)至上升沿中斷處理流程,執(zhí)行步驟Si后繼續(xù)檢測(cè)到上升沿中斷時(shí)正在執(zhí)行的操作,當(dāng)所述IO口檢測(cè)到下降沿中斷時(shí),跳轉(zhuǎn)至下降沿中斷處理流程,執(zhí)行步驟S2后繼續(xù)檢測(cè)到下降沿中斷時(shí)正在執(zhí)行的操作; 步驟S1:記錄當(dāng)前定時(shí)器的值,計(jì)算每?jī)蓚€(gè)相鄰記錄值之差的絕對(duì)值,當(dāng)所述絕對(duì)值符合預(yù)設(shè)要求時(shí)從下一絕對(duì)值開(kāi)始依次判斷每個(gè)絕對(duì)值是否在預(yù)設(shè)范圍內(nèi),是則向第一數(shù)組中寫入I個(gè)數(shù)據(jù)位1,否則向所述第一數(shù)組中寫入I個(gè)數(shù)據(jù)位0,當(dāng)所述第一數(shù)組中寫滿8個(gè)數(shù)據(jù)位時(shí),將所述第一數(shù)組中的數(shù)據(jù)寫入上升沿?cái)?shù)組; 步驟S2:記錄當(dāng)前定時(shí)器的值,計(jì)算每?jī)蓚€(gè)相鄰記錄值之差的絕對(duì)值,當(dāng)所述絕對(duì)值符合預(yù)設(shè)要求時(shí)從下一絕對(duì)值開(kāi)始依次判斷每個(gè)絕對(duì)值是否在預(yù)設(shè)范圍內(nèi),是則向第二數(shù)組中寫入I個(gè)數(shù)據(jù)位1,否則向所述第二數(shù)組中寫入I個(gè)數(shù)據(jù)位0,當(dāng)所述第二數(shù)組中寫滿8個(gè)數(shù)據(jù)位時(shí),將所述第二數(shù)組中的數(shù)據(jù)寫入下降沿?cái)?shù)組。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述步驟SI具體包括: 步驟Sl-1:判斷首次上升沿中斷觸發(fā)標(biāo)志是否置位,是則執(zhí)行步驟S1-2,否則執(zhí)行步驟 S1-3 ; 步驟S1-2:記錄當(dāng)前時(shí)刻定時(shí)器的計(jì)數(shù)值到第四寄存器,將所述首次上升沿觸發(fā)標(biāo)志復(fù)位,返回執(zhí)行步驟Sl-1 ; 步驟S1-3:記錄當(dāng)前時(shí)刻定時(shí)器的計(jì)數(shù)值到第五寄存器,計(jì)算所述第五寄存器中數(shù)據(jù)與所述第四寄存器中數(shù)據(jù)差的絕對(duì)值,用所述第五寄存器中的數(shù)據(jù)替換所述第四寄存器中的數(shù)據(jù),判斷第一數(shù)據(jù)開(kāi)始標(biāo)志是否置位,是則執(zhí)行步驟S1-5,否則執(zhí)行步驟S1-4 ; 步驟S1-4:判斷所述絕對(duì)值是否滿足預(yù)設(shè)條件,是則將所述第一數(shù)據(jù)開(kāi)始標(biāo)志置位,返回執(zhí)行步驟S1-1,否則直接返回執(zhí)行步驟Sl-1 ; 步驟S1-5:判斷所述絕對(duì)值是否在預(yù)設(shè)范圍內(nèi),是則向第一數(shù)組中寫入I個(gè)數(shù)據(jù)位1,執(zhí)行步驟S1-6,否則向第一數(shù)組中寫入I個(gè)數(shù)據(jù)位O,執(zhí)行步驟S1-6; 步驟S1-6:按照第四預(yù)設(shè)方法修改第一寫入次數(shù)變量的值,判斷所述第一寫入次數(shù)變量的當(dāng)前值是否為預(yù)設(shè)值,是則修改所述第一寫入次數(shù)變量的值為其初始值,根據(jù)第一接收索引值將所述第一數(shù)組中的數(shù)據(jù)寫入所述上升沿?cái)?shù)組的指定位置,按照第五預(yù)設(shè)方法更新所述第一接收索引值,否則返回執(zhí)行步驟Sl-1 ; 其中,所述首次上升沿中斷觸發(fā)標(biāo)志的初始狀態(tài)為置位,所述第一數(shù)據(jù)開(kāi)始標(biāo)志的初始狀態(tài)為復(fù)位。
9.根據(jù)權(quán)利要求8所述的方法,其特征在于, 所述第一寫入次數(shù)變量的初始值為O ; 所述按照第四預(yù)設(shè)方法修改第一寫入次數(shù)變量具體為修改所述第一寫入次數(shù)變量的值為其當(dāng)前值加I; 所述判斷所述第一寫入次數(shù)變量的當(dāng)前值是否為預(yù)設(shè)值具體為判斷所述第一寫入次數(shù)變量的當(dāng)前值是否為8。
10.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述步驟S1-5具體包括: 判斷所述絕對(duì)值是否 在預(yù) 設(shè)范圍內(nèi),是則向所述第一數(shù)組的低位端寫入I個(gè)數(shù)據(jù)位1,并將寫入的數(shù)據(jù)位1左移,左移位數(shù)等于所述第一寫入次數(shù)變量當(dāng)前值大小,執(zhí)行步驟S1-6,否則直接執(zhí)行步驟S1-6 ;其中,所述第一數(shù)組中存儲(chǔ)的初始數(shù)據(jù)為0x00。
11.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述步驟S1-5具體包括: 判斷所述絕對(duì)值是否在預(yù)設(shè)范圍內(nèi),是則根據(jù)所述第一寫入次數(shù)變量當(dāng)前值向所述第一數(shù)組指定位寫入I個(gè)數(shù)據(jù)位1,執(zhí)行步驟S1-6,否則直接執(zhí)行步驟S1-6 ;其中,所述第一數(shù)組中存儲(chǔ)的初始數(shù)據(jù)為0x00。
12.根據(jù)權(quán)利要求8所述的方法,其特征在于, 所述第一接收索引值的初始值為0,指向所述上升沿?cái)?shù)組的第O個(gè)字節(jié); 所述按照第五預(yù)設(shè)方法更新所述第一接收索引值具體為更新所述第一接收索引值為其當(dāng)前值加I。
13.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述步驟S2具體包括: 步驟S2-1:判斷首次下降沿中斷觸發(fā)標(biāo)志是否置位,是則執(zhí)行步驟S2-2,否則執(zhí)行步驟 S2-3 ; 步驟S2-2:記錄當(dāng)前時(shí)刻定時(shí)器的計(jì)數(shù)值到第六寄存器,將所述首次下降沿觸發(fā)標(biāo)志復(fù)位,返回執(zhí)行步驟S2-1 ; 步驟S2-3:記錄當(dāng)前時(shí)刻定時(shí)器的計(jì)數(shù)值到第七寄存器,計(jì)算所述第七寄存器中數(shù)據(jù)與所述第六寄存器中數(shù)據(jù)差的絕對(duì)值,用所述第七寄存器中的數(shù)據(jù)替換所述第六寄存器中的數(shù)據(jù),判斷第二數(shù)據(jù)開(kāi)始標(biāo)志是否置位,是則執(zhí)行步驟S2-5,否則執(zhí)行步驟S2-4 ; 步驟S2-4:判斷所述絕對(duì)值是否滿足預(yù)設(shè)條件,是則將所述第二數(shù)據(jù)開(kāi)始標(biāo)志置位,返回執(zhí)行步驟S2-1,否則直接返回執(zhí)行步驟S2-1 ; 步驟S2-5:判斷所述絕對(duì)值是否在預(yù)設(shè)范圍內(nèi),是則向第二數(shù)組中寫入I個(gè)數(shù)據(jù)位1,執(zhí)行步驟S2-6,否則向第二數(shù)組中寫入I個(gè)數(shù)據(jù)位0,執(zhí)行步驟S2-6; 步驟S2-6:按照第六預(yù)設(shè)方法修改第二寫入次數(shù)變量的值,判斷所述第二寫入次數(shù)變量的當(dāng)前值是否為第二預(yù)設(shè)值,是則修改所述第二寫入次數(shù)變量的值為其初始值,根據(jù)第二接收索引值將所述第二數(shù)組中的數(shù)據(jù)寫入所述下降沿?cái)?shù)組的指定位置,按照第七預(yù)設(shè)方法更新所述第二接收索引值,否則返回執(zhí)行步驟S2-1 ; 其中,所述首次下降沿中斷觸發(fā)標(biāo)志的初始狀態(tài)為置位,所述第二數(shù)據(jù)開(kāi)始標(biāo)志的初始狀態(tài)為復(fù)位。
14.根據(jù)權(quán)利要求13所述的方法,其特征在于, 所述第二寫入次數(shù)變量的初始值為O ; 所述按照第六預(yù)設(shè)方法修改第二寫入次數(shù)變量具體為修改所述第二寫入次數(shù)變量的值為其當(dāng)前值加I ; 所述判斷所述第二寫入次數(shù)變量的當(dāng)前值是否為第二預(yù)設(shè)值具體為判斷所述第二寫入次數(shù)變量的當(dāng)前值是否為8。
15.根據(jù)權(quán)利要求14所述的方法,其特征在于,所述步驟S2-5具體包括: 判斷所述絕對(duì)值是否在預(yù)設(shè)范圍內(nèi),是則向所述第二數(shù)組的低 位端寫入I個(gè)數(shù)據(jù)位1,并將寫入的數(shù)據(jù)位I左移,左移位數(shù)等于所述第二寫入次數(shù)變量當(dāng)前值大小,執(zhí)行步驟S2-6,否則直接執(zhí)行步驟S2-6 ;其中,所述第二數(shù)組中存儲(chǔ)的初始數(shù)據(jù)為0x00。
16.根據(jù)權(quán)利要求14所述的方法,其特征在于,所述步驟S2-5具體包括: 判斷所述絕對(duì)值是否在預(yù)設(shè)范圍內(nèi),是則根據(jù)所述第二寫入次數(shù)變量當(dāng)前值向所述第二數(shù)組指定位寫入I個(gè)數(shù)據(jù)位1,執(zhí)行步驟S2-6,否則直接執(zhí)行步驟S2-6 ;其中,所述第二數(shù)組中存儲(chǔ)的初始數(shù)據(jù)為0x00。
17.根據(jù)權(quán)利要求13所述的方法,其特征在于, 所述第二接收索引值的初始值為0,指向所述下降沿?cái)?shù)組的第O個(gè)字節(jié); 所述按照第七預(yù)設(shè)方法更新所述第二接收索引值具體為更新所述第二接收索引值為其當(dāng)前值加I。
全文摘要
本發(fā)明公開(kāi)一種解析音頻數(shù)據(jù)的方法,涉及通信領(lǐng)域,包括判斷上升沿?cái)?shù)組和下降沿?cái)?shù)組中是否有滿足預(yù)設(shè)條件的字節(jié),是則將有滿足預(yù)設(shè)條件的字節(jié)的數(shù)組作為當(dāng)前數(shù)組,關(guān)閉另外一個(gè)數(shù)組對(duì)應(yīng)的中斷,獲取當(dāng)前數(shù)組的當(dāng)前字節(jié)和下一字節(jié)存入第一寄存器,若第一寄存器中數(shù)據(jù)的值滿足預(yù)設(shè)要求則更新解析索引值,獲取當(dāng)前數(shù)組的當(dāng)前字節(jié)存入第二寄存器,獲取下一字節(jié)存入第三寄存器,將第二寄存器中的數(shù)據(jù)與第三寄存器中的數(shù)據(jù)進(jìn)行校驗(yàn)運(yùn)算,運(yùn)算結(jié)果替換第二寄存器中的數(shù)據(jù),當(dāng)索引值更新次數(shù)等于第一寄存器中數(shù)據(jù)的值時(shí)若第二寄存器中數(shù)據(jù)的值滿足要求則提示接收到的數(shù)據(jù)正確,結(jié)束;本發(fā)明的有益效果在于提高音頻數(shù)據(jù)解析效率和音頻通信的兼容性。
文檔編號(hào)H04W88/02GK103198837SQ20131007851
公開(kāi)日2013年7月10日 申請(qǐng)日期2013年3月12日 優(yōu)先權(quán)日2013年3月12日
發(fā)明者陸舟, 于華章 申請(qǐng)人:飛天誠(chéng)信科技股份有限公司