📄 main.c
字号:
#include "Eagle_Lookaround.h"
#include "SPCE061V004.H"
//================================================================
//
// 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 2003 SUNPLUS TECHNOLOGY CO.
// ALL RIGHTS RESERVED
//
// The entire notice above must be reproduced on all authorized copies.
//
//=================================================================
// 工程名称: Eagle_Lookaround.spj
// 功能描述: (1)获得数据并处理。
// (2)控制按扭KEY1,播放物体的形状和颜色。
// (3)分辩的颜色:红色、绿色、蓝色、黄色。
// (4)分辩的形状:正方形、长方形、圆形、三角形。
// (5)控制按键KEY2,小车跟着红色的物体移动,别的颜色不做跟踪。
// 文件来源: 无
// IDE环境: SUNPLUS u'nSPTM IDE 1.8.4(or later)
// 硬件连接:
// SPCE061A ---- EAGLE DEMO
// -------------------------------
// PA8 ---- SCK
// PA9 ---- SDA
// PA10 ---- LOAD
// PA11 ---- RESET
// -------------------------------
// SPCE061A ---- 小车 DEMO
// PB10 ---- PB10
// PB11 ---- PB11
// PB12 ---- PB12
// PB13 ---- PB13
// -------------------------------
// 涉及的库: CMacro.lib,sacmv26e.lib;
//
// 组成文件:
// main.c
// hardware.asm\hardware.inc
// FIQ.asm
// Lookaround.c
// Find_Clock_Shape.asm
// VR_Funtion.c
// master.asm
// Eagle_Lookaround.h
// 日期: 2003/12
//===============================================================
//======================= 全程变量设置开始 ================================
int gActivated; // 该变量用于检测是否有触发命令,当有识别出语句
int VR_PrevResult_Color; // 存贮物体的颜色
int VR_PrevResult_Shape; // 存贮物体的形状
int VR_PrevResult_CenterX; // 存贮水平距离
int VR_PrevResult_CenterY; // 存贮垂直距离
int VR_PrevResult_AreaH; // 存贮空间距离高位地址
int VR_PrevResult_AreaL; // 存贮空间距离低位地址
int VR_OverFlag; // 结束标志
int VR_TimeFlag; // 时间标志
int VR_TimeDeldy; // 时间计数
int SleepCount; // 是否进入睡眠的计数
unsigned int Key; // 键盘的值
//======================= 全程变量设置结束 ================================
//======================= 子程序开始 ======================================
//===================================================
//函数:PlayRespond(int Result);
//语法:调用
//描述:播放A2000格式的语音文件
//参数:播放语音文件的索引号
//返回:无
//===================================================
void PlayRespond(int Result)
{
unsigned int Ret;
Ret = *P_INT_Mask;
SACM_A2000_Initial(1); // 初始化
*P_INT_Mask |= Ret;
SACM_A2000_Volume(3); // 设置播放的音量
SACM_A2000_Play(Result, 3, 3); // 播放资源文件中的语音
while((SACM_A2000_Status()&0x0001) != 0) // 是否播放完成
{
SACM_A2000_ServiceLoop(); // 语音资源文件进行译码
}
SACM_A2000_Stop(); // 播放结束
}
//========================== 子程序结束 ===================================
//========================== 主程序开始 ===================================
//===================================================
//函数:int main();
//语法:
//描述:主程序
//参数:无
//返回:无
//===================================================
int main()
{
Key = 0;
gActivated = 0; // 初始化变量部分
VR_OverFlag = 0 ;
VR_TimeFlag = 0 ;
VR_TimeDeldy = 0 ;
SleepCount = 0;
*P_LVD_Ctrl = C_LVD28V; // 设置电压检测低限为2.8V
SP_Init_IOA(0xfb00,0xfb00,0xfb00); // 初始化I/O口
SP_Init_IOB(0xffff,0x001f,0xffff);
Enable_1KHzAnd2HzInt(); // 1KHzAnd2Hz的设置
ResetEagle3(); // 复位SPCA531
IntialToEagle3(); // 初始化SPCA563
VR_TimeFlag = 0; // 延时约5S,这时让eagle正对着一张白纸,作自动白平衡
VR_TimeDeldy = 0;
while (VR_TimeFlag !=1)
Delay(5000);
SetAWBOFF(); // 关闭自动白平衡功能
PlayRespond(S_Sir); // 使用 SCAM2000播放回答
while(1)
{
if(*P_LVD_Ctrl&0x8000) // 电压太低发出YEAH四声,提示换电池
{
PlayRespond(S_Yes); // SCAM2000播放回答
PlayRespond(S_Yes); // SCAM2000播放回答
PlayRespond(S_Yes); // SCAM2000播放回答
PlayRespond(S_Yes); // SCAM2000播放回答
}
Key = SP_Import(P_IOA_Data);
Key &= 0x000f;
if (Key != 0)
{
switch(Key)
{
case 1:
PlayRespond(S_Yes); // SCAM2000播放回答
VR_Search_Color(); // 辩识颜色和形状
break;
case 2:
VR_Chase_Ball(); // 跟踪物体的移动
break;
default:
break; VR_Search_Color();
}
}
}
}
//========================== 主程序结束 ===================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -