📄 master.asm
字号:
.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 结束 =============================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -