亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? main.c

?? 使用凌陽單片機的多命令語音識別范例
?? C
字號:
//=======================================================================
//
//The information contained herein is the exclusive property of
//Sunplus Technology Co. And shall not be distributed, reproduced,
//or disclosed in whole in part without prior written permission.
//
//      (C) COPYRIGHT 2001   SUNPLUS TECHNOLOGY CO.
//                  ALL RIGHTS RESERVED
//
//The entire notice above must be reproduced on all authorized copies.
//
//======================================================================
//*****************************************************************//
//  工程名稱:   Recognise_SD.scs
//  作    者:    huali    
//  聯系方式:   huali@sunnorth.com.cn
//  適應芯片:    SPCE061A
//  功能描述:    實現特定人識別
//			     可以用61板來完成:
//				1、KEY1--訓練命令
//				2、KEY2--識別
//				3、KEY3--將訓練的命令存在外擴的flas4096中
//				最多可以識別25條命令其中5條為觸發命令,該程序只做了10條命令
//				的識別,用戶自己也可以擴展
//	硬件連接:flas SPR4096和SPCE061A的連接請參考網站SPR4096的應用,按鍵分別
//				連接的是IOA0(KEY1)、IOA1(KEY2)和IOA2(KEY3)
//	日期:2003/9/4
//			     
//  涉及的庫:	
//				(a) C-Lib:  CMacro.lib
//            	(b) Recogition-Lib:  bsrv222SDL.lib
//				(c)	voic-Lib:sacmv26e.lib
//  組成文件:
//    			 main.c/ISR.asm/system.asm/hardware.asm/key.asm 
//     			 s480.h/bsrsd.h/hardware.inc
//  完成日期:    2003-09-04
//*****************************************************************//

#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 C_Commond_Start		0
#define	C_GroupOne_Start	600
#define	C_GroupTwo_Start	1600

#define C_PageOne		0
#define C_PagTwo		1

#define Recognise		1
#define Train			2
#define NO_Re_Tr		0
#define C_Recognise		1
//***************************全程變量******************************//
void g_Recognise(void);
void Add_Group(void);
void Export_Group(void);
void Add_Commond_Group(void);
void Export_Commond_Group(void);

extern 	void ClearWatchDog();
extern  unsigned int BSR_SDModel[100];

unsigned int Key;
unsigned int commandID;
unsigned int res,Ret;
unsigned int timeCnt=0;
unsigned int g_status;
unsigned int k,i,j;

unsigned int g_Ret;
unsigned int uiflag=0;
unsigned int g_Commond_Train=0;
unsigned int g_Commond_ImportGroupNum=0;
unsigned int g_Commond_EmportGroupNum=0;
unsigned long int ulAddr=0;
unsigned int gActivated = 0;	//該變量用于檢測是否有觸發命令,當有識別出語句
                    			//為觸發名稱則該位置1                    

//***************語音播放******************************************//
//函數:PlayRespond(int Result)
//描述:識別或提示音的播放
//參數:語音播放序號
//返回:無
//*****************************************************************//
void PlayRespond(int Result)
{
	BSR_StopRecognizer();
	SACM_S480_Initial(1);
	SACM_S480_Play(Result, 3, 3);
	while((SACM_S480_Status()&0x0001) != 0)
	{
		SACM_S480_ServiceLoop();
	ClearWatchDog();
	}
	SACM_S480_Stop();
	BSR_InitRecognizer(BSR_MIC);
//	BSR_EnableCPUIndicator();	
}

//***************訓練命令******************************************//
//函數:TrainWord(int WordID, int RespondID)
//描述:命令的訓練
//參數:int WordID:ID序號;int RespondID:語音播放序號
//返回:
//		0:訓練成功;
//		-1:沒有檢測到聲音;
//		-2:重新訓練;
//		-3:環境太吵;
//		-4:buffer滿;
//		-5:兩次訓練內容不同;
//		-6:ID超出范圍;
//*****************************************************************//
int TrainWord(int WordID, int RespondID)
{
	PlayRespond(RespondID);
	while(1)
	{
		res = BSR_Train(WordID,BSR_TRAIN_TWICE);
		if(res == 0)
			break;
		switch(res)
		{
			case -1: 									//沒有檢測出聲音
				PlayRespond(10);
				return -1;
			case -2: 									//需要重新訓練一遍
				PlayRespond(9);
				break;
			case -3: 									//環境太吵
				PlayRespond(11);
				return -1;		
			case -4: 									//數據庫滿
			 	return -1;
			case -5: 									//檢測出聲音不同
				if(WordID == NAME_ID)	PlayRespond(11);//兩次輸入名稱不同
				else					PlayRespond(11);//兩次輸入命令不同
				return -1;
			case -6: 									//序號錯誤
				return -1;
		}
	}
	return 0;
}
//*****************************************************************//
//  文件名稱:   main.c
//  描    述:  主程序通過三個按鍵來分別控制:命令的訓練、命令存入flash
//				和從flash中讀出命令進行識別
//  完成日期:   2003/09/04
//*****************************************************************//
int main()
{
	System_Initial();
	while(1)
	{
		Key = SP_GetCh();											//獲取鍵值
		switch(Key)
		{
				case 0x0001:										//Train					
					g_Commond_Train++;				
					BSR_DeleteSDGroup(0);							//初始化存儲器RAM
					PlayRespond(0);															    												
					while(TrainWord(NAME_ID,0) != 0) ;										
					while(TrainWord(COMMAND_ONE_ID,16) != 0) ;
					while(TrainWord(COMMAND_TWO_ID,17) != 0) ;							
					if(g_Commond_Train!=1)
					{
						while(TrainWord(COMMAND_THREE_ID,18) != 0) ;
						while(TrainWord(COMMAND_FOUR_ID,19) != 0) ;
					}									
					break;
				case 0x0002:											
					Add_Commond_Group();							//從flash中讀出三條命令的數據加入RAM																					
					g_status=C_Recognise;					
					BSR_InitRecognizer(BSR_MIC);		    		//識別初始化
				//	BSR_EnableCPUIndicator();
					PlayRespond(15);			    				//語音播放"教您學英語"				
					g_Recognise();
					break;					
				case 0x0004:										//將訓練好的命令存入flash					
					g_Commond_EmportGroupNum++;
					if(g_Commond_EmportGroupNum==1)
					{
						SP_SIOSectorErase(C_PageOne);				//擦除flash的第一頁	
						ulAddr=C_Commond_Start;					
						Export_Commond_Group();						//將訓練的三條命令寫入flash
					}
					else
					{
						if(g_Commond_EmportGroupNum==2)
						{	
							SP_SIOSectorErase(C_PagTwo);			//擦除flash第二頁
							ulAddr=C_GroupOne_Start;
						}						
						else
						if(g_Commond_EmportGroupNum==3)
							ulAddr=C_GroupTwo_Start;						
						Export_Group();
						
					}			    				
					break;					
				default:
					break;		
		}					 
		System_ServiceLoop();
	}
}
//***************識別命令******************************************//
//函數:TrainWord(int WordID, int RespondID)
//描述:識別分兩組,分別由兩條命令來控制。首先程序會先調入第一組命令
//		根據這兩條命令再分別識別5條命令
//涉及到的函數:BSR_GetResult()--該函數主要用來進行識別的
//參數:無
//返回:無
//*****************************************************************//
void g_Recognise()
{
	while(g_status == C_Recognise)
	{
		res = BSR_GetResult();									//識別
		if(res > 0)									
		{
			if(gActivated)
			{
				timeCnt = 0;
				switch(res)
				{
					case NAME_ID:
						PlayRespond(14);						//語音播放"yea" 						
						break;
					case COMMAND_ONE_ID:							
						PlayRespond(12);						//語音播放"漢語"														
						gActivated = 0;
						uiflag=1;
						BSR_StopRecognizer();					//停止識別												
						ulAddr=C_GroupOne_Start;																					
						Add_Group();							//將第一組5條命令加入RAM 
						BSR_InitRecognizer(BSR_MIC);			//識別初始化
					//	BSR_EnableCPUIndicator();
						while(uiflag)
						{
							res = BSR_GetResult();				//識別
							switch(res)
							{
								case NAME_ID:
									PlayRespond(14);			//語音播放"yea"										
									Add_Commond_Group();		//重新將三條命令加入RAM
									uiflag=0;
									BSR_InitRecognizer(BSR_MIC);//識別初始化	
								//	BSR_EnableCPUIndicator();						
									break;
								case COMMAND_ONE_ID:
									PlayRespond(1);				//"圣誕快樂"							
									break;
								case COMMAND_TWO_ID:
									PlayRespond(2);				//"新年快樂"					
									break;
								case COMMAND_THREE_ID:
									PlayRespond(3);				//"生日快樂"							
									break;
								case COMMAND_FOUR_ID:
									PlayRespond(4);				//快樂每一天							
									break;
							}
						}
						break;
					case COMMAND_TWO_ID:							
						PlayRespond(13);						//語音播放"英語"													
						gActivated = 0;
						uiflag=1;
						BSR_StopRecognizer();					//停止識別										
						ulAddr=C_GroupTwo_Start;
						Add_Group();							//將第二組5條命令加入RAM 
						BSR_InitRecognizer(BSR_MIC);			//識別初始化	
					//	BSR_EnableCPUIndicator();							
						while(uiflag)
						{
							res = BSR_GetResult();				//識別
							switch(res)
							{
								case NAME_ID:
									PlayRespond(14);			//語音播放"yea"								
									Add_Commond_Group();		//重新將三條命令加入RAM
									uiflag=0;
									BSR_InitRecognizer(BSR_MIC);//識別初始化
								//	BSR_EnableCPUIndicator();							
									break;
								case COMMAND_ONE_ID:
									PlayRespond(5);				//"merry christmas"					
									break;
								case COMMAND_TWO_ID:
									PlayRespond(6);				//"Happy new year"					
									break;
								case COMMAND_THREE_ID:
									PlayRespond(7);				//"Happy birthDay"					
									break;
								case COMMAND_FOUR_ID:
									PlayRespond(8);				//"Happy everyday"					
									break;
							}
						}
						break;
				}									
			}
			else
			{
				if(res == NAME_ID)
				{
					PlayRespond(14);
					gActivated = 1;
					timeCnt = 0;
				}
			}	
		}//end of (res > 0)
		else if (gActivated)
		{
			if (++timeCnt > 450)								//超出時間
			{
				PlayRespond(10); 								//在規定的時間內沒有識別到聲音					
				gActivated = 0;
				timeCnt = 0;
			}
		}			
	}
}			
//***************將訓練好的三條命令存入flash***********************//
//函數:Export_Commond_Group()
//描述:將訓練好的三條命令存入flash
//參數:無
//返回:無
//*****************************************************************//
void Export_Commond_Group()
{
	for(commandID=0x100;commandID<0x103;commandID++)
	{
		g_Ret=BSR_ExportSDWord(commandID);						//將訓練好的命令存入BSR_SDModel[]buffer中
		while(g_Ret!=0)
		g_Ret=BSR_ExportSDWord(commandID);						//Export faild		
		for(i=0;i<100;i++)
		{
			SP_SIOSendAWord(ulAddr,BSR_SDModel[i]);
			ulAddr+=2;													
		}	
	}
}

//**********************將訓練好的5條命令存入flash*****************//
//函數:Export_Group()
//描述:將訓練好的5條命令存入flash
//參數:無
//返回:無
//*****************************************************************//
void Export_Group()
{
	for(commandID=0x100;commandID<0x105;commandID++)
	{
		g_Ret=BSR_ExportSDWord(commandID);
		while(g_Ret!=0)
		g_Ret=BSR_ExportSDWord(commandID);//		
		for(i=0;i<100;i++)
		{
			SP_SIOSendAWord(ulAddr,BSR_SDModel[i]);
			ulAddr+=2;												
		}	
	}
}

//**********************從flash中取出三組數據存入SRAM中***************//
//函數:Add_Commond_Group()
//描述:從flash中取出三組數據存入SRAM中
//參數:無
//返回:無
//********************************************************************//
void Add_Commond_Group()
{
	BSR_DeleteSDGroup(0);
	ulAddr=C_Commond_Start;																					
	for(j=0;j<3;j++)
	{
		for(k=0;k<100;k++)
		{
			Ret=SP_SIOReadAWord(ulAddr);							
			BSR_SDModel[k]=Ret;								//將flash中讀到的數據存入BSR_SDModel[]buffer中		
			ulAddr+=2;													
		}					
		g_Ret=BSR_ImportSDWord();							//將buffer BSR_SDModel[]中的數存入RAM中
		while(g_Ret!=0)
		g_Ret=BSR_ImportSDWord();							
	}
}

//**********************從flash中取出5組數據存入RAM*************//
//函數:Add_Group()
//描述:從flash中取出5組數據存入RAM
//參數:無
//返回:無
//*****************************************************************//
void Add_Group()
{
	BSR_DeleteSDGroup(0);				
	for(j=0;j<5;j++)
	{
		for(k=0;k<100;k++)
		{
			Ret=SP_SIOReadAWord(ulAddr);							
			BSR_SDModel[k]=Ret;				
			ulAddr+=2;													
		}					
		g_Ret=BSR_ImportSDWord();
		while(g_Ret!=0)
		g_Ret=BSR_ImportSDWord();							
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人一区二区三区| 亚洲成av人影院| 欧美精品一二三| 成人激情黄色小说| 久久99精品久久久| 亚洲国产精品精华液网站| 国产亚洲精品aa| 久久新电视剧免费观看| 日韩一区二区免费视频| 欧美日韩激情一区| 免费观看在线综合| 欧美日韩久久久一区| 91片黄在线观看| 色婷婷av一区二区三区软件| 91小视频在线| 欧美老肥妇做.爰bbww| 日韩一区二区电影| 久久精品综合网| **欧美大码日韩| 视频一区二区三区在线| 久久福利资源站| 色av成人天堂桃色av| 色屁屁一区二区| 欧美日韩国产高清一区二区三区| 91麻豆精品国产| 2020国产精品| 亚洲精品成人在线| 久久精品噜噜噜成人av农村| 国产成人在线看| 欧美私人免费视频| 欧美成人vr18sexvr| 亚洲视频免费在线观看| 天堂蜜桃91精品| fc2成人免费人成在线观看播放 | 精品久久久久久久久久久久久久久| 26uuu亚洲综合色欧美| 国产精品久久夜| 日韩精品一区第一页| 不卡的av在线播放| 欧美成人女星排名| 亚洲资源中文字幕| 久久成人精品无人区| 日本韩国一区二区| 久久久777精品电影网影网 | a在线欧美一区| 欧美军同video69gay| 国产午夜一区二区三区| 亚洲国产日韩a在线播放性色| 黑人精品欧美一区二区蜜桃| 99热国产精品| 久久久久国色av免费看影院| 天天色综合天天| 91黄色免费版| 中文字幕在线一区| 国产乱妇无码大片在线观看| 欧美丰满少妇xxxxx高潮对白 | 激情综合网最新| 久久久久久久久99精品| 欧美亚洲精品一区| 亚洲一区在线观看免费观看电影高清 | 亚洲国产毛片aaaaa无费看| 欧洲中文字幕精品| 蜜臀va亚洲va欧美va天堂| 精品第一国产综合精品aⅴ| 国产.欧美.日韩| 一区二区成人在线| 久久老女人爱爱| 91激情五月电影| 国产麻豆精品95视频| 亚洲天堂2014| 欧美大白屁股肥臀xxxxxx| 成人一区二区三区中文字幕| 日韩制服丝袜先锋影音| 中文字幕高清一区| 欧美丰满美乳xxx高潮www| 国产成人日日夜夜| 欧美a一区二区| 一区二区三区中文在线观看| 欧美成人精品1314www| 91视频www| 国产一区二区三区综合| 日韩有码一区二区三区| 亚洲少妇最新在线视频| 久久久影视传媒| 欧美一二三区在线观看| 色婷婷激情一区二区三区| 国产成人精品亚洲午夜麻豆| 日本美女一区二区三区视频| 亚洲日本丝袜连裤袜办公室| 精品国产99国产精品| 欧美色欧美亚洲另类二区| 成人免费视频视频在线观看免费| 另类欧美日韩国产在线| 亚洲一区在线电影| 成人欧美一区二区三区小说 | 精品亚洲国产成人av制服丝袜| 日韩码欧中文字| 久久精品欧美日韩| 日韩视频一区二区三区| 欧美日本国产一区| 在线观看区一区二| 91色在线porny| 99免费精品视频| 成人免费毛片a| 成人在线视频一区二区| 国产精品一区在线观看你懂的| 久久精品国产77777蜜臀| 蜜芽一区二区三区| 免费看精品久久片| 男女视频一区二区| 美国av一区二区| 久久爱另类一区二区小说| 蜜臀av性久久久久av蜜臀妖精| 日韩不卡手机在线v区| 亚洲成av人综合在线观看| 亚洲第一主播视频| 午夜精品久久久久久久久 | 亚洲欧美日韩精品久久久久| 中文字幕制服丝袜成人av| 亚洲三级在线免费| 亚洲乱码国产乱码精品精小说 | 自拍偷拍亚洲激情| 亚洲美女偷拍久久| 亚洲一区在线电影| 亚洲成a人v欧美综合天堂| 丝袜亚洲另类丝袜在线| 麻豆91在线播放免费| 狠狠久久亚洲欧美| 国产精品资源在线看| 成人免费黄色在线| 91久久久免费一区二区| 91精品国产综合久久精品麻豆| 26uuu精品一区二区| 国产精品美女久久福利网站| 亚洲欧美偷拍卡通变态| 天天综合网 天天综合色| 国产在线精品一区二区不卡了 | 538在线一区二区精品国产| 日韩亚洲欧美在线观看| 国产日韩精品一区二区浪潮av| 成人免费视频在线观看| 亚洲444eee在线观看| 国产精品一线二线三线精华| 色综合一个色综合亚洲| 日韩亚洲欧美综合| 成人欧美一区二区三区白人 | 欧美一区二区三区色| xnxx国产精品| 亚洲精品伦理在线| 久久99国内精品| 色乱码一区二区三区88| 日韩欧美视频在线| 专区另类欧美日韩| 免费观看日韩av| 91视频观看视频| 精品国产乱子伦一区| 一区二区欧美视频| 国产一区欧美日韩| 欧美午夜不卡视频| 国产欧美一区二区精品性色超碰 | 亚洲高清免费在线| 国产99久久久精品| 日韩小视频在线观看专区| 国产精品久久综合| 韩国在线一区二区| 欧美亚一区二区| 国产精品国产三级国产普通话99 | 无码av中文一区二区三区桃花岛| 丁香五精品蜜臀久久久久99网站| 在线电影一区二区三区| 中文字幕在线一区免费| 国产美女视频一区| 欧美一区二区三区视频免费| 亚洲综合激情网| 99九九99九九九视频精品| 2021中文字幕一区亚洲| 亚洲成av人影院在线观看网| 99久久久国产精品免费蜜臀| 精品久久久久一区二区国产| 午夜精品一区二区三区电影天堂 | www.欧美亚洲| 精品成人私密视频| 青青草伊人久久| 欧美日本一区二区三区| 亚洲精品视频一区| 99久久er热在这里只有精品15| 久久精品水蜜桃av综合天堂| 久久精品国产亚洲5555| 欧美高清视频在线高清观看mv色露露十八| 中文字幕在线不卡视频| 国产·精品毛片| 日本一区二区久久| 国产99一区视频免费| 国产亚洲成aⅴ人片在线观看| 精品一区二区国语对白| 日韩美女天天操| 经典一区二区三区| 国产无遮挡一区二区三区毛片日本| 久久99久国产精品黄毛片色诱| 91麻豆精品国产91久久久 |