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

📄 ex_support.lis

📁 移动机器人(小车)的物理坐标和逻辑坐标的转换源码
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 019A 00D0              rcall lpm32
 019C 03C0              rjmp L2
 019E           L16:
 019E                   .dbline 183
 019E           ;         }
 019E           ;     }
 019E           ;     else
 019E           ;     {
 019E                   .dbline 184
 019E           ;         return 0.0;
 019E 00E0              ldi R16,<L5
 01A0 10E0              ldi R17,>L5
 01A2 00D0              rcall lpm32
 01A4                   .dbline -2
 01A4           L2:
 01A4                   .dbline 0 ; func end
 01A4 2496              adiw R28,4
 01A6 0895              ret
 01A8                   .dbsym l fNumberB 4 D
 01A8                   .dbsym l fNumberA 0 D
 01A8                   .dbend
 01A8                   .dbfunc e PROC_Get_Relative_Location _PROC_Get_Relative_Location fc
 01A8           ;        cflags0 -> R10
 01A8           ;        fTempY0 -> y+8
 01A8           ;        fTempX0 -> y+4
 01A8           ;    fTempAngle0 -> y+0
                        .even
 01A8           _PROC_Get_Relative_Location::
 01A8 AA92              st -y,R10
 01AA BA92              st -y,R11
 01AC 2C97              sbiw R28,12
 01AE                   .dbline -1
 01AE                   .dbline 196
 01AE           ;     }
 01AE           ; }
 01AE           ; 
 01AE           ; 
 01AE           ; /***********************************************************
 01AE           ; *   函数说明:  相对坐标转换函数                           *
 01AE           ; *   输入:      无                                         *
 01AE           ; *   输出:      FALSE                                      *
 01AE           ; *   调用函数:  无                                         *
 01AE           ; ***********************************************************/
 01AE           ; BOOL PROC_Get_Relative_Location(void)
 01AE           ; {
 01AE                   .dbline 199
 01AE           ;     float fTempAngle,fTempX,fTempY;
 01AE           ;     
 01AE           ;     SAFE_CODE_PERFORMANCE
 01AE                   .dbline 199
 01AE AFB6              in R10,0x3f
 01B0                   .dbline 199
 01B0 F894              cli
 01B2                   .dbline 199
 01B2 40903500          lds R4,_g_fAbsoluteAngle+2
 01B6 50903600          lds R5,_g_fAbsoluteAngle+2+1
 01BA 20903300          lds R2,_g_fAbsoluteAngle
 01BE 30903400          lds R3,_g_fAbsoluteAngle+1
 01C2 2882              std y+0,R2
 01C4 3982              std y+1,R3
 01C6 4A82              std y+2,R4
 01C8 5B82              std y+3,R5
 01CA                   .dbline 199
 01CA 40902D00          lds R4,_g_fAbsoluteX+2
 01CE 50902E00          lds R5,_g_fAbsoluteX+2+1
 01D2 20902B00          lds R2,_g_fAbsoluteX
 01D6 30902C00          lds R3,_g_fAbsoluteX+1
 01DA 2C82              std y+4,R2
 01DC 3D82              std y+5,R3
 01DE 4E82              std y+6,R4
 01E0 5F82              std y+7,R5
 01E2                   .dbline 199
 01E2 40903100          lds R4,_g_fAbsoluteY+2
 01E6 50903200          lds R5,_g_fAbsoluteY+2+1
 01EA 20902F00          lds R2,_g_fAbsoluteY
 01EE 30903000          lds R3,_g_fAbsoluteY+1
 01F2 2886              std y+8,R2
 01F4 3986              std y+9,R3
 01F6 4A86              std y+10,R4
 01F8 5B86              std y+11,R5
 01FA                   .dbline 199
 01FA                   .dbline 199
 01FA AFBE              out 0x3f,R10
 01FC                   .dbline 199
 01FC                   .dbline 206
 01FC           ;     (
 01FC           ;         fTempAngle = g_fAbsoluteAngle;
 01FC           ;         fTempX = g_fAbsoluteX;
 01FC           ;         fTempY = g_fAbsoluteY;
 01FC           ;     )
 01FC           ;     
 01FC           ;     g_fAngle = K_ANGLE * (float)g_wCounter + fTempAngle;  
 01FC 00E0              ldi R16,<L29
 01FE 10E0              ldi R17,>L29
 0200 00D0              rcall lpm32
 0202 1801              movw R2,R16
 0204 2901              movw R4,R18
 0206 00914400          lds R16,_g_wCounter
 020A 10914500          lds R17,_g_wCounter+1
 020E 00D0              rcall uint2fp
 0210 3A93              st -y,R19
 0212 2A93              st -y,R18
 0214 1A93              st -y,R17
 0216 0A93              st -y,R16
 0218 8101              movw R16,R2
 021A 9201              movw R18,R4
 021C 00D0              rcall fpmule2
 021E CE01              movw R24,R28
 0220 9A93              st -y,R25
 0222 8A93              st -y,R24
 0224 00D0              rcall fpadd1
 0226 10934000          sts _g_fAngle+1,R17
 022A 00933F00          sts _g_fAngle,R16
 022E 30934200          sts _g_fAngle+2+1,R19
 0232 20934100          sts _g_fAngle+2,R18
 0236                   .dbline 207
 0236           ;     g_fX = fTempX + RELATIVE_L * cos(fTempAngle);        
 0236 0881              ldd R16,y+0
 0238 1981              ldd R17,y+1
 023A 2A81              ldd R18,y+2
 023C 3B81              ldd R19,y+3
 023E 00D0              rcall _cosf
 0240 1801              movw R2,R16
 0242 2901              movw R4,R18
 0244 6C80              ldd R6,y+4
 0246 7D80              ldd R7,y+5
 0248 8E80              ldd R8,y+6
 024A 9F80              ldd R9,y+7
 024C 00E0              ldi R16,<L30
 024E 10E0              ldi R17,>L30
 0250 00D0              rcall lpm32
 0252 5A92              st -y,R5
 0254 4A92              st -y,R4
 0256 3A92              st -y,R3
 0258 2A92              st -y,R2
 025A 00D0              rcall fpmule2x
 025C 8301              movw R16,R6
 025E 9401              movw R18,R8
 0260 00D0              rcall fpadd2
 0262 10933800          sts _g_fX+1,R17
 0266 00933700          sts _g_fX,R16
 026A 30933A00          sts _g_fX+2+1,R19
 026E 20933900          sts _g_fX+2,R18
 0272                   .dbline 208
 0272           ;     g_fY = fTempY + RELATIVE_L * sin(fTempAngle); 
 0272 0881              ldd R16,y+0
 0274 1981              ldd R17,y+1
 0276 2A81              ldd R18,y+2
 0278 3B81              ldd R19,y+3
 027A 00D0              rcall _sinf
 027C 1801              movw R2,R16
 027E 2901              movw R4,R18
 0280 6884              ldd R6,y+8
 0282 7984              ldd R7,y+9
 0284 8A84              ldd R8,y+10
 0286 9B84              ldd R9,y+11
 0288 00E0              ldi R16,<L30
 028A 10E0              ldi R17,>L30
 028C 00D0              rcall lpm32
 028E 5A92              st -y,R5
 0290 4A92              st -y,R4
 0292 3A92              st -y,R3
 0294 2A92              st -y,R2
 0296 00D0              rcall fpmule2x
 0298 8301              movw R16,R6
 029A 9401              movw R18,R8
 029C 00D0              rcall fpadd2
 029E 10933C00          sts _g_fY+1,R17
 02A2 00933B00          sts _g_fY,R16
 02A6 30933E00          sts _g_fY+2+1,R19
 02AA 20933D00          sts _g_fY+2,R18
 02AE                   .dbline 210
 02AE           ;     
 02AE           ;     return FALSE;
 02AE 0027              clr R16
 02B0                   .dbline -2
 02B0           L28:
 02B0                   .dbline 0 ; func end
 02B0 2C96              adiw R28,12
 02B2 B990              ld R11,y+
 02B4 A990              ld R10,y+
 02B6 0895              ret
 02B8                   .dbsym r cflags0 10 c
 02B8                   .dbsym l fTempY0 8 D
 02B8                   .dbsym l fTempX0 4 D
 02B8                   .dbsym l fTempAngle0 0 D
 02B8                   .dbend
 02B8                   .dbfunc e Delay_MS _Delay_MS fV
 02B8           ;          wTime -> R16,R17
                        .even
 02B8           _Delay_MS::
 02B8                   .dbline -1
 02B8                   .dbline 220
 02B8           ; }
 02B8           ; 
 02B8           ; /***********************************************************
 02B8           ; *   函数说明:系统毫秒延时函数                             *
 02B8           ; *   输入:    需要延时的时间长度                           *
 02B8           ; *   输出:    无                                           *
 02B8           ; *   调用函数:无                                           *
 02B8           ; ***********************************************************/
 02B8           ; void Delay_MS(uint16 wTime)
 02B8           ; {
 02B8                   .dbline 221
 02B8           ;     s_wSystemDelayTimerCounter = wTime;
 02B8 10930100          sts _s_wSystemDelayTimerCounter+1,R17
 02BC 00930000          sts _s_wSystemDelayTimerCounter,R16
 02C0           L32:
 02C0                   .dbline 223
 02C0           ;     
 02C0           ;     while(s_wSystemDelayTimerCounter);
 02C0           L33:
 02C0                   .dbline 223
 02C0 20900000          lds R2,_s_wSystemDelayTimerCounter
 02C4 30900100          lds R3,_s_wSystemDelayTimerCounter+1
 02C8 2220              tst R2
 02CA D1F7              brne L32
 02CC 3320              tst R3
 02CE C1F7              brne L32
 02D0           X12:
 02D0                   .dbline -2
 02D0           L31:
 02D0                   .dbline 0 ; func end
 02D0 0895              ret
 02D2                   .dbsym r wTime 16 i
 02D2                   .dbend
 02D2                   .dbfunc e Insert_Timer0_OVF_ISR_Code _Insert_Timer0_OVF_ISR_Code fV
                        .even
 02D2           _Insert_Timer0_OVF_ISR_Code::
 02D2                   .dbline -1
 02D2                   .dbline 233
 02D2           ; }
 02D2           ; 
 02D2           ; /***********************************************************
 02D2           ; *   函数说明:定时器0中断处理程序代码插入函数              *
 02D2           ; *   输入:    无                                           *
 02D2           ; *   输出:    无                                           *
 02D2           ; *   调用函数:无                                           *
 02D2           ; ***********************************************************/
 02D2           ; void Insert_Timer0_OVF_ISR_Code(void)
 02D2           ; {
 02D2                   .dbline 234
 02D2           ;     g_wSystemTimer++;
 02D2 80910200          lds R24,_g_wSystemTimer
 02D6 90910300          lds R25,_g_wSystemTimer+1
 02DA 0196              adiw R24,1
 02DC 90930300          sts _g_wSystemTimer+1,R25
 02E0 80930200          sts _g_wSystemTimer,R24
 02E4                   .dbline 236
 02E4           ; 
 02E4           ;     if (s_wSystemDelayTimerCounter)
 02E4 20900000          lds R2,_s_wSystemDelayTimerCounter
 02E8 30900100          lds R3,_s_wSystemDelayTimerCounter+1
 02EC 2220              tst R2
 02EE 11F4              brne X13
 02F0 3320              tst R3
 02F2 31F0              breq L36
 02F4           X13:
 02F4                   .dbline 237
 02F4           ;     {
 02F4                   .dbline 238
 02F4           ;         s_wSystemDelayTimerCounter--;
 02F4 C101              movw R24,R2
 02F6 0197              sbiw R24,1
 02F8 90930100          sts _s_wSystemDelayTimerCounter+1,R25
 02FC 80930000          sts _s_wSystemDelayTimerCounter,R24
 0300                   .dbline 239
 0300           ;     }
 0300           L36:
 0300                   .dbline 241
 0300           ;     
 0300           ;     if (!(g_wSystemTimer & (BIT(9) - 1)))
 0300 80910200          lds R24,_g_wSystemTimer
 0304 90910300          lds R25,_g_wSystemTimer+1
 0308 9170              andi R25,1
 030A 8030              cpi R24,0
 030C 8907              cpc R24,R25
 030E 21F4              brne L38
 0310           X14:
 0310                   .dbline 242
 0310           ;     {
 0310                   .dbline 243
 0310           ;         PORTC ^= BIT(PC2);
 0310 84E0              ldi R24,4
 0312 28B0              in R2,0x8
 0314 2826              eor R2,R24
 0316 28B8              out 0x8,R2
 0318                   .dbline 244
 0318           ;     }
 0318           L38:
 0318                   .dbline -2
 0318           L35:
 0318                   .dbline 0 ; func end
 0318 0895              ret
 031A                   .dbend
                        .area lit(rom, con, rel)
 0000           L30:
 0000 00801743          .word 0x8000,0x4317
 0004           L29:
 0004 DB0FC93B          .word 0xfdb,0x3bc9
 0008           L5:
 0008 00000000          .word 0x0,0x0
 000C           ; }
 000C           ; 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -