📄 ex_support.lis
字号:
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 + -