www.pudn.com > fft_iccavr.rar > ff.lis


                        .module ff.c 
                        .area data(ram, con, rel) 
 0000           _dataR:: 
 0000                   .blkb 4 
                        .area idata 
 0000 0000A040          .word 0x0,0x40a0 
                        .area data(ram, con, rel) 
 0004                   .blkb 4 
                        .area idata 
 0004 0000A040          .word 0x0,0x40a0 
                        .area data(ram, con, rel) 
 0008                   .blkb 4 
                        .area idata 
 0008 0000A040          .word 0x0,0x40a0 
                        .area data(ram, con, rel) 
 000C                   .blkb 4 
                        .area idata 
 000C 0000A040          .word 0x0,0x40a0 
                        .area data(ram, con, rel) 
 0010                   .blkb 4 
                        .area idata 
 0010 00000000          .word 0x0,0x0 
                        .area data(ram, con, rel) 
 0014                   .blkb 4 
                        .area idata 
 0014 00000000          .word 0x0,0x0 
                        .area data(ram, con, rel) 
 0018                   .blkb 4 
                        .area idata 
 0018 00000000          .word 0x0,0x0 
                        .area data(ram, con, rel) 
 001C                   .blkb 4 
                        .area idata 
 001C 00000000          .word 0x0,0x0 
                        .area data(ram, con, rel) 
 0020                   .dbfile D:\HJN\Design\AVR\fft\ff.c 
 0020                   .dbsym e dataR _dataR A[32:8]D 
 0020           _dataI:: 
 0020                   .blkb 4 
                        .area idata 
 0020 00000000          .word 0x0,0x0 
                        .area data(ram, con, rel) 
 0024                   .dbfile D:\HJN\Design\AVR\fft\ff.c 
 0024                   .blkb 4 
                        .area idata 
 0024 00000000          .word 0x0,0x0 
                        .area data(ram, con, rel) 
 0028                   .dbfile D:\HJN\Design\AVR\fft\ff.c 
 0028                   .blkb 4 
                        .area idata 
 0028 00000000          .word 0x0,0x0 
                        .area data(ram, con, rel) 
 002C                   .dbfile D:\HJN\Design\AVR\fft\ff.c 
 002C                   .blkb 4 
                        .area idata 
 002C 00000000          .word 0x0,0x0 
                        .area data(ram, con, rel) 
 0030                   .dbfile D:\HJN\Design\AVR\fft\ff.c 
 0030                   .blkb 4 
                        .area idata 
 0030 00000000          .word 0x0,0x0 
                        .area data(ram, con, rel) 
 0034                   .dbfile D:\HJN\Design\AVR\fft\ff.c 
 0034                   .blkb 4 
                        .area idata 
 0034 00000000          .word 0x0,0x0 
                        .area data(ram, con, rel) 
 0038                   .dbfile D:\HJN\Design\AVR\fft\ff.c 
 0038                   .blkb 4 
                        .area idata 
 0038 00000000          .word 0x0,0x0 
                        .area data(ram, con, rel) 
 003C                   .dbfile D:\HJN\Design\AVR\fft\ff.c 
 003C                   .blkb 4 
                        .area idata 
 003C 00000000          .word 0x0,0x0 
                        .area data(ram, con, rel) 
 0040                   .dbfile D:\HJN\Design\AVR\fft\ff.c 
 0040                   .dbsym e dataI _dataI A[32:8]D 
                        .area text(rom, con, rel) 
 0000                   .dbfile D:\HJN\Design\AVR\fft\ff.c 
 0000                   .dbfunc e FFT _FFT fV 
 0000           ;             xx -> y+12 
 0000           ;             x2 -> R14,R15 
 0000           ;             x1 -> R10,R11 
 0000           ;             x0 -> R12,R13 
 0000           ;              L -> y+24 
 0000           ;              j -> R10,R11 
 0000           ;           temp -> y+8 
 0000           ;             TI -> y+4 
 0000           ;             TR -> y+0 
 0000           ;              b -> y+22 
 0000           ;              p -> R14,R15 
 0000           ;              k -> R12,R13 
 0000           ;          dataI -> y+38 
 0000           ;          dataR -> y+36 
                        .even 
 0000           _FFT:: 
 0000 0E940000          xcall push_arg4 
 0004 0E940000          xcall push_gset5 
 0008 6A97              sbiw R28,26 
 000A                   .dbline -1 
 000A                   .dbline 10 
 000A           ; #include  
 000A           ; #include  
 000A           ; #define PI 3.1415926 
 000A           ;  
 000A           ; unsigned char i,w[32]; 
 000A           ; float dataR[]={5,5,5,5,0,0,0,0}; 
 000A           ; float dataI[]={0,0,0,0,0,0,0,0}; 
 000A           ;  
 000A           ; void FFT(float dataR[],float dataI[]) 
 000A           ; { 
 000A                   .dbline 17 
 000A           ;    int x0,x1,x2,xx; 
 000A           ;     
 000A           ;    int L,j,k,b,p; 
 000A           ;    float TR,TI,temp; 
 000A           ;  
 000A           ; /********** following code invert sequence ************/ 
 000A           ;  for(i=0;i<8;i++) 
 000A 2224              clr R2 
 000C 20922000          sts _i,R2 
 0010 55C0              xjmp L5 
 0012           L2: 
 0012                   .dbline 18 
 0012                   .dbline 19 
 0012 EE24              clr R14 
 0014 FF24              clr R15 
 0016 AA24              clr R10 
 0018 BB24              clr R11 
 001A CC24              clr R12 
 001C DD24              clr R13 
 001E                   .dbline 20 
 001E 80912000          lds R24,_i 
 0022 9927              clr R25 
 0024 8170              andi R24,1 
 0026 9070              andi R25,0 
 0028 6C01              movw R12,R24 
 002A                   .dbline 21 
 002A 22E0              ldi R18,2 
 002C 30E0              ldi R19,0 
 002E 00912000          lds R16,_i 
 0032 1127              clr R17 
 0034 0E940000          xcall div16s 
 0038 C801              movw R24,R16 
 003A 8170              andi R24,1 
 003C 9070              andi R25,0 
 003E 5C01              movw R10,R24 
 0040                   .dbline 22 
 0040 24E0              ldi R18,4 
 0042 30E0              ldi R19,0 
 0044 00912000          lds R16,_i 
 0048 1127              clr R17 
 004A 0E940000          xcall div16s 
 004E C801              movw R24,R16 
 0050 8170              andi R24,1 
 0052 9070              andi R25,0 
 0054 7C01              movw R14,R24 
 0056                   .dbline 23 
 0056 02E0              ldi R16,2 
 0058 10E0              ldi R17,0 
 005A 9501              movw R18,R10 
 005C 0E940000          xcall empy16s 
 0060 1801              movw R2,R16 
 0062 04E0              ldi R16,4 
 0064 10E0              ldi R17,0 
 0066 9601              movw R18,R12 
 0068 0E940000          xcall empy16s 
 006C 2801              movw R4,R16 
 006E 420C              add R4,R2 
 0070 531C              adc R5,R3 
 0072 4E0C              add R4,R14 
 0074 5F1C              adc R5,R15 
 0076 5D86              std y+13,R5 
 0078 4C86              std y+12,R4 
 007A                   .dbline 24 
 007A 20902000          lds R2,_i 
 007E 84E0              ldi R24,4 
 0080 829D              mul R24,R2 
 0082 F001              movw R30,R0 
 0084 0CA0              ldd R0,y+36 
 0086 1DA0              ldd R1,y+37 
 0088 E00D              add R30,R0 
 008A F11D              adc R31,R1 
 008C 2080              ldd R2,z+0 
 008E 3180              ldd R3,z+1 
 0090 4280              ldd R4,z+2 
 0092 5380              ldd R5,z+3 
 0094 2C85              ldd R18,y+12 
 0096 3D85              ldd R19,y+13 
 0098 04E0              ldi R16,4 
 009A 10E0              ldi R17,0 
 009C 0E940000          xcall empy16s 
 00A0 F801              movw R30,R16 
 00A2 0EA0              ldd R0,y+38 
 00A4 1FA0              ldd R1,y+39 
 00A6 E00D              add R30,R0 
 00A8 F11D              adc R31,R1 
 00AA 2082              std z+0,R2 
 00AC 3182              std z+1,R3 
 00AE 4282              std z+2,R4 
 00B0 5382              std z+3,R5 
 00B2                   .dbline 25 
 00B2           L3: 
 00B2                   .dbline 17 
 00B2 80912000          lds R24,_i 
 00B6 8F5F              subi R24,255    ; addi 1 
 00B8 80932000          sts _i,R24 
 00BC           L5: 
 00BC                   .dbline 17 
 00BC 80912000          lds R24,_i 
 00C0 8830              cpi R24,8 
 00C2 08F4              brsh X0 
 00C4 A6CF              xjmp L2 
 00C6           X0: 
 00C6                   .dbline 26 
 00C6           ;   {  
 00C6           ;    x0=x1=x2=0; 
 00C6           ;    x0=i&0x01;  
 00C6           ;    x1=(i/2)&0x01;  
 00C6           ;    x2=(i/4)&0x01; 
 00C6           ;    xx=x0*4+x1*2+x2; 
 00C6           ;    dataI[xx]=dataR[i];   //实部的数放在虚部数组中 
 00C6           ;   } 
 00C6           ;  for(i=0;i<8;i++) 
 00C6 2224              clr R2 
 00C8 20922000          sts _i,R2 
 00CC 2CC0              xjmp L9 
 00CE           L6: 
 00CE                   .dbline 27 
 00CE                   .dbline 28 
 00CE 20902000          lds R2,_i 
 00D2 84E0              ldi R24,4 
 00D4 829D              mul R24,R2 
 00D6 1001              movw R2,R0 
 00D8 F101              movw R30,R2 
 00DA 0EA0              ldd R0,y+38 
 00DC 1FA0              ldd R1,y+39 
 00DE E00D              add R30,R0 
 00E0 F11D              adc R31,R1 
 00E2 4080              ldd R4,z+0 
 00E4 5180              ldd R5,z+1 
 00E6 6280              ldd R6,z+2 
 00E8 7380              ldd R7,z+3 
 00EA F101              movw R30,R2 
 00EC 0CA0              ldd R0,y+36 
 00EE 1DA0              ldd R1,y+37 
 00F0 E00D              add R30,R0 
 00F2 F11D              adc R31,R1 
 00F4 4082              std z+0,R4 
 00F6 5182              std z+1,R5 
 00F8 6282              std z+2,R6 
 00FA 7382              std z+3,R7 
 00FC                   .dbline 29 
 00FC 20902000          lds R2,_i 
 0100 829D              mul R24,R2 
 0102 F001              movw R30,R0 
 0104 0EA0              ldd R0,y+38 
 0106 1FA0              ldd R1,y+39 
 0108 E00D              add R30,R0 
 010A F11D              adc R31,R1 
 010C 00E0              ldi R16,L10 
 0110 0E940000          xcall lpm32 
 0114 0083              std z+0,R16 
 0116 1183              std z+1,R17 
 0118 2283              std z+2,R18 
 011A 3383              std z+3,R19 
 011C                   .dbline 30 
 011C           L7: 
 011C                   .dbline 26 
 011C 80912000          lds R24,_i 
 0120 8F5F              subi R24,255    ; addi 1 
 0122 80932000          sts _i,R24 
 0126           L9: 
 0126                   .dbline 26 
 0126 80912000          lds R24,_i 
 012A 8830              cpi R24,8 
 012C 08F4              brsh X1 
 012E CFCF              xjmp L6 
 0130           X1: 
 0130                   .dbline 32 
 0130           ;   {  
 0130           ;    dataR[i]=dataI[i];    //将虚部保存的数传回实部 
 0130           ;    dataI[i]=0;  
 0130           ;   } 
 0130           ; /************** following code FFT *******************/ 
 0130           ;  for(L = 1 ; L <= 3 ; L ++ )            // for (1)  L 代表第几级 
 0130 81E0              ldi R24,1 
 0132 90E0              ldi R25,0 
 0134 998F              std y+25,R25 
 0136 888F              std y+24,R24 
 0138           L11: 
 0138                   .dbline 33 
 0138           ;   {  
 0138                   .dbline 34 
 0138           ;     b = 1 ;  
 0138 81E0              ldi R24,1 
 013A 90E0              ldi R25,0 
 013C 9F8B              std y+23,R25 
 013E 8E8B              std y+22,R24 
 0140                   .dbline 35 
 0140           ;     i = L - 1 ;           
 0140 888D              ldd R24,y+24 
 0142 998D              ldd R25,y+25 
 0144 0197              sbiw R24,1 
 0146 80932000          sts _i,R24 
 014A 0DC0              xjmp L16 
 014C           L15: 
 014C                   .dbline 37 
 014C                   .dbline 38 
 014C 02E0              ldi R16,2 
 014E 10E0              ldi R17,0 
 0150 2E89              ldd R18,y+22 
 0152 3F89              ldd R19,y+23 
 0154 0E940000          xcall empy16s 
 0158 1F8B              std y+23,R17 
 015A 0E8B              std y+22,R16 
 015C                   .dbline 39 
 015C 80912000          lds R24,_i 
 0160 8150              subi R24,1 
 0162 80932000          sts _i,R24 
 0166                   .dbline 40 
 0166           L16: 
 0166                   .dbline 36 
 0166           ;     while ( i > 0 )           //计算第L层旋转因子的个数,即输入口间距 b= 2^(L-1)   
 0166 2224              clr R2 
 0168 30902000          lds R3,_i 
 016C 2314              cp R2,R3 
 016E 70F3              brlo L15 
 0170                   .dbline 42 
 0170           ;      { 
 0170           ;        b=b*2;  
 0170           ;        i--; 
 0170           ;      }                         
 0170           ;     
 0170           ;    for ( j = 0 ; j <= b - 1 ; j ++ )    // for (2)  j 用来控制计算第几个旋转因子 
 0170 AA24              clr R10 
 0172 BB24              clr R11 
 0174 23C2              xjmp L21 
 0176           L18: 
 0176                   .dbline 43 
 0176           ;     { 
 0176                   .dbline 44 
 0176           ;        p = 1 ; 
 0176 81E0              ldi R24,1 
 0178 90E0              ldi R25,0 
 017A 7C01              movw R14,R24 
 017C                   .dbline 45 
 017C           ;        i = 3 - L ;      
 017C 83E0              ldi R24,3 
 017E 088C              ldd R0,y+24 
 0180 198C              ldd R1,y+25 
 0182 8019              sub R24,R0 
 0184 9109              sbc R25,R1 
 0186 80932000          sts _i,R24 
 018A 0BC0              xjmp L23 
 018C           L22: 
 018C                   .dbline 48 
 018C                   .dbline 49 
 018C 02E0              ldi R16,2 
 018E 10E0              ldi R17,0 
 0190 9701              movw R18,R14 
 0192 0E940000          xcall empy16s 
 0196 7801              movw R14,R16 
 0198                   .dbline 50 
 0198 80912000          lds R24,_i 
 019C 8150              subi R24,1 
 019E 80932000          sts _i,R24 
 01A2                   .dbline 51 
 01A2           L23: 
 01A2                   .dbline 47 
 01A2           ;         
 01A2           ;       while ( i > 0 )                           /* p=pow(2,3-L)*j; */ 
 01A2 2224              clr R2 
 01A4 30902000          lds R3,_i 
 01A8 2314              cp R2,R3 
 01AA 80F3              brlo L22 
 01AC                   .dbline 52 
 01AC           ;          { 
 01AC           ;           p = p * 2 ;  
 01AC           ;           i -- ; 
 01AC           ;          } 
 01AC           ;       p=p*j; 
 01AC 9501              movw R18,R10 
 01AE 8701              movw R16,R14 
 01B0 0E940000          xcall empy16s 
 01B4 7801              movw R14,R16 
 01B6                   .dbline 54 
 01B6           ;         
 01B6           ;         for ( k = j ; k < 8 ; k = k + 2 * b )  /* for (3) */ 
 01B6 6501              movw R12,R10 
 01B8 F8C1              xjmp L28 
 01BA           L25: 
 01BA                   .dbline 55 
 01BA                   .dbline 55 
 01BA 00E0              ldi R16,L29 
 01BE 0E940000          xcall lpm32 
 01C2 3A93              st -y,R19 
 01C4 2A93              st -y,R18 
 01C6 1A93              st -y,R17 
 01C8 0A93              st -y,R16 
 01CA 8701              movw R16,R14 
 01CC 0E940000          xcall int2fp 
 01D0 3A93              st -y,R19 
 01D2 2A93              st -y,R18 
 01D4 1A93              st -y,R17 
 01D6 0A93              st -y,R16 
 01D8 0E940000          xcall empy32fs 
 01DC 00E0              ldi R16,L30 
 01E0 0E940000          xcall lpm32 
 01E4 3A93              st -y,R19 
 01E6 2A93              st -y,R18 
 01E8 1A93              st -y,R17 
 01EA 0A93              st -y,R16 
 01EC 0E940000          xcall div32f 
 01F0 0E940000          xcall fp2int 
 01F4 7801              movw R14,R16 
 01F6                   .dbline 56 
 01F6 04E0              ldi R16,4 
 01F8 10E0              ldi R17,0 
 01FA 9601              movw R18,R12 
 01FC 0E940000          xcall empy16s 
 0200 F801              movw R30,R16 
 0202 0CA0              ldd R0,y+36 
 0204 1DA0              ldd R1,y+37 
 0206 E00D              add R30,R0 
 0208 F11D              adc R31,R1 
 020A 2080              ldd R2,z+0 
 020C 3180              ldd R3,z+1 
 020E 4280              ldd R4,z+2 
 0210 5380              ldd R5,z+3 
 0212 FE01              movw R30,R28 
 0214 2082              std z+0,R2 
 0216 3182              std z+1,R3 
 0218 4282              std z+2,R4 
 021A 5382              std z+3,R5 
 021C                   .dbline 57 
 021C 04E0              ldi R16,4 
 021E 10E0              ldi R17,0 
 0220 9601              movw R18,R12 
 0222 0E940000          xcall empy16s 
 0226 F801              movw R30,R16 
 0228 0EA0              ldd R0,y+38 
 022A 1FA0              ldd R1,y+39 
 022C E00D              add R30,R0 
 022E F11D              adc R31,R1 
 0230 2080              ldd R2,z+0 
 0232 3180              ldd R3,z+1 
 0234 4280              ldd R4,z+2 
 0236 5380              ldd R5,z+3 
 0238 FE01              movw R30,R28 
 023A 2482              std z+4,R2 
 023C 3582              std z+5,R3 
 023E 4682              std z+6,R4 
 0240 5782              std z+7,R5 
 0242                   .dbline 58 
 0242 9601              movw R18,R12 
 0244 0E88              ldd R0,y+22 
 0246 1F88              ldd R1,y+23 
 0248 200D              add R18,R0 
 024A 311D              adc R19,R1 
 024C 04E0              ldi R16,4 
 024E 10E0              ldi R17,0 
 0250 0E940000          xcall empy16s 
 0254 F801              movw R30,R16 
 0256 0CA0              ldd R0,y+36 
 0258 1DA0              ldd R1,y+37 
 025A E00D              add R30,R0 
 025C F11D              adc R31,R1 
 025E 2080              ldd R2,z+0 
 0260 3180              ldd R3,z+1 
 0262 4280              ldd R4,z+2 
 0264 5380              ldd R5,z+3 
 0266 FE01              movw R30,R28 
 0268 2086              std z+8,R2 
 026A 3186              std z+9,R3 
 026C 4286              std z+10,R4 
 026E 5386              std z+11,R5 
 0270                   .dbline 59 
 0270 8701              movw R16,R14 
 0272 0E940000          xcall int2fp 
 0276 0E940000          xcall _cos 
 027A 1801              movw R2,R16 
 027C 2901              movw R4,R18 
 027E 8701              movw R16,R14 
 0280 0E940000          xcall int2fp 
 0284 2F92              push R2 
 0286 3F92              push R3 
 0288 4F92              push R4 
 028A 5F92              push R5 
 028C 0E940000          xcall _sin 
 0290 5F90              pop R5 
 0292 4F90              pop R4 
 0294 3F90              pop R3 
 0296 2F90              pop R2 
 0298 3801              movw R6,R16 
 029A 4901              movw R8,R18 
 029C 04E0              ldi R16,4 
 029E 10E0              ldi R17,0 
 02A0 9601              movw R18,R12 
 02A2 0E940000          xcall empy16s 
 02A6 C801              movw R24,R16 
 02A8 0CA0              ldd R0,y+36 
 02AA 1DA0              ldd R1,y+37 
 02AC 800D              add R24,R0 
 02AE 911D              adc R25,R1 
 02B0 FC01              movw R30,R24 
 02B2 4081              ldd R20,z+0 
 02B4 5181              ldd R21,z+1 
 02B6 6281              ldd R22,z+2 
 02B8 7381              ldd R23,z+3 
 02BA 7A93              st -y,R23 
 02BC 6A93              st -y,R22 
 02BE 5A93              st -y,R21 
 02C0 4A93              st -y,R20 
 02C2 9601              movw R18,R12 
 02C4            ; stack offset 4 
 02C4 0A8C              ldd R0,y+26 
 02C6 1B8C              ldd R1,y+27 
 02C8 200D              add R18,R0 
 02CA 311D              adc R19,R1 
 02CC 04E0              ldi R16,4 
 02CE 10E0              ldi R17,0 
 02D0 0E940000          xcall empy16s 
 02D4 F801              movw R30,R16 
 02D6            ; stack offset 4 
 02D6 08A4              ldd R0,y+40 
 02D8 19A4              ldd R1,y+41 
 02DA E00D              add R30,R0 
 02DC F11D              adc R31,R1 
 02DE 4081              ldd R20,z+0 
 02E0 5181              ldd R21,z+1 
 02E2 6281              ldd R22,z+2 
 02E4 7381              ldd R23,z+3 
 02E6 7A93              st -y,R23 
 02E8 6A93              st -y,R22 
 02EA 5A93              st -y,R21 
 02EC 4A93              st -y,R20 
 02EE 5A92              st -y,R5 
 02F0 4A92              st -y,R4 
 02F2 3A92              st -y,R3 
 02F4 2A92              st -y,R2 
 02F6 0E940000          xcall empy32fs 
 02FA 0E940000          xcall add32fs 
 02FE 9601              movw R18,R12 
 0300            ; stack offset 4 
 0300 0A8C              ldd R0,y+26 
 0302 1B8C              ldd R1,y+27 
 0304 200D              add R18,R0 
 0306 311D              adc R19,R1 
 0308 04E0              ldi R16,4 
 030A 10E0              ldi R17,0 
 030C 0E940000          xcall empy16s 
 0310 F801              movw R30,R16 
 0312            ; stack offset 4 
 0312 0AA4              ldd R0,y+42 
 0314 1BA4              ldd R1,y+43 
 0316 E00D              add R30,R0 
 0318 F11D              adc R31,R1 
 031A 2080              ldd R2,z+0 
 031C 3180              ldd R3,z+1 
 031E 4280              ldd R4,z+2 
 0320 5380              ldd R5,z+3 
 0322 5A92              st -y,R5 
 0324 4A92              st -y,R4 
 0326 3A92              st -y,R3 
 0328 2A92              st -y,R2 
 032A 9A92              st -y,R9 
 032C 8A92              st -y,R8 
 032E 7A92              st -y,R7 
 0330 6A92              st -y,R6 
 0332 0E940000          xcall empy32fs 
 0336 0E940000          xcall add32f 
 033A FC01              movw R30,R24 
 033C 0083              std z+0,R16 
 033E 1183              std z+1,R17 
 0340 2283              std z+2,R18 
 0342 3383              std z+3,R19 
 0344                   .dbline 60 
 0344 8701              movw R16,R14 
 0346 0E940000          xcall int2fp 
 034A 0E940000          xcall _sin 
 034E 1801              movw R2,R16 
 0350 2901              movw R4,R18 
 0352 8701              movw R16,R14 
 0354 0E940000          xcall int2fp 
 0358 2F92              push R2 
 035A 3F92              push R3 
 035C 4F92              push R4 
 035E 5F92              push R5 
 0360 0E940000          xcall _cos 
 0364 5F90              pop R5 
 0366 4F90              pop R4 
 0368 3F90              pop R3 
 036A 2F90              pop R2 
 036C 3801              movw R6,R16 
 036E 4901              movw R8,R18 
 0370 04E0              ldi R16,4 
 0372 10E0              ldi R17,0 
 0374 9601              movw R18,R12 
 0376 0E940000          xcall empy16s 
 037A C801              movw R24,R16 
 037C 0EA0              ldd R0,y+38 
 037E 1FA0              ldd R1,y+39 
 0380 800D              add R24,R0 
 0382 911D              adc R25,R1 
 0384 FC01              movw R30,R24 
 0386 4081              ldd R20,z+0 
 0388 5181              ldd R21,z+1 
 038A 6281              ldd R22,z+2 
 038C 7381              ldd R23,z+3 
 038E 7A93              st -y,R23 
 0390 6A93              st -y,R22 
 0392 5A93              st -y,R21 
 0394 4A93              st -y,R20 
 0396 9601              movw R18,R12 
 0398            ; stack offset 4 
 0398 0A8C              ldd R0,y+26 
 039A 1B8C              ldd R1,y+27 
 039C 200D              add R18,R0 
 039E 311D              adc R19,R1 
 03A0 04E0              ldi R16,4 
 03A2 10E0              ldi R17,0 
 03A4 0E940000          xcall empy16s 
 03A8 F801              movw R30,R16 
 03AA            ; stack offset 4 
 03AA 08A4              ldd R0,y+40 
 03AC 19A4              ldd R1,y+41 
 03AE E00D              add R30,R0 
 03B0 F11D              adc R31,R1 
 03B2 4081              ldd R20,z+0 
 03B4 5181              ldd R21,z+1 
 03B6 6281              ldd R22,z+2 
 03B8 7381              ldd R23,z+3 
 03BA 7A93              st -y,R23 
 03BC 6A93              st -y,R22 
 03BE 5A93              st -y,R21 
 03C0 4A93              st -y,R20 
 03C2 5A92              st -y,R5 
 03C4 4A92              st -y,R4 
 03C6 3A92              st -y,R3 
 03C8 2A92              st -y,R2 
 03CA 0E940000          xcall empy32fs 
 03CE 0E940000          xcall sub32fs 
 03D2 9601              movw R18,R12 
 03D4            ; stack offset 4 
 03D4 0A8C              ldd R0,y+26 
 03D6 1B8C              ldd R1,y+27 
 03D8 200D              add R18,R0 
 03DA 311D              adc R19,R1 
 03DC 04E0              ldi R16,4 
 03DE 10E0              ldi R17,0 
 03E0 0E940000          xcall empy16s 
 03E4 F801              movw R30,R16 
 03E6            ; stack offset 4 
 03E6 0AA4              ldd R0,y+42 
 03E8 1BA4              ldd R1,y+43 
 03EA E00D              add R30,R0 
 03EC F11D              adc R31,R1 
 03EE 2080              ldd R2,z+0 
 03F0 3180              ldd R3,z+1 
 03F2 4280              ldd R4,z+2 
 03F4 5380              ldd R5,z+3 
 03F6 5A92              st -y,R5 
 03F8 4A92              st -y,R4 
 03FA 3A92              st -y,R3 
 03FC 2A92              st -y,R2 
 03FE 9A92              st -y,R9 
 0400 8A92              st -y,R8 
 0402 7A92              st -y,R7 
 0404 6A92              st -y,R6 
 0406 0E940000          xcall empy32fs 
 040A 0E940000          xcall add32f 
 040E FC01              movw R30,R24 
 0410 0083              std z+0,R16 
 0412 1183              std z+1,R17 
 0414 2283              std z+2,R18 
 0416 3383              std z+3,R19 
 0418                   .dbline 61 
 0418 8701              movw R16,R14 
 041A 0E940000          xcall int2fp 
 041E 0E940000          xcall _cos 
 0422 1801              movw R2,R16 
 0424 2901              movw R4,R18 
 0426 8701              movw R16,R14 
 0428 0E940000          xcall int2fp 
 042C 2F92              push R2 
 042E 3F92              push R3 
 0430 4F92              push R4 
 0432 5F92              push R5 
 0434 0E940000          xcall _sin 
 0438 5F90              pop R5 
 043A 4F90              pop R4 
 043C 3F90              pop R3 
 043E 2F90              pop R2 
 0440 3801              movw R6,R16 
 0442 4901              movw R8,R18 
 0444 9601              movw R18,R12 
 0446 0E88              ldd R0,y+22 
 0448 1F88              ldd R1,y+23 
 044A 200D              add R18,R0 
 044C 311D              adc R19,R1 
 044E 04E0              ldi R16,4 
 0450 10E0              ldi R17,0 
 0452 0E940000          xcall empy16s 
 0456 C801              movw R24,R16 
 0458 0CA0              ldd R0,y+36 
 045A 1DA0              ldd R1,y+37 
 045C 800D              add R24,R0 
 045E 911D              adc R25,R1 
 0460 FE01              movw R30,R28 
 0462 4081              ldd R20,z+0 
 0464 5181              ldd R21,z+1 
 0466 6281              ldd R22,z+2 
 0468 7381              ldd R23,z+3 
 046A 7A93              st -y,R23 
 046C 6A93              st -y,R22 
 046E 5A93              st -y,R21 
 0470 4A93              st -y,R20 
 0472 FC01              movw R30,R24 
 0474 4081              ldd R20,z+0 
 0476 5181              ldd R21,z+1 
 0478 6281              ldd R22,z+2 
 047A 7381              ldd R23,z+3 
 047C 7A93              st -y,R23 
 047E 6A93              st -y,R22 
 0480 5A93              st -y,R21 
 0482 4A93              st -y,R20 
 0484 5A92              st -y,R5 
 0486 4A92              st -y,R4 
 0488 3A92              st -y,R3 
 048A 2A92              st -y,R2 
 048C 0E940000          xcall empy32fs 
 0490 0E940000          xcall sub32fs 
 0494 9601              movw R18,R12 
 0496            ; stack offset 4 
 0496 0A8C              ldd R0,y+26 
 0498 1B8C              ldd R1,y+27 
 049A 200D              add R18,R0 
 049C 311D              adc R19,R1 
 049E 04E0              ldi R16,4 
 04A0 10E0              ldi R17,0 
 04A2 0E940000          xcall empy16s 
 04A6 F801              movw R30,R16 
 04A8            ; stack offset 4 
 04A8 0AA4              ldd R0,y+42 
 04AA 1BA4              ldd R1,y+43 
 04AC E00D              add R30,R0 
 04AE F11D              adc R31,R1 
 04B0 2080              ldd R2,z+0 
 04B2 3180              ldd R3,z+1 
 04B4 4280              ldd R4,z+2 
 04B6 5380              ldd R5,z+3 
 04B8 5A92              st -y,R5 
 04BA 4A92              st -y,R4 
 04BC 3A92              st -y,R3 
 04BE 2A92              st -y,R2 
 04C0 9A92              st -y,R9 
 04C2 8A92              st -y,R8 
 04C4 7A92              st -y,R7 
 04C6 6A92              st -y,R6 
 04C8 0E940000          xcall empy32fs 
 04CC 0E940000          xcall sub32f 
 04D0 FC01              movw R30,R24 
 04D2 0083              std z+0,R16 
 04D4 1183              std z+1,R17 
 04D6 2283              std z+2,R18 
 04D8 3383              std z+3,R19 
 04DA                   .dbline 62 
 04DA 8701              movw R16,R14 
 04DC 0E940000          xcall int2fp 
 04E0 0E940000          xcall _sin 
 04E4 1801              movw R2,R16 
 04E6 2901              movw R4,R18 
 04E8 8701              movw R16,R14 
 04EA 0E940000          xcall int2fp 
 04EE 2F92              push R2 
 04F0 3F92              push R3 
 04F2 4F92              push R4 
 04F4 5F92              push R5 
 04F6 0E940000          xcall _cos 
 04FA 5F90              pop R5 
 04FC 4F90              pop R4 
 04FE 3F90              pop R3 
 0500 2F90              pop R2 
 0502 3801              movw R6,R16 
 0504 4901              movw R8,R18 
 0506 FE01              movw R30,R28 
 0508 4481              ldd R20,z+4 
 050A 5581              ldd R21,z+5 
 050C 6681              ldd R22,z+6 
 050E 7781              ldd R23,z+7 
 0510 7A93              st -y,R23 
 0512 6A93              st -y,R22 
 0514 5A93              st -y,R21 
 0516 4A93              st -y,R20 
 0518 FE01              movw R30,R28 
 051A            ; stack offset 4 
 051A 4485              ldd R20,z+12 
 051C 5585              ldd R21,z+13 
 051E 6685              ldd R22,z+14 
 0520 7785              ldd R23,z+15 
 0522 7A93              st -y,R23 
 0524 6A93              st -y,R22 
 0526 5A93              st -y,R21 
 0528 4A93              st -y,R20 
 052A 5A92              st -y,R5 
 052C 4A92              st -y,R4 
 052E 3A92              st -y,R3 
 0530 2A92              st -y,R2 
 0532 0E940000          xcall empy32fs 
 0536 0E940000          xcall add32fs 
 053A 9601              movw R18,R12 
 053C            ; stack offset 4 
 053C 0A8C              ldd R0,y+26 
 053E 1B8C              ldd R1,y+27 
 0540 200D              add R18,R0 
 0542 311D              adc R19,R1 
 0544 04E0              ldi R16,4 
 0546 10E0              ldi R17,0 
 0548 0E940000          xcall empy16s 
 054C F801              movw R30,R16 
 054E            ; stack offset 4 
 054E 0AA4              ldd R0,y+42 
 0550 1BA4              ldd R1,y+43 
 0552 E00D              add R30,R0 
 0554 F11D              adc R31,R1 
 0556 2080              ldd R2,z+0 
 0558 3180              ldd R3,z+1 
 055A 4280              ldd R4,z+2 
 055C 5380              ldd R5,z+3 
 055E 5A92              st -y,R5 
 0560 4A92              st -y,R4 
 0562 3A92              st -y,R3 
 0564 2A92              st -y,R2 
 0566 9A92              st -y,R9 
 0568 8A92              st -y,R8 
 056A 7A92              st -y,R7 
 056C 6A92              st -y,R6 
 056E 0E940000          xcall empy32fs 
 0572 0E940000          xcall sub32f 
 0576 9601              movw R18,R12 
 0578 0E88              ldd R0,y+22 
 057A 1F88              ldd R1,y+23 
 057C 200D              add R18,R0 
 057E 311D              adc R19,R1 
 0580 04E0              ldi R16,4 
 0582 10E0              ldi R17,0 
 0584 0E940000          xcall empy16s 
 0588 F801              movw R30,R16 
 058A 0EA0              ldd R0,y+38 
 058C 1FA0              ldd R1,y+39 
 058E E00D              add R30,R0 
 0590 F11D              adc R31,R1 
 0592 0083              std z+0,R16 
 0594 1183              std z+1,R17 
 0596 2283              std z+2,R18 
 0598 3383              std z+3,R19 
 059A                   .dbline 69 
 059A           L26: 
 059A                   .dbline 54 
 059A 02E0              ldi R16,2 
 059C 10E0              ldi R17,0 
 059E 2E89              ldd R18,y+22 
 05A0 3F89              ldd R19,y+23 
 05A2 0E940000          xcall empy16s 
 05A6 C00E              add R12,R16 
 05A8 D11E              adc R13,R17 
 05AA           L28: 
 05AA                   .dbline 54 
 05AA C601              movw R24,R12 
 05AC 8830              cpi R24,8 
 05AE E0E0              ldi R30,0 
 05B0 9E07              cpc R25,R30 
 05B2 0CF4              brge X2 
 05B4 02CE              xjmp L25 
 05B6           X2: 
 05B6                   .dbline 71 
 05B6           L19: 
 05B6                   .dbline 42 
 05B6 C501              movw R24,R10 
 05B8 0196              adiw R24,1 
 05BA 5C01              movw R10,R24 
 05BC           L21: 
 05BC                   .dbline 42 
 05BC 8E89              ldd R24,y+22 
 05BE 9F89              ldd R25,y+23 
 05C0 0197              sbiw R24,1 
 05C2 8A15              cp R24,R10 
 05C4 9B05              cpc R25,R11 
 05C6 0CF0              brlt X3 
 05C8 D6CD              xjmp L18 
 05CA           X3: 
 05CA                   .dbline 73 
 05CA           L12: 
 05CA                   .dbline 32 
 05CA 888D              ldd R24,y+24 
 05CC 998D              ldd R25,y+25 
 05CE 0196              adiw R24,1 
 05D0 998F              std y+25,R25 
 05D2 888F              std y+24,R24 
 05D4                   .dbline 32 
 05D4 83E0              ldi R24,3 
 05D6 90E0              ldi R25,0 
 05D8 088C              ldd R0,y+24 
 05DA 198C              ldd R1,y+25 
 05DC 8015              cp R24,R0 
 05DE 9105              cpc R25,R1 
 05E0 0CF0              brlt X4 
 05E2 AACD              xjmp L11 
 05E4           X4: 
 05E4                   .dbline 75 
 05E4           ;            {  p=2*PI*p/8; 
 05E4           ;               TR = dataR [ k ] ; 
 05E4           ;               TI = dataI [ k ] ;  
 05E4           ;               temp = dataR [ k + b ] ; 
 05E4           ;               dataR[k]=dataR[k]+dataR[k+b]*cos(p)+dataI[k+b]*sin(p); 
 05E4           ;               dataI[k]=dataI[k]-dataR[k+b]*sin(p)+dataI[k+b]*cos(p); 
 05E4           ;               dataR[k+b]=TR-dataR[k+b]*cos(p)-dataI[k+b]*sin(p); 
 05E4           ;               dataI[k+b]=TI+temp*sin(p)-dataI[k+b]*cos(p); 
 05E4           ;                          
 05E4           ;                          
 05E4           ;                         /*dataR [ k ] = dataR [ k ] + dataR [ k + b ] * cos_tab [ p ] + dataI [ k + b ] * sin_tab [ p ] ; 
 05E4           ;               dataI [ k ] = dataI [ k ] - dataR [ k + b ] * sin_tab [ p ] + dataI [ k + b ] * cos_tab [ p ] ; 
 05E4           ;               dataR [ k + b ] = TR - dataR [ k + b ] * cos_tab [ p ] - dataI [ k + b ] * sin_tab [ p ] ; 
 05E4           ;               dataI [ k + b ] = TI + temp * sin_tab [ p ] - dataI [ k + b ] * cos_tab [ p ] ;*/ 
 05E4           ;            } /* END for (3) */ 
 05E4           ;      
 05E4           ;      } /* END for (2) */ 
 05E4           ;    
 05E4           ;   } /* END for (1) */ 
 05E4           ;  
 05E4           ;   for ( i = 0 ; i < 32 ; i ++ ) 
 05E4 2224              clr R2 
 05E6 20922000          sts _i,R2 
 05EA 93C0              xjmp L34 
 05EC           L31: 
 05EC                   .dbline 76 
 05EC           ;     {                        /* 只需要32次以下的谐波进行分析 */ 
 05EC                   .dbline 77 
 05EC           ;       w [ i ] = sqrt ( dataR [ i ] * dataR [ i ] + dataI [ i ] * dataI [ i ] ) ; 
 05EC 20902000          lds R2,_i 
 05F0 84E0              ldi R24,4 
 05F2 829D              mul R24,R2 
 05F4 1001              movw R2,R0 
 05F6 F101              movw R30,R2 
 05F8 0CA0              ldd R0,y+36 
 05FA 1DA0              ldd R1,y+37 
 05FC E00D              add R30,R0 
 05FE F11D              adc R31,R1 
 0600 4080              ldd R4,z+0 
 0602 5180              ldd R5,z+1 
 0604 6280              ldd R6,z+2 
 0606 7380              ldd R7,z+3 
 0608 FE01              movw R30,R28 
 060A 4686              std z+14,R4 
 060C 5786              std z+15,R5 
 060E 608A              std z+16,R6 
 0610 718A              std z+17,R7 
 0612 F101              movw R30,R2 
 0614 0EA0              ldd R0,y+38 
 0616 1FA0              ldd R1,y+39 
 0618 E00D              add R30,R0 
 061A F11D              adc R31,R1 
 061C 2080              ldd R2,z+0 
 061E 3180              ldd R3,z+1 
 0620 4280              ldd R4,z+2 
 0622 5380              ldd R5,z+3 
 0624 FE01              movw R30,R28 
 0626 228A              std z+18,R2 
 0628 338A              std z+19,R3 
 062A 448A              std z+20,R4 
 062C 558A              std z+21,R5 
 062E FE01              movw R30,R28 
 0630 2684              ldd R2,z+14 
 0632 3784              ldd R3,z+15 
 0634 4088              ldd R4,z+16 
 0636 5188              ldd R5,z+17 
 0638 5A92              st -y,R5 
 063A 4A92              st -y,R4 
 063C 3A92              st -y,R3 
 063E 2A92              st -y,R2 
 0640 FE01              movw R30,R28 
 0642            ; stack offset 4 
 0642 2288              ldd R2,z+18 
 0644 3388              ldd R3,z+19 
 0646 4488              ldd R4,z+20 
 0648 5588              ldd R5,z+21 
 064A 5A92              st -y,R5 
 064C 4A92              st -y,R4 
 064E 3A92              st -y,R3 
 0650 2A92              st -y,R2 
 0652 0E940000          xcall empy32fs 
 0656 FE01              movw R30,R28 
 0658            ; stack offset 4 
 0658 2688              ldd R2,z+22 
 065A 3788              ldd R3,z+23 
 065C 408C              ldd R4,z+24 
 065E 518C              ldd R5,z+25 
 0660 5A92              st -y,R5 
 0662 4A92              st -y,R4 
 0664 3A92              st -y,R3 
 0666 2A92              st -y,R2 
 0668 FE01              movw R30,R28 
 066A            ; stack offset 8 
 066A 228C              ldd R2,z+26 
 066C 338C              ldd R3,z+27 
 066E 448C              ldd R4,z+28 
 0670 558C              ldd R5,z+29 
 0672 5A92              st -y,R5 
 0674 4A92              st -y,R4 
 0676 3A92              st -y,R3 
 0678 2A92              st -y,R2 
 067A 0E940000          xcall empy32fs 
 067E 0E940000          xcall add32f 
 0682 0E940000          xcall _sqrt 
 0686 1801              movw R2,R16 
 0688 2901              movw R4,R18 
 068A 3A93              st -y,R19 
 068C 2A93              st -y,R18 
 068E 1A93              st -y,R17 
 0690 0A93              st -y,R16 
 0692 00E0              ldi R16,L37 
 0696 0E940000          xcall lpm32 
 069A 3A93              st -y,R19 
 069C 2A93              st -y,R18 
 069E 1A93              st -y,R17 
 06A0 0A93              st -y,R16 
 06A2 0E940000          xcall cmp32f 
 06A6 ACF0              brlt L35 
 06A8 5A92              st -y,R5 
 06AA 4A92              st -y,R4 
 06AC 3A92              st -y,R3 
 06AE 2A92              st -y,R2 
 06B0 00E0              ldi R16,L37 
 06B4 0E940000          xcall lpm32 
 06B8 3A93              st -y,R19 
 06BA 2A93              st -y,R18 
 06BC 1A93              st -y,R17 
 06BE 0A93              st -y,R16 
 06C0 0E940000          xcall sub32f 
 06C4 0E940000          xcall fp2int 
 06C8 C801              movw R24,R16 
 06CA 8050              subi R24,0  ; offset = 32768 
 06CC 9048              sbci R25,128 
 06CE 7C01              movw R14,R24 
 06D0 05C0              xjmp L36 
 06D2           L35: 
 06D2 8101              movw R16,R2 
 06D4 9201              movw R18,R4 
 06D6 0E940000          xcall fp2int 
 06DA 7801              movw R14,R16 
 06DC           L36: 
 06DC 80E0              ldi R24,<_w 
 06DE 90E0              ldi R25,>_w 
 06E0 E0912000          lds R30,_i 
 06E4 FF27              clr R31 
 06E6 E80F              add R30,R24 
 06E8 F91F              adc R31,R25 
 06EA E082              std z+0,R14 
 06EC                   .dbline 78 
 06EC           ;         if ( i ) 
 06EC 60902000          lds R6,_i 
 06F0 6620              tst R6 
 06F2 51F0              breq L38 
 06F4                   .dbline 79 
 06F4           ;            { 
 06F4                   .dbline 80 
 06F4           ;              w [ i ] = w [ i ] / 64 ; 
 06F4 7724              clr R7 
 06F6 680E              add R6,R24 
 06F8 791E              adc R7,R25 
 06FA 10E4              ldi R17,64 
 06FC F301              movw R30,R6 
 06FE 0081              ldd R16,z+0 
 0700 0E940000          xcall div8u 
 0704 F301              movw R30,R6 
 0706 0083              std z+0,R16 
 0708                   .dbline 81 
 0708           ;            } 
 0708           L38: 
 0708                   .dbline 82 
 0708           L32: 
 0708                   .dbline 75 
 0708 80912000          lds R24,_i 
 070C 8F5F              subi R24,255    ; addi 1 
 070E 80932000          sts _i,R24 
 0712           L34: 
 0712                   .dbline 75 
 0712 80912000          lds R24,_i 
 0716 8032              cpi R24,32 
 0718 08F4              brsh X5 
 071A 68CF              xjmp L31 
 071C           X5: 
 071C                   .dbline 83 
 071C           ;      } 
 071C           ;    w [ 0 ] = w [ 0 ] / 2 ; 
 071C 60900000          lds R6,_w 
 0720 6694              lsr R6 
 0722 60920000          sts _w,R6 
 0726                   .dbline -2 
 0726           L1: 
 0726 6A96              adiw R28,26 
 0728 0E940000          xcall pop_gset5 
 072C 2496              adiw R28,4 
 072E                   .dbline 0 ; func end 
 072E 0895              ret 
 0730                   .dbsym l xx 12 I 
 0730                   .dbsym r x2 14 I 
 0730                   .dbsym r x1 10 I 
 0730                   .dbsym r x0 12 I 
 0730                   .dbsym l L 24 I 
 0730                   .dbsym r j 10 I 
 0730                   .dbsym l temp 8 D 
 0730                   .dbsym l TI 4 D 
 0730                   .dbsym l TR 0 D 
 0730                   .dbsym l b 22 I 
 0730                   .dbsym r p 14 I 
 0730                   .dbsym r k 12 I 
 0730                   .dbsym l dataI 38 pD 
 0730                   .dbsym l dataR 36 pD 
 0730                   .dbend 
 0730                   .dbfunc e main _main fV 
                        .even 
 0730           _main:: 
 0730                   .dbline -1 
 0730                   .dbline 88 
 0730           ;  
 0730           ; }  
 0730           ;  
 0730           ; void main() 
 0730           ; { 
 0730                   .dbline 89 
 0730           ;  FFT(dataR,dataI); 
 0730 20E0              ldi R18,<_dataI 
 0732 30E0              ldi R19,>_dataI 
 0734 00E0              ldi R16,<_dataR 
 0736 10E0              ldi R17,>_dataR 
 0738 63DC              xcall _FFT 
 073A           L41: 
 073A                   .dbline 90 
 073A           L42: 
 073A                   .dbline 90 
 073A FFCF              xjmp L41 
 073C           X6: 
 073C                   .dbline -2 
 073C           L40: 
 073C                   .dbline 0 ; func end 
 073C 0895              ret 
 073E                   .dbend 
                        .area bss(ram, con, rel) 
 0000                   .dbfile D:\HJN\Design\AVR\fft\ff.c 
 0000           _w:: 
 0000                   .blkb 32 
 0020                   .dbsym e w _w A[32:32]c 
 0020           _i:: 
 0020                   .blkb 1 
 0021                   .dbsym e i _i c 
                        .area lit(rom, con, rel) 
 0000           L37: 
 0000 00000047          .word 0x0,0x4700 
 0004           L30: 
 0004 00000041          .word 0x0,0x4100 
 0008           L29: 
 0008 DA0FC940          .word 0xfda,0x40c9 
 000C           L10: 
 000C 00000000          .word 0x0,0x0