語音識別算法及其實現(xiàn)_第1頁
語音識別算法及其實現(xiàn)_第2頁
語音識別算法及其實現(xiàn)_第3頁
語音識別算法及其實現(xiàn)_第4頁
語音識別算法及其實現(xiàn)_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、一、概述 1.1. 選題意義 目前,高科技發(fā)展迅速,日新月異,而因為實際需要,各種防盜技術(shù)也日趨多樣化。其中智能人聲防盜系統(tǒng)引起了我們的興趣,因此我們選了語音識別算法及其實現(xiàn)這一課題,來探究一下語音識別的原理及其實現(xiàn)過程。語音識別研究的根本目的是研究出一種具有聽覺功能的機器,能直接接受人的口呼命令,理解人的意圖并做出相應(yīng)的反映。語音識別系統(tǒng)的研究涉及微機技術(shù)、人工智能、數(shù)字信號處理、模式識別、聲學、語言學和認知科學等許多學科領(lǐng)域,是一個多學科綜合性研究領(lǐng)域。近年來,高性能數(shù)字信號處理芯片dsp技術(shù)的迅速發(fā)展,為語音識別的實時實現(xiàn)提供了可能。其中,凌陽公司的單片機以其良好的性價比和代碼的可移植性

2、被廣泛地應(yīng)用于各個領(lǐng)域。因此,我們采用凌陽公司的具有dsp功能和語音特色的完全soc技術(shù)的凌陽十六位單片機來實現(xiàn)語音信號的識別。1.2. 實驗?zāi)康?、掌握特定人語音辨識技術(shù)。 2、可以應(yīng)用于簡單語音控制場合。 二、算法原理2.1. 語音識別的基本過程 根據(jù)實際中的應(yīng)用不同,語音識別系統(tǒng)可以分為:特定人與非特定人的識別、獨立詞與連續(xù)詞的識別、小詞匯量與大詞匯量以及無限詞匯量的識別。但無論那種語音識別系統(tǒng),其基本原理和處理方法都大體類似。一個典型的語音識別系統(tǒng)的原理圖如圖1所示。 語音識別過程主要包括語音信號的預(yù)處理、特征提取、模式匹配幾個部分。預(yù)處理包括預(yù)濾波、采樣和量化、加窗、端點檢測、預(yù)加重

3、等過程。語音信號識別最重要的一環(huán)就是特征參數(shù)提取。提取的特征參數(shù)必須滿足以下的要求: (1)提取的特征參數(shù)能有效地代表語音特征,具有很好的區(qū)分性; (2)各階參數(shù)之間有良好的獨立性; (3)特征參數(shù)要計算方便,最好有高效的算法,以保證語音識別的實時實現(xiàn)。 在訓練階段,將特征參數(shù)進行一定的處理后,為每個詞條建立一個模型,保存為模板庫。在識別階段,語音信號經(jīng)過相同的通道得到語音特征參數(shù),生成測試模板,與參考模板進行匹配,將匹配分數(shù)最高的參考模板作為識別結(jié)果。同時,還可以在很多先驗知識的幫助下,提高識別的準確率。2.2. 語音識別的dsp實現(xiàn)技術(shù)221. 浮點運算的定點實現(xiàn) 在語音識別的算法中,有許

4、多的浮點運算。用定點dsp來實現(xiàn)浮點運算是在編寫語音識別程序中需要首先解決的問題。這個問題可以通過數(shù)的定標方法來實現(xiàn)。數(shù)的定標就是決定小數(shù)點在定點數(shù)中的位置。q表示法是一種常用的定標方法。其表示機制是: 設(shè)定點數(shù)是j,浮點數(shù)是f,則q法表示的定點數(shù)與浮點數(shù)的轉(zhuǎn)換關(guān)系為: 浮點數(shù)f轉(zhuǎn)換為定點數(shù)x:x= (int)y×2q;定點數(shù)z轉(zhuǎn)換為浮點數(shù)y:y =(float)x×2-q。 222. 數(shù)據(jù)精度的處理 用16b的定點dsp實現(xiàn)語音識別算法時,雖然程序的運行速度提高了,但是數(shù)據(jù)精度比較低。這可能由于中間過程的累計誤差而引起運算結(jié)果的不正確。為了提高數(shù)據(jù)的運算精度,在程序中采用

5、了以下的處理方法: (1)擴展精度 在精度要求比較高的地方,將計算的中間變量采用32b,甚至48b來表示。這樣,在指令條數(shù)增加不多的情況下卻使運算精度大大提高了。 (2)采用偽浮點法來表示浮點數(shù) 偽浮點法即用尾數(shù)+指數(shù)的方法來表示浮點數(shù)。這時,數(shù)據(jù)塊的尾數(shù)可以采用q115數(shù)據(jù)格式,數(shù)據(jù)塊的指數(shù)相同。這種表示數(shù)據(jù)的方法有足夠大的數(shù)據(jù)范圍,可以完全滿足數(shù)據(jù)精度的要求,但是需要自己編寫一套指數(shù)和尾數(shù)運算庫,會額外增加程序的指令數(shù)和運算量,不利于實時實現(xiàn)。 以上兩種方法,都可以提高運算精度,但在實際操作時,要根據(jù)系統(tǒng)的要求和算法的復雜度,來權(quán)衡考慮。 223. 變量的維護 在高級語言中,有全局變量與局

6、部變量存儲的區(qū)別,但在dsp程序中,所有聲明的變量在鏈接時都會分給數(shù)據(jù)空間。所以如果按照高級語言那樣定義局部變量,就會浪費大量的dsp存儲空間,這對數(shù)據(jù)空間較為緊張的定點dsp來說,顯然是不合理的。為了節(jié)省存儲空間,在編寫dsp程序時,最好維護好一張變量表。每進入一個dsp子模塊時,不要急于分配新的局部變量,應(yīng)優(yōu)先使用已分配但不用的變量。只有在不夠時才分配新的局部變量。 224. 采用模塊化的程序設(shè)計方法 在語音識別算法的實現(xiàn)中,為了便于程序的設(shè)計和調(diào)試,采用了模塊化的程序設(shè)計方法。以語音識別的基本過程為依據(jù)進行模塊劃分,每個模塊再劃分為若干個子模塊,然后以模塊為單元進行編程和調(diào)試。在編寫程序

7、之前,首先用高級語言對每個模塊進行算法仿真,在此基礎(chǔ)上再進行匯編程序的編寫。在調(diào)試時,可以采用高級語言與匯編語言對比的調(diào)試方式,這樣可以通過跟蹤高級語言與匯編語言的中間狀態(tài),來驗證匯編語言的正確性,并及時的發(fā)現(xiàn)和修改錯誤,縮短編程周期。另外,在程序的編寫過程中,應(yīng)在關(guān)鍵的部分加上必要的注釋與說明,以增強程序的可讀性。 在總調(diào)時,需要在各模塊中設(shè)置好相應(yīng)的人口參數(shù)與出口參數(shù),維護好堆棧指針與中間變量等。三、硬件設(shè)計及功能描述3.1. 外接電路組成部分iob1 iob0 兩個發(fā)光二極管 5v電壓 此部分硬件用于顯示語音控制的現(xiàn)象。1k電阻用于限流作用。 3.2. 凌陽單片機簡介凌陽十六位單片機是臺

8、灣凌陽公司2001年推出的新一代單片機,具有高速度、低價、可靠、實用、體積小、功耗低和簡單易學等特點。其有多種型號,經(jīng)過比較我們選擇了其代表型號spce061a。因為該型號在存儲器資源方面考慮到用戶的較少資源的需求以及便于程序調(diào)試等功能,芯片只內(nèi)嵌32k字的閃存(flash)。較高的處理速度使其能夠非常容易地、快速地處理復雜的數(shù)字信號?,F(xiàn)比較而言,spce061a微控制器是適用于數(shù)字語音識別應(yīng)用領(lǐng)域產(chǎn)品的一種經(jīng)濟的選擇。spce061a的內(nèi)部結(jié)構(gòu)圖如下圖所示,其中輸出端ioa15和iob15分別接上圖的iob1 和iob0,組成整體電路。四、軟件設(shè)計及使用說明 4.1. 主程序軟件設(shè)計流程及說

9、明 411. 語音識別函數(shù)1) 【api格式】int bsr_deletesdgroup(0); 【功能說明】sram初始化。 【參 數(shù)】該參數(shù)是辨識的一個標識符,0代表選擇sram,并初始化。 【返 回 值】當sram擦除成功返回0,否則,返回1。 2) 【api格式】int bsr_train (int commandid, int traindmode); 【功能說明】訓練函數(shù)。 【參 數(shù)】 commandid:命令序號,范圍從0x100到0fff,并且對于每組訓練語句都是唯一的。 traindmode:訓練次數(shù),要求使用者在應(yīng)用之前訓練一或兩遍: bsr_train_once:要求訓練

10、一次。 bsr_train_twice要求訓練兩次。 【返 回 值】訓練成功,返回0;沒有聲音返回1;訓練需要更多的語音數(shù)據(jù)來訓練,返回2;當環(huán)境太吵時,返回3;當數(shù)據(jù)庫滿,返回4;當兩次輸入命令不同,返回5;當序號超出范圍,返回6。 【備 注】 在調(diào)用訓練程序之前,確保識別器正確的初始化。 訓練次數(shù)是2時,則兩次一定會有差異,所以一定要保證兩次訓練結(jié)果接近 為了增強可靠性,最好訓練兩次,否則辨識的命令就會傾向于噪音 調(diào)用函數(shù)后,等待2秒開始訓練,每條命令只有1 .3秒,也就是說,當訓練命令超出1.3秒時,只有前1.3秒命令有效。 412. 辨識部分1) 【api格式】void bsr_ini

11、trecognizer(int audiosource) 【功能說明】辨識器初始化。 【參 數(shù)】定義語音輸入來源。通過mic語音輸入還是line_in電壓模擬量輸入。 【返 回 值】無。 2) 【api格式】int bsr_getresult(); 【功能說明】辨識中獲取數(shù)據(jù)。 【參 數(shù)】 無。 【返回值】r1 當無命令識別出來時,返回0; 識別器停止未初始化或識別未激活返回1; 當識別不合格時返回2; 當識別出來時返回命令的序號。 【備 注】 該函數(shù)用于啟動辨識,bsr_getresult(); 3) 【api格式】void bsr_stoprecognizer(void); 【功能說明】停

12、止辨識。 【參 數(shù)】無。 【返 回 值】 無。 【備 注】該函數(shù)是用于停止識別,當調(diào)用此函數(shù)時,fiq_tma中斷將關(guān)閉。 中斷部分: 【api格式】 _bsr_initrecognizer 【功能說明】 在中斷中調(diào)用,并通過中斷將語音信號送dac通道播放。 【參 數(shù)】 無。 【返 回 值】 無。 【備 注】 該函數(shù)在中斷fiq_tma中調(diào)用 當主程序調(diào)用bsr_initrecognizer時,辨識器便打開8k采樣率的fiq_tma中斷并開始將采樣的語音數(shù)據(jù)填入辨識器的數(shù)據(jù)隊列中。 應(yīng)用程序需要設(shè)置一下程序段在fiq_tma中: 42. 程序變量說明421全局變量1)gactivated 【功

13、能】該變量用于檢測是否有觸發(fā)命令,當有識別出語句為觸發(fā)名稱則該位置1 【應(yīng)用】用戶無法對該變量進行處理 2)gtriggerrespond 【功能】該變量為一三元素數(shù)組,用于保存觸發(fā)命令語音序號。 【應(yīng)用】用戶在自定義觸發(fā)命令時,可以修改該數(shù)組元素。 3)gcomm2respond 【功能】該變量為一三元素數(shù)組,用于保存命令語音序號。 【應(yīng)用】用戶在自定義觸發(fā)命令時,可以修改該數(shù)組元素。 4)playflag 【功能】該變量為1時,表示播放a2000格式語音,0,播放s480格式語音。 【應(yīng)用】用戶使用時,注意判斷是使用a2000還是s480。 422局部變量 1) res 【功能】該變量用于

14、保存int bsr_train (int commandid, int traindmode)返回值:返回0,訓練成功;返回1,沒有聲音;返回2,訓練需要更多的語音數(shù)據(jù)來訓練;返回3,環(huán)境太吵;返回4,當數(shù)據(jù)庫滿;返回5,當兩次輸入命令不同;返回6,當序號超出范圍。 【應(yīng)用】用戶通過對該變量的判斷了解辨識的結(jié)果 2)timecnt 【功能】用于命令定時使用,在1.5秒內(nèi),識別成功,將其清零,否則語音提示,“沒有聽到任何聲音” 【應(yīng)用】用戶使用時,只要將此值進行清零即可。 3)random_no 【功能】在gtriggerrespond3 與 gcomm2respond3中,選擇兩數(shù)組中的元素。

15、 表示語音播放的序號。 【應(yīng)用】用戶使用時,通過設(shè)置此變量選擇命令和識別的語音響應(yīng)。 4.3程序使用說明 *訓練* 提示音 輸入語音 - "請輸入觸發(fā)名稱" "警衛(wèi)" "請輸入第一條命令" "紅燈亮" "請輸入第二條命令" "紅燈滅" "請輸入第三條命令" "綠燈亮""請輸入第四條命令" "綠燈滅" "請再說一遍"(以上提示音每說完一遍出現(xiàn)此命令) "沒有聽到任何聲音

16、" (當沒有檢測到聲音時出現(xiàn)此命令) "兩次輸入名稱不相同"(當兩次輸入的名稱不同時出現(xiàn)此命令) "兩次輸入命令不相同"(當兩次輸入的命令有差異時出現(xiàn)此命令) "準備就緒,請開始辨識"(以上五條語句全部訓練成功時,進入識別) *識別* 發(fā)布命令 應(yīng)答 - "警衛(wèi)" "在" "紅燈亮" iob0口燈被點亮 "紅燈滅" iob0口燈被熄滅 "綠燈亮" iob1口燈被點亮 "綠燈滅" iob1口燈被熄滅 注意:

17、在每次提示音結(jié)束后2-3秒再輸入命令或當上次應(yīng)答結(jié)束2-3秒后再發(fā)布命令 4.4 主程序流程圖及說明 五、原程序清單5.1. 主程序/工程名稱: guard_sd.spj/ 功能描述: 該程序是特定人辨識的一個范例:/在程序中我們通過三條語句的訓練演示特定人連續(xù)音識別,其中/第一條語句為觸發(fā)命令。/在程序一開始為訓練名稱,即觸發(fā)命令,然后提示訓練兩條命令,/訓練完畢開始辨識當識別出觸發(fā)名稱后,發(fā)布命令則會聽到應(yīng)答,具體命令如/下:/*訓練* / 提示音 輸入語音/- /"請輸入觸發(fā)名稱" "警衛(wèi)"/"請輸入第一條命令" "紅

18、燈亮"/"請輸入第二條命令" "紅燈滅"/"請輸入第三條命令" "綠燈亮"/"請輸入第四條命令" "綠燈滅"/"請再說一遍"(以上提示音每說完一遍出現(xiàn)此命令)/"沒有聽到任何聲音" (當沒有檢測到聲音時出現(xiàn)此命令)/"兩次輸入名稱不相同"(當兩次輸入的名稱不同時出現(xiàn)此命令)/"兩次輸入命令不相同"(當兩次輸入的命令有差異時出現(xiàn)此命令)/"準備就緒,請開始辨識"(以上五

19、條語句全部訓練成功時,進入識別)/*識別* / 發(fā)布命令 應(yīng)答/- /"警衛(wèi)" "在"/"紅燈亮" iob0口燈被點亮/"紅燈滅" iob0口燈被熄滅/"綠燈亮" iob1口燈被點亮/"綠燈滅" iob1口燈被熄滅/注意: 在每次提示音結(jié)束后2-3秒再輸入命令或當上次應(yīng)答結(jié)束2-3秒后/再發(fā)布命令/ / ide環(huán)境: sunplus u'nsptm ide 1.8.0(or later)/ 涉及的庫:cmacro.lib/sacmv25.lib/bsrv222sdl.

20、lib/ 組成文件:main.c/ fiq.asm/hardware.asm/key.asm/initio.asm/ hardware.inc/ /=#include "bsrsd.h"#define name_id 0x100#define command_one_id 0x101#define command_two_id 0x102#define command_three_id 0x103#define command_four_id 0x104#define rsp_intr0#define rsp_name 0#define rsp_fire 1#define

21、rsp_guard2#define rsp_again 3#define rsp_novoice4#define rsp_namediff 5#define rsp_cmddiff6#define rsp_star 7#define rsp_master8#define rsp_here 9#define rsp_gunshot0#define rsp_patrol11#define rsp_ready12#define rsp_copy 13#define bsr_mic 14#define bsr_train_twice 15#define rsp_noisy 16/.全程變量.int g

22、activated = 0;/該變量用于檢測是否有觸發(fā)命令,當有識別出語句/為觸發(fā)名稱則該位置1 int gtriggerrespond = rsp_master, rsp_here, rsp_master;int gcomm2respond = rsp_patrol, rsp_ready, rsp_copy;extern void clearwatchdog();int playflag = 0;void playrespond(int result)bsr_stoprecognizer();sacm_s480_initial(1);sacm_s480_play(result, 3, 3);

23、while(sacm_s480_status()&0x0001) != 0)sacm_s480_serviceloop();clearwatchdog();sacm_s480_stop();bsr_initrecognizer(bsr_mic);bsr_enablecpuindicator();int trainword(int wordid, int respondid)int res;playrespond(respondid);while(1)res = bsr_train(wordid,bsr_train_twice);if(res = 0) break;switch(res)

24、case -1: /沒有檢測出聲音playrespond(rsp_novoice);return -1;case -2: /需要重新訓練一遍playrespond(rsp_again);break;case -3: /環(huán)境太吵playrespond(rsp_noisy);return -1;case -4: /數(shù)據(jù)庫滿 return -1;case -5: /檢測出聲音不同if(wordid = name_id)playrespond(rsp_namediff); /兩次輸入名稱不同elseplayrespond(rsp_cmddiff); /兩次輸入命令不同return -1;case -6

25、: /序號錯誤return -1;return 0;int main()int res, timecnt = 0, random_no = 0;initio();bsr_deletesdgroup(0);/ 初始化存儲器ramplayrespond(rsp_intr); / 播放開始訓練的提示音"請輸入觸發(fā)名稱"/.訓練名稱.while(trainword(name_id,0) != 0) ; /.訓練第一條命令.while(trainword(command_one_id,1) != 0) ;/.訓練第二條命令.while(trainword(command_two_id

26、,2) != 0) ;/.訓練第三條命令.while(trainword(command_three_id,12) != 0) ;/.訓練第四條命令.while(trainword(command_four_id,13) != 0) ;/.開始識別命令.bsr_initrecognizer(bsr_mic); /辨識器初始化bsr_enablecpuindicator(); /啟動實時監(jiān)控playrespond(rsp_star); /播放開始辨識的提示音while(1)random_no +;if(random_no >= 3) random_no = 0;res = bsr_getr

27、esult();if(res > 0) /識別出命令if(gactivated)timecnt = 0;switch(res)case name_id: /觸發(fā)命令響應(yīng)playrespond(gtriggerrespondrandom_no);break;case command_one_id: /識別第一個命令playflag = 1;led_red_on();playflag = 0;gactivated = 0;break;case command_two_id: /識別到第二條命令led_red_off(); /響應(yīng)第二條命令“我在巡邏”gactivated = 0;break;

28、case command_three_id: /識別第三條命令 led_gre_on(); gactivated = 0; break; case command_four_id: /識別第四條命令 led_gre_off(); gactivated = 0; break; elseif(res = name_id)playrespond(gtriggerrespondrandom_no);gactivated = 1;timecnt = 0;else if (gactivated)if (+timecnt > 450)/超出定時playrespond(rsp_novoice); /在設(shè)

29、定時間內(nèi)沒有檢測出聲音gactivated = 0;timecnt = 0;5.2. 子程序5.21. hardware.asm.publicf_sp_rampupdac1.publicf_sp_rampdndac1.publicf_sp_rampupdac2.publicf_sp_rampdndac2.public_sp_rampupdac1 .public_sp_rampdndac1 .public_sp_rampupdac2 .public_sp_rampdndac2 .public_sp_initqueue.public_sp_initqueue_a2000.public_sp_ini

30、tqueue_s480.public_sp_initqueue_s240.public_sp_initqueue_ms01.public_sp_initqueue_dvr.publicf_sp_initqueue.publicf_sp_initqueue_a2000.publicf_sp_initqueue_s480.publicf_sp_initqueue_s240.publicf_sp_initqueue_ms01.publicf_sp_initqueue_dvr.publicf_sp_readqueue.public f_sp_readqueue_a2000.public f_sp_re

31、adqueue_s480.public f_sp_readqueue_s240.public f_sp_readqueue_ms01.public f_sp_readqueue_dvr.publicf_sp_readqueue_nic/ read queue with no index change.publicf_sp_readqueue_nic_a2000.publicf_sp_readqueue_nic_s480.publicf_sp_readqueue_nic_s240.publicf_sp_readqueue_nic_ms01.publicf_sp_readqueue_nic_dvr

32、.publicf_sp_writequeue.public f_sp_writequeue_a2000.public f_sp_writequeue_s480.public f_sp_writequeue_s240.public f_sp_writequeue_ms01.public f_sp_writequeue_dvr.public f_sp_testqueue.public f_sp_testqueue_a2000.public f_sp_testqueue_s480.public f_sp_testqueue_s240.public f_sp_testqueue_ms01.public

33、 f_sp_testqueue_dvr.public _sp_export .public_sp_import .public _sp_init_iob .public _sp_init_ioa .public_sp_getresource.public f_sp_getresource.public f_sp_sacm_a2000_init_.public f_sp_sacm_s480_init_.public f_sp_sacm_s240_init_.public f_sp_sacm_ms01_init_.public f_sp_playmode0_.public f_sp_playmod

34、e1_ .public f_sp_playmode2_ .public f_sp_playmode3_ .public f_sp_sacm_dvr_init_.public f_sp_sacm_dvr_rec_init_.public f_sp_sacm_dvr_play_init_.publicr_interruptstatus .publicf_rampupdac1 .publicf_rampdndac1 .publicf_rampupdac2 .publicf_rampdndac2 .public_std_rampupdac1 .public_std_rampdndac1 .public

35、_std_rampupdac2 .public_std_rampdndac2 / definitions for i/o port.definep_ioa_data 0x7000 .define p_ioa_buffer 0x7001 .define p_ioa_dir 0x7002 / direction vector for ioa.define p_ioa_attrib 0x7003 / attribute vector for ioa.define p_ioa_latch 0x7004 .define p_iob_data 0x7005 .define p_iob_buffer 0x7

36、006 .define p_iob_dir 0x7007 / direction vector for iob.define p_iob_attrib 0x7008 / attribute vector for iob.define p_feedback 0x7009 / clock form external r,c.define p_timera_data 0x700a / data port for timera .define p_timera_ctrl 0x700b / control port for timera.define p_timerb_data 0x700c / dat

37、a port for timerb.define p_timerb_ctrl 0x700d / control port for timerb.define p_timebase_setup 0x700e / timerbase freq. set.define p_timebase_clear0x700f / reset timerbase counter.define p_int_ctrl 0x7010 .define p_int_clear 0x7011 / clear interrupt source.define p_watchdog_clear 0x7012 / watchdog

38、reset.define p_systemclock 0x7013 /. pa6442 new version mc52a (for ec-03).define p_adc 0x7014 / data port for ad.define p_adc_ctrl 0x7015 .define p_adc_status 0x7015 / ad port status.define p_dac2 0x7016 / data port for dac2.define p_pwm 0x7016 / data port for pwm.define p_dac1 0x7017 / data port fo

39、r dac1.define p_dac_ctrl0x702a .define p_ir_ctrl0x7018 / control port for ir.define p_lvd_ctrl 0x7019 / control port for lvd.define p_sio_data0x701a / data port for serial io.define p_sio_addr_low0x701b / address port low.define p_sio_addr_mid0x701c / address port middle.define p_sio_addr_high 0x701

40、d / address port high.define p_sio_ctrl0x701e / control port.define p_sio_start0x701f .define p_sio_stop0x7020 .define p_uart_command1 0x7021 / command1 port for uart.define p_uart_command2 0x7022 / command2 port for uart.define p_uart_data 0x7023 / data port for uart.definep_uart_baudscalarlow 0x70

41、24 / set baud rate scalar low.definep_uart_baudscalarhigh 0x7025 / set baud rate scalar high/. definitions for p_int_ctrl .define c_irq6_tmb2 0x0001 / timer b irq6.define c_irq6_tmb1 0x0002 / timer a irq6.define c_irq5_2hz 0x0004 / 2hz irq5.define c_irq5_4hz 0x0008 / 4hz irq5.define c_irq4_1khz 0x00

42、10 / 1024hz irq4.define c_irq4_2khz 0x0020 / 2048hz irq4.define c_irq4_4khz 0x0040 / 4096hz irq4.define c_irq3_key 0x0080 / key change irq3.define c_irq3_ext1 0x0100 / ext1 irq3.define c_irq3_ext2 0x0200 / ext2 irq3.define c_irq2_tmb 0x0400 / timer b irq2.define c_fiq_tmb 0x0800 / timer b fiq.define

43、 c_irq1_tma 0x1000 / timer a irq1.define c_fiq_tma 0x2000 / timer a fiq.define c_irq0_pwm 0x4000 / pwm irq0.define c_fiq_pwm 0x8000 / pwm fiq/ definitions for p_timera/b_ctrl . .definec_fosc_20x0000 .definec_fosc_256 0x0001 .definec_32768hz0x0002 .definec_8192hz0x0003 .definec_4096hz0x0004 .definec_

44、a10x0005 .define c_a0 0x0006 .define c_ext10x0007 .definec_2048hz0x0000 .definec_1024hz0x0008 .definec_256hz0x0010 .definec_tmb1hz0x0018 .definec_4hz0x0020 .definec_2hz0x0028 .definec_b10x0030 .definec_ext20x0038 .definec_off0x0000 .define c_d10x0040 .define c_d20x0080 .define c_d30x00c0 .define c_d

45、40x0100 .define c_d50x0140 .define c_d60x0180 .define c_d70x01c0 .define c_d80x0200 .define c_d90x0240 .define c_d100x0280 .define c_d110x02c0 .define c_d120x0300 .define c_d130x0340 .define c_d140x0380 .define c_ta_div_20x03c0 / timer a.define c_tb_div_20x03c0 / timer b/. definition for p_systemclock .define c_fosc0x0000 / b3.b0.define c_fosc_div_20x0001 .define c_fosc_div_40x0002 .define c_fosc_div_80x0003 / (default

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論