⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fffff.lis

📁 在ICCAVR 环境实现的fft,
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .module fffff.c
                        .area data(ram, con, rel)
 0000           _dataR::
 0000                   .blkb 2
                        .area idata
 0000 0500              .word 5
                        .area data(ram, con, rel)
 0002                   .blkb 2
                        .area idata
 0002 0500              .word 5
                        .area data(ram, con, rel)
 0004                   .blkb 2
                        .area idata
 0004 0500              .word 5
                        .area data(ram, con, rel)
 0006                   .blkb 2
                        .area idata
 0006 0500              .word 5
                        .area data(ram, con, rel)
 0008                   .blkb 2
                        .area idata
 0008 0000              .word 0
                        .area data(ram, con, rel)
 000A                   .blkb 2
                        .area idata
 000A 0000              .word 0
                        .area data(ram, con, rel)
 000C                   .blkb 2
                        .area idata
 000C 0000              .word 0
                        .area data(ram, con, rel)
 000E                   .blkb 2
                        .area idata
 000E 0000              .word 0
                        .area data(ram, con, rel)
 0010                   .blkb 2
                        .area idata
 0010 0500              .word 5
                        .area data(ram, con, rel)
 0012                   .blkb 2
                        .area idata
 0012 0500              .word 5
                        .area data(ram, con, rel)
 0014                   .blkb 2
                        .area idata
 0014 0500              .word 5
                        .area data(ram, con, rel)
 0016                   .blkb 2
                        .area idata
 0016 0500              .word 5
                        .area data(ram, con, rel)
 0018                   .blkb 2
                        .area idata
 0018 0000              .word 0
                        .area data(ram, con, rel)
 001A                   .blkb 2
                        .area idata
 001A 0000              .word 0
                        .area data(ram, con, rel)
 001C                   .blkb 2
                        .area idata
 001C 0000              .word 0
                        .area data(ram, con, rel)
 001E                   .blkb 2
                        .area idata
 001E 0000              .word 0
                        .area data(ram, con, rel)
 0020                   .dbfile D:\HJN\Design\AVR\fft\fffff.c
 0020                   .dbsym e dataR _dataR A[32:16]I
                        .area text(rom, con, rel)
 0000                   .dbfile D:\HJN\Design\AVR\fft\fffff.c
 0000                   .dbfunc e FFT _FFT fV
 0000           ;             x6 -> y+22
 0000           ;             x5 -> y+20
 0000           ;             x4 -> y+18
 0000           ;             xx -> y+16
 0000           ;             x3 -> y+14
 0000           ;             x2 -> y+12
 0000           ;             x1 -> R12,R13
 0000           ;             x0 -> R10,R11
 0000           ;              L -> y+27
 0000           ;              j -> R14,R15
 0000           ;           temp -> y+8
 0000           ;             TI -> y+4
 0000           ;             TR -> y+0
 0000           ;              i -> y+26
 0000           ;              p -> R10,R11
 0000           ;              b -> y+24
 0000           ;              k -> R12,R13
 0000           ;          dataI -> y+41
 0000           ;          dataR -> y+39
                        .even
 0000           _FFT::
 0000 0E940000          xcall push_arg4
 0004 0E940000          xcall push_gset5
 0008 6D97              sbiw R28,29
 000A                   .dbline -1
 000A                   .dbline 11
 000A           ; #include <iom128v.h>
 000A           ; #include <math.h>
 000A           ; #define PI 3.1415926
 000A           ; #define qq PI/8
 000A           ; 
 000A           ; int dataR[]={5,5,5,5,0,0,0,0,5,5,5,5,0,0,0,0};
 000A           ; int dataI[16],w[32];
 000A           ; 
 000A           ; 
 000A           ; void FFT(int dataR[],int dataI[])
 000A           ; {int x0,x1,x2,x3,x4,x5,x6,xx;
 000A                   .dbline 16
 000A           ;  unsigned char i;
 000A           ;  int L,j,k,b,p;
 000A           ;  float TR,TI,temp;
 000A           ; /********** following code invert sequence ************/
 000A           ; for(i=0;i<16;i++)
 000A 0024              clr R0
 000C 0A8E              std y+26,R0
 000E 67C0              xjmp L5
 0010           L2:
 0010                   .dbline 17
 0010                   .dbline 17
 0010 2224              clr R2
 0012 3324              clr R3
 0014 3F8A              std y+23,R3
 0016 2E8A              std y+22,R2
 0018 3D8A              std y+21,R3
 001A 2C8A              std y+20,R2
 001C 3B8A              std y+19,R3
 001E 2A8A              std y+18,R2
 0020 3F86              std y+15,R3
 0022 2E86              std y+14,R2
 0024 3D86              std y+13,R3
 0026 2C86              std y+12,R2
 0028 CC24              clr R12
 002A DD24              clr R13
 002C AA24              clr R10
 002E BB24              clr R11
 0030                   .dbline 18
 0030 8A8D              ldd R24,y+26
 0032 9927              clr R25
 0034 8170              andi R24,1
 0036 9070              andi R25,0
 0038 5C01              movw R10,R24
 003A                   .dbline 18
 003A 8A8D              ldd R24,y+26
 003C 9927              clr R25
 003E 9595              asr R25
 0040 8795              ror R24
 0042 8170              andi R24,1
 0044 9070              andi R25,0
 0046 6C01              movw R12,R24
 0048                   .dbline 18
 0048 8A8D              ldd R24,y+26
 004A 9927              clr R25
 004C 9595              asr R25
 004E 8795              ror R24
 0050 9595              asr R25
 0052 8795              ror R24
 0054 8170              andi R24,1
 0056 9070              andi R25,0
 0058 9D87              std y+13,R25
 005A 8C87              std y+12,R24
 005C                   .dbline 18
 005C 8A8D              ldd R24,y+26
 005E 9927              clr R25
 0060 9595              asr R25
 0062 8795              ror R24
 0064 9595              asr R25
 0066 8795              ror R24
 0068 9595              asr R25
 006A 8795              ror R24
 006C 8170              andi R24,1
 006E 9070              andi R25,0
 0070 9F87              std y+15,R25
 0072 8E87              std y+14,R24
 0074                   .dbline 20
 0074 04E0              ldi R16,4
 0076 10E0              ldi R17,0
 0078 9601              movw R18,R12
 007A 0E940000          xcall empy16s
 007E 1801              movw R2,R16
 0080 08E0              ldi R16,8
 0082 10E0              ldi R17,0
 0084 9501              movw R18,R10
 0086 0E940000          xcall empy16s
 008A 2801              movw R4,R16
 008C 420C              add R4,R2
 008E 531C              adc R5,R3
 0090 2C85              ldd R18,y+12
 0092 3D85              ldd R19,y+13
 0094 02E0              ldi R16,2
 0096 10E0              ldi R17,0
 0098 0E940000          xcall empy16s
 009C 400E              add R4,R16
 009E 511E              adc R5,R17
 00A0 2E84              ldd R2,y+14
 00A2 3F84              ldd R3,y+15
 00A4 420C              add R4,R2
 00A6 531C              adc R5,R3
 00A8 598A              std y+17,R5
 00AA 488A              std y+16,R4
 00AC                   .dbline 21
 00AC 82E0              ldi R24,2
 00AE 0A8C              ldd R0,y+26
 00B0 809D              mul R24,R0
 00B2 F001              movw R30,R0
 00B4 0FA0              ldd R0,y+39
 00B6 18A4              ldd R1,y+40
 00B8 E00D              add R30,R0
 00BA F11D              adc R31,R1
 00BC 2080              ldd R2,z+0
 00BE 3180              ldd R3,z+1
 00C0 9201              movw R18,R4
 00C2 02E0              ldi R16,2
 00C4 10E0              ldi R17,0
 00C6 0E940000          xcall empy16s
 00CA F801              movw R30,R16
 00CC 09A4              ldd R0,y+41
 00CE 1AA4              ldd R1,y+42
 00D0 E00D              add R30,R0
 00D2 F11D              adc R31,R1
 00D4 3182              std z+1,R3
 00D6 2082              std z+0,R2
 00D8                   .dbline 22
 00D8           L3:
 00D8                   .dbline 16
 00D8 0A8C              ldd R0,y+26
 00DA 0394              inc R0
 00DC 0A8E              std y+26,R0
 00DE           L5:
 00DE                   .dbline 16
 00DE 8A8D              ldd R24,y+26
 00E0 8031              cpi R24,16
 00E2 08F4              brsh X0
 00E4 95CF              xjmp L2
 00E6           X0:
 00E6                   .dbline 23
 00E6           ; { x0=x1=x2=x3=x4=x5=x6=0;
 00E6           ; x0=i&0x01; x1=(i>>1)&0x01; x2=(i>>2)&0x01; x3=(i>>3)&0x01;
 00E6           ; //x4=(i>>4)&0x01; x5=(i>>5)&0x01; x6=(i>>6)&0x01;
 00E6           ; xx=x0*8+x1*4+x2*2+x3;
 00E6           ; dataI[xx]=dataR[i];
 00E6           ; }
 00E6           ; for(i=0;i<16;i++)
 00E6 0024              clr R0
 00E8 0A8E              std y+26,R0
 00EA 20C0              xjmp L9
 00EC           L6:
 00EC                   .dbline 24
 00EC                   .dbline 24
 00EC 82E0              ldi R24,2
 00EE 0A8C              ldd R0,y+26
 00F0 809D              mul R24,R0
 00F2 1001              movw R2,R0
 00F4 F101              movw R30,R2
 00F6 09A4              ldd R0,y+41
 00F8 1AA4              ldd R1,y+42
 00FA E00D              add R30,R0
 00FC F11D              adc R31,R1
 00FE 4080              ldd R4,z+0
 0100 5180              ldd R5,z+1
 0102 F101              movw R30,R2
 0104 0FA0              ldd R0,y+39
 0106 18A4              ldd R1,y+40
 0108 E00D              add R30,R0
 010A F11D              adc R31,R1
 010C 5182              std z+1,R5
 010E 4082              std z+0,R4
 0110                   .dbline 24
 0110 0A8C              ldd R0,y+26
 0112 809D              mul R24,R0
 0114 F001              movw R30,R0
 0116 09A4              ldd R0,y+41
 0118 1AA4              ldd R1,y+42
 011A E00D              add R30,R0
 011C F11D              adc R31,R1
 011E 2224              clr R2
 0120 3324              clr R3
 0122 3182              std z+1,R3
 0124 2082              std z+0,R2
 0126                   .dbline 24
 0126           L7:
 0126                   .dbline 23
 0126 0A8C              ldd R0,y+26
 0128 0394              inc R0
 012A 0A8E              std y+26,R0
 012C           L9:
 012C                   .dbline 23
 012C 8A8D              ldd R24,y+26
 012E 8031              cpi R24,16
 0130 E8F2              brlo L6
 0132                   .dbline 26
 0132 81E0              ldi R24,1
 0134 90E0              ldi R25,0
 0136 9C8F              std y+28,R25
 0138 8B8F              std y+27,R24
 013A           L10:
 013A                   .dbline 26
 013A           ; { dataR[i]=dataI[i]; dataI[i]=0; }
 013A           ; /************** following code FFT *******************/
 013A           ; for(L=1;L<=4;L++) { /* for(1) */
 013A                   .dbline 27
 013A           ; b=1; i=L-1;
 013A 81E0              ldi R24,1
 013C 90E0              ldi R25,0
 013E 998F              std y+25,R25
 0140 888F              std y+24,R24
 0142                   .dbline 27
 0142 8B8D              ldd R24,y+27
 0144 9C8D              ldd R25,y+28
 0146 0197              sbiw R24,1
 0148 8A8F              std y+26,R24
 014A 0BC0              xjmp L15
 014C           L14:
 014C                   .dbline 29
 014C                   .dbline 29
 014C 02E0              ldi R16,2
 014E 10E0              ldi R17,0
 0150 288D              ldd R18,y+24
 0152 398D              ldd R19,y+25
 0154 0E940000          xcall empy16s
 0158 198F              std y+25,R17
 015A 088F              std y+24,R16
 015C                   .dbline 29
 015C 0A8C              ldd R0,y+26
 015E 0A94              dec R0
 0160 0A8E              std y+26,R0
 0162                   .dbline 29
 0162           L15:
 0162                   .dbline 28
 0162           ; while(i>0) 
 0162 2224              clr R2
 0164 0A8C              ldd R0,y+26
 0166 2014              cp R2,R0
 0168 88F3              brlo L14
 016A                   .dbline 30
 016A           ; {b=b*2; i--;} /* b= 2^(L-1) */
 016A           ; for(j=0;j<=b-1;j++) /* for (2) */
 016A EE24              clr R14
 016C FF24              clr R15
 016E 72C2              xjmp L20
 0170           L17:
 0170                   .dbline 31
 0170           ; { p=1; i=4-L;
 0170                   .dbline 31
 0170 81E0              ldi R24,1
 0172 90E0              ldi R25,0
 0174 5C01              movw R10,R24
 0176                   .dbline 31
 0176 84E0              ldi R24,4
 0178 0B8C              ldd R0,y+27
 017A 1C8C              ldd R1,y+28
 017C 8019              sub R24,R0
 017E 9109              sbc R25,R1
 0180 8A8F              std y+26,R24
 0182 09C0              xjmp L22
 0184           L21:
 0184                   .dbline 33
 0184                   .dbline 33
 0184 02E0              ldi R16,2
 0186 10E0              ldi R17,0
 0188 9501              movw R18,R10
 018A 0E940000          xcall empy16s
 018E 5801              movw R10,R16
 0190                   .dbline 33
 0190 0A8C              ldd R0,y+26
 0192 0A94              dec R0
 0194 0A8E              std y+26,R0
 0196                   .dbline 33
 0196           L22:
 0196                   .dbline 32
 0196           ; while(i>0) /* p=pow(2,7-L)*j; */
 0196 2224              clr R2
 0198 0A8C              ldd R0,y+26
 019A 2014              cp R2,R0
 019C 98F3              brlo L21
 019E                   .dbline 34
 019E           ; {p=p*2; i--;}
 019E           ; p=p*j;for(k=j;k<16;k=k+2*b) /* for (3) */
 019E 9701              movw R18,R14

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -