⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rd_usedlocate_lib.lis

📁 全场地位系统:小车静止或移动过程中码盘进行全场定位,用的是avr单片机
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 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 + -