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

📄 fftbook.lis

📁 在ICCAVR 环境实现的fft,
💻 LIS
📖 第 1 页 / 共 4 页
字号:
                        .module fftbook.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\fftbook.c
 0020                   .dbsym e dataR _dataR A[32:16]I
                        .area text(rom, con, rel)
 0000                   .dbfile D:\HJN\Design\AVR\fft\fftbook.c
 0000                   .dbfunc e CHANGE _CHANGE fV
 0000           ;             b6 -> R22,R23
 0000           ;             b5 -> R22,R23
 0000           ;             b4 -> R22,R23
 0000           ;            all -> R20,R21
 0000           ;             b3 -> R22,R23
 0000           ;             b2 -> R10,R11
 0000           ;             b1 -> R14,R15
 0000           ;             b0 -> R12,R13
                        .even
 0000           _CHANGE::
 0000 0E940000          xcall push_gset5
 0004                   .dbline -1
 0004                   .dbline 15
 0004           ; #include <math.h>
 0004           ; #define uint unsigned int
 0004           ; #define uchar unsigned char
 0004           ; #define PI 3.1415926
 0004           ; 
 0004           ; uint x0,x1,x2,x3,x4,x5,x6;
 0004           ; int L,i,j,k,b,p;
 0004           ; uchar w[32];
 0004           ; uint TR,TI,temp;
 0004           ; 
 0004           ; int dataR[]={5,5,5,5,0,0,0,0,5,5,5,5,0,0,0,0};
 0004           ; int dataI[16];
 0004           ; 
 0004           ; void CHANGE()
 0004           ;  {                              //i为原始存放位置,最后得invert_pos为倒位序存放位置
 0004                   .dbline 17
 0004           ;   int b0 , b1 , b2 , b3 , b4 , b5 , b6 , all;
 0004           ;       b0 = b1 = b2 = b3 = b4 = b5 = b6 = all = 0;
 0004 4427              clr R20
 0006 5527              clr R21
 0008 6627              clr R22
 000A 7727              clr R23
 000C AA24              clr R10
 000E BB24              clr R11
 0010 EE24              clr R14
 0012 FF24              clr R15
 0014 CC24              clr R12
 0016 DD24              clr R13
 0018                   .dbline 18
 0018           ;   b0  = i&0x01; 
 0018 80914E00          lds R24,_i
 001C 90914F00          lds R25,_i+1
 0020 8170              andi R24,1
 0022 9070              andi R25,0
 0024 6C01              movw R12,R24
 0026                   .dbline 19
 0026           ;   b1  = (i>>1)&0x01; 
 0026 80914E00          lds R24,_i
 002A 90914F00          lds R25,_i+1
 002E 9595              asr R25
 0030 8795              ror R24
 0032 8170              andi R24,1
 0034 9070              andi R25,0
 0036 7C01              movw R14,R24
 0038                   .dbline 20
 0038           ;   b2  = (i>>2)&0x01;
 0038 80914E00          lds R24,_i
 003C 90914F00          lds R25,_i+1
 0040 9595              asr R25
 0042 8795              ror R24
 0044 9595              asr R25
 0046 8795              ror R24
 0048 8170              andi R24,1
 004A 9070              andi R25,0
 004C 5C01              movw R10,R24
 004E                   .dbline 21
 004E           ;   b3  = (i>>3)&0x01;
 004E 60914E00          lds R22,_i
 0052 70914F00          lds R23,_i+1
 0056 7595              asr R23
 0058 6795              ror R22
 005A 7595              asr R23
 005C 6795              ror R22
 005E 7595              asr R23
 0060 6795              ror R22
 0062 6170              andi R22,1
 0064 7070              andi R23,0
 0066                   .dbline 25
 0066           ;  // b4  = (i>>4)&0x01;
 0066           ;   //b5  = (i>>5)&0x01;
 0066           ;  // b6  = (i>>6)&0x01;
 0066           ;   all = b0*8 + b1*4 + b2*2 + b3;   //*8 + b4*4 + b5*2 + b6;
 0066 04E0              ldi R16,4
 0068 10E0              ldi R17,0
 006A 9701              movw R18,R14
 006C 0E940000          xcall empy16s
 0070 1801              movw R2,R16
 0072 08E0              ldi R16,8
 0074 10E0              ldi R17,0
 0076 9601              movw R18,R12
 0078 0E940000          xcall empy16s
 007C A801              movw R20,R16
 007E 420D              add R20,R2
 0080 531D              adc R21,R3
 0082 02E0              ldi R16,2
 0084 10E0              ldi R17,0
 0086 9501              movw R18,R10
 0088 0E940000          xcall empy16s
 008C 400F              add R20,R16
 008E 511F              adc R21,R17
 0090 460F              add R20,R22
 0092 571F              adc R21,R23
 0094                   .dbline 26
 0094           ;   dataI[all] = dataR[i];
 0094 20914E00          lds R18,_i
 0098 30914F00          lds R19,_i+1
 009C 02E0              ldi R16,2
 009E 10E0              ldi R17,0
 00A0 0E940000          xcall empy16s
 00A4 F801              movw R30,R16
 00A6 80E0              ldi R24,<_dataR
 00A8 90E0              ldi R25,>_dataR
 00AA E80F              add R30,R24
 00AC F91F              adc R31,R25
 00AE 2080              ldd R2,z+0
 00B0 3180              ldd R3,z+1
 00B2 02E0              ldi R16,2
 00B4 10E0              ldi R17,0
 00B6 9A01              movw R18,R20
 00B8 0E940000          xcall empy16s
 00BC F801              movw R30,R16
 00BE 80E0              ldi R24,<_dataI
 00C0 90E0              ldi R25,>_dataI
 00C2 E80F              add R30,R24
 00C4 F91F              adc R31,R25
 00C6 3182              std z+1,R3
 00C8 2082              std z+0,R2
 00CA                   .dbline -2
 00CA           L1:
 00CA 0E940000          xcall pop_gset5
 00CE                   .dbline 0 ; func end
 00CE 0895              ret
 00D0                   .dbsym r b6 22 I
 00D0                   .dbsym r b5 22 I
 00D0                   .dbsym r b4 22 I
 00D0                   .dbsym r all 20 I
 00D0                   .dbsym r b3 22 I
 00D0                   .dbsym r b2 10 I
 00D0                   .dbsym r b1 14 I
 00D0                   .dbsym r b0 12 I
 00D0                   .dbend
 00D0                   .dbfunc e FFTT _FFTT fV
                        .even
 00D0           _FFTT::
 00D0                   .dbline -1
 00D0                   .dbline 31
 00D0           ;  }
 00D0           ; 
 00D0           ;  
 00D0           ; void FFTT()
 00D0           ;  {  TR=dataR[k]; 
 00D0                   .dbline 31
 00D0 20914A00          lds R18,_k
 00D4 30914B00          lds R19,_k+1
 00D8 02E0              ldi R16,2
 00DA 10E0              ldi R17,0
 00DC 0E940000          xcall empy16s
 00E0 F801              movw R30,R16
 00E2 80E0              ldi R24,<_dataR
 00E4 90E0              ldi R25,>_dataR
 00E6 E80F              add R30,R24
 00E8 F91F              adc R31,R25
 00EA 2080              ldd R2,z+0
 00EC 3180              ldd R3,z+1
 00EE 30922500          sts _TR+1,R3
 00F2 20922400          sts _TR,R2
 00F6                   .dbline 32
 00F6           ;     TI=dataI[k];
 00F6 20914A00          lds R18,_k
 00FA 30914B00          lds R19,_k+1
 00FE 02E0              ldi R16,2
 0100 10E0              ldi R17,0
 0102 0E940000          xcall empy16s
 0106 F801              movw R30,R16
 0108 80E0              ldi R24,<_dataI
 010A 90E0              ldi R25,>_dataI
 010C E80F              add R30,R24
 010E F91F              adc R31,R25
 0110 2080              ldd R2,z+0
 0112 3180              ldd R3,z+1
 0114 30922300          sts _TI+1,R3
 0118 20922200          sts _TI,R2
 011C                   .dbline 33
 011C           ;     temp=dataR[k+b]; 
 011C 20904800          lds R2,_b
 0120 30904900          lds R3,_b+1
 0124 20914A00          lds R18,_k
 0128 30914B00          lds R19,_k+1
 012C 220D              add R18,R2
 012E 331D              adc R19,R3
 0130 02E0              ldi R16,2
 0132 10E0              ldi R17,0
 0134 0E940000          xcall empy16s
 0138 F801              movw R30,R16
 013A 80E0              ldi R24,<_dataR
 013C 90E0              ldi R25,>_dataR
 013E E80F              add R30,R24
 0140 F91F              adc R31,R25
 0142 2080              ldd R2,z+0
 0144 3180              ldd R3,z+1
 0146 30922100          sts _temp+1,R3
 014A 20922000          sts _temp,R2
 014E                   .dbline 34
 014E           ;     dataR[k]=dataR[k]+dataR[k+b]*cos(2*PI*p/16)+dataI[k+b]*sin(2*PI*p/16);
 014E 00E0              ldi R16,<L3
 0150 10E0              ldi R17,>L3
 0152 0E940000          xcall lpm32
 0156 3A93              st -y,R19
 0158 2A93              st -y,R18
 015A 1A93              st -y,R17
 015C 0A93              st -y,R16
 015E 00914600          lds R16,_p
 0162 10914700          lds R17,_p+1
 0166 0E940000          xcall int2fp
 016A 3A93              st -y,R19
 016C 2A93              st -y,R18
 016E 1A93              st -y,R17
 0170 0A93              st -y,R16
 0172 0E940000          xcall empy32fs
 0176 00E0              ldi R16,<L4
 0178 10E0              ldi R17,>L4
 017A 0E940000          xcall lpm32
 017E 3A93              st -y,R19
 0180 2A93              st -y,R18
 0182 1A93              st -y,R17
 0184 0A93              st -y,R16
 0186 0E940000          xcall div32f
 018A 0E940000          xcall _cos
 018E 1801              movw R2,R16
 0190 2901              movw R4,R18
 0192 00E0              ldi R16,<L3
 0194 10E0              ldi R17,>L3
 0196 0E940000          xcall lpm32
 019A 3A93              st -y,R19
 019C 2A93              st -y,R18
 019E 1A93              st -y,R17
 01A0 0A93              st -y,R16
 01A2 00914600          lds R16,_p
 01A6 10914700          lds R17,_p+1
 01AA 0E940000          xcall int2fp
 01AE 3A93              st -y,R19
 01B0 2A93              st -y,R18
 01B2 1A93              st -y,R17
 01B4 0A93              st -y,R16
 01B6 0E940000          xcall empy32fs
 01BA 00E0              ldi R16,<L4
 01BC 10E0              ldi R17,>L4
 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 0E940000          xcall div32f
 01CE 2F92              push R2
 01D0 3F92              push R3
 01D2 4F92              push R4
 01D4 5F92              push R5
 01D6 0E940000          xcall _sin
 01DA 5F90              pop R5
 01DC 4F90              pop R4
 01DE 3F90              pop R3
 01E0 2F90              pop R2
 01E2 3801              movw R6,R16
 01E4 4901              movw R8,R18
 01E6 20914A00          lds R18,_k
 01EA 30914B00          lds R19,_k+1
 01EE 02E0              ldi R16,2
 01F0 10E0              ldi R17,0
 01F2 0E940000          xcall empy16s
 01F6 80E0              ldi R24,<_dataR

⌨️ 快捷键说明

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