📄 spline.lis
字号:
0814 0CF4 brge X5
0816 7BCF xjmp L45
0818 X5:
0818 .dbline 180
0818 ; { Work[i] = (B[i] - sl->Mat[0][i] * WorkB[i-1] - sl->Mat[2][i] * WorkB[i+1]) / sl->Mat[1][i];
0818 ; }
0818 ; Work[sl->Np-1] = (B[sl->Np-1] - sl->Mat[0][sl->Np-1] * WorkB[sl->Np-2]) / sl->Mat[1][sl->Np-1];
0818 DE01 movw R26,R28
081A A65A subi R26,166 ; addi 90
081C BF4F sbci R27,255
081E ED91 ld R30,x+
0820 FC91 ld R31,x
0822 E854 subi R30,72 ; addi 440
0824 FE4F sbci R31,254
0826 2081 ldd R18,z+0
0828 3181 ldd R19,z+1
082A 04E0 ldi R16,4
082C 10E0 ldi R17,0
082E 0E940000 xcall empy16s
0832 1801 movw R2,R16
0834 C101 movw R24,R2
0836 0497 sbiw R24,4
0838 2C01 movw R4,R24
083A FC01 movw R30,R24
083C EE0D add R30,R14
083E FF1D adc R31,R15
0840 6080 ldd R6,z+0
0842 7180 ldd R7,z+1
0844 8280 ldd R8,z+2
0846 9380 ldd R9,z+3
0848 9A92 st -y,R9
084A 8A92 st -y,R8
084C 7A92 st -y,R7
084E 6A92 st -y,R6
0850 ; stack offset 4
0850 FE01 movw R30,R28
0852 E25A subi R30,162 ; addi 94
0854 FF4F sbci R31,255
0856 8081 ldd R24,z+0
0858 9181 ldd R25,z+1
085A 805C subi R24,192 ; offset = 320
085C 9E4F sbci R25,254
085E F201 movw R30,R4
0860 E80F add R30,R24
0862 F91F adc R31,R25
0864 6080 ldd R6,z+0
0866 7180 ldd R7,z+1
0868 8280 ldd R8,z+2
086A 9380 ldd R9,z+3
086C 9A92 st -y,R9
086E 8A92 st -y,R8
0870 7A92 st -y,R7
0872 6A92 st -y,R6
0874 CE01 movw R24,R28
0876 ; stack offset 8
0876 F101 movw R30,R2
0878 E80F add R30,R24
087A F91F adc R31,R25
087C 6080 ldd R6,z+0
087E 7180 ldd R7,z+1
0880 8280 ldd R8,z+2
0882 9380 ldd R9,z+3
0884 9A92 st -y,R9
0886 8A92 st -y,R8
0888 7A92 st -y,R7
088A 6A92 st -y,R6
088C 0E940000 xcall empy32fs
0890 0E940000 xcall sub32fs
0894 ; stack offset 4
0894 FE01 movw R30,R28
0896 E25A subi R30,162 ; addi 94
0898 FF4F sbci R31,255
089A 8081 ldd R24,z+0
089C 9181 ldd R25,z+1
089E 8859 subi R24,152 ; offset = 360
08A0 9E4F sbci R25,254
08A2 F201 movw R30,R4
08A4 E80F add R30,R24
08A6 F91F adc R31,R25
08A8 4080 ldd R4,z+0
08AA 5180 ldd R5,z+1
08AC 6280 ldd R6,z+2
08AE 7380 ldd R7,z+3
08B0 7A92 st -y,R7
08B2 6A92 st -y,R6
08B4 5A92 st -y,R5
08B6 4A92 st -y,R4
08B8 0E940000 xcall div32f
08BC CE01 movw R24,R28
08BE 8496 adiw R24,36
08C0 F101 movw R30,R2
08C2 E80F add R30,R24
08C4 F91F adc R31,R25
08C6 0083 std z+0,R16
08C8 1183 std z+1,R17
08CA 2283 std z+2,R18
08CC 3383 std z+3,R19
08CE .dbline 182
08CE ;
08CE ; for(i=0; i<=(sl->Np-1); i++)
08CE CC24 clr R12
08D0 DD24 clr R13
08D2 19C0 xjmp L56
08D4 L53:
08D4 .dbline 183
08D4 .dbline 183
08D4 04E0 ldi R16,4
08D6 10E0 ldi R17,0
08D8 9601 movw R18,R12
08DA 0E940000 xcall empy16s
08DE CE01 movw R24,R28
08E0 8896 adiw R24,40
08E2 F801 movw R30,R16
08E4 E80F add R30,R24
08E6 F91F adc R31,R25
08E8 2080 ldd R2,z+0
08EA 3180 ldd R3,z+1
08EC 4280 ldd R4,z+2
08EE 5380 ldd R5,z+3
08F0 CE01 movw R24,R28
08F2 F801 movw R30,R16
08F4 E80F add R30,R24
08F6 F91F adc R31,R25
08F8 2082 std z+0,R2
08FA 3182 std z+1,R3
08FC 4282 std z+2,R4
08FE 5382 std z+3,R5
0900 .dbline 184
0900 L54:
0900 .dbline 182
0900 C601 movw R24,R12
0902 0196 adiw R24,1
0904 6C01 movw R12,R24
0906 L56:
0906 .dbline 182
0906 DE01 movw R26,R28
0908 A65A subi R26,166 ; addi 90
090A BF4F sbci R27,255
090C ED91 ld R30,x+
090E FC91 ld R31,x
0910 E854 subi R30,72 ; addi 440
0912 FE4F sbci R31,254
0914 8081 ldd R24,z+0
0916 9181 ldd R25,z+1
0918 0197 sbiw R24,1
091A 8C15 cp R24,R12
091C 9D05 cpc R25,R13
091E 0CF0 brlt X6
0920 D9CF xjmp L53
0922 X6:
0922 .dbline 185
0922 L41:
0922 .dbline 175
0922 C501 movw R24,R10
0924 0196 adiw R24,1
0926 5C01 movw R10,R24
0928 .dbline 175
0928 8A30 cpi R24,10
092A E0E0 ldi R30,0
092C 9E07 cpc R25,R30
092E 0CF4 brge X7
0930 AFCE xjmp L40
0932 X7:
0932 .dbline 187
0932 ; { WorkB[i] = Work[i];
0932 ; }
0932 ; }
0932 ;
0932 ; for(i=0; i<=(sl->Np-1); i++)
0932 CC24 clr R12
0934 DD24 clr R13
0936 18C0 xjmp L60
0938 L57:
0938 .dbline 188
0938 .dbline 188
0938 04E0 ldi R16,4
093A 10E0 ldi R17,0
093C 9601 movw R18,R12
093E 0E940000 xcall empy16s
0942 CE01 movw R24,R28
0944 8896 adiw R24,40
0946 F801 movw R30,R16
0948 E80F add R30,R24
094A F91F adc R31,R25
094C 2080 ldd R2,z+0
094E 3180 ldd R3,z+1
0950 4280 ldd R4,z+2
0952 5380 ldd R5,z+3
0954 F801 movw R30,R16
0956 EE0D add R30,R14
0958 FF1D adc R31,R15
095A 2082 std z+0,R2
095C 3182 std z+1,R3
095E 4282 std z+2,R4
0960 5382 std z+3,R5
0962 .dbline 189
0962 L58:
0962 .dbline 187
0962 C601 movw R24,R12
0964 0196 adiw R24,1
0966 6C01 movw R12,R24
0968 L60:
0968 .dbline 187
0968 DE01 movw R26,R28
096A A65A subi R26,166 ; addi 90
096C BF4F sbci R27,255
096E ED91 ld R30,x+
0970 FC91 ld R31,x
0972 E854 subi R30,72 ; addi 440
0974 FE4F sbci R31,254
0976 8081 ldd R24,z+0
0978 9181 ldd R25,z+1
097A 0197 sbiw R24,1
097C 8C15 cp R24,R12
097E 9D05 cpc R25,R13
0980 DCF6 brge L57
0982 .dbline -2
0982 L35:
0982 EF96 adiw R28,63
0984 6196 adiw R28,17 ; offset = 80
0986 0E940000 xcall pop_gset5
098A 2496 adiw R28,4
098C .dbline 0 ; func end
098C 0895 ret
098E .dbsym r j 10 I
098E .dbsym l Work 40 A[40:10]D
098E .dbsym l WorkB 0 A[40:10]D
098E .dbsym r i 12 I
098E .dbsym r B 14 pD
098E .dbsym l sl 90 pX
098E .dbend
098E .dbfunc e SPLINE_Generate _SPLINE_Generate fV
098E ; AMagOld -> y+44
098E ; AMag -> y+40
098E ; k -> y+0
098E ; i -> R10,R11
098E ; sl -> R12,R13
.even
098E _SPLINE_Generate::
098E 0E940000 xcall push_gset4
0992 6801 movw R12,R16
0994 EF97 sbiw R28,63
0996 2197 sbiw R28,1 ; offset = 64
0998 .dbline -1
0998 .dbline 203
0998 ; { B[i] = Work[i];
0998 ; }
0998 ;
0998 ; }
0998 ;
0998 ;
0998 ;
0998 ; /****************************************************************************
0998 ; * 名称:SPLINE_Generate()
0998 ; * 功能:产生样条曲线图形。产生的各个端点保存到sl的结构内。
0998 ; * 入口参数:sl 要操作的样条曲线对象,SPLINE结构
0998 ; * 出口参数:无
0998 ; * 说明:sl要先使用SPLINE_SetSpline()设置各个特征点。
0998 ; ****************************************************************************/
0998 ; void SPLINE_Generate(SPLINE *sl)
0998 ; { float k[NPMAX];
0998 .dbline 208
0998 ; float AMag , AMagOld;
0998 ; int i;
0998 ;
0998 ; /* 设置A点值 */
0998 ; for(i=0 ; i<=(sl->Np-2); i++ )
0998 AA24 clr R10
099A BB24 clr R11
099C 56C0 xjmp L65
099E L62:
099E .dbline 209
099E .dbline 209
099E 04E0 ldi R16,4
09A0 10E0 ldi R17,0
09A2 9501 movw R18,R10
09A4 0E940000 xcall empy16s
09A8 1801 movw R2,R16
09AA 2101 movw R4,R2
09AC 4C0C add R4,R12
09AE 5D1C adc R5,R13
09B0 F201 movw R30,R4
09B2 6480 ldd R6,z+4
09B4 7580 ldd R7,z+5
09B6 8680 ldd R8,z+6
09B8 9780 ldd R9,z+7
09BA 9A92 st -y,R9
09BC 8A92 st -y,R8
09BE 7A92 st -y,R7
09C0 6A92 st -y,R6
09C2 F201 movw R30,R4
09C4 4080 ldd R4,z+0
09C6 5180 ldd R5,z+1
09C8 6280 ldd R6,z+2
09CA 7380 ldd R7,z+3
09CC 7A92 st -y,R7
09CE 6A92 st -y,R6
09D0 5A92 st -y,R5
09D2 4A92 st -y,R4
09D4 0E940000 xcall sub32f
09D8 C601 movw R24,R12
09DA 805B subi R24,176 ; offset = 80
09DC 9F4F sbci R25,255
09DE F101 movw R30,R2
09E0 E80F add R30,R24
09E2 F91F adc R31,R25
09E4 0083 std z+0,R16
09E6 1183 std z+1,R17
09E8 2283 std z+2,R18
09EA 3383 std z+3,R19
09EC .dbline 210
09EC 04E0 ldi R16,4
09EE 10E0 ldi R17,0
09F0 9501 movw R18,R10
09F2 0E940000 xcall empy16s
09F6 1801 movw R2,R16
09F8 C601 movw R24,R12
09FA 8C96 adiw R24,44
09FC F101 movw R30,R2
09FE E80F add R30,R24
0A00 F91F adc R31,R25
0A02 4080 ldd R4,z+0
0A04 5180 ldd R5,z+1
0A06 6280 ldd R6,z+2
0A08 7380 ldd R7,z+3
0A0A 7A92 st -y,R7
0A0C 6A92 st -y,R6
0A0E 5A92 st -y,R5
0A10 4A92 st -y,R4
0A12 C601 movw R24,R12
0A14 8896 adiw R24,40
0A16 F101 movw R30,R2
0A18 E80F add R30,R24
0A1A F91F adc R31,R25
0A1C 4080 ldd R4,z+0
0A1E 5180 ldd R5,z+1
0A20 6280 ldd R6,z+2
0A22 7380 ldd R7,z+3
0A24
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -