📄 fftbook.lis
字号:
0834 81E0 ldi R24,1
0836 90E0 ldi R25,0
0838 90934700 sts _p+1,R25
083C 80934600 sts _p,R24
0840 .dbline 66
0840 20905000 lds R2,_L
0844 30905100 lds R3,_L+1
0848 84E0 ldi R24,4
084A 8219 sub R24,R2
084C 9309 sbc R25,R3
084E 90934F00 sts _i+1,R25
0852 80934E00 sts _i,R24
0856 15C0 xjmp L27
0858 L26:
0858 .dbline 68
0858 .dbline 69
0858 20914600 lds R18,_p
085C 30914700 lds R19,_p+1
0860 02E0 ldi R16,2
0862 10E0 ldi R17,0
0864 0E940000 xcall empy16s
0868 10934700 sts _p+1,R17
086C 00934600 sts _p,R16
0870 .dbline 69
0870 80914E00 lds R24,_i
0874 90914F00 lds R25,_i+1
0878 0197 sbiw R24,1
087A 90934F00 sts _i+1,R25
087E 80934E00 sts _i,R24
0882 .dbline 70
0882 L27:
0882 .dbline 67
0882 ; while(i>0)
0882 2224 clr R2
0884 3324 clr R3
0886 40904E00 lds R4,_i
088A 50904F00 lds R5,_i+1
088E 2414 cp R2,R4
0890 3504 cpc R3,R5
0892 14F3 brlt L26
0894 .dbline 71
0894 ; {
0894 ; p=p*2; i--;
0894 ; }
0894 ; p=p*j;
0894 20914C00 lds R18,_j
0898 30914D00 lds R19,_j+1
089C 00914600 lds R16,_p
08A0 10914700 lds R17,_p+1
08A4 0E940000 xcall empy16s
08A8 10934700 sts _p+1,R17
08AC 00934600 sts _p,R16
08B0 .dbline 72
08B0 ; for(k=j;k<16;k=k+2*b) // 第三层循环
08B0 20904C00 lds R2,_j
08B4 30904D00 lds R3,_j+1
08B8 30924B00 sts _k+1,R3
08BC 20924A00 sts _k,R2
08C0 13C0 xjmp L32
08C2 L29:
08C2 .dbline 73
08C2 .dbline 74
08C2 06DC xcall _FFTT
08C4 .dbline 75
08C4 L30:
08C4 .dbline 72
08C4 20914800 lds R18,_b
08C8 30914900 lds R19,_b+1
08CC 02E0 ldi R16,2
08CE 10E0 ldi R17,0
08D0 0E940000 xcall empy16s
08D4 20904A00 lds R2,_k
08D8 30904B00 lds R3,_k+1
08DC 200E add R2,R16
08DE 311E adc R3,R17
08E0 30924B00 sts _k+1,R3
08E4 20924A00 sts _k,R2
08E8 L32:
08E8 .dbline 72
08E8 80914A00 lds R24,_k
08EC 90914B00 lds R25,_k+1
08F0 8031 cpi R24,16
08F2 E0E0 ldi R30,0
08F4 9E07 cpc R25,R30
08F6 2CF3 brlt L29
08F8 .dbline 76
08F8 L23:
08F8 .dbline 64
08F8 80914C00 lds R24,_j
08FC 90914D00 lds R25,_j+1
0900 0196 adiw R24,1
0902 90934D00 sts _j+1,R25
0906 80934C00 sts _j,R24
090A L25:
090A .dbline 64
090A 80914800 lds R24,_b
090E 90914900 lds R25,_b+1
0912 0197 sbiw R24,1
0914 20904C00 lds R2,_j
0918 30904D00 lds R3,_j+1
091C 8215 cp R24,R2
091E 9305 cpc R25,R3
0920 0CF0 brlt X0
0922 88CF xjmp L22
0924 X0:
0924 .dbline 77
0924 L16:
0924 .dbline 57
0924 80915000 lds R24,_L
0928 90915100 lds R25,_L+1
092C 0196 adiw R24,1
092E 90935100 sts _L+1,R25
0932 80935000 sts _L,R24
0936 .dbline 57
0936 84E0 ldi R24,4
0938 90E0 ldi R25,0
093A 20905000 lds R2,_L
093E 30905100 lds R3,_L+1
0942 8215 cp R24,R2
0944 9305 cpc R25,R3
0946 0CF0 brlt X1
0948 42CF xjmp L15
094A X1:
094A .dbline 78
094A ; {
094A ; FFTT();
094A ; }
094A ; }
094A ; }
094A ; for(i=0;i<32;i++) // 32次以下的谐波分析
094A 2224 clr R2
094C 3324 clr R3
094E 30924F00 sts _i+1,R3
0952 20924E00 sts _i,R2
0956 L33:
0956 .dbline 79
0956 ; {
0956 .dbline 80
0956 ; w[i]=sqrt(dataR[i]*dataR[i]+dataI[i]*dataI[i]);
0956 20914E00 lds R18,_i
095A 30914F00 lds R19,_i+1
095E 02E0 ldi R16,2
0960 10E0 ldi R17,0
0962 0E940000 xcall empy16s
0966 F801 movw R30,R16
0968 E60F add R30,R22
096A F71F adc R31,R23
096C 2080 ldd R2,z+0
096E 3180 ldd R3,z+1
0970 F801 movw R30,R16
0972 E40F add R30,R20
0974 F51F adc R31,R21
0976 4080 ldd R4,z+0
0978 5180 ldd R5,z+1
097A 9201 movw R18,R4
097C 8201 movw R16,R4
097E 0E940000 xcall empy16s
0982 2801 movw R4,R16
0984 9101 movw R18,R2
0986 8101 movw R16,R2
0988 0E940000 xcall empy16s
098C 040D add R16,R4
098E 151D adc R17,R5
0990 0E940000 xcall int2fp
0994 0E940000 xcall _sqrt
0998 1801 movw R2,R16
099A 2901 movw R4,R18
099C 3A93 st -y,R19
099E 2A93 st -y,R18
09A0 1A93 st -y,R17
09A2 0A93 st -y,R16
09A4 00E0 ldi R16,<L39
09A6 10E0 ldi R17,>L39
09A8 0E940000 xcall lpm32
09AC 3A93 st -y,R19
09AE 2A93 st -y,R18
09B0 1A93 st -y,R17
09B2 0A93 st -y,R16
09B4 0E940000 xcall cmp32f
09B8 ACF0 brlt L37
09BA 5A92 st -y,R5
09BC 4A92 st -y,R4
09BE 3A92 st -y,R3
09C0 2A92 st -y,R2
09C2 00E0 ldi R16,<L39
09C4 10E0 ldi R17,>L39
09C6 0E940000 xcall lpm32
09CA 3A93 st -y,R19
09CC 2A93 st -y,R18
09CE 1A93 st -y,R17
09D0 0A93 st -y,R16
09D2 0E940000 xcall sub32f
09D6 0E940000 xcall fp2int
09DA C801 movw R24,R16
09DC 8050 subi R24,0 ; offset = 32768
09DE 9048 sbci R25,128
09E0 5C01 movw R10,R24
09E2 05C0 xjmp L38
09E4 L37:
09E4 8101 movw R16,R2
09E6 9201 movw R18,R4
09E8 0E940000 xcall fp2int
09EC 5801 movw R10,R16
09EE L38:
09EE 80E0 ldi R24,<_w
09F0 90E0 ldi R25,>_w
09F2 E0914E00 lds R30,_i
09F6 F0914F00 lds R31,_i+1
09FA E80F add R30,R24
09FC F91F adc R31,R25
09FE A082 std z+0,R10
0A00 .dbline 81
0A00 60904E00 lds R6,_i
0A04 70904F00 lds R7,_i+1
0A08 680E add R6,R24
0A0A 791E adc R7,R25
0A0C 10E4 ldi R17,64
0A0E F301 movw R30,R6
0A10 0081 ldd R16,z+0
0A12 0E940000 xcall div8u
0A16 F301 movw R30,R6
0A18 0083 std z+0,R16
0A1A .dbline 82
0A1A L34:
0A1A .dbline 78
0A1A 80914E00 lds R24,_i
0A1E 90914F00 lds R25,_i+1
0A22 0196 adiw R24,1
0A24 90934F00 sts _i+1,R25
0A28 80934E00 sts _i,R24
0A2C .dbline 78
0A2C 8032 cpi R24,32
0A2E E0E0 ldi R30,0
0A30 9E07 cpc R25,R30
0A32 0CF4 brge X2
0A34 90CF xjmp L33
0A36 X2:
0A36 .dbline 83
0A36 ; w[i]=w[i]/64;
0A36 ; }
0A36 ; w[0]=w[0]/2;
0A36 60902600 lds R6,_w
0A3A 6694 lsr R6
0A3C 60922600 sts _w,R6
0A40 .dbline -2
0A40 L6:
0A40 0E940000 xcall pop_gset3
0A44 .dbline 0 ; func end
0A44 0895 ret
0A46 .dbsym r dataI 20 pI
0A46 .dbsym r dataR 22 pI
0A46 .dbend
0A46 .dbfunc e main _main fV
.even
0A46 _main::
0A46 .dbline -1
0A46 .dbline 87
0A46 ; }
0A46 ;
0A46 ; void main ()
0A46 ; {
0A46 .dbline 88
0A46 ; FFT(dataR,dataI);
0A46 20E0 ldi R18,<_dataI
0A48 30E0 ldi R19,>_dataI
0A4A 00E0 ldi R16,<_dataR
0A4C 10E0 ldi R17,>_dataR
0A4E 6DDE xcall _FFT
0A50 L41:
0A50 .dbline 89
0A50 L42:
0A50 .dbline 89
0A50 FFCF xjmp L41
0A52 X3:
0A52 .dbline -2
0A52 L40:
0A52 .dbline 0 ; func end
0A52 0895 ret
0A54 .dbend
.area bss(ram, con, rel)
0000 .dbfile D:\HJN\Design\AVR\fft\fftbook.c
0000 _dataI::
0000 .blkb 32
0020 .dbsym e dataI _dataI A[32:16]I
0020 _temp::
0020 .blkb 2
0022 .dbsym e temp _temp i
0022 _TI::
0022 .blkb 2
0024 .dbsym e TI _TI i
0024 _TR::
0024 .blkb 2
0026 .dbsym e TR _TR i
0026 _w::
0026 .blkb 32
0046 .dbsym e w _w A[32:32]c
0046 _p::
0046 .blkb 2
0048 .dbsym e p _p I
0048 _b::
0048 .blkb 2
004A .dbsym e b _b I
004A _k::
004A .blkb 2
004C .dbsym e k _k I
004C _j::
004C .blkb 2
004E .dbsym e j _j I
004E _i::
004E .blkb 2
0050 .dbsym e i _i I
0050 _L::
0050 .blkb 2
0052 .dbsym e L _L I
0052 _x6::
0052 .blkb 2
0054 .dbsym e x6 _x6 i
0054 _x5::
0054 .blkb 2
0056 .dbsym e x5 _x5 i
0056 _x4::
0056 .blkb 2
0058 .dbsym e x4 _x4 i
0058 _x3::
0058 .blkb 2
005A .dbsym e x3 _x3 i
005A _x2::
005A .blkb 2
005C .dbsym e x2 _x2 i
005C _x1::
005C .blkb 2
005E .dbsym e x1 _x1 i
005E _x0::
005E .blkb 2
0060 .dbsym e x0 _x0 i
.area lit(rom, con, rel)
0000 L39:
0000 00000047 .word 0x0,0x4700
0004 L5:
0004 00000040 .word 0x0,0x4000
0008 L4:
0008 00008041 .word 0x0,0x4180
000C L3:
000C DA0FC940 .word 0xfda,0x40c9
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -