📄 lookaround.lst
字号:
0000997A 41 92 r1 = 0x01; // 程序入口偏移量
0000997B 19 D3 F7 02 [R_Offset] = r1;
0000997D 90 9A retf;
.endp
//================================================
// 函数名称: T_JumpTable
// 功能描述: 程序入口
// 入口参数:
// 出口参数:
// 破坏寄存器:
//=================================================
.public T_JumpTable;
T_JumpTable:
0000997E 89 99 .dw L_LookAroundStoped; // 0
0000997F 96 99 .dw L_ResetEngine; // 1
00009980 9D 99 .dw L_BeingDelay1stTime; // 2
00009981 A5 99 .dw L_BeingDelay2ndTime; // 3
00009982 A5 99 .dw L_BeingDelay3rdTime; // 4
00009983 A5 99 .dw L_BeingDelay4thTime; // 5
00009984 B0 99 .dw L_BeingDelay5thTime; // 6
00009985 C5 99 .dw L_BeingDelay6thTime; // 7
00009986 CD 99 .dw L_AssigneColorAgain; // 8
00009987 D6 99 .dw L_BeingDelay7thTime; // 9
00009988 E5 99 .dw L_BeingDelay9thTime; // A
L_LookAroundStoped:
00009989 90 9A retf;
//================================================
// 函数名称: LookAround
// 功能描述: 获得物体颜色、形状、X、Y、Size
// 入口参数:
// 出口参数:
// 破坏寄存器:
//=================================================
.public _LookAround;
.public F_LookAround;
_LookAround: .proc
F_LookAround:
0000998A 11 93 F6 02 r1 = [R_Flag]; // R_Flag = 0 初始化
0000998C 44 B2 r1 &= 0x0004;
0000998D 06 4E jnz L_Restart;
0000998E 09 93 7E 99 r1 = T_JumpTable;
00009990 11 03 F7 02 r1 += [R_Offset];
00009992 C1 92 r1 = [r1];
00009993 01 9F pc = r1;
L_Restart:
00009994 40 F0 5F 99 call F_LookAround_Initial;
L_ResetEngine:
00009996 42 92 r1 = 0x02;
00009997 19 D3 F7 02 [R_Offset] = r1;
00009999 40 92 r1 = 0x00;
0000999A 19 D3 0C 03 [R_DelayTime] = r1;
0000999C 90 9A retf;
L_BeingDelay1stTime:
0000999D 40 F0 83 92 call F_Delay55ms; // 延时55MS
0000999F 11 93 F6 02 r1 = [R_Flag];
000099A1 09 B3 00 80 r1 &= 0x8000;
000099A3 01 4E jnz L_HaveDelay1stTime; // 判断时间到否
000099A4 90 9A retf;
L_HaveDelay1stTime:
L_BeingDelay2ndTime:
L_BeingDelay3rdTime:
L_BeingDelay4thTime:
000099A5 40 F0 0C 8F call F_NormalOperMode; // 写0F到高地址75
000099A7 40 F0 9E 8E call F_OperMode; // 写00到低地址00;允许75E0、75E8使用
000099A9 46 92 r1 = 0x06;
000099AA 19 D3 F7 02 [R_Offset] = r1;
000099AC 40 92 r1 = 0x00;
000099AD 19 D3 0C 03 [R_DelayTime] = r1;
000099AF 90 9A retf;
L_BeingDelay5thTime:
000099B0 40 F0 70 92 call F_Delay66ms; // 延时66MS
000099B2 11 93 F6 02 r1 = [R_Flag];
000099B4 09 B3 00 80 r1 &= 0x8000;
000099B6 01 4E jnz L_HaveDelay5thTime;
000099B7 90 9A retf;
L_HaveDelay5thTime:
000099B8 40 F0 92 8E call F_ShapeAnaly; // 写0F到高地址70;写08到低地址E0
000099BA 40 F0 00 8F call F_Clear70E8; // 写0F到高地址70;写00到低地址E8;设置模式
L_FeatureEagine:
000099BC 40 F0 88 8E call F_FeatureEngine; // 写0F到高地址74,
000099BE 47 92 r1 = 0x07;
000099BF 19 D3 F7 02 [R_Offset] = r1;
000099C1 40 92 r1 = 0x00;
000099C2 19 D3 0C 03 [R_DelayTime] = r1;
000099C4 90 9A retf;
L_BeingDelay6thTime:
000099C5 40 F0 70 92 call F_Delay66ms; // 延时66MS
000099C7 11 93 F6 02 r1 = [R_Flag];
000099C9 09 B3 00 80 r1 &= 0x8000;
000099CB 01 4E jnz L_HaveDelay6thTime;
000099CC 90 9A retf;
L_HaveDelay6thTime:
//---------------------- ResetEngine End -------------------------
L_AssigneColorAgain:
L_AssigneColor:
000099CD 40 F0 E0 8E call F_LookAssigneColor; // 写需要分辨别的颜色到7405的低地址05中
000099CF 49 92 r1 = 0x09;
000099D0 19 D3 F7 02 [R_Offset] = r1;
000099D2 40 92 r1 = 0x00;
000099D3 19 D3 0C 03 [R_DelayTime] = r1;
000099D5 90 9A retf;
L_BeingDelay7thTime:
000099D6 40 F0 70 92 call F_Delay66ms; // 延时66MS
000099D8 11 93 F6 02 r1 = [R_Flag];
000099DA 09 B3 00 80 r1 &= 0x8000;
000099DC 01 4E jnz L_HaveDelay7thTime;
000099DD 90 9A retf;
L_HaveDelay7thTime:
000099DE 4A 92 r1 = 0x0A;
000099DF 19 D3 F7 02 [R_Offset] = r1;
000099E1 40 92 r1 = 0x00;
000099E2 19 D3 0C 03 [R_DelayTime] = r1;
000099E4 90 9A retf;
L_BeingDelay9thTime:
000099E5 40 F0 B9 92 call F_Delay5ms; // 延时5MS
000099E7 11 93 F6 02 r1 = [R_Flag];
000099E9 09 B3 00 80 r1 &= 0x8000;
000099EB 01 4E jnz L_HaveDelay9thTime;
000099EC 90 9A retf;
L_HaveDelay9thTime:
000099ED 40 F0 35 8F call F_GetObjNum; // 读7410单元中的内容
000099EF 11 93 F5 02 r1 = [R_SeekFlag]; // 判断标志位
000099F1 09 B3 80 00 r1 &= 0x80;
000099F3 0E 4E jnz L_LookObjBufferFull1; // 目标数>8,则转
000099F4 11 93 F5 02 r1 = [R_SeekFlag];
000099F6 09 B3 FE 00 r1 &= 0xfe;
000099F8 19 D3 F5 02 [R_SeekFlag] = r1; // 目标数<8 ,清寄存器和标志
000099FA 40 92 r1 = 0x00;
000099FB 19 D3 11 03 [R_PreAreaH] = r1;
000099FD 19 D3 0F 03 [R_PreColor] = r1;
000099FF 19 D3 10 03 [R_PreShape] = r1;
00009A01 02 EE jmp L_LookGetObjData;
L_LookObjBufferFull1:
00009A02 40 F0 30 9A call L_LookObjBufferFull
L_LookGetObjData:
00009A04 40 F0 CB 92 call F_LookGetObjData; // 读取颜色、形状、X、Y、SIZE的值
00009A06 11 93 F5 02 r1 = [R_SeekFlag];
00009A08 41 B2 r1 &= 0x01; // 是否获得数值标志
00009A09 26 5E jz L_LookNonGetObj;
// r1 = [R_PreShape]; // 是否获得形状
// cmp r1,0x00;
// je L_LookNonGetObj; // 相等则转
00009A0A 11 93 0F 03 r1 = [R_PreColor];
00009A0C 11 43 16 03 cmp r1,[R_Temp1];
00009A0E 05 4E jne L_NotTheSameObj; // 不相等则转
00009A0F 11 93 10 03 r1 = [R_PreShape];
00009A11 11 43 17 03 cmp r1,[R_Temp2];
00009A13 1C 5E je L_LookNonGetObj; // 相等则转
L_NotTheSameObj:
00009A14 11 93 0F 03 r1 = [R_PreColor]; // 获得颜色
00009A16 19 D3 16 03 [R_Temp1] = r1;
00009A18 19 D3 19 03 [_VR_PrevResult_Color] = r1;
00009A1A 11 93 10 03 r1 = [R_PreShape]; // 获得形状
00009A1C 19 D3 17 03 [R_Temp2] = r1;
00009A1E 19 D3 1A 03 [_VR_PrevResult_Shape] = r1;
00009A20 11 93 02 03 r1 = [R_CenterX] // 获得物体的中心水平值X
00009A22 19 D3 1B 03 [_VR_PrevResult_CenterX] = r1
00009A24 11 93 03 03 r1 = [R_CenterY] // 获得物体的中心垂直值Y
00009A26 19 D3 1C 03 [_VR_PrevResult_CenterY] = r1
00009A28 11 93 01 03 r1 = [R_AreaH] // 获得物体尺寸高位数据
00009A2A 19 D3 1D 03 [_VR_PrevResult_AreaH] = r1
00009A2C 41 92 r1 = 0x0001;
00009A2D 19 D3 1F 03 [_VR_OverFlag] = r1; // 置结束标志
00009A2F 90 9A retf;
L_LookObjBufferFull:
L_LookNonGetObj:
00009A30 48 92 r1 = 0x08; // 重新读数据
00009A31 19 D3 F7 02 [R_Offset] = r1;
00009A33 90 9A retf;
.endp
//================================ 结束 LookAround.asm ==================================
0 error(s), 0 warning(s).
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -