📄 rd_usedlocate_lib.lis
字号:
02B4 20920000 sts _g_fLastAngle,R2
02B8 50920300 sts _g_fLastAngle+2+1,R5
02BC 40920200 sts _g_fLastAngle+2,R4
02C0 .dbline 182
02C0 ; }
02C0 .dbline 184
02C0 ; //计算位置微元
02C0 ; {
02C0 .dbline 185
02C0 ; INT16 nDeltaCounterL = (INT16)((INT32)g_lCounterLImage - (INT32)s_lLastCounterL);
02C0 20900C00 lds R2,L10
02C4 30900D00 lds R3,L10+1
02C8 A0900000 lds R10,_g_lCounterLImage
02CC B0900100 lds R11,_g_lCounterLImage+1
02D0 A218 sub R10,R2
02D2 B308 sbc R11,R3
02D4 .dbline 186
02D4 ; float fR = (((float)nDeltaCounterL * (float)K_L) * (1.0 / fDeltaAngle)
02D4 00E0 ldi R16,<L4
02D6 10E0 ldi R17,>L4
02D8 00D0 rcall lpm32
02DA 1801 movw R2,R16
02DC 2901 movw R4,R18
02DE 8501 movw R16,R10
02E0 00D0 rcall int2fp
02E2 3A93 st -y,R19
02E4 2A93 st -y,R18
02E6 1A93 st -y,R17
02E8 0A93 st -y,R16
02EA 8101 movw R16,R2
02EC 9201 movw R18,R4
02EE 00D0 rcall fpmule2
02F0 1801 movw R2,R16
02F2 2901 movw R4,R18
02F4 00E0 ldi R16,<L15
02F6 10E0 ldi R17,>L15
02F8 00D0 rcall lpm32
02FA CE01 movw R24,R28
02FC 0896 adiw R24,8
02FE 9A93 st -y,R25
0300 8A93 st -y,R24
0302 00D0 rcall fpdiv1x
0304 8101 movw R16,R2
0306 9201 movw R18,R4
0308 00D0 rcall fpmule2
030A 1801 movw R2,R16
030C 2901 movw R4,R18
030E 00E0 ldi R16,<L16
0310 10E0 ldi R17,>L16
0312 00D0 rcall lpm32
0314 3A93 st -y,R19
0316 2A93 st -y,R18
0318 1A93 st -y,R17
031A 0A93 st -y,R16
031C 8101 movw R16,R2
031E 9201 movw R18,R4
0320 00D0 rcall fpadd2
0322 088B std y+16,R16
0324 198B std y+17,R17
0326 2A8B std y+18,R18
0328 3B8B std y+19,R19
032A .dbline 189
032A ; + (float)D_BTW_WHEEL * 0.5);
032A ;
032A ; fR = 2.0 * fR * sin(fDeltaAngle * 0.5); //fR->l
032A 0C81 ldd R16,y+4
032C 1D81 ldd R17,y+5
032E 2E81 ldd R18,y+6
0330 3F81 ldd R19,y+7
0332 00D0 rcall _sinf
0334 1801 movw R2,R16
0336 2901 movw R4,R18
0338 00E0 ldi R16,<L17
033A 10E0 ldi R17,>L17
033C 00D0 rcall lpm32
033E CE01 movw R24,R28
0340 4096 adiw R24,16
0342 9A93 st -y,R25
0344 8A93 st -y,R24
0346 00D0 rcall fpmule1
0348 5A92 st -y,R5
034A 4A92 st -y,R4
034C 3A92 st -y,R3
034E 2A92 st -y,R2
0350 00D0 rcall fpmule2
0352 0C8B std y+20,R16
0354 1D8B std y+21,R17
0356 2E8B std y+22,R18
0358 3F8B std y+23,R19
035A .dbline 191
035A ;
035A ; g_fX += fR * cos(fAbsoluteAngle);
035A 0C85 ldd R16,y+12
035C 1D85 ldd R17,y+13
035E 2E85 ldd R18,y+14
0360 3F85 ldd R19,y+15
0362 00D0 rcall _cosf
0364 1801 movw R2,R16
0366 2901 movw R4,R18
0368 80900600 lds R8,_g_fX+2
036C 90900700 lds R9,_g_fX+2+1
0370 60900400 lds R6,_g_fX
0374 70900500 lds R7,_g_fX+1
0378 0C89 ldd R16,y+20
037A 1D89 ldd R17,y+21
037C 2E89 ldd R18,y+22
037E 3F89 ldd R19,y+23
0380 5A92 st -y,R5
0382 4A92 st -y,R4
0384 3A92 st -y,R3
0386 2A92 st -y,R2
0388 00D0 rcall fpmule2x
038A 8301 movw R16,R6
038C 9401 movw R18,R8
038E 00D0 rcall fpadd2
0390 10930500 sts _g_fX+1,R17
0394 00930400 sts _g_fX,R16
0398 30930700 sts _g_fX+2+1,R19
039C 20930600 sts _g_fX+2,R18
03A0 .dbline 192
03A0 ; g_fY += fR * sin(fAbsoluteAngle);
03A0 0C85 ldd R16,y+12
03A2 1D85 ldd R17,y+13
03A4 2E85 ldd R18,y+14
03A6 3F85 ldd R19,y+15
03A8 00D0 rcall _sinf
03AA 1801 movw R2,R16
03AC 2901 movw R4,R18
03AE 80900A00 lds R8,_g_fY+2
03B2 90900B00 lds R9,_g_fY+2+1
03B6 60900800 lds R6,_g_fY
03BA 70900900 lds R7,_g_fY+1
03BE 0C89 ldd R16,y+20
03C0 1D89 ldd R17,y+21
03C2 2E89 ldd R18,y+22
03C4 3F89 ldd R19,y+23
03C6 5A92 st -y,R5
03C8 4A92 st -y,R4
03CA 3A92 st -y,R3
03CC 2A92 st -y,R2
03CE 00D0 rcall fpmule2x
03D0 8301 movw R16,R6
03D2 9401 movw R18,R8
03D4 00D0 rcall fpadd2
03D6 10930900 sts _g_fY+1,R17
03DA 00930800 sts _g_fY,R16
03DE 30930B00 sts _g_fY+2+1,R19
03E2 20930A00 sts _g_fY+2,R18
03E6 .dbline 193
03E6 ; }
03E6 .dbline 194
03E6 ; }
03E6 L13:
03E6 .dbline 197
03E6 ;
03E6 ; //数据更新
03E6 ; s_lLastCounterL = g_lCounterLImage;
03E6 40900200 lds R4,_g_lCounterLImage+2
03EA 50900300 lds R5,_g_lCounterLImage+2+1
03EE 20900000 lds R2,_g_lCounterLImage
03F2 30900100 lds R3,_g_lCounterLImage+1
03F6 30920D00 sts L10+1,R3
03FA 20920C00 sts L10,R2
03FE 50920F00 sts L10+2+1,R5
0402 40920E00 sts L10+2,R4
0406 .dbline 198
0406 ; s_lLastCounterR = g_lCounterRImage;
0406 40900200 lds R4,_g_lCounterRImage+2
040A 50900300 lds R5,_g_lCounterRImage+2+1
040E 20900000 lds R2,_g_lCounterRImage
0412 30900100 lds R3,_g_lCounterRImage+1
0416 30921100 sts L11+1,R3
041A 20921000 sts L11,R2
041E 50921300 sts L11+2+1,R5
0422 40921200 sts L11+2,R4
0426 .dbline 199
0426 ; g_bRunFlagB = TRUE;
0426 81E0 ldi R24,1
0428 80930000 sts _g_bRunFlagB,R24
042C .dbline 201
042C ;
042C ; return FALSE;
042C 0027 clr R16
042E .dbline -2
042E L9:
042E .dbline 0 ; func end
042E 6896 adiw R28,24
0430 00C0 rjmp pop_xgsetF00C
0432 .dbsym l fR1 20 D
0432 .dbsym l fR0 16 D
0432 .dbsym r nDeltaCounterL0 10 I
0432 .dbsym l fTempAngle0 16 D
0432 .dbsym l fAbsoluteAngle0 12 D
0432 .dbsym l fDeltaAngle0 8 D
0432 .dbsym l fR0 8 D
0432 .dbsym r nDeltaCounterL0 10 I
0432 .dbsym l Reg8 4 D
0432 .dbend
0432 .dbfunc e fMod _fMod fD
0432 ; fNumberB -> y+4
0432 ; fNumberA -> y+0
.even
0432 _fMod::
0432 00D0 rcall push_arg4
0434 .dbline -1
0434 .dbline 211
0434 ; }
0434 ;
0434 ; /***********************************************************
0434 ; * 函数说明:实数求模函数 *
0434 ; * 输入: 被除数,除数 *
0434 ; * 输出: 取模结果 *
0434 ; * 调用函数:无 *
0434 ; ***********************************************************/
0434 ; float fMod(float fNumberA,float fNumberB)
0434 ; {
0434 .dbline 212
0434 ; if (fNumberB < 0)
0434 2C80 ldd R2,y+4
0436 3D80 ldd R3,y+5
0438 4E80 ldd R4,y+6
043A 5F80 ldd R5,y+7
043C 00E0 ldi R16,<L8
043E 10E0 ldi R17,>L8
0440 00D0 rcall lpm32
0442 3A93 st -y,R19
0444 2A93 st -y,R18
0446 1A93 st -y,R17
0448 0A93 st -y,R16
044A 8101 movw R16,R2
044C 9201 movw R18,R4
044E 00D0 rcall fpcmp2
0450 0CF0 brlt X13
0452 5AC0 rjmp L19
0454 X13:
0454 X3:
0454 .dbline 213
0454 ; {
0454 .dbline 214
0454 ; if (fNumberA < 0)
0454 2880 ldd R2,y+0
0456 3980 ldd R3,y+1
0458 4A80 ldd R4,y+2
045A 5B80 ldd R5,y+3
045C 00E0 ldi R16,<L8
045E 10E0 ldi R17,>L8
0460 00D0 rcall lpm32
0462 3A93 st -y,R19
0464 2A93 st -y,R18
0466 1A93 st -y,R17
0468 0A93 st -y,R16
046A 8101 movw R16,R2
046C 9201 movw R18,R4
046E 00D0 rcall fpcmp2
0470 ECF4 brge L21
0472 X4:
0472 .dbline 215
0472 ; {
0472 0DC0 rjmp L24
0474 L23:
0474 .dbline 217
0474 ; while(fNumberA < fNumberB)
0474 ; {
0474 .dbline 218
0474 ; fNumberA -= fNumberB;
0474 0881 ldd R16,y+0
0476 1981 ldd R17,y+1
0478 2A81 ldd R18,y+2
047A 3B81 ldd R19,y+3
047C CE01 movw R24,R28
047E 0496 adiw R24,4
0480 9A93 st -y,R25
0482 8A93 st -y,R24
0484 00D0 rcall fpsub1
0486 0883 std y+0,R16
0488 1983 std y+1,R17
048A 2A83 std y+2,R18
048C 3B83 std y+3,R19
048E .dbline 219
048E ; }
048E L24:
048E .dbline 216
048E 0881 ldd R16,y+0
0490 1981 ldd R17,y+1
0492 2A81 ldd R18,y+2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -