📄 rd_usedlocate_lib.lis
字号:
00D2 0C81 ldd R16,y+4
00D4 1D81 ldd R17,y+5
00D6 2E81 ldd R18,y+6
00D8 3F81 ldd R19,y+7
00DA 00D0 rcall long2fp
00DC 3A93 st -y,R19
00DE 2A93 st -y,R18
00E0 1A93 st -y,R17
00E2 0A93 st -y,R16
00E4 8A01 movw R16,R20
00E6 9B01 movw R18,R22
00E8 00D0 rcall fpmule2x
00EA 8301 movw R16,R6
00EC 9401 movw R18,R8
00EE 00D0 rcall fpsub2x
00F0 8101 movw R16,R2
00F2 9201 movw R18,R4
00F4 00D0 rcall fpmule2
00F6 .dbline -2
00F6 L5:
00F6 .dbline 0 ; func end
00F6 00D0 rcall pop_xgsetF000
00F8 2496 adiw R28,4
00FA 0895 ret
00FC .dbsym l lDCR 8 L
00FC .dbsym l lDCL 4 L
00FC .dbend
.area data(ram, con, rel)
000C .dbfile E:\单片机\ROOBCO~1\全向定位系统\被动小车\Passive_Encoder\RD_UseDLocate_LIB.c
000C L10:
000C .blkb 4
.area idata
000C 00000000 .word 0,0
.area data(ram, con, rel)
0010 .dbfile E:\单片机\ROOBCO~1\全向定位系统\被动小车\Passive_Encoder\RD_UseDLocate_LIB.c
0010 L11:
0010 .blkb 4
.area idata
0010 00000000 .word 0,0
.area data(ram, con, rel)
0014 .dbfile E:\单片机\ROOBCO~1\全向定位系统\被动小车\Passive_Encoder\RD_UseDLocate_LIB.c
.area text(rom, con, rel)
00FC .dbfile E:\单片机\ROOBCO~1\全向定位系统\被动小车\Passive_Encoder\RD_UseDLocate_LIB.c
00FC .dbfunc e PROC_Difference_Locate _PROC_Difference_Locate fc
00FC .dbsym s s_lLastCounterR L11 L
00FC .dbsym s s_lLastCounterL L10 L
00FC ; fR1 -> y+20
00FC ; fR0 -> y+16
00FC ; nDeltaCounterL0 -> R10,R11
00FC ; fTempAngle0 -> y+16
00FC ; fAbsoluteAngle0 -> y+12
00FC ; fDeltaAngle0 -> y+8
00FC ; fR0 -> y+8
00FC ; nDeltaCounterL0 -> R10,R11
00FC ; Reg8 -> y+4
.even
00FC _PROC_Difference_Locate::
00FC 00D0 rcall push_xgsetF00C
00FE 6897 sbiw R28,24
0100 .dbline -1
0100 .dbline 155
0100 ; (float)lDCR * (float)K_R
0100 ; - (float)lDCL * (float)K_L
0100 ; ) * (1.0 / (float)D_BTW_WHEEL);
0100 ; }
0100 ;
0100 ;
0100 ;
0100 ; /***********************************************************
0100 ; * 函数说明:差分定位计算函数 *
0100 ; * 输入: 无 *
0100 ; * 输出: FALSE *
0100 ; * 调用函数:无 *
0100 ; ***********************************************************/
0100 ; BOOL PROC_Difference_Locate(void)
0100 ; {
0100 .dbline 159
0100 ; static INT32 s_lLastCounterL = 0;
0100 ; static INT32 s_lLastCounterR = 0;
0100 ;
0100 ; if ((g_lCounterLImage - s_lLastCounterL)
0100 40901200 lds R4,L11+2
0104 50901300 lds R5,L11+2+1
0108 20901000 lds R2,L11
010C 30901100 lds R3,L11+1
0110 80900200 lds R8,_g_lCounterRImage+2
0114 90900300 lds R9,_g_lCounterRImage+2+1
0118 60900000 lds R6,_g_lCounterRImage
011C 70900100 lds R7,_g_lCounterRImage+1
0120 6218 sub R6,R2
0122 7308 sbc R7,R3
0124 8408 sbc R8,R4
0126 9508 sbc R9,R5
0128 40900E00 lds R4,L10+2
012C 50900F00 lds R5,L10+2+1
0130 20900C00 lds R2,L10
0134 30900D00 lds R3,L10+1
0138 60910200 lds R22,_g_lCounterLImage+2
013C 70910300 lds R23,_g_lCounterLImage+2+1
0140 40910000 lds R20,_g_lCounterLImage
0144 50910100 lds R21,_g_lCounterLImage+1
0148 4219 sub R20,R2
014A 5309 sbc R21,R3
014C 6409 sbc R22,R4
014E 7509 sbc R23,R5
0150 4615 cp R20,R6
0152 5705 cpc R21,R7
0154 6805 cpc R22,R8
0156 7905 cpc R23,R9
0158 09F0 breq X2
015A 67C0 rjmp L12
015C X2:
015C X1:
015C .dbline 161
015C ; == (g_lCounterRImage - s_lLastCounterR))
015C ; {
015C .dbline 162
015C ; INT16 nDeltaCounterL = (INT16)((INT32)g_lCounterLImage - (INT32)s_lLastCounterL);
015C A0900000 lds R10,_g_lCounterLImage
0160 B0900100 lds R11,_g_lCounterLImage+1
0164 A218 sub R10,R2
0166 B308 sbc R11,R3
0168 .dbline 163
0168 ; float fR = ((float)nDeltaCounterL * (float)K_L);
0168 00E0 ldi R16,<L4
016A 10E0 ldi R17,>L4
016C 00D0 rcall lpm32
016E 1801 movw R2,R16
0170 2901 movw R4,R18
0172 8501 movw R16,R10
0174 00D0 rcall int2fp
0176 3A93 st -y,R19
0178 2A93 st -y,R18
017A 1A93 st -y,R17
017C 0A93 st -y,R16
017E 8101 movw R16,R2
0180 9201 movw R18,R4
0182 00D0 rcall fpmule2
0184 0887 std y+8,R16
0186 1987 std y+9,R17
0188 2A87 std y+10,R18
018A 3B87 std y+11,R19
018C .dbline 165
018C ;
018C ; g_fX += fR * cos(g_fLastAngle);
018C 20910200 lds R18,_g_fLastAngle+2
0190 30910300 lds R19,_g_fLastAngle+2+1
0194 00910000 lds R16,_g_fLastAngle
0198 10910100 lds R17,_g_fLastAngle+1
019C 00D0 rcall _cosf
019E 1801 movw R2,R16
01A0 2901 movw R4,R18
01A2 80900600 lds R8,_g_fX+2
01A6 90900700 lds R9,_g_fX+2+1
01AA 60900400 lds R6,_g_fX
01AE 70900500 lds R7,_g_fX+1
01B2 0885 ldd R16,y+8
01B4 1985 ldd R17,y+9
01B6 2A85 ldd R18,y+10
01B8 3B85 ldd R19,y+11
01BA 5A92 st -y,R5
01BC 4A92 st -y,R4
01BE 3A92 st -y,R3
01C0 2A92 st -y,R2
01C2 00D0 rcall fpmule2x
01C4 8301 movw R16,R6
01C6 9401 movw R18,R8
01C8 00D0 rcall fpadd2
01CA 10930500 sts _g_fX+1,R17
01CE 00930400 sts _g_fX,R16
01D2 30930700 sts _g_fX+2+1,R19
01D6 20930600 sts _g_fX+2,R18
01DA .dbline 166
01DA ; g_fY += fR * sin(g_fLastAngle);
01DA 20910200 lds R18,_g_fLastAngle+2
01DE 30910300 lds R19,_g_fLastAngle+2+1
01E2 00910000 lds R16,_g_fLastAngle
01E6 10910100 lds R17,_g_fLastAngle+1
01EA 00D0 rcall _sinf
01EC 1801 movw R2,R16
01EE 2901 movw R4,R18
01F0 80900A00 lds R8,_g_fY+2
01F4 90900B00 lds R9,_g_fY+2+1
01F8 60900800 lds R6,_g_fY
01FC 70900900 lds R7,_g_fY+1
0200 0885 ldd R16,y+8
0202 1985 ldd R17,y+9
0204 2A85 ldd R18,y+10
0206 3B85 ldd R19,y+11
0208 5A92 st -y,R5
020A 4A92 st -y,R4
020C 3A92 st -y,R3
020E 2A92 st -y,R2
0210 00D0 rcall fpmule2x
0212 8301 movw R16,R6
0214 9401 movw R18,R8
0216 00D0 rcall fpadd2
0218 10930900 sts _g_fY+1,R17
021C 00930800 sts _g_fY,R16
0220 30930B00 sts _g_fY+2+1,R19
0224 20930A00 sts _g_fY+2,R18
0228 .dbline 167
0228 ; }
0228 DEC0 rjmp L13
022A L12:
022A .dbline 169
022A ; else
022A ; {
022A .dbline 172
022A ; float fDeltaAngle,fAbsoluteAngle;
022A ; //计算角度微元
022A ; {
022A .dbline 173
022A ; float fTempAngle = Get_Relative_Angle
022A 40900200 lds R4,_g_lCounterRImage+2
022E 50900300 lds R5,_g_lCounterRImage+2+1
0232 20900000 lds R2,_g_lCounterRImage
0236 30900100 lds R3,_g_lCounterRImage+1
023A 2882 std y+0,R2
023C 3982 std y+1,R3
023E 4A82 std y+2,R4
0240 5B82 std y+3,R5
0242 20910200 lds R18,_g_lCounterLImage+2
0246 30910300 lds R19,_g_lCounterLImage+2+1
024A 00910000 lds R16,_g_lCounterLImage
024E 10910100 lds R17,_g_lCounterLImage+1
0252 0FDF rcall _Get_Relative_Angle
0254 088B std y+16,R16
0256 198B std y+17,R17
0258 2A8B std y+18,R18
025A 3B8B std y+19,R19
025C .dbline 178
025C ; (
025C ; g_lCounterLImage,
025C ; g_lCounterRImage
025C ; );
025C ; fDeltaAngle = (fTempAngle - g_fLastAngle);
025C 0889 ldd R16,y+16
025E 1989 ldd R17,y+17
0260 2A89 ldd R18,y+18
0262 3B89 ldd R19,y+19
0264 80E0 ldi R24,<_g_fLastAngle
0266 90E0 ldi R25,>_g_fLastAngle
0268 9A93 st -y,R25
026A 8A93 st -y,R24
026C 00D0 rcall fpsub1
026E 0887 std y+8,R16
0270 1987 std y+9,R17
0272 2A87 std y+10,R18
0274 3B87 std y+11,R19
0276 .dbline 179
0276 ; fAbsoluteAngle = fDeltaAngle * 0.5 + g_fLastAngle;
0276 00E0 ldi R16,<L14
0278 10E0 ldi R17,>L14
027A 00D0 rcall lpm32
027C CE01 movw R24,R28
027E 0896 adiw R24,8
0280 9A93 st -y,R25
0282 8A93 st -y,R24
0284 00D0 rcall fpmule1
0286 0C83 std y+4,R16
0288 1D83 std y+5,R17
028A 2E83 std y+6,R18
028C 3F83 std y+7,R19
028E 0C81 ldd R16,y+4
0290 1D81 ldd R17,y+5
0292 2E81 ldd R18,y+6
0294 3F81 ldd R19,y+7
0296 80E0 ldi R24,<_g_fLastAngle
0298 90E0 ldi R25,>_g_fLastAngle
029A 9A93 st -y,R25
029C 8A93 st -y,R24
029E 00D0 rcall fpadd1
02A0 0C87 std y+12,R16
02A2 1D87 std y+13,R17
02A4 2E87 std y+14,R18
02A6 3F87 std y+15,R19
02A8 .dbline 181
02A8 ;
02A8 ; g_fLastAngle = fTempAngle;
02A8 2888 ldd R2,y+16
02AA 3988 ldd R3,y+17
02AC 4A88 ldd R4,y+18
02AE 5B88 ldd R5,y+19
02B0 30920100 sts _g_fLastAngle+1,R3
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -