康虹:基于单片机的语言控制小车设计
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()
- 52 -
//装载语音模型
//模型装载成功?
//前进
华科学院本科毕业设计(论文)
{
PlaySnd(S_ACT1,3);
*P_IOB_Data=0x0100;
*P_INT_Mask |= 0x0004;
__asm(\ uiTimecont = 0; }
// 语法格式: void BackUp(); // 实现功能: 后退子函数
// 参数:
无
// 返回值:
无
void BackUp() {
PlaySnd(S_DCZY,3);
*P_IOB_Data=0x0200;
*P_INT_Mask |= 0x0004;
__asm(\ uiTimecont = 0; } // 语法格式: void TurnLeft(); // 实现功能: 左转子函数
// 参数:
无
// 返回值:
无
void TurnLeft() {
PlaySnd(S_GJG,3);
- 53 -
//提示 //前进
//以下为中断定时操作
//倒退
//提示 //倒退
//以下为中断定时操作
//左转
康虹:基于单片机的语言控制小车设计
*P_IOB_Data=0x0900; Delay();
*P_IOB_Data=0x0500;
*P_INT_Mask |= 0x0004;
__asm(\ uiTimecont = 0; }
// 语法格式: void TurnRight(); // 实现功能: 右转子函数
// 参数:
无
// 返回值:
无
void TurnRight() {
PlaySnd(S_GJG,3);
*P_IOB_Data=0x0500; Delay();
*P_IOB_Data=0x0900;
*P_INT_Mask |= 0x0004;
__asm(\ uiTimecont = 0; }
// 语法格式: void Stop(); // 实现功能: 停车子函数
// 参数:
无
// 返回值:
无
void Stop() {
*P_IOB_Data=0x0000; PlaySnd(S_RDY,3);
}
- 54 -
//右转
//延时 //左转
//以下为中断定时操作
//右转
//语音提示
//左转
//延时 //右转
//以下为中断定时操作
//停车
//停车
//语音提示
华科学院本科毕业设计(论文)
// 语法格式: 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;
//辨识结果寄存
//获得识别结果
//有语音触发?
//临时停车
//识别出名称命令
//停车待命
//识别出第一条命令
//执行动作一:直走
//识别出第二条命令
//执行动作二:倒车
//识别出第三条命令
//执行动作三:左转 //识别出第四条命令
//执行动作四:右转
- 55 -
康虹:基于单片机的语言控制小车设计
} }
default: }
break;
// 语法格式: // 实现功能: // 参数:
无
void IRQ5(void); 中断服务子函数
// 返回值: 无
//运动定时控制
void IRQ5(void)__attribute__((ISR)); void IRQ5(void) {
if(uiTimecont++ == uiTimeset) { }
*P_INT_Clear = 0x0004; }
// 语法格式: // 实现功能: // 参数:
无
无
int main(void); 主函数
*P_IOB_Data = 0x0000;
// 返回值: int main(void)
{ unsigned int BS_Flag;
*P_IOA_Dir=0xff00;
//Train标志位
//初始化IOA,IOA0~7下拉输入
*P_IOA_Attrib=0xff00;
- 56 -