www.pudn.com > 图像识别模组源代码eagle_New.rar > master.asm


//================================================================== 
//名称:master.asm 
//来源:来源于程序EAGLE3项目中 
//描述:主要完成以下内容 
//				InitialSet;		初始化SPCA563、SPCA561 
//				GetObjData;		获得数据内容和处理 
//				TimeDelay;		延时程序 
//				WriteOper;		CPU向SPCA563写数据 
//				ReadOper;		CPU向SPCA563读数据 
//日期:	 
//				2001.08.08		;开始 
//				2003.11.10      ;注释  
//================================================================== 
.include	hardware.inc; 
.include	a2000.inc; 
//============================ 定义全局标号 ========================= 
.public		R_AETarget;						// AE 设置 
.public		R_SeekFlag;						// 功能标志 
.public		R_Flag;							// 标志 
.public		R_Offset;						// 偏移量 
 
.public		R_AddrBuffer;					// 读地址 
.public		R_WriteBuffer;					// 写地址 
.public		R_ReadBuffer;					// 读地址 
.public		R_WriteDataBuffer;				// 写的内容 
.public		R_ReadDataBuffer;				// 读的内容 
 
.public		R_ObjNum;						// 物体数目 
.public		R_Shape;						// 物体外形 
.public		R_Color;						// 物体颜色 
.public		R_AreaL;						// 物体距离低位 
.public		R_AreaH;						// 物体距离高位 
.public		R_CenterX;						// 中心水平距离 
.public		R_CenterY;						// 中心垂直距离 
.public		R_CompX;						// 物体空间水平尺寸 
.public		R_CompY;						// 物体空间垂直尺寸 
.public		R_StaX;							// 水平距离的起初值 
.public		R_StaY;							// 垂直距离的起初值 
.public		R_EndX;							// 水平距离的结束值 
.public		R_EndY;							// 垂直距离的结束值 
 
.public		R_DelayTime;					// 延时时间 
.public		R_WaitRDYTime;					// 数据准备好的时间	 
 
.public		R_CmpColor;						// 分配的颜色 
.public		R_ColorIndex;					// 颜色索引 
 
.public		R_PreColor;						// 校正后的物体颜色 
.public		R_PreShape;						// 校正后的物体外形 
.public		R_PrevArea;						// 校正后的物体空间尺寸低位 
.public		R_PreAreaH;						// 校正后的物体空间尺寸高位 
.public		R_PreCompX;						// 校正后的物体的水平尺寸 
.public		R_PreCompY;						// 校正后的物体的垂直尺寸 
 
.public		R_Temp;							// 数组 
.public		R_Temp0;						// 数组0 
.public		R_Temp1;						// 数组1 
.public		R_Temp2;						// 数组2 
//===================== 定义全局标号结束 ======================================= 
 
//===================== 预定义段RAM开始 ======================================== 
.ram										// 变量定义说明同上 
.var		R_AETarget; 
.var		R_SeekFlag;						 
.var		R_Flag; 
.var		R_Offset; 
 
.var		R_AddrBuffer; 
.var		R_ReadBuffer; 
.var		R_WriteBuffer; 
.var		R_WriteDataBuffer; 
.var		R_ReadDataBuffer; 
 
.var		R_ObjNum; 
.var		R_Shape; 
.var		R_Color; 
.var		R_AreaL; 
.var		R_AreaH; 
.var		R_CenterX; 
.var		R_CenterY; 
.var		R_CompX; 
.var		R_CompY; 
.var		R_StaX; 
.var		R_StaY; 
.var		R_EndX; 
.var		R_EndY; 
 
.var		R_CmpColor; 
.var		R_ColorIndex; 
 
.var		R_DelayTime; 
.var		R_WaitRDYTime;	 
 
.var		R_PrevArea; 
.var		R_PreColor; 
.var		R_PreShape; 
.var		R_PreAreaH; 
.var		R_PreCompX; 
.var		R_PreCompY; 
 
.var		R_Temp; 
.var		R_Temp0; 
.var		R_Temp1; 
.var		R_Temp2; 
//===================== 预定义段RAM结束 ======================================== 
 
.code 
//======================= 初始化模式选择 ======================== 
//=================================================== 
//函数:IntialToEagle3  
//语法:调用 
//描述:用来初始化Eagle3 
//参数:无 
//返回:无 
//===================================================				 
.public	_IntialToEagle3; 
_IntialToEagle3:	.proc 
					r1 = 0x00; 
					[R_Flag] = r1; 
					[R_Temp] = r1;								 
L_RestartInitial:						 
					call	F_Delay10ms;		 
					call	F_Set50Hz;					// 设置光源为50HZ 
					call	F_SetAWBON;					// 自动色彩调整功能 
					call	F_SetClassDataMode;			// 采集数据分类模式 
					call	F_SetAEDefault;				// 自动暴光的功能 
 
					r1 = [R_Temp];					    // 初始化次数 
					r1 += 1; 
					[R_Temp] = r1; 
					cmp	r1,0x03; 
					je	L_InitToEagle3End;						 
					r1 = [R_Flag]; 
					r1 &= 0x0004; 
					jnz	L_RestartInitial; 
L_InitToEagle3End:					 
					retf; 
					.endp 
 
 
//=================================================== 
//函数:Enable_1KHzAnd2HzInt  
//语法:调用 
//描述:用来设定1KHZ、2HZ实时中断 
//参数:无 
//返回:无 
//===================================================			 
.public	_Enable_1KHzAnd2HzInt; 
.public	F_Enable_1KHzAnd2HzInt;			 
_Enable_1KHzAnd2HzInt:	.proc 
F_Enable_1KHzAnd2HzInt: 
				r1 = [R_InterruptStatus];				 
				r1 |= C_IRQ4_1KHz; 
				r1 |= C_IRQ5_2Hz;				 
				[R_InterruptStatus] = r1; 				 
				[P_INT_Ctrl] = r1;							// 设置中断方式 
				int	FIQ,IRQ;								// 开中断 
				retf; 
				.endp				 
//=================================================== 
//函数:Set_SDA_Input  
//语法:调用 
//描述:用来设置数据传输是输入方式 
//参数:无 
//返回:无 
//===================================================			 
.public	_Set_SDA_Input; 
.public F_Set_SDA_Input; 
_Set_SDA_Input:	.proc 
F_Set_SDA_Input:			 
				r1 = 0xf9f8;						// 设置PA8、PA9、PA10 
				[P_IOA_Attrib] = r1; 
				r1 = 0xf9f8; 
				[P_IOA_Dir] = r1; 
								 
				r1 = [P_IOA_Buffer]; 
				r1 &= 0xff3f; 
				[P_IOA_Buffer] = r1; 
				retf; 
				.ENDP 
//=================================================== 
//函数:Set_SDA_Output  
//语法:调用 
//描述:用来设置数据传输是输出方式 
//参数:无 
//返回:无 
//===================================================				 
.public	_Set_SDA_Output; 
.public F_Set_SDA_Output;			 
_Set_SDA_Output:	.proc 
F_Set_SDA_Output:	 
				r1 = 0xfbf8;					// 设置PA8、PA9、PA10 
				[P_IOA_Attrib] = r1; 
				r1 = 0xfbf8; 
				[P_IOA_Dir] = r1; 
 
				r1 = [P_IOA_Buffer]; 
				r1 &= 0xff3f; 
				[P_IOA_Buffer] = r1; 
				retf; 
				.ENDP 
//=================================================== 
//函数:SetAEDefault  
//语法:调用 
//描述:用来设置默认的自动爆光设置 
//参数:无 
//返回:无 
//=================================================== 
.public	_SetAEDefault; 
.public	F_SetAEDefault; 
_SetAEDefault:	.proc 
F_SetAEDefault: 
				call	F_HighAddr70; 
				r1 = 0x07; 
				[R_AETarget] = r1; 
				r1 = T_AETargetTable; 
				r1 += [R_AETarget]; 
				r1 = [r1]; 
				[R_WriteDataBuffer] = r1;				 
				r1 = 0xe3;				 
				[R_AddrBuffer] = r1; 
				call	F_WriteOper; 
				call	F_FeatureEngine; 
				retf; 
				.endp				 
			 
T_AETargetTable: 
				.dw	0x90 
				.dw	0xa0 
				.dw	0xb0 
				.dw	0xc0 
				.dw	0xd0 
				.dw	0xe0 
				.dw	0xf0 
				.dw	0x00 
				.dw	0x10 
				.dw	0x20 
				.dw	0x30 
				.dw	0x40 
				.dw	0x50 
				.dw	0x60 
				.dw	0x70 
				.dw	0x7f 
 
//=================================================== 
//函数:Set50Hz  
//语法:调用 
//描述:光源选择是50HZ 
//参数:无 
//返回:无 
//===================================================				 
.public	_Set50Hz; 
.public	F_Set50Hz;				 
_Set50Hz:	.proc 
F_Set50Hz: 
				call	F_HighAddr70;					// 使70单元高地址有效 
				r1 = 0xe1;								// 读70E1单元 
				[R_AddrBuffer] = r1; 
				r1 = 0x00; 
				[R_ReadDataBuffer] = r1;				 
				call	F_ReadOper;					 
				r1 = [R_ReadDataBuffer]; 
				r1 |= 0x08; 
				[R_WriteDataBuffer] = r1;				// 向70E1单元写内容 
				r1 = 0xe1;				 
				[R_AddrBuffer] = r1; 
				call	F_WriteOper; 
				call	F_FeatureEngine; 
				retf; 
				.endp				 
 
//=================================================== 
//函数:SetAWBON  
//语法:调用 
//描述:自动色彩调整使用 
//参数:无 
//返回:无 
//=================================================== 
.public	_SetAWBON;	 
.public	F_SetAWBON; 
_SetAWBON:		.proc 
F_SetAWBON: 
				call	F_HighAddr70;	 
				r1 = 0xe2; 
				[R_AddrBuffer] = r1; 
				r1 = 0x00; 
				[R_ReadDataBuffer] = r1;				 
				call	F_ReadOper;						// 读70E2中的内容			 
				r1 = [R_ReadDataBuffer]; 
				r1 |= 0x80; 
				[R_WriteDataBuffer] = r1; 
				r1 = 0xe2;				 
				[R_AddrBuffer] = r1; 
				call	F_WriteOper;					// 向70E2中写内容 
				call	F_FeatureEngine; 
				retf; 
				.endp				 
//=================================================== 
//函数:F_SetAWBOFF  
//语法:调用 
//描述:用来选择黑白增益匹配不使用 
//参数:无 
//返回:无 
//=================================================== 
.public	_SetAWBOFF;				 
.public	F_SetAWBOFF; 
_SetAWBOFF:		.proc 
F_SetAWBOFF: 
				call	F_HighAddr70; 
				r1 = 0xe2; 
				[R_AddrBuffer] = r1; 
				r1 = 0x00; 
				[R_ReadDataBuffer] = r1;				 
				call	F_ReadOper;					// 读70E2内容			 
				r1 = [R_ReadDataBuffer]; 
				r1 &= 0x7f; 
				[R_WriteDataBuffer] = r1; 
				r1 = 0xe2;				 
				[R_AddrBuffer] = r1; 
				call	F_WriteOper;				// 写内容到70E2 
				call	F_FeatureEngine; 
				retf; 
				.endp				 
//=================================================== 
//函数:SetClassDataMode  
//语法:调用 
//描述:用来选择SPCA561模式选择:分类数据 
//参数:无 
//返回:无 
//===================================================		 
.public	_SetClassDataMode;				 
.public	F_SetClassDataMode; 
_SetClassDataMode:	.proc 
F_SetClassDataMode: 
				call	F_HighAddr74;					// 设置74地址有效 
				r1 = 0x03; 
				[R_WriteDataBuffer] = r1;				// 向7408中写03内容 
				r1 = 0x08;				 
				[R_AddrBuffer] = r1; 
				call	F_WriteOper; 
				retf; 
				.endp				 
//=================================================== 
//函数:SetRawDataMode  
//语法:调用 
//描述:用来选择SPCA561模式选择:未加工的数据 
//参数:无 
//返回:无 
//=================================================== 
.public	_SetRawDataMode;				 
_SetRawDataMode:	.proc 
				call	F_HighAddr74;					// 设置74地址有效	 
				r1 = 0x00; 
				[R_WriteDataBuffer] = r1; 
				r1 = 0x08;									 
				[R_AddrBuffer] = r1; 
				call	F_WriteOper;					// 向7408中写00内容 
				retf; 
				.endp		 
			 
//=================================================== 
//函数:ResetEagle3  
//语法:调用 
//描述:复位SPCE563A、SPCE561A 
//参数:无 
//返回:无 
//===================================================	 
.public	_ResetEagle3; 
.public	F_ResetEagle3; 
_ResetEagle3:	.proc		 
F_ResetEagle3: 
				r1 = [P_IOA_Buffer];				// 置PA11为低25MS后再置高 
				r1 &= 0xf7ff; 
				[P_IOA_Buffer] = r1; 
				r1 = 0x00; 
				[R_DelayTime] = r1; 
L_BeingDelay25ms: 
				call	F_Delay25ms;			 
				r1 = [R_Flag]; 
				r1 &= 0x8000; 
				jz	L_BeingDelay25ms; 
 
				r1 = [P_IOA_Buffer]; 
				r1 |= 0x0800; 
				[P_IOA_Buffer] = r1;			 
				retf; 
				.endp				 
//=================================================== 
//函数:F_ResetEagle3Again  
//语法:调用 
//描述:复位SPCE563A、SPCE561A 
//参数:无 
//返回:无 
//=================================================== 
.public	F_ResetEagle3Again; 
F_ResetEagle3Again: 
				r1 = [P_IOA_Buffer]; 
				r1 &= 0xf7ff; 
				[P_IOA_Buffer] = r1; 
				r1 = 0x00; 
				[R_DelayTime] = r1; 
L_BeingDelay10msAgain: 
				call	F_Delay10ms; 
				r1 = [R_Flag]; 
				r1 &= 0x8000; 
				jz	L_BeingDelay10msAgain; 
 
				r1 = [P_IOA_Buffer]; 
				r1 |= 0x0800; 
				[P_IOA_Buffer] = r1;			 
				 
				r1 = [R_Flag]; 
				r1 |= 0x0004; 
				[R_Flag] = r1;				 
				retf; 
 
 
//============================== 初始化模式结束 ================================ 
 
//============================== 功能子函数开始 ================================ 
//=================================================== 
//函数:F_FeatureEngine  
//语法:汇编调用 
//描述:允许特征寄存器使用 
//参数:无 
//返回:无 
//===================================================											 
.public	F_FeatureEngine; 
F_FeatureEngine: 
				r1 = 0x0f; 
				[R_AddrBuffer] = r1; 
				r1 = 0x74; 
				[R_WriteDataBuffer] = r1; 
				call	F_WriteOper; 
				retf; 
//=================================================== 
//函数:F_ShapeAnaly  
//语法:汇编调用 
//描述:允许外型分解功能的使用 
//参数:无 
//返回:无 
//=================================================== 
.public	F_ShapeAnaly; 
F_ShapeAnaly: 
				call	F_HighAddr70; 
				r1 = 0xE0; 
				[R_AddrBuffer] = r1; 
				r1 = 0x08; 
				[R_WriteDataBuffer] = r1; 
				call	F_WriteOper; 
				retf; 
 
 
//=================================================== 
//函数:F_OperMode  
//语法:调用 
//描述:允许中心控制寄存器使用 
//参数:无 
//返回:无 
//===================================================				 
.public	F_OperMode; 
F_OperMode: 
				r1 = 0x0f; 
				[R_AddrBuffer] = r1; 
				r1 = 0x70; 
				[R_WriteDataBuffer] = r1;			 
				call	F_WriteOper;				 
				retf; 
 
.public	F_AssigneColor; 
F_AssigneColor:				 
				call	F_HighAddr74; 
				r1 = T_ColorTable; 
				r1 += [R_CmpColor]; 
				r1 = [r1]; 
				[R_WriteDataBuffer] = r1; 
				r1 = 0x05; 
				[R_AddrBuffer] = r1; 
				call	F_WriteOper; 
				retf; 
//=================================================== 
//函数:F_CheckAssigneColor  
//语法:调用 
//描述:分解识别的颜色的选择 
//参数:无 
//返回:无 
//=================================================== 
.public	F_CheckAssigneColor; 
F_CheckAssigneColor:				 
				call	F_HighAddr74; 
				r1 = 0x00; 
				[R_ReadDataBuffer] = r1; 
				r1 = 0x05; 
				[R_AddrBuffer] = r1; 
				call	F_ReadOper; 
				r1 = T_ColorTable; 
				r1 += [R_CmpColor]; 
				r1 = [r1]; 
				cmp	r1,[R_ReadDataBuffer]; 
				jne	L_AssigneAgain; 
				r1 = [R_Flag]; 
				r1 &= 0xfe; 
				[R_Flag] = r1; 
				retf; 
 
L_AssigneAgain: 
				r1 = [R_Flag]; 
				r1 |= 0x01; 
				[R_Flag] = r1; 
				retf; 
								 
T_ColorTable: 
				.dw	0x00; 
				.dw	0x01; 
				.dw	0x02; 
				.dw	0x04; 
				.dw	0x08; 
				.dw	0x10; 
				.dw	0x40;				//Yellow 2002.04.30 
				.dw	0x40; 
				.dw	0x80; 
				.dw	0x00; 
				 
				 
//=================================================== 
//函数:F_LookAssigneColor  
//语法:调用 
//描述:分辨的颜色设置 
//参数:无 
//返回:无 
//=================================================== 
.public	F_LookAssigneColor; 
F_LookAssigneColor:		 
				call	F_HighAddr74; 
				r1 = [R_ColorIndex]; 
				r1 += 1; 
				[R_ColorIndex] = r1; 
			 
				r1 = [R_ColorIndex]; 
				cmp r1,0x03; 
				jb L_LookGetColor; 
				r1 = 0x01; 
				[R_ColorIndex] = r1; 
L_LookGetColor: 
				r1 = T_LookColorTable; 
				r1 += [R_ColorIndex]; 
				r1 = [r1]; 
				[R_WriteDataBuffer] = r1; 
				r1 = 0x05; 
				[R_AddrBuffer] = r1; 
				call	F_WriteOper; 
				retf; 
T_LookColorTable: 
				.dw	0x48;				//Yellow 2002.04.30 
				.dw	0x03; 
				.dw	0x48;				//Yellow 2002.04.30 
				.dw	0x03; 
				.dw	0x48;				//Yellow 2002.04.30 
 
//=================================================== 
//函数:F_Clear70E8  
//语法:调用 
//描述:用来初始化70E8为0 
//参数:无 
//返回:无 
//===================================================				 
.public	F_Clear70E8; 
F_Clear70E8: 
				call	F_HighAddr70; 
				r1 = 0xe8; 
				[R_AddrBuffer] = r1; 
				r1 = 0x00; 
				[R_WriteDataBuffer] = r1;			 
				call	F_WriteOper;				 
				retf; 
 
.public	_NormalOperMode; 
.public	F_NormalOperMode; 
_NormalOperMode:	.proc 
F_NormalOperMode: 
				call	F_HighAddr75; 
				r1 = 0x00; 
				[R_AddrBuffer] = r1; 
				r1 = 0x00; 
				[R_WriteDataBuffer] = r1;			 
				call	F_WriteOper; 
				retf; 
					.endp 
//=================================================== 
//函数:F_HighAddr70  
//语法:调用 
//描述:允许中心控制寄存器使用 
//参数:无 
//返回:无 
//=================================================== 
.public	F_HighAddr70; 
F_HighAddr70: 
				r1 = 0x0f; 
				[R_AddrBuffer] = r1; 
				r1 = 0x70; 
				[R_WriteDataBuffer] = r1;			 
				call	F_WriteOper;				 
				retf; 
//=================================================== 
//函数:F_HighAddr74 
//语法:调用 
//描述:允许特征状态寄存器使用 
//参数:无 
//返回:无 
//=================================================== 
.public	F_HighAddr74; 
F_HighAddr74: 
				r1 = 0x0f; 
				[R_AddrBuffer] = r1; 
				r1 = 0x74; 
				[R_WriteDataBuffer] = r1; 
				call	F_WriteOper; 
				retf; 
//=================================================== 
//函数:F_HighAddr75 
//语法:调用 
//描述:允许辩识成熟出寄存器使用 
//参数:无 
//返回:无 
//=================================================== 
.public	F_HighAddr75; 
F_HighAddr75: 
				r1 = 0x0f; 
				[R_AddrBuffer] = r1; 
				r1 = 0x75; 
				[R_WriteDataBuffer] = r1; 
				call	F_WriteOper; 
				retf;	 
//======================== 功能子函数结束 =========================================								 
 
								 
//======================== 获得数据程序开始 ================================ 
 
//=================================================== 
//函数:F_GetObjNum  
//语法:调用 
//描述:获得物体的数目 
//参数:无 
//返回:无 
//=================================================== 
 
.public	F_GetObjNum; 
F_GetObjNum: 
				call	F_HighAddr74; 
				r1 = 0x10; 
				[R_AddrBuffer] = r1; 
				r1 = 0x00; 
				[R_ReadDataBuffer] = r1; 
				[R_ObjNum] = r1; 
				 
				call	F_ReadOper;		//Get Obj Num 
				 
				r1 = [R_ReadDataBuffer]; 
				r1 &= 0x0F; 
				[R_ObjNum] = r1; 
				 
				r1 = [R_ObjNum]; 
				r1 &= 0x08; 
				jnz L_Bufferfull;			//Num Buffer full 
				r1 = [R_SeekFlag]; 
				r1 &= 0x7f; 
				[R_SeekFlag] = r1; 
				retf; 
L_Bufferfull: 
				r1 = [R_SeekFlag]; 
				r1 |= 0x80; 
				[R_SeekFlag] = r1; 
				retf; 
//=================================================== 
//函数:F_GetObj1stData  
//语法:调用 
//描述:获得数据21-27单元的内容 
//参数:无 
//返回:无 
//=================================================== 
.public F_GetObj1stData; 
F_GetObj1stData: 
				call	F_HighAddr74; 
				r1 = 0x21; 
				[R_AddrBuffer] = r1; 
				call	F_GetShapeAndColor; 
				r1 = 0x22; 
				[R_AddrBuffer] = r1; 
				call	F_GetObjStaX; 
				r1 = 0x23; 
				[R_AddrBuffer] =r1; 
				call	F_GetObjStaY; 
				r1 = 0x24; 
				[R_AddrBuffer] =r1; 
				call	F_GetObjEndX; 
				r1 = 0x25; 
				[R_AddrBuffer] =r1; 
				call	F_GetObjEndY; 
				call	F_GetObjACG;			//StaX+End = CenterX; StaY+endY = CenterY; 
				r1 = 0x26; 
				[R_AddrBuffer] =r1; 
				call	F_GetAreaL; 
				r1 = 0x27; 
				[R_AddrBuffer] =r1; 
				call	F_GetAreaH; 
				retf; 
//=================================================== 
//函数:F_GetObj2ndData  
//语法:调用 
//描述:获得第二数据41-47单元的内容 
//参数:无 
//返回:无 
//=================================================== 
.public F_GetObj2ndData; 
F_GetObj2ndData: 
				call	F_HighAddr74; 
				r1 = 0x41; 
				[R_AddrBuffer] = r1; 
				call	F_GetShapeAndColor; 
				r1 = 0x42; 
				[R_AddrBuffer] = r1; 
				call	F_GetObjStaX; 
				r1 = 0x43; 
				[R_AddrBuffer] =r1; 
				call	F_GetObjStaY; 
				r1 = 0x44; 
				[R_AddrBuffer] =r1; 
				call	F_GetObjEndX; 
				r1 = 0x45; 
				[R_AddrBuffer] =r1; 
				call	F_GetObjEndY; 
				call	F_GetObjACG;			//StaX+End = CenterX; StaY+endY = CenterY; 
				r1 = 0x46; 
				[R_AddrBuffer] =r1; 
				call	F_GetAreaL; 
				r1 = 0x47; 
				[R_AddrBuffer] =r1; 
				call	F_GetAreaH; 
				retf; 
//=================================================== 
//函数:F_GetObj3rdData  
//语法:调用 
//描述:获得第三数据61-67单元的内容 
//参数:无 
//返回:无 
//=================================================== 
.public F_GetObj3rdData; 
F_GetObj3rdData: 
				call	F_HighAddr74; 
				r1 = 0x61; 
				[R_AddrBuffer] = r1; 
				call	F_GetShapeAndColor; 
				r1 = 0x62; 
				[R_AddrBuffer] = r1; 
				call	F_GetObjStaX; 
				r1 = 0x63; 
				[R_AddrBuffer] =r1; 
				call	F_GetObjStaY; 
				r1 = 0x64; 
				[R_AddrBuffer] =r1; 
				call	F_GetObjEndX; 
				r1 = 0x65; 
				[R_AddrBuffer] =r1; 
				call	F_GetObjEndY; 
				call	F_GetObjACG;			//StaX+End = CenterX; StaY+endY = CenterY; 
				r1 = 0x66; 
				[R_AddrBuffer] =r1; 
				call	F_GetAreaL; 
				r1 = 0x67; 
				[R_AddrBuffer] =r1; 
				call	F_GetAreaH; 
				retf; 
//=================================================== 
//函数:F_GetObj4thData  
//语法:调用 
//描述:获得第四个数据81-87单元的内容 
//参数:无 
//返回:无 
//=================================================== 
.public F_GetObj4thData; 
F_GetObj4thData: 
				call	F_HighAddr74; 
				r1 = 0x81; 
				[R_AddrBuffer] = r1; 
				call	F_GetShapeAndColor; 
				r1 = 0x82; 
				[R_AddrBuffer] = r1; 
				call	F_GetObjStaX; 
				r1 = 0x83; 
				[R_AddrBuffer] =r1; 
				call	F_GetObjStaY; 
				r1 = 0x84; 
				[R_AddrBuffer] =r1; 
				call	F_GetObjEndX; 
				r1 = 0x85; 
				[R_AddrBuffer] =r1; 
				call	F_GetObjEndY; 
				call	F_GetObjACG;			//StaX+End = CenterX; StaY+endY = CenterY; 
				r1 = 0x86; 
				[R_AddrBuffer] =r1; 
				call	F_GetAreaL; 
				r1 = 0x87; 
				[R_AddrBuffer] =r1; 
				call	F_GetAreaH; 
				retf; 
//=================================================== 
//函数:F_GetObj5thData  
//语法:调用 
//描述:获得第五个数据A1-A7单元的内容 
//参数:无 
//返回:无 
//=================================================== 
.public F_GetObj5thData; 
F_GetObj5thData: 
				call	F_HighAddr74; 
				r1 = 0xa1; 
				[R_AddrBuffer] = r1; 
				call	F_GetShapeAndColor; 
				r1 = 0xa2; 
				[R_AddrBuffer] = r1; 
				call	F_GetObjStaX; 
				r1 = 0xa3; 
				[R_AddrBuffer] =r1; 
				call	F_GetObjStaY; 
				r1 = 0xa4; 
				[R_AddrBuffer] =r1; 
				call	F_GetObjEndX; 
				r1 = 0xa5; 
				[R_AddrBuffer] =r1; 
				call	F_GetObjEndY; 
				call	F_GetObjACG;			//StaX+End = CenterX; StaY+endY = CenterY; 
				r1 = 0xa6; 
				[R_AddrBuffer] =r1; 
				call	F_GetAreaL; 
				r1 = 0xa7; 
				[R_AddrBuffer] =r1; 
				call	F_GetAreaH; 
				retf; 
//=================================================== 
//函数:F_GetObj6thData  
//语法:调用 
//描述:获得第六个数据C1-C7单元的内容 
//参数:无 
//返回:无 
//=================================================== 
.public F_GetObj6thData; 
F_GetObj6thData: 
				call	F_HighAddr74; 
				r1 = 0xc1; 
				[R_AddrBuffer] = r1; 
				call	F_GetShapeAndColor; 
				r1 = 0xc2; 
				[R_AddrBuffer] = r1; 
				call	F_GetObjStaX; 
				r1 = 0xc3; 
				[R_AddrBuffer] =r1; 
				call	F_GetObjStaY; 
				r1 = 0xc4; 
				[R_AddrBuffer] =r1; 
				call	F_GetObjEndX; 
				r1 = 0xc5; 
				[R_AddrBuffer] =r1; 
				call	F_GetObjEndY; 
				call	F_GetObjACG;			//StaX+End = CenterX; StaY+endY = CenterY; 
				r1 = 0xc6; 
				[R_AddrBuffer] =r1; 
				call	F_GetAreaL; 
				r1 = 0xc7; 
				[R_AddrBuffer] =r1; 
				call	F_GetAreaH; 
				retf; 
//=================================================== 
//函数:F_GetObj7thData  
//语法:调用 
//描述:获得第七个数据E1-E7单元的内容 
//参数:无 
//返回:无 
//=================================================== 
.public F_GetObj7thData; 
F_GetObj7thData: 
				call	F_HighAddr74; 
				r1 = 0xe1; 
				[R_AddrBuffer] = r1; 
				call	F_GetShapeAndColor; 
				r1 = 0xe2; 
				[R_AddrBuffer] = r1; 
				call	F_GetObjStaX; 
				r1 = 0xe3; 
				[R_AddrBuffer] =r1; 
				call	F_GetObjStaY; 
				r1 = 0xe4; 
				[R_AddrBuffer] =r1; 
				call	F_GetObjEndX; 
				r1 = 0xe5; 
				[R_AddrBuffer] =r1; 
				call	F_GetObjEndY; 
				call	F_GetObjACG;			//StaX+End = CenterX; StaY+endY = CenterY; 
				r1 = 0xe6; 
				[R_AddrBuffer] =r1; 
				call	F_GetAreaL; 
				r1 = 0xe7; 
				[R_AddrBuffer] =r1; 
				call	F_GetAreaH; 
				retf; 
//=================================================== 
//函数:F_GetShapeAndColor  
//语法:调用 
//描述:获得颜色和外形的内容 
//参数:无 
//返回:无 
//=================================================== 
.public	F_GetShapeAndColor; 
F_GetShapeAndColor:				 
				r1 = 0x00; 
				[R_ReadDataBuffer] = r1; 
				[R_Color] = r1; 
				[R_Shape] = r1; 
				call	F_ReadOper; 
				r1 = [R_ReadDataBuffer]; 
				r1 &= 0x07;		 
				cmp	r1,0x07; 
				jne	L_NotYellow; 
				r1 -= 1;				 
L_NotYellow:							 
				[R_Color] = r1; 
				r1 = [R_ReadDataBuffer]; 
				r1 &= 0x70; 
				r1 = r1 lsr 4; 
				[R_Shape] = r1;  
				retf; 
//=================================================== 
//函数:F_GetObjStaX  
//语法:调用 
//描述:获得物体水平方向的近距离的内容 
//参数:无 
//返回:无 
//===================================================					 
.public	F_GetObjStaX; 
F_GetObjStaX:				 
				r1 = 0x00; 
				[R_ReadDataBuffer] = r1; 
				[R_StaX] = r1; 
				call	F_ReadOper; 
				r1 = [R_ReadDataBuffer]; 
				[R_StaX] = r1; 
				retf; 
//=================================================== 
//函数:F_GetObjStaY  
//语法:调用 
//描述:获得物体垂直方向的近距离的内容 
//参数:无 
//返回:无 
//===================================================				 
.public	F_GetObjStaY; 
F_GetObjStaY:				 
				r1 = 0x00; 
				[R_ReadDataBuffer] = r1; 
				[R_StaY] = r1; 
				call	F_ReadOper; 
				r1 = [R_ReadDataBuffer]; 
				[R_StaY] = r1; 
				retf; 
//=================================================== 
//函数:F_GetObjEndX 
//语法:调用 
//描述:获得物体水平方向的远距离的内容 
//参数:无 
//返回:无 
//===================================================					 
.public	F_GetObjEndX; 
F_GetObjEndX:				 
				r1 = 0x00; 
				[R_ReadDataBuffer] = r1; 
				[R_EndX] = r1; 
				call	F_ReadOper; 
				r1 = [R_ReadDataBuffer]; 
				[R_EndX] = r1; 
				retf; 
//=================================================== 
//函数:F_GetObjEndY 
//语法:调用 
//描述:获得物体垂直方向的远距离的内容 
//参数:无 
//返回:无 
//===================================================						 
.public	F_GetObjEndY; 
F_GetObjEndY: 
				 
				r1 = 0x00; 
				[R_ReadDataBuffer] = r1; 
				[R_EndY] = r1; 
				call	F_ReadOper; 
				r1 = [R_ReadDataBuffer]; 
				[R_EndY] = r1; 
				retf; 
//=================================================== 
//函数:F_GetObjACG 
//语法:调用 
//描述:获得物体垂直方向、水平方向的中心距离和水平、垂直方向物体的实际距离 
//参数:无 
//返回:无 
//===================================================					 
.public	F_GetObjACG; 
F_GetObjACG: 
				r1 = [R_EndX]; 
				r1 += [R_StaX]; 
				r1 = r1 lsr 1; 
				[R_CenterX] = r1; 
				 
				r1 = [R_EndY]; 
				r1 += [R_StaY]; 
				r1 = r1 lsr 1; 
				[R_CenterY] = r1; 
 
				r1 = [R_EndX]; 
				r1 -= [R_StaX]; 
				[R_CompX] = r1; 
 
				r1 = [R_EndY]; 
				r1 -= [R_StaY]; 
				[R_CompY] = r1; 
 
				retf; 
//=================================================== 
//函数:F_GetAreaL 
//语法:调用 
//描述:获得在空间的近距离 
//参数:无 
//返回:无 
//===================================================	 
.public	F_GetAreaL; 
F_GetAreaL: 
				r1 = 0x00; 
				[R_ReadDataBuffer] = r1; 
				[R_AreaL] = r1; 
				call	F_ReadOper; 
				r1 = [R_ReadDataBuffer]; 
				[R_AreaL] = r1; 
				retf; 
//=================================================== 
//函数:F_GetAreaH 
//语法:调用 
//描述:获得在空间的远距离 
//参数:无 
//返回:无 
//===================================================					 
.public	F_GetAreaH; 
F_GetAreaH: 
			 
				r1 = 0x00; 
				[R_ReadDataBuffer] = r1; 
				[R_AreaH] = r1; 
				call	F_ReadOper; 
				r1 = [R_ReadDataBuffer]; 
				[R_AreaH] = r1; 
				retf; 
 
 
.public	F_GetObjDataOne; 
F_GetObjDataOne:			 
				r1 = [R_SeekFlag]; 
				r1 &= 0x01; 
				jnz L_NonGetObjDataOneTemp; 
	 
				call	F_GetObj1stData; 
//				call	F_CheckTheObj; 
L_NonGetObjDataOneTemp: 
				retf; 
					 
//========================== 读写程序开始 ============================ 
 
//=================================================== 
//函数:F_WriteOper  
//语法:调用 
//描述:CPU向SPCA563的写数据 
//参数:无 
//返回:无 
//===================================================	 
.public F_WriteOper; 
F_WriteOper: 
				 
				r1 = 0x00; 
				[R_WaitRDYTime] = r1; 
				 
				call	F_Set_SDA_Output; 
L_WriteStart:				 
				r1 = [P_IOA_Data]; 
				r1 &= 0x0400; 
				jnz	L_WriteStartRDY;   
 
				r1 = [R_WaitRDYTime]; 
				cmp	r1,11; 
				jb	L_WriteStart;  
			 
				call	F_ResetEagle3Again;				 
				retf; 
 
L_WriteStartRDY:	 
				r1 = [P_IOA_Buffer]; 
				r1 |= 0x0100; 
				[P_IOA_Buffer] = r1; 
 
				r1 = [P_IOA_Buffer]; 
				r1 |= 0x0200; 
				[P_IOA_Buffer] = r1; 
				 
				r1 = [P_IOA_Buffer];				 
				r1 &= 0xfeff; 
				[P_IOA_Buffer] = r1; 
				 
				r1 = [P_IOA_Buffer];				 
				r1 &= 0xfdff; 
				[P_IOA_Buffer] = r1; 
				 
 
				r1 = [P_IOA_Buffer];				 
				r1 |= 0x0100; 
				[P_IOA_Buffer] = r1; 
				 
				r1 = [P_IOA_Buffer];				 
				r1 &= 0xfdff; 
				[P_IOA_Buffer] = r1; 
 
				r1 = [P_IOA_Buffer];				 
				r1 &= 0xfeff; 
				[P_IOA_Buffer] = r1; 
 
				r1 = [P_IOA_Buffer];				 
				r1 |= 0x0100; 
				[P_IOA_Buffer] = r1; 
 
				r1 = [P_IOA_Buffer];				 
				r1 &= 0xfdff; 
				[P_IOA_Buffer] = r1; 
				 
				r1 = [R_AddrBuffer]; 
				[R_WriteBuffer] = r1; 
				 
				call	F_WriteOneByte; 
 
				r1 = [R_WriteDataBuffer]; 
				[R_WriteBuffer] = r1; 
				call	F_WriteOneByte; 
 
				r1 = [P_IOA_Buffer];				 
				r1 &= 0xfeff; 
				[P_IOA_Buffer] = r1; 
 
				r1 = [P_IOA_Buffer];				 
				r1 |= 0x0200; 
				[P_IOA_Buffer] = r1; 
 
				r1 = [P_IOA_Buffer];				 
				r1 |= 0x0100; 
				[P_IOA_Buffer] = r1; 
						  
				r1 = 0x00; 
				[R_WaitRDYTime] = r1; 
L_WWaitISRInt: 
				r1 = [P_IOA_Data]; 
 				r1 &= 0x0400; 
				jnz	L_NonWaitRDYAgain; 
			 
				r1 = [R_WaitRDYTime]; 
				cmp	r1,11; 
				jb	L_WWaitISRInt; 
				call	F_ResetEagle3Again; 
L_NonWaitRDYAgain: 
				retf; 
//=================================================== 
//函数:F_ReadOper  
//语法:调用 
//描述:CPU向SPCA563的读数据 
//参数:无 
//返回:无 
//===================================================			 
.public F_ReadOper; 
F_ReadOper: 
				r1 = 0x00; 
				[R_WaitRDYTime] = r1; 
				call	F_Set_SDA_Output; 
L_ReadStart: 
				r1 = [P_IOA_Data]; 
				r1 &= 0x0400; 
				jnz	L_ReadStartRDY; 
								 
				r1 = [R_WaitRDYTime]; 
				cmp	r1,11; 
				jb	L_ReadStart; 
				call	F_ResetEagle3Again; 
				retf; 
 
L_ReadStartRDY: 
				r1 = [P_IOA_Buffer];				 
				r1 |= 0x0200; 
				[P_IOA_Buffer] = r1; 
 
				r1 = [P_IOA_Buffer];				 
				r1 |= 0x0100; 
				[P_IOA_Buffer] = r1; 
 
				r1 = [P_IOA_Buffer];				 
				r1 &= 0xfdff; 
				[P_IOA_Buffer] = r1; 
 
				r1 = [P_IOA_Buffer];				 
				r1 &= 0xfeff; 
				[P_IOA_Buffer] = r1; 
 
				r1 = [P_IOA_Buffer];				 
				r1 |= 0x0100; 
				[P_IOA_Buffer] = r1; 
 
				r1 = [P_IOA_Buffer];				 
				r1 &= 0xfdff; 
				[P_IOA_Buffer] = r1; 
 
				r1 = [P_IOA_Buffer];				 
				r1 &= 0xfeff; 
				[P_IOA_Buffer] = r1; 
 
				r1 = [P_IOA_Buffer];				 
				r1 |= 0x0200; 
				[P_IOA_Buffer] = r1; 
 
				r1 = [P_IOA_Buffer];				 
				r1 |= 0x0100; 
				[P_IOA_Buffer] = r1; 
				 
				r1 = [R_AddrBuffer]; 
				[R_WriteBuffer] = r1; 
				call	F_WriteOneByte; 
				r1 = [P_IOA_Buffer]; 
				r1 &= 0xfeff; 
				[P_IOA_Buffer] = r1; 
		 
				r1 = [P_IOA_Buffer]; 
				r1 |= 0x0100; 
				[P_IOA_Buffer] = r1; 
				 
				r1 = 0x00; 
				[R_WaitRDYTime] = r1; 
L_ReadDataNow: 
				r1 = [P_IOA_Data]; 
				r1 &= 0x0400; 
				jnz	L_ReadDataNowRDY; 
			 
				r1 = [R_WaitRDYTime]; 
				cmp	r1,11; 
				jb	L_ReadDataNow; 
				call	F_ResetEagle3Again;								 
				retf; 
			 
L_ReadDataNowRDY: 
				call	F_Set_SDA_Input; 
				NOP; 
				NOP; 
				NOP; 
				NOP; 
				NOP; 
				NOP; 
				NOP; 
				NOP; 
				r1 = [P_IOA_Buffer]; 
				r1 |= 0x0100; 
				[P_IOA_Buffer] = r1; 
				call	F_ReadOneByte; 
			 
				r1 = [R_ReadBuffer]; 
				[R_ReadDataBuffer] = r1; 
			 
				r1 = [P_IOA_Buffer]; 
				r1 &= 0xfeff; 
				[P_IOA_Buffer] = r1; 
	 
				r1 = [P_IOA_Buffer]; 
				r1 |= 0x0200; 
				[P_IOA_Buffer] = r1; 
				 
				r1 = [P_IOA_Buffer];				 
				r1 |= 0x0100; 
				[P_IOA_Buffer] = r1; 
 
				retf; 
			 
//=================================================== 
//函数:F_ReadOneByte  
//语法:调用 
//描述:CPU向SPCA563的读一个字节的数据 
//参数:无 
//返回:无 
//=================================================== 
 
F_ReadOneByte: 
				r1 = 0x00; 
				[R_ReadBuffer] = r1; 
				r2 = 0x08; 
L_RWaitSCKHigh: 
				r1 = [P_IOA_Buffer]; 
				r1 &= 0xfeff; 
				[P_IOA_Buffer] = r1; 
			 
				r1 = [P_IOA_Buffer]; 
				r1 |= 0x0100; 
				[P_IOA_Buffer] = r1; 
				 
				r1 = [P_IOA_Data]; 
				r1 &= 0x0200; 
				jnz	L_ReadSDAHigh; 
			 
				r1 = [R_ReadBuffer]; 
				r1 = r1 lsl 1; 
				r1 += 0x00; 
				[R_ReadBuffer] = r1; 
			 
				r2 -= 0x01; 
				jnz	L_RWaitSCKHigh; 
				retf; 
 
L_ReadSDAHigh: 
				r1 = [R_ReadBuffer]; 
				r1 = r1 lsl 1; 
				r1 += 0x01; 
				[R_ReadBuffer] = r1; 
 
				r2 -= 0x01; 
				jnz	L_RWaitSCKHigh; 
				retf; 
//=================================================== 
//函数:F_WriteOneByte  
//语法:调用 
//描述:CPU向SPCA563的写一个字节的数据 
//参数:无 
//返回:无 
//=================================================== 
F_WriteOneByte: 
				r2 = 0x08; 
L_WWaitSCKLow: 
				r1 = [P_IOA_Buffer]; 
				r1 &= 0xfeff; 
				[P_IOA_Buffer] = r1; 
				 
				r1 = [R_WriteBuffer]; 
				r1 &= 0x80; 
				jz	L_Write_SDALow; 
				 
				r1 = [P_IOA_Buffer]; 
				r1 |= 0x0200; 
				[P_IOA_Buffer] = r1; 
							 
				jmp	L_WriteTheBitOK; 
 
L_Write_SDALow: 
				r1 = [P_IOA_Buffer];				 
				r1 &= 0xfdff; 
				[P_IOA_Buffer] = r1; 
 
L_WriteTheBitOK:								 
				r1 = [R_WriteBuffer]; 
				r1 = r1 lsl 1; 
				[R_WriteBuffer] = r1; 
 
				r1 = [P_IOA_Buffer]; 
				r1 |= 0x0100; 
				[P_IOA_Buffer] = r1; 
 
				r2 -= 0x01; 
				jnz	L_WWaitSCKLow; 
				retf; 
//========================== 读写程序结束 ============================ 
 
//========================== 延时程序开始 ============================					 
			 			 
//=================================================== 
//函数:F_Delay66ms  
//语法:调用 
//描述:延时66毫秒 
//参数:无 
//返回:无 
//=================================================== 
.public	F_Delay66ms; 
F_Delay66ms:			 
				r1 = [R_DelayTime]; 
				cmp	r1,0x42; 
				jb	L_NonTo66ms; 
				r1 = [R_Flag]; 
				r1 |= 0x8000;					//Delay66ms 
				[R_Flag] = r1;				 
				retf;				 
L_NonTo66ms: 
				r1 = [R_Flag]; 
				r1 &= 0x7fff; 
				[R_Flag] = r1;				 
				retf; 
 
//=================================================== 
//函数:F_Delay55ms  
//语法:调用 
//描述:延时55毫秒 
//参数:无 
//返回:无 
//=================================================== 
.public	F_Delay55ms; 
F_Delay55ms:				 
				r1 = [R_DelayTime]; 
				cmp	r1,0x37; 
				jb	L_NonTo55ms; 
				 
				r1 = [R_Flag]; 
				r1 |= 0x8000; 
				[R_Flag] = r1; 
				retf;				 
L_NonTo55ms:				 
				r1 = [R_Flag]; 
				r1 &= 0x7fff; 
				[R_Flag] = r1; 
				retf;				 	 
//=================================================== 
//函数:F_Delay25ms  
//语法:调用 
//描述:延时25毫秒 
//参数:无 
//返回:无 
//===================================================			 
.public	F_Delay25ms; 
F_Delay25ms:				 
				r1 = [R_DelayTime]; 
				cmp	r1,0x19; 
				jb	L_NonTo25ms; 
				 
				r1 = [R_Flag]; 
				r1 |= 0x8000; 
				[R_Flag] = r1; 
				retf;				 
L_NonTo25ms:				 
				r1 = [R_Flag]; 
				r1 &= 0x7fff; 
				[R_Flag] = r1; 
				retf;				 	 
//=================================================== 
//函数:F_Delay10ms  
//语法:调用 
//描述:延时10毫秒 
//参数:无 
//返回:无 
//=================================================== 
.public	F_Delay10ms; 
F_Delay10ms:				 
				r1 = [R_DelayTime]; 
				cmp	r1,0x0a; 
				jb	L_NonTo10ms; 
				 
				r1 = [R_Flag]; 
				r1 |= 0x8000; 
				[R_Flag] = r1; 
				retf;				 
L_NonTo10ms:				 
				r1 = [R_Flag]; 
				r1 &= 0x7fff; 
				[R_Flag] = r1; 
				retf;				 	 
//=================================================== 
//函数:F_Delay5ms  
//语法:调用 
//描述:延时5毫秒 
//参数:无 
//返回:无 
//=================================================== 
.public	F_Delay5ms; 
F_Delay5ms:				 
				r1 = [R_DelayTime]; 
				cmp	r1,0x06; 
				jb	L_NonTo5ms; 
				 
				r1 = [R_Flag]; 
				r1 |= 0x8000; 
				[R_Flag] = r1; 
				retf;				 
L_NonTo5ms:				 
				r1 = [R_Flag]; 
				r1 &= 0x7fff; 
				[R_Flag] = r1; 
				retf;				 	 
				 	 
//======================== 延时程序结束 ================================== 
		 
//================================= 数据处理程序开始 ================================= 
 
//=================================================== 
//函数:F_LookGetObjData  
//语法:调用 
//描述:获得颜色、外型、水平方向的数值、 
//		垂直方向的数值、空间的远近的参数 
//参数:无 
//返回:无 
//=================================================== 
.public	F_LookGetObjData; 
F_LookGetObjData: 
				r1 = [R_ObjNum]; 
				r1 &= 0x07; 
				[R_ObjNum] = r1; 
				r1 = [R_ObjNum]; 
				cmp	r1,0x01; 
				je	F_LookGetOneObjData; 
				cmp	r1,0x02; 
				je	F_LookGetTwoObjData; 
				cmp	r1,0x03; 
				je	F_LookGetThrObjData; 
				cmp	r1,0x04; 
				je	F_LookGetFourObjData; 
				cmp	r1,0x05; 
				je	F_LookGetFiveObjData; 
				cmp	r1,0x06; 
				je	F_LookGetSixObjData; 
				cmp	r1,0x07; 
				je	F_LookGetSevenObjData; 
				retf; 
//=================================================== 
//函数:F_LookGetOneObjData  
//语法:调用 
//描述:获得一个目标物体 
//参数:无 
//返回:无 
//===================================================				 
F_LookGetOneObjData: 
				call	F_LookGetObj1stData; 
				retf; 
//=================================================== 
//函数:F_LookGetTwoObjData  
//语法:调用 
//描述:获得二个目标物体 
//参数:无 
//返回:无 
//=================================================== 
F_LookGetTwoObjData: 
				call	F_LookGetObj1stData; 
				call	F_LookGetObj2ndData; 
				retf; 
//=================================================== 
//函数:F_LookGetThrObjData  
//语法:调用 
//描述:获得三个目标物体 
//参数:无 
//返回:无 
//===================================================				 
F_LookGetThrObjData: 
				call	F_LookGetObj1stData; 
				call	F_LookGetObj2ndData; 
				call	F_LookGetObj3rdData; 
				retf; 
//=================================================== 
//函数:F_LookGetFourObjData  
//语法:调用 
//描述:获得四个目标物体 
//参数:无 
//返回:无 
//=================================================== 
F_LookGetFourObjData: 
				call	F_LookGetObj1stData; 
				call	F_LookGetObj2ndData; 
				call	F_LookGetObj3rdData; 
				call	F_LookGetObj4thData; 
				retf; 
//=================================================== 
//函数:F_LookGetFiveObjData  
//语法:调用 
//描述:获得五个目标物体 
//参数:无 
//返回:无 
//=================================================== 
F_LookGetFiveObjData: 
				call	F_LookGetObj1stData; 
				call	F_LookGetObj2ndData; 
				call	F_LookGetObj3rdData; 
				call	F_LookGetObj4thData; 
				call	F_LookGetObj5thData; 
				retf; 
//=================================================== 
//函数:F_LookGetSixObjData  
//语法:调用 
//描述:获得六个目标物体 
//参数:无 
//返回:无 
//=================================================== 
F_LookGetSixObjData: 
				call	F_LookGetObj1stData; 
				call	F_LookGetObj2ndData; 
				call	F_LookGetObj3rdData; 
				call	F_LookGetObj4thData; 
				call	F_LookGetObj5thData; 
				call	F_LookGetObj6thData; 
				retf; 
//=================================================== 
//函数:F_LookGetSevenObjData  
//语法:调用 
//描述:获得七个目标物体 
//参数:无 
//返回:无 
//=================================================== 
F_LookGetSevenObjData: 
				call	F_LookGetObj1stData; 
				call	F_LookGetObj2ndData; 
				call	F_LookGetObj3rdData; 
				call	F_LookGetObj4thData; 
				call	F_LookGetObj5thData; 
				call	F_LookGetObj6thData; 
				call	F_LookGetObj7thData; 
				retf; 
//=================================================== 
//函数:F_LookGetObj1stData  
//语法:调用 
//描述:获得第一个目标物体的数据 
//参数:无 
//返回:无 
//=================================================== 
				 
.public	F_LookGetObj1stData; 
F_LookGetObj1stData: 
				call	F_GetObj1stData; 
				call	F_LookCheckTheObj; 
				retf; 
//=================================================== 
//函数:F_LookGetObj2ndData  
//语法:调用 
//描述:获得第二个目标物体的数据 
//参数:无 
//返回:无 
//=================================================== 
.public	F_LookGetObj2ndData; 
F_LookGetObj2ndData: 
				call	F_GetObj2ndData; 
				call	F_LookCheckTheObj; 
				retf; 
//=================================================== 
//函数:F_LookGetObj3rdData  
//语法:调用 
//描述:获得第三个目标物体的数据 
//参数:无 
//返回:无 
//=================================================== 
.public	F_LookGetObj3rdData; 
F_LookGetObj3rdData: 
				call	F_GetObj3rdData; 
				call	F_LookCheckTheObj; 
				retf; 
//=================================================== 
//函数:F_LookGetObj4thData  
//语法:调用 
//描述:获得第四个目标物体的数据 
//参数:无 
//返回:无 
//=================================================== 
.public	F_LookGetObj4thData; 
F_LookGetObj4thData: 
				call	F_GetObj4thData; 
				call	F_LookCheckTheObj; 
				retf; 
//=================================================== 
//函数:F_LookGetObj5thData  
//语法:调用 
//描述:获得第五个目标物体的数据 
//参数:无 
//返回:无 
//===================================================			 
.public	F_LookGetObj5thData; 
F_LookGetObj5thData: 
				call	F_GetObj5thData; 
				call	F_LookCheckTheObj; 
				retf; 
//=================================================== 
//函数:F_LookGetObj6thData  
//语法:调用 
//描述:获得第六个目标物体的数据 
//参数:无 
//返回:无 
//=================================================== 
.public	F_LookGetObj6thData;				 
F_LookGetObj6thData: 
				call	F_GetObj6thData; 
				call	F_LookCheckTheObj; 
				retf; 
//=================================================== 
//函数:F_LookGetObj7thData  
//语法:调用 
//描述:获得第七个目标物体的数据 
//参数:无 
//返回:无 
//=================================================== 
.public	F_LookGetObj7thData; 
F_LookGetObj7thData: 
				call	F_GetObj7thData; 
				call	F_LookCheckTheObj; 
				retf; 
//=================================================== 
//函数:F_LookCheckTheObj  
//语法:调用 
//描述:获得在合适的范围内的颜色、外型、远近的数值 
//参数:无 
//返回:无 
//=================================================== 
.public	F_LookCheckTheObj;				 
F_LookCheckTheObj: 
//				r1 = [R_CenterX]; 
//				cmp	r1,0x30; 
//				jb	L_LookNotRightShape; 
//				r1 = [R_CenterX]; 
//				cmp	r1,0x70; 
//				jae	L_LookNotRightShape; 
				 
//				r1 = [R_CenterY]; 
//				cmp	r1,0x1d; 
//				jb	L_LookNotRightShape; 
//				r1 = [R_CenterY]; 
//				cmp	r1,0x5a; 
//				jae	L_LookNotRightShape; 
 
				r1 = [R_Shape]; 
				cmp	r1,0x00; 
				je	L_LookNotRightShape; 
				 
				r1 = [R_Shape]; 
				cmp	r1,0x05; 
				jae	L_LookNotRightShape; 
				 
				r1 = [R_AreaH]; 
				cmp	r1,0x01; 
				jb	L_LookNotRightShape; 
L_LookHaveFoundTheObj:				 
				r1 = [R_PreAreaH]; 
				cmp	r1,0x00; 
				je	L_Fund1stObj; 
				 
				r1 = [R_AreaH]; 
				cmp	r1,[R_PreAreaH]; 
				jb L_LookNotRightShape; 
L_Fund1stObj: 
				r1 = [R_Color]; 
				[R_PreColor] = r1; 
				 
				r1 = [R_Shape] 
				[R_PreShape] = r1;				 
			 
				r1 = [R_AreaH]; 
				[R_PreAreaH] = r1;			 
 
				r1 = [R_CompX]; 
				[R_PreCompX] = r1; 
				r1 = [R_CompY]; 
				[R_PreCompY] = r1; 
		 
				r1 = [R_SeekFlag]; 
				r1 |= 0x01; 
				[R_SeekFlag] = r1;				 
				retf; 
L_LookNotRightShape: 
				retf;	 
 
//================================ Master.asm 结束 =============================