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

📄 ex_support.lis

📁 移动机器人(小车)的物理坐标和逻辑坐标的转换源码
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 0008           ;         }
 0008           ;         else if (fNumberA > 0)
 0008           ;         {
 0008           ;             while((fNumberA + fNumberB) > fNumberB)
 0008           ;             {
 0008           ;                 fNumberA += fNumberB;
 0008           ;             }
 0008           ;             
 0008           ;             return fNumberA;
 0008           ;         }
 0008           ;         else
 0008           ;         {
 0008           ;             return 0.0;
 0008           ;         }
 0008           ;     }
 0008           ;     else if (fNumberB > 0)
 0008           ;     {
 0008           ;         if (fNumberA < 0)
 0008           ;         {
 0008           ;             while((fNumberA + fNumberB) < fNumberB)
 0008           ;             {
 0008           ;                 fNumberA += fNumberB;
 0008           ;             }
 0008           ;             
 0008           ;             return fNumberA;
 0008           ;         }
 0008           ;         else if (fNumberA > 0)
 0008           ;         {
 0008           ;             while(fNumberA > fNumberB)
 0008           ;             {
 0008           ;                 fNumberA -= fNumberB;
 0008           ;             }
 0008           ;             
 0008           ;             return fNumberA;
 0008           ;         }
 0008           ;         else
 0008           ;         {
 0008           ;             return 0.0;
 0008           ;         }
 0008           ;     }
 0008           ;     else
 0008           ;     {
 0008           ;         return 0.0;
 0008           ;     }
 0008           ; }
 0008           ; */
 0008           ; 
 0008           ; /***********************************************************
 0008           ; *   函数说明:  相对坐标转换函数                           *
 0008           ; *   输入:      无                                         *
 0008           ; *   输出:      FALSE                                      *
 0008           ; *   调用函数:  无                                         *
 0008           ; ***********************************************************/
 0008           ; BOOL PROC_Get_Relative_Location(void)
 0008           ; {
 0008                   .dbline 200
 0008           ;     float fTempAngle,fTempX,fTempY;
 0008           ;     
 0008           ;     SAFE_CODE_PERFORMANCE
 0008                   .dbline 200
 0008 AFB6              in R10,0x3f
 000A                   .dbline 200
 000A F894              cli
 000C                   .dbline 200
 000C 40903500          lds R4,_g_fAbsoluteAngle+2
 0010 50903600          lds R5,_g_fAbsoluteAngle+2+1
 0014 20903300          lds R2,_g_fAbsoluteAngle
 0018 30903400          lds R3,_g_fAbsoluteAngle+1
 001C 2882              std y+0,R2
 001E 3982              std y+1,R3
 0020 4A82              std y+2,R4
 0022 5B82              std y+3,R5
 0024                   .dbline 200
 0024 40902D00          lds R4,_g_fAbsoluteX+2
 0028 50902E00          lds R5,_g_fAbsoluteX+2+1
 002C 20902B00          lds R2,_g_fAbsoluteX
 0030 30902C00          lds R3,_g_fAbsoluteX+1
 0034 2C82              std y+4,R2
 0036 3D82              std y+5,R3
 0038 4E82              std y+6,R4
 003A 5F82              std y+7,R5
 003C                   .dbline 200
 003C 40903100          lds R4,_g_fAbsoluteY+2
 0040 50903200          lds R5,_g_fAbsoluteY+2+1
 0044 20902F00          lds R2,_g_fAbsoluteY
 0048 30903000          lds R3,_g_fAbsoluteY+1
 004C 2886              std y+8,R2
 004E 3986              std y+9,R3
 0050 4A86              std y+10,R4
 0052 5B86              std y+11,R5
 0054                   .dbline 200
 0054                   .dbline 200
 0054 AFBE              out 0x3f,R10
 0056                   .dbline 200
 0056                   .dbline 207
 0056           ;     (
 0056           ;         fTempAngle = g_fAbsoluteAngle;
 0056           ;         fTempX = g_fAbsoluteX;
 0056           ;         fTempY = g_fAbsoluteY;
 0056           ;     )
 0056           ;     
 0056           ;     g_fAngle = K_ANGLE * (float)g_wCounter + fTempAngle;  
 0056 00E0              ldi R16,<L3
 0058 10E0              ldi R17,>L3
 005A 00D0              rcall lpm32
 005C 1801              movw R2,R16
 005E 2901              movw R4,R18
 0060 00914400          lds R16,_g_wCounter
 0064 10914500          lds R17,_g_wCounter+1
 0068 00D0              rcall uint2fp
 006A 3A93              st -y,R19
 006C 2A93              st -y,R18
 006E 1A93              st -y,R17
 0070 0A93              st -y,R16
 0072 8101              movw R16,R2
 0074 9201              movw R18,R4
 0076 00D0              rcall fpmule2
 0078 CE01              movw R24,R28
 007A 9A93              st -y,R25
 007C 8A93              st -y,R24
 007E 00D0              rcall fpadd1
 0080 10934000          sts _g_fAngle+1,R17
 0084 00933F00          sts _g_fAngle,R16
 0088 30934200          sts _g_fAngle+2+1,R19
 008C 20934100          sts _g_fAngle+2,R18
 0090                   .dbline 208
 0090           ;     g_fX = fTempX + RELATIVE_L * cos(fTempAngle);        
 0090 0881              ldd R16,y+0
 0092 1981              ldd R17,y+1
 0094 2A81              ldd R18,y+2
 0096 3B81              ldd R19,y+3
 0098 00D0              rcall _cosf
 009A 1801              movw R2,R16
 009C 2901              movw R4,R18
 009E 6C80              ldd R6,y+4
 00A0 7D80              ldd R7,y+5
 00A2 8E80              ldd R8,y+6
 00A4 9F80              ldd R9,y+7
 00A6 00E0              ldi R16,<L4
 00A8 10E0              ldi R17,>L4
 00AA 00D0              rcall lpm32
 00AC 5A92              st -y,R5
 00AE 4A92              st -y,R4
 00B0 3A92              st -y,R3
 00B2 2A92              st -y,R2
 00B4 00D0              rcall fpmule2x
 00B6 8301              movw R16,R6
 00B8 9401              movw R18,R8
 00BA 00D0              rcall fpadd2
 00BC 10933800          sts _g_fX+1,R17
 00C0 00933700          sts _g_fX,R16
 00C4 30933A00          sts _g_fX+2+1,R19
 00C8 20933900          sts _g_fX+2,R18
 00CC                   .dbline 209
 00CC           ;     g_fY = fTempY + RELATIVE_L * sin(fTempAngle); 
 00CC 0881              ldd R16,y+0
 00CE 1981              ldd R17,y+1
 00D0 2A81              ldd R18,y+2
 00D2 3B81              ldd R19,y+3
 00D4 00D0              rcall _sinf
 00D6 1801              movw R2,R16
 00D8 2901              movw R4,R18
 00DA 6884              ldd R6,y+8
 00DC 7984              ldd R7,y+9
 00DE 8A84              ldd R8,y+10
 00E0 9B84              ldd R9,y+11
 00E2 00E0              ldi R16,<L4
 00E4 10E0              ldi R17,>L4
 00E6 00D0              rcall lpm32
 00E8 5A92              st -y,R5
 00EA 4A92              st -y,R4
 00EC 3A92              st -y,R3
 00EE 2A92              st -y,R2
 00F0 00D0              rcall fpmule2x
 00F2 8301              movw R16,R6
 00F4 9401              movw R18,R8
 00F6 00D0              rcall fpadd2
 00F8 10933C00          sts _g_fY+1,R17
 00FC 00933B00          sts _g_fY,R16
 0100 30933E00          sts _g_fY+2+1,R19
 0104 20933D00          sts _g_fY+2,R18
 0108                   .dbline 211
 0108           ;     
 0108           ;     return FALSE;
 0108 0027              clr R16
 010A                   .dbline -2
 010A           L2:
 010A                   .dbline 0 ; func end
 010A 2C96              adiw R28,12
 010C B990              ld R11,y+
 010E A990              ld R10,y+
 0110 0895              ret
 0112                   .dbsym r cflags0 10 c
 0112                   .dbsym l fTempY0 8 D
 0112                   .dbsym l fTempX0 4 D
 0112                   .dbsym l fTempAngle0 0 D
 0112                   .dbend
 0112                   .dbfunc e Delay_MS _Delay_MS fV
 0112           ;          wTime -> R16,R17
                        .even
 0112           _Delay_MS::
 0112                   .dbline -1
 0112                   .dbline 221
 0112           ; }
 0112           ; 
 0112           ; /***********************************************************
 0112           ; *   函数说明:系统毫秒延时函数                             *
 0112           ; *   输入:    需要延时的时间长度                           *
 0112           ; *   输出:    无                                           *
 0112           ; *   调用函数:无                                           *
 0112           ; ***********************************************************/
 0112           ; void Delay_MS(uint16 wTime)
 0112           ; {
 0112                   .dbline 222
 0112           ;     s_wSystemDelayTimerCounter = wTime;
 0112 10930100          sts _s_wSystemDelayTimerCounter+1,R17
 0116 00930000          sts _s_wSystemDelayTimerCounter,R16
 011A           L6:
 011A                   .dbline 224
 011A           ;     
 011A           ;     while(s_wSystemDelayTimerCounter);
 011A           L7:
 011A                   .dbline 224
 011A 20900000          lds R2,_s_wSystemDelayTimerCounter
 011E 30900100          lds R3,_s_wSystemDelayTimerCounter+1
 0122 2220              tst R2
 0124 D1F7              brne L6
 0126 3320              tst R3
 0128 C1F7              brne L6
 012A           X0:
 012A                   .dbline -2
 012A           L5:
 012A                   .dbline 0 ; func end
 012A 0895              ret
 012C                   .dbsym r wTime 16 i
 012C                   .dbend
 012C                   .dbfunc e Insert_Timer0_OVF_ISR_Code _Insert_Timer0_OVF_ISR_Code fV
                        .even
 012C           _Insert_Timer0_OVF_ISR_Code::
 012C                   .dbline -1
 012C                   .dbline 234
 012C           ; }
 012C           ; 
 012C           ; /***********************************************************
 012C           ; *   函数说明:定时器0中断处理程序代码插入函数              *
 012C           ; *   输入:    无                                           *
 012C           ; *   输出:    无                                           *
 012C           ; *   调用函数:无                                           *
 012C           ; ***********************************************************/
 012C           ; void Insert_Timer0_OVF_ISR_Code(void)
 012C           ; {
 012C                   .dbline 235
 012C           ;     g_wSystemTimer++;
 012C 80910200          lds R24,_g_wSystemTimer
 0130 90910300          lds R25,_g_wSystemTimer+1
 0134 0196              adiw R24,1
 0136 90930300          sts _g_wSystemTimer+1,R25
 013A 80930200          sts _g_wSystemTimer,R24
 013E                   .dbline 237
 013E           ; 
 013E           ;     if (s_wSystemDelayTimerCounter)
 013E 20900000          lds R2,_s_wSystemDelayTimerCounter
 0142 30900100          lds R3,_s_wSystemDelayTimerCounter+1
 0146 2220              tst R2
 0148 11F4              brne X1
 014A 3320              tst R3
 014C 31F0              breq L10
 014E           X1:
 014E                   .dbline 238
 014E           ;     {
 014E                   .dbline 239
 014E           ;         s_wSystemDelayTimerCounter--;
 014E C101              movw R24,R2
 0150 0197              sbiw R24,1
 0152 90930100          sts _s_wSystemDelayTimerCounter+1,R25
 0156 80930000          sts _s_wSystemDelayTimerCounter,R24
 015A                   .dbline 240
 015A           ;     }
 015A           L10:
 015A                   .dbline 242
 015A           ;     
 015A           ;     if (!(g_wSystemTimer & (BIT(9) - 1)))
 015A 80910200          lds R24,_g_wSystemTimer
 015E 90910300          lds R25,_g_wSystemTimer+1
 0162 9170              andi R25,1
 0164 8030              cpi R24,0
 0166 8907              cpc R24,R25
 0168 21F4              brne L12
 016A           X2:
 016A                   .dbline 243
 016A           ;     {
 016A                   .dbline 244
 016A           ;         PORTC ^= BIT(PC2);
 016A 84E0              ldi R24,4
 016C 28B0              in R2,0x8
 016E 2826              eor R2,R24
 0170 28B8              out 0x8,R2
 0172                   .dbline 245
 0172           ;     }
 0172           L12:
 0172                   .dbline -2
 0172           L9:
 0172                   .dbline 0 ; func end
 0172 0895              ret
 0174                   .dbend
                        .area lit(rom, con, rel)
 0000           L4:
 0000 00801743          .word 0x8000,0x4317
 0004           L3:
 0004 DB0FC93B          .word 0xfdb,0x3bc9
 0008           ; }
 0008           ; 

⌨️ 快捷键说明

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