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

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

?? main.c

?? 語音控制小車(基于凌陽61板)具有語音訓練識別
?? C
字號:
//======================================================
//  The information contained herein is the exclusive property of
//  Sunnnorth Technology Co. And shall not be distributed, reproduced,
//  or disclosed in whole in part without prior written permission.
//  (C) COPYRIGHT 2003  SUNNORTH TECHNOLOGY CO.
//  ALL RIGHTS RESERVED
//  The entire notice above must be reproduced on all authorized copies.
//========================================================

//========================================================
//  工程名稱:	Car_Demo
//  功能描述:	實現小車的語音控制
//  涉及的庫:	CMacro1016.lib
//            	bsrv222SDL.lib
//				sacmv26e.lib
//  組成文件:	main.c
//				Flash.asm, hardware.asm,ISR.asm 
//     			hardware.h,s480.h, hardware.inc
//	硬件連接:	IOA0-----KEY1
//				IOA1-----KEY2
//				IOA2-----KEY3
//				IOB8-----前進
//				IOB9-----倒車
//				IOB10----左拐
//				IOB11----右拐
//	維護記錄:	2005-12-12 v1.0
//========================================================

#include "s480.h"
#include "bsrsd.h"

#define	P_IOA_Data 			(volatile unsigned int *)0x7000   
#define P_IOA_Dir 			(volatile unsigned int *)0x7002
#define P_IOA_Attrib 		(volatile unsigned int *)0x7003
#define P_IOB_Data			(volatile unsigned int *)0x7005  
#define P_IOB_Dir			(volatile unsigned int *)0x7007   
#define P_IOB_Attrib		(volatile unsigned int *)0x7008   
#define P_TimerA_Data		(volatile unsigned int *)0x700A   
#define P_TimerA_Ctrl		(volatile unsigned int *)0x700B   
#define P_TimerB_Data		(volatile unsigned int *)0x700C   
#define P_TimerB_Ctrl		(volatile unsigned int *)0x700D   
#define P_Watchdog_Clear	(volatile unsigned int *)0x7012   
#define P_INT_Mask			(volatile unsigned int *)0x702D   
#define P_INT_Clear			(volatile unsigned int *)0x7011   

#define NAME_ID 			0x100
#define COMMAND_GO_ID 		0x101
#define COMMAND_BACK_ID 	0x102
#define COMMAND_LEFT_ID 	0x103
#define COMMAND_RIGHT_ID 	0x104

#define S_NAME				0							//給我取個名字吧
#define S_ACT1				1							//前進
#define S_ACT2				2							//倒車,請注意
#define S_ACT3				3							//左拐
#define S_ACT4				4							//右拐	
#define S_RDY				5							//Yeah
#define S_AGAIN				6							//請再說一遍
#define S_NOVOICE			7							//沒有聽到任何聲音
#define S_CMDDIFF			8							//說什么暗語呀
#define S_NOISY				8							//說什么暗語呀
#define S_START				9							//準備就緒,開始辨識	
#define S_GJG				10							//拐就拐
#define S_DCZY				11							//倒車,請注意

extern  unsigned int BSR_SDModel[100];					//外部變量BSR_SDModel[100],辨識器自帶
extern void F_FlashWrite1Word(unsigned int addr,unsigned int Value);
extern void F_FlashErase(unsigned int sector);
unsigned int uiTimeset = 3;								//運行時間定時,調整該參數控制運行時間
unsigned int uiTimecont; 								//運行時間計時

//=============================================================
// 語法格式:	void Delay();
// 實現功能:	延時
// 參數:		無
// 返回值:		無
//=============================================================
void Delay()							
{
	unsigned int i;
	for(i=0;i<0x3Fff;i++)
	{
		*P_Watchdog_Clear=0x0001;
	}
}

//=============================================================
// 語法格式:	void PlaySnd(unsigned SndIndex,unsigned DAC_Channel);
// 實現功能:	語音播放函數
// 參數:		SndIndex-播放語音資源索引號
//				DAC_Channel-播放聲道選擇
// 返回值:		無
//=============================================================
void PlaySnd(unsigned SndIndex,unsigned DAC_Channel)
{
	BSR_StopRecognizer();								//停止識別器
	SACM_S480_Initial(1);								//初始化為自動播放
	SACM_S480_Play(SndIndex, DAC_Channel, 3);			//開始播放一段語音
	while((SACM_S480_Status()&0x0001)!= 0)				//是否播放完畢?
	{
		SACM_S480_ServiceLoop();						//解碼并填充隊列
		*P_Watchdog_Clear=0x0001;						//清看門狗
	}
	SACM_S480_Stop();									//停止播放
	BSR_InitRecognizer(BSR_MIC);						//初始化識別器
}

//=============================================================
// 語法格式:	int TrainWord(int WordID,int SndID);
// 實現功能:	訓練一條指令
// 參數:		WordID-指令編碼
//				SndID-指令提示音索引號
// 返回值:		無
//=============================================================
int TrainWord(unsigned int WordID,unsigned int SndID)
{
	int Result;
	PlaySnd(SndID,3);									//引導訓練,播放指令對應動作
	while(1)
	{
		Result = BSR_Train(WordID,BSR_TRAIN_TWICE);		//訓練兩次,獲得訓練結果
										
		if(Result==0)break;
		switch(Result)
		{
		case -1:										//沒有檢測出聲音
			PlaySnd(S_NOVOICE,3);
			return -1;
		case -2: 										//需要訓練第二次
			PlaySnd(S_AGAIN,3);
			break;
		case -3:										//環境太吵
			PlaySnd(S_NOISY,3);
			return -3;	
		case -4:										//數據庫滿
	 		return -4;	
		case -5: 			            				//檢測出聲音不同
			PlaySnd(S_CMDDIFF,3);
			return -5;
		case -6: 			            				//序號錯誤
			return -6;
		default:
			break;
		}
	}
	return 0;
}

//=============================================================
// 語法格式:	void TrainSD();
// 實現功能:	訓練函數
// 參數:		無
// 返回值:		無
//=============================================================
void TrainSD()
{
	while(TrainWord(NAME_ID,S_NAME) != 0) ;  			//訓練名稱
	while(TrainWord(COMMAND_GO_ID,S_ACT1) != 0) ;  		//訓練第1個動作
	while(TrainWord(COMMAND_BACK_ID,S_ACT2) != 0) ;  	//訓練第2個動作
	while(TrainWord(COMMAND_LEFT_ID,S_ACT3) != 0) ;  	//訓練第3個動作
	while(TrainWord(COMMAND_RIGHT_ID,S_ACT4) != 0) ;	//訓練第4個動作
}

//=============================================================
// 語法格式:	void StoreSD();
// 實現功能:	存儲語音模型函數
// 參數:		無
// 返回值:		無
//=============================================================
void StoreSD()                           			
{	unsigned int ulAddr,i,commandID,g_Ret;
	F_FlashWrite1Word(0xef00,0xaaaa);
 	F_FlashErase(0xe000);
   	F_FlashErase(0xe100);
   	F_FlashErase(0xe200);
   	ulAddr=0xe000;//********
	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++)								//保存語音模型SD1(0xe000---0xe063)
		{
		    F_FlashWrite1Word(ulAddr,BSR_SDModel[i]);
			ulAddr+=1;												
		}
	}
}

//=============================================================
// 語法格式:	void StoreSD();
// 實現功能:	裝載語音模型函數
// 參數:		無
// 返回值:		無
//=============================================================
void LoadSD()                           			
{	unsigned int *p,k,jk,Ret,g_Ret;
	p=(int *)0xe000;																					
	for(jk=0;jk<5;jk++)
	{
		for(k=0;k<100;k++)
		{
			Ret=*p;							
			BSR_SDModel[k]=Ret;					//裝載語音模型			
			p+=1;													
		}					
		g_Ret=BSR_ImportSDWord();				
		while(g_Ret!=0)							//模型裝載成功?
		g_Ret=BSR_ImportSDWord();								
	}
}

//=============================================================
// 語法格式:	void GoAhead();
// 實現功能:	前進子函數
// 參數:		無
// 返回值:		無
//=============================================================
void GoAhead()                     				//前進
{  
	PlaySnd(S_ACT1,3);							//提示
	*P_IOB_Data=0x0100;							//前進
	*P_INT_Mask |= 0x0004;						//以下為中斷定時操作
	__asm("int fiq,irq");
	uiTimecont = 0;
}
//=============================================================
// 語法格式:	void BackUp();
// 實現功能:	后退子函數
// 參數:		無
// 返回值:		無
//=============================================================
void BackUp()                        			//倒退
{	
	PlaySnd(S_DCZY,3);							//提示
	*P_IOB_Data=0x0200;							//倒退
	*P_INT_Mask |= 0x0004;						//以下為中斷定時操作
	__asm("int fiq,irq");
	uiTimecont = 0;
}

//=============================================================
// 語法格式:	void TurnLeft();
// 實現功能:	左轉子函數
// 參數:		無
// 返回值:		無
//=============================================================
void TurnLeft()                       			//左轉
{
	PlaySnd(S_GJG,3);	
	*P_IOB_Data=0x0900;							//右轉
	Delay();									//延時
	*P_IOB_Data=0x0500;							//左轉
	*P_INT_Mask |= 0x0004;						//以下為中斷定時操作
	__asm("int fiq,irq");
	uiTimecont = 0;
}
//=============================================================
// 語法格式:	void TurnRight();
// 實現功能:	右轉子函數
// 參數:		無
// 返回值:		無
//=============================================================
void TurnRight()                           		//右轉
{
	PlaySnd(S_GJG,3);							//語音提示
	*P_IOB_Data=0x0500;							//左轉
	Delay();									//延時
	*P_IOB_Data=0x0900;							//右轉
	*P_INT_Mask |= 0x0004;						//以下為中斷定時操作
	__asm("int fiq,irq");
	uiTimecont = 0;
}

//=============================================================
// 語法格式:	void Stop();
// 實現功能:	停車子函數
// 參數:		無
// 返回值:		無
//=============================================================
void Stop()                           			//停車
{
	*P_IOB_Data=0x0000;							//停車
	PlaySnd(S_RDY,3);							//語音提示
}

//=============================================================
// 語法格式:	void BSR(void);
// 實現功能:	辨識子函數
// 參數:		無
// 返回值:		無
//=============================================================
void BSR(void)
{	
	int Result;									//辨識結果寄存
	Result = BSR_GetResult();					//獲得識別結果

	if(Result>0)								//有語音觸發?
	{	
		*P_IOB_Data=0x0000;						//臨時停車
		switch(Result)
		{
		case NAME_ID:							//識別出名稱命令
			Stop();								//停車待命
			break;
		case COMMAND_GO_ID:						//識別出第一條命令
			GoAhead();							//執行動作一:直走
			break;
		case COMMAND_BACK_ID:					//識別出第二條命令
			BackUp();							//執行動作二:倒車
			break;
		case COMMAND_LEFT_ID:					//識別出第三條命令
			TurnLeft();							//執行動作三:左轉
			break;
		case COMMAND_RIGHT_ID:					//識別出第四條命令
			TurnRight();						//執行動作四:右轉
			break;
		default:
			break;
		}
	}
}
//=============================================================
// 語法格式:	void IRQ5(void);
// 實現功能:	中斷服務子函數
// 參數:		無
// 返回值:		無
//=============================================================
void IRQ5(void)__attribute__((ISR));			//運動定時控制
void IRQ5(void)
{ 
	if(uiTimecont++ == uiTimeset)
	{
		*P_IOB_Data = 0x0000;
	}
	*P_INT_Clear = 0x0004;
}

//=============================================================
// 語法格式:	int main(void);
// 實現功能:	主函數
// 參數:		無
// 返回值:		無
//=============================================================
int main(void)
{	unsigned int BS_Flag;						//Train標志位
	
	*P_IOA_Dir=0xff00;							//初始化IOA,IOA0~7下拉輸入
	*P_IOA_Attrib=0xff00;
	*P_IOA_Data=0x0000;
	
	*P_IOB_Dir=0x0f00;							//初始化IOB,IOB8~11同向輸出
	*P_IOB_Attrib=0x0f00;
	*P_IOB_Data=0x0000;
	
	BSR_DeleteSDGroup(0);						//初始化存儲器RAM
	BS_Flag=*(unsigned int *)0xe000;			//讀存儲單元0xe000
	if(BS_Flag==0xffff)							//沒有經過訓練(0xe000內容為0xffff)
	{
		TrainSD();								//訓練
		StoreSD();								//存儲訓練結果(語音模型)
	}
	else 										//經過訓練(0xe000內容為0x0055)
	{
		LoadSD();								//語音模型載入識別器
	}
	
	PlaySnd(S_START,3);							//開始識別提示
	BSR_InitRecognizer(BSR_MIC);				//初始化識別器
	
	while(1)
	{	
		BSR();
		if((*P_IOA_Data)&0x0004)				//是否重新訓練
		{	
			F_FlashErase(0xe000);
			while(1);
		}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合网站在线| 亚洲视频一区二区在线| 国产精品女上位| 亚洲妇女屁股眼交7| 国产精品888| 欧美日韩成人在线一区| 国产精品美女久久久久久久久 | 国内精品写真在线观看| 日韩无一区二区| 亚洲三级理论片| 国产一区二区三区电影在线观看| 91国产免费观看| 国产精品国产精品国产专区不片| 韩国av一区二区三区四区| 欧美老女人第四色| 亚洲六月丁香色婷婷综合久久| 国产精品亚洲第一区在线暖暖韩国| 7777精品伊人久久久大香线蕉| 亚洲人成网站影音先锋播放| 成人丝袜18视频在线观看| 日韩欧美国产午夜精品| 亚洲18影院在线观看| 91国产精品成人| 亚洲人吸女人奶水| 99re这里都是精品| 亚洲猫色日本管| 色悠悠亚洲一区二区| 国产精品国产三级国产aⅴ入口| 国产成人av一区二区三区在线 | 亚洲综合一区二区三区| 99国产精品久久久久| 国产精品久久久99| 成人性生交大合| 18欧美亚洲精品| 99视频热这里只有精品免费| 国产精品色噜噜| 91丨porny丨蝌蚪视频| 夜夜嗨av一区二区三区| 在线免费视频一区二区| 性久久久久久久久久久久 | 成人av在线资源网| 亚洲欧美日韩久久| 欧美男人的天堂一二区| 午夜精品久久久久久久99水蜜桃| 欧美人牲a欧美精品| 免费精品视频最新在线| 久久久久免费观看| 99re在线视频这里只有精品| 亚洲一区二区不卡免费| 欧美一区二区三区在线观看| 韩国欧美国产一区| 国产精品免费看片| eeuss鲁一区二区三区| 亚洲美女淫视频| 日韩午夜小视频| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 中文字幕乱码一区二区免费| 99久久精品国产一区二区三区| 亚洲电影一级片| 久久久久久久久久久黄色| 91麻豆国产福利在线观看| 亚洲图片欧美综合| 国产性做久久久久久| 色综合中文字幕国产 | 国产久卡久卡久卡久卡视频精品| 国产精品国产三级国产| 制服丝袜国产精品| 成人短视频下载| 毛片一区二区三区| 亚洲女女做受ⅹxx高潮| 51精品国自产在线| 国产aⅴ综合色| 日韩av网站在线观看| 国产精品剧情在线亚洲| 日韩欧美的一区二区| 91蝌蚪porny九色| 激情五月婷婷综合| 亚洲成a人在线观看| 国产精品午夜电影| 精品国产一区二区三区不卡 | 日韩午夜激情电影| 91久久精品一区二区| 国产精品一区二区你懂的| 亚洲超碰精品一区二区| 1000精品久久久久久久久| 日韩精品最新网址| 欧美三级韩国三级日本一级| www.亚洲色图| 国产精品 欧美精品| 久久精品国产成人一区二区三区| 亚洲一二三专区| 亚洲欧美另类久久久精品| 国产日本欧美一区二区| 91麻豆精品国产91久久久使用方法 | 日本一区二区综合亚洲| 日本视频一区二区三区| 一区二区在线观看视频| 中文字幕欧美激情一区| 久久色中文字幕| 在线91免费看| 欧美美女一区二区三区| 一本到不卡精品视频在线观看| gogogo免费视频观看亚洲一| 东方aⅴ免费观看久久av| 久久国产精品区| 久久国产成人午夜av影院| 久久精品国产精品亚洲精品| 蜜臀av性久久久久蜜臀aⅴ四虎 | 成人a级免费电影| 高清免费成人av| av午夜一区麻豆| 99re66热这里只有精品3直播| 成人网在线播放| 91在线观看高清| 欧美性色综合网| 欧美系列日韩一区| 欧美日韩精品二区第二页| 欧美日韩视频不卡| 欧美日韩电影在线| 日韩午夜电影在线观看| 欧美精品一区二区三区很污很色的 | 亚洲福利视频一区二区| 五月婷婷久久丁香| 日本成人在线视频网站| 美女精品一区二区| 国产成人免费视频一区| 9人人澡人人爽人人精品| 色综合久久66| 精品视频色一区| 精品国产青草久久久久福利| 久久精品人人做| 亚洲欧美激情在线| 日本成人在线网站| 床上的激情91.| 欧美中文字幕一区二区三区亚洲| 欧美日韩一区二区三区不卡| 日韩精品自拍偷拍| 国产精品乱码一区二区三区软件| 亚洲免费电影在线| 久久国产麻豆精品| 成人不卡免费av| 51午夜精品国产| 亚洲国产岛国毛片在线| 亚洲一区在线视频| 国产一区 二区| 欧美性猛交xxxx乱大交退制版 | 国产精品18久久久久久vr| 成人免费视频播放| 在线成人免费视频| 国产精品短视频| 久久国产夜色精品鲁鲁99| 成人黄色电影在线 | 欧美三级电影在线观看| 久久综合狠狠综合久久激情| 亚洲精品少妇30p| 激情综合网激情| 欧美美女一区二区| 国产精品午夜电影| 另类小说一区二区三区| 91成人在线免费观看| 久久久久久久电影| 日韩av电影天堂| 色国产精品一区在线观看| 久久影院电视剧免费观看| 亚洲一级二级在线| www.66久久| 久久你懂得1024| 日本不卡123| 日本精品视频一区二区| 久久精品夜色噜噜亚洲a∨| 视频一区二区三区入口| 91看片淫黄大片一级在线观看| 欧美精品一区二区三区蜜桃| 首页欧美精品中文字幕| 色综合色综合色综合| 2020国产精品| 日产国产欧美视频一区精品| 日本精品视频一区二区| 国产精品麻豆视频| 国产 欧美在线| 久久久精品人体av艺术| 久久99国产精品成人| 欧美电影一区二区| 亚瑟在线精品视频| 色吊一区二区三区| 亚洲精品国产成人久久av盗摄| 不卡的av在线| 亚洲欧美综合另类在线卡通| 高清在线观看日韩| 欧美高清在线一区二区| 国产精品一二三四区| 久久免费美女视频| 国产精品一区久久久久| 亚洲精品在线免费播放| 国精产品一区一区三区mba桃花 | 久久亚洲精精品中文字幕早川悠里 | 蜜臀a∨国产成人精品| 欧美男男青年gay1069videost| 亚洲香肠在线观看| 欧美电影一区二区三区|