




免费预览已结束,剩余8页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/ 工程名称: 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_SDModel100; /外部变量BSR_SDModel100,辨识器自带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;i0x3Fff;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;commandID0x105;commandID+) g_Ret=BSR_ExportSDWord(commandID); while(g_Ret!=0) /模型导出成功? g_Ret=BSR_ExportSDWord(commandID); for(i=0;i100;i+) /保存语音模型SD1(0xe000-0xe063) F_FlashWrite1Word(ulAddr,BSR_SDModeli); ulAddr+=1; /=/ 语法格式: void StoreSD();/ 实现功能: 装载语音模型函数/ 参数: 无/ 返回值: 无/=void LoadSD() unsigned int *p,k,jk,Ret,g_Ret; p=(int *)0xe000; for(jk=0;jk5;jk+) for(k=0;k0) /有语音触发? *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,IOA07下拉输入 *P_IOA_Attrib=0xff00; *P_IOA_Data=0x0000; *P_IOB_Dir=0x0f00; /初始化IOB,IOB811同向输出 *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); /=/ 文件名称:flash.asm / 实现功能: SPCE061 32K flash 的读写/ 维护记录: 2003-6-9 V1.0/=.INCLUDE hardware.inc.DEFINE C_FLASH_SIZE 0x8000.DEFINE C_FLASH_BLOCK_SIZE 0x100.DEFINE C_FLASH_MATCH 0xAAAA.DEFINE C_FLASH_PAGE_ERASE 0x5511 /擦除一页.DEFINE C_FLASH_MASS_ERASE 0x5522 /.DEFINE C_FLASH_1WORD_PGM 0x5533 /写一个字.DEFINE C_FLASH_SEQUENT_PGM 0x5544 /写多个字.DEFINE C_FLASH_MAIN_BLOCK 0x5555 .DEFINE C_FLASH_INFORM_BLOCK 0x5566 .CODE/=/语法:void F_FlashWrite1Word(int addr,int Value )/描述:写一个字到FLASH中/参数:addr-被写数据的存储地址 Value-被写数据/返回:无/=.PUBLIC _F_FlashWrite1Word.DEFINE P_Flash_Ctrl 0x7555_F_FlashWrite1Word: .proc push bp to sp bp = sp+1 r1 = C_FLASH_MATCH /AAAA P_Flash_Ctrl = r1 r1 = C_FLASH_1WORD_PGM /5533 P_Flash_Ctrl = r1 r1 = bp+3 /flash address r2 = bp+4 /data r1 = r2 pop bp from sp retf .ENDP/=/语法:F_FlashWrite(int sector,int &num, int size)/描述:顺序写多个字/参数:sector-被写数据的起始地址 &num-被写数据 size-写数据的数量/返回:无/= .PUBLIC _F_FlashWrite_F_FlashWrite: .proc push bp to sp bp = sp+1 r1 = bp+3 /flash base address r2 = bp+4 /data r3 = bp+5 /多个字节 r4 = C_FLASH_MATCH /AAAA P_Flash_Ctrl = r4L_FlashWriteLoop: r4 = C_FLASH_SEQUENT_PGM /5544 P_Flash_Ctrl = r4 r4 = r2+ r1+ = r4 r3 -=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届湖北省枣阳五中学英语九年级第一学期期末监测模拟试题含解析
- 颈部矫正专业培训课程
- 2026届江苏省扬州市仪征市新集初级中学九年级化学第一学期期中检测试题含解析
- 帕博利珠单抗深度解析
- 2026届四川省广安邻水县联考九年级化学第一学期期中复习检测模拟试题含解析
- 重庆市西南大附属中学2026届九年级化学第一学期期中综合测试模拟试题含解析
- 云南省泸西县2026届九年级化学第一学期期中联考模拟试题含解析
- 大数据培训宣讲
- 四川省江油市五校2026届九年级化学第一学期期中质量跟踪监视试题含解析
- 2026届德州陵城区五校联考英语九上期末学业质量监测模拟试题含解析
- 安全员a证考试试题库及答案
- 2025年护士资格证真题附答案详解
- 心电图课件教学
- 商业航天行业深度报告:政策技术需求共振商业航天赛道加速
- 新员工网络安全知识培训课件
- 后勤人员消防知识培训课件
- 2025年高等教育法学类自考-00859警察组织行为学历年参考题库含答案解析(5套典型考题)
- 2025年大队委选拔笔试题目及答案
- 2025年中青班考试试题及答案
- 采购电脑管理办法细则
- 中医特色在手术室护理中的应用
评论
0/150
提交评论