📄 spline.lis
字号:
03BE ; stack offset 8
03BE 2488 ldd R2,z+20
03C0 3588 ldd R3,z+21
03C2 4688 ldd R4,z+22
03C4 5788 ldd R5,z+23
03C6 5A92 st -y,R5
03C8 4A92 st -y,R4
03CA 3A92 st -y,R3
03CC 2A92 st -y,R2
03CE 0E940000 xcall empy32fs
03D2 0E940000 xcall add32f
03D6 0E940000 xcall fp2int
03DA 6801 movw R12,R16
03DC .dbline 121
03DC FE01 movw R30,R28
03DE 22A0 ldd R2,z+34
03E0 33A0 ldd R3,z+35
03E2 44A0 ldd R4,z+36
03E4 55A0 ldd R5,z+37
03E6 5A92 st -y,R5
03E8 4A92 st -y,R4
03EA 3A92 st -y,R3
03EC 2A92 st -y,R2
03EE F301 movw R30,R6
03F0 2480 ldd R2,z+4
03F2 3580 ldd R3,z+5
03F4 4680 ldd R4,z+6
03F6 5780 ldd R5,z+7
03F8 5A92 st -y,R5
03FA 4A92 st -y,R4
03FC 3A92 st -y,R3
03FE 2A92 st -y,R2
0400 FE01 movw R30,R28
0402 ; stack offset 8
0402 2484 ldd R2,z+12
0404 3584 ldd R3,z+13
0406 4684 ldd R4,z+14
0408 5784 ldd R5,z+15
040A 5A92 st -y,R5
040C 4A92 st -y,R4
040E 3A92 st -y,R3
0410 2A92 st -y,R2
0412 0E940000 xcall empy32fs
0416 0E940000 xcall add32fs
041A F301 movw R30,R6
041C 2484 ldd R2,z+12
041E 3584 ldd R3,z+13
0420 4684 ldd R4,z+14
0422 5784 ldd R5,z+15
0424 5A92 st -y,R5
0426 4A92 st -y,R4
0428 3A92 st -y,R3
042A 2A92 st -y,R2
042C FE01 movw R30,R28
042E ; stack offset 8
042E 2088 ldd R2,z+16
0430 3188 ldd R3,z+17
0432 4288 ldd R4,z+18
0434 5388 ldd R5,z+19
0436 5A92 st -y,R5
0438 4A92 st -y,R4
043A 3A92 st -y,R3
043C 2A92 st -y,R2
043E 0E940000 xcall empy32fs
0442 0E940000 xcall add32fs
0446 F301 movw R30,R6
0448 2488 ldd R2,z+20
044A 3588 ldd R3,z+21
044C 4688 ldd R4,z+22
044E 5788 ldd R5,z+23
0450 5A92 st -y,R5
0452 4A92 st -y,R4
0454 3A92 st -y,R3
0456 2A92 st -y,R2
0458 FE01 movw R30,R28
045A ; stack offset 8
045A 2488 ldd R2,z+20
045C 3588 ldd R3,z+21
045E 4688 ldd R4,z+22
0460 5788 ldd R5,z+23
0462 5A92 st -y,R5
0464 4A92 st -y,R4
0466 3A92 st -y,R3
0468 2A92 st -y,R2
046A 0E940000 xcall empy32fs
046E 0E940000 xcall add32f
0472 0E940000 xcall fp2int
0476 5801 movw R10,R16
0478 .dbline 123
0478 FA01 movw R30,R20
047A 2081 ldd R18,z+0
047C 3181 ldd R19,z+1
047E 04E0 ldi R16,4
0480 10E0 ldi R17,0
0482 0E940000 xcall empy16s
0486 F801 movw R30,R16
0488 E60F add R30,R22
048A F71F adc R31,R23
048C D182 std z+1,R13
048E C082 std z+0,R12
0490 .dbline 124
0490 FA01 movw R30,R20
0492 2081 ldd R18,z+0
0494 3181 ldd R19,z+1
0496 04E0 ldi R16,4
0498 10E0 ldi R17,0
049A 0E940000 xcall empy16s
049E F801 movw R30,R16
04A0 E60F add R30,R22
04A2 F71F adc R31,R23
04A4 B382 std z+3,R11
04A6 A282 std z+2,R10
04A8 .dbline 125
04A8 FA01 movw R30,R20
04AA 8081 ldd R24,z+0
04AC 9181 ldd R25,z+1
04AE 0196 adiw R24,1
04B0 9183 std z+1,R25
04B2 8083 std z+0,R24
04B4 .dbline 126
04B4 L23:
04B4 .dbline 114
04B4 C701 movw R24,R14
04B6 0196 adiw R24,1
04B8 7C01 movw R14,R24
04BA L25:
04BA .dbline 114
04BA F301 movw R30,R6
04BC 208C ldd R2,z+24
04BE 318C ldd R3,z+25
04C0 2E14 cp R2,R14
04C2 3F04 cpc R3,R15
04C4 0CF0 brlt X2
04C6 79CE xjmp L22
04C8 X2:
04C8 .dbline -2
04C8 L19:
04C8 6496 adiw R28,20
04CA 0E940000 xcall pop_gset5
04CE 2296 adiw R28,2
04D0 .dbline 0 ; func end
04D0 0895 ret
04D2 .dbsym r Y 10 I
04D2 .dbsym r X 12 I
04D2 .dbsym l h 12 D
04D2 .dbsym l g 8 D
04D2 .dbsym l f 4 D
04D2 .dbsym r i 14 I
04D2 .dbsym l t 0 D
04D2 .dbsym r PointCount 20 pI
04D2 .dbsym r points 22 pX
04D2 .dbsym l y 34 D
04D2 .dbsym l x 30 D
04D2 .dbsym r cl 6 pX
04D2 .dbend
04D2 .dbfunc e SPLINE_SetSpline _SPLINE_SetSpline fV
04D2 ; i -> R20,R21
04D2 ; np -> y+6
04D2 ; pt -> R22,R23
04D2 ; sl -> R10,R11
.even
04D2 _SPLINE_SetSpline::
04D2 0E940000 xcall push_gset3
04D6 B901 movw R22,R18
04D8 5801 movw R10,R16
04DA .dbline -1
04DA .dbline 144
04DA ; { t = 1.0f / (float)cl->Ndiv * (float)i;
04DA ; f = t * t * (3.0f - 2.0f * t);
04DA ; g = t * (t - 1.0f) * (t-1.0f);
04DA ; h = t * t * (t-1.0f);
04DA ;
04DA ; X = (int)(x + cl->Ax*f + cl->Bx*g + cl->Cx*h);
04DA ; Y = (int)(y + cl->Ay*f + cl->By*g + cl->Cy*h);
04DA ;
04DA ; points[*PointCount].x = X;
04DA ; points[*PointCount].y = Y;
04DA ; (*PointCount)++;
04DA ; }
04DA ; }
04DA ;
04DA ;
04DA ;
04DA ; /***************************************************************************/
04DA ;
04DA ;
04DA ; /****************************************************************************
04DA ; * 名称:SPLINE_Spline()
04DA ; * 功能:样条曲线初始化函数,将特征点输入到样条曲线对象中。
04DA ; * 入口参数:sl 要操作的样条曲线对象,SPLINE结构
04DA ; * pt 特征点数据
04DA ; * np 特征点个数
04DA ; * 出口参数:无
04DA ; * 说明:
04DA ; ****************************************************************************/
04DA ; void SPLINE_SetSpline(SPLINE *sl, PointXY pt[], int np)
04DA ; { int i;
04DA .dbline 146
04DA ;
04DA ; sl->Np = np;
04DA F501 movw R30,R10
04DC 0E80 ldd R0,y+6
04DE 1F80 ldd R1,y+7
04E0 E854 subi R30,72 ; addi 440
04E2 FE4F sbci R31,254
04E4 1182 std z+1,R1
04E6 0082 std z+0,R0
04E8 .dbline 149
04E8 ;
04E8 ; /* 将点数据复制到sl对象 */
04E8 ; for(i=0; i<sl->Np; i++)
04E8 4427 clr R20
04EA 5527 clr R21
04EC 64C0 xjmp L33
04EE L30:
04EE .dbline 150
04EE .dbline 150
04EE 04E0 ldi R16,4
04F0 10E0 ldi R17,0
04F2 9A01 movw R18,R20
04F4 0E940000 xcall empy16s
04F8 1801 movw R2,R16
04FA F101 movw R30,R2
04FC E60F add R30,R22
04FE F71F adc R31,R23
0500 4080 ldd R4,z+0
0502 5180 ldd R5,z+1
0504 00E0 ldi R16,<L34
0506 10E0 ldi R17,>L34
0508 0E940000 xcall lpm32
050C 3A93 st -y,R19
050E 2A93 st -y,R18
0510 1A93 st -y,R17
0512 0A93 st -y,R16
0514 8201 movw R16,R4
0516 1695 lsr R17
0518 0795 ror R16
051A 0E940000 xcall int2fp
051E 3A93 st -y,R19
0520 2A93 st -y,R18
0522 1A93 st -y,R17
0524 0A93 st -y,R16
0526 0E940000 xcall empy32fs
052A 8201 movw R16,R4
052C 0170 andi R16,1
052E 1070 andi R17,0
0530 0E940000 xcall int2fp
0534 3A93 st -y,R19
0536 2A93 st -y,R18
0538 1A93 st -y,R17
053A 0A93 st -y,R16
053C 0E940000 xcall add32f
0540 F101 movw R30,R2
0542 EA0D add R30,R10
0544 FB1D adc R31,R11
0546 0083 std z+0,R16
0548 1183 std z+1,R17
054A 2283 std z+2,R18
054C 3383 std z+3,R19
054E .dbline 151
054E 04E0 ldi R16,4
0550 10E0 ldi R17,0
0552 9A01 movw R18,R20
0554 0E940000 xcall empy16s
0558 1801 movw R2,R16
055A F101 movw R30,R2
055C E60F add R30,R22
055E F71F adc R31,R23
0560 4280 ldd R4,z+2
0562 5380 ldd R5,z+3
0564 00E0 ldi R16,<L34
0566 10E0 ldi R17,>L34
0568 0E940000 xcall lpm32
056C 3A93 st -y,R19
056E 2A93 st -y,R18
0570 1A93 st -y,R17
0572 0A93 st -y,R16
0574 8201 movw R16,R4
0576 1695 lsr R17
0578 0795 ror R16
057A 0E940000 xcall int2fp
057E 3A93 st -y,R19
0580 2A93 st -y,R18
0582 1A93 st -y,R17
0584 0A93 st -y,R16
0586 0E940000 xcall empy32fs
058A 8201 movw R16,R4
058C 0170 andi R16,1
058E 1070 andi R17,0
0590 0E940000 xcall int2fp
0594 3A93 st -y,R19
0596 2A93 st -y,R18
0598 1A93 st -y,R17
059A 0A93 st -y,R16
059C 0E940000 xcall add32f
05A0 C501 movw R24,R10
05A2 8896 adiw R24,40
05A4 F101 movw R30,R2
05A6 E80F add R30,R24
05A8 F91F adc R31,R25
05AA 0083 std z+0,R16
05AC 1183 std z+1,R17
05AE 2283 std z+2,R18
05B0 3383 std z+3,R19
05B2 .dbline 152
05B2 L31:
05B2 .dbline 149
05B2 4F5F subi R20,255 ; offset = 1
05B4 5F4F sbci R21,255
05B6 L33:
05B6 .dbline 149
05B6 F501 movw R30,R10
05B8 E854 subi R30,72 ; addi 440
05BA FE4F sbci R31,254
05BC 2080 ldd R2,z+0
05BE 3180 ldd R3,z+1
05C0 4215 cp R20,R2
05C2 5305 cpc R21,R3
05C4 0CF4 brge X3
05C6 93CF xjmp L30
05C8 X3:
05C8 .dbline -2
05C8 L29:
05C8 0E940000 xcall pop_gset3
05CC .dbline 0 ; func end
05CC 0895 ret
05CE .dbsym r i 20 I
05CE .dbsym l np 6 I
05CE .dbsym r pt 22 pX
05CE .dbsym r sl 10 pX
05CE .dbend
05CE .dbfunc e SPLINE_MatrixSolve _SPLINE_MatrixSolve fV
05CE ; j -> R10,R11
05CE ; Work -> y+40
05CE ; WorkB -> y+0
05CE ; i -> R12,R13
05CE ; B -> R14,R15
05CE ; sl -> y+90
.even
05CE _SPLINE_MatrixSolve::
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -