www.pudn.com > 图像识别模组源代码eagle_New.rar > 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(); 
			} 
		} 
	}	 
} 
//========================== 主程序结束 ===================================