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