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

📄 fftbook.lst

📁 在ICCAVR 环境实现的fft,
💻 LST
📖 第 1 页 / 共 5 页
字号:
__text_start:
__start:
    006B E5CF      LDI	R28,0x5F
    006C E0D4      LDI	R29,4
    006D BFCD      OUT	0x3D,R28
    006E BFDE      OUT	0x3E,R29
    006F 51C0      SUBI	R28,0x10
    0070 40D0      SBCI	R29,0
    0071 EA0A      LDI	R16,0xAA
    0072 8308      STD	Y+0,R16
    0073 2400      CLR	R0
    0074 E8E0      LDI	R30,0x80
    0075 E0F0      LDI	R31,0
    0076 E010      LDI	R17,0
    0077 3EE2      CPI	R30,0xE2
    0078 07F1      CPC	R31,R17
    0079 F011      BEQ	0x007C
    007A 9201      ST	R0,Z+
    007B CFFB      RJMP	0x0077
    007C 8300      STD	Z+0,R16
    007D EBE6      LDI	R30,0xB6
    007E E0F0      LDI	R31,0
    007F E6A0      LDI	R26,0x60
    0080 E0B0      LDI	R27,0
    0081 E010      LDI	R17,0
    0082 3DE6      CPI	R30,0xD6
    0083 07F1      CPC	R31,R17
    0084 F021      BEQ	0x0089
    0085 95C8      LPM
    0086 9631      ADIW	R30,1
    0087 920D      ST	R0,X+
    0088 CFF9      RJMP	0x0082
    0089 940E05AF  CALL	_main
_exit:
    008B CFFF      RJMP	_exit
_CHANGE:
  b6                   --> R22
  b5                   --> R22
  b4                   --> R22
  all                  --> R20
  b3                   --> R22
  b2                   --> R10
  b1                   --> R14
  b0                   --> R12
    008C 940E0626  CALL	push_gset5
FILE: D:\HJN\Design\AVR\fft\fftbook.c
(0001) #include <math.h>
(0002) #define uint unsigned int
(0003) #define uchar unsigned char
(0004) #define PI 3.1415926
(0005) 
(0006) uint x0,x1,x2,x3,x4,x5,x6;
(0007) int L,i,j,k,b,p;
(0008) uchar w[32];
(0009) uint TR,TI,temp;
(0010) 
(0011) int dataR[]={5,5,5,5,0,0,0,0,5,5,5,5,0,0,0,0};
(0012) int dataI[16];
(0013) 
(0014) void CHANGE()
(0015)  {                              //i为原始存放位置,最后得invert_pos为倒位序存放位置
(0016)   int b0 , b1 , b2 , b3 , b4 , b5 , b6 , all;
(0017)       b0 = b1 = b2 = b3 = b4 = b5 = b6 = all = 0;
    008E 2744      CLR	R20
    008F 2755      CLR	R21
    0090 2766      CLR	R22
    0091 2777      CLR	R23
    0092 24AA      CLR	R10
    0093 24BB      CLR	R11
    0094 24EE      CLR	R14
    0095 24FF      CLR	R15
    0096 24CC      CLR	R12
    0097 24DD      CLR	R13
(0018)   b0  = i&0x01; 
    0098 918000CE  LDS	R24,i
    009A 919000CF  LDS	R25,i+1
    009C 7081      ANDI	R24,1
    009D 7090      ANDI	R25,0
    009E 016C      MOVW	R12,R24
(0019)   b1  = (i>>1)&0x01; 
    009F 918000CE  LDS	R24,i
    00A1 919000CF  LDS	R25,i+1
    00A3 9595      ASR	R25
    00A4 9587      ROR	R24
    00A5 7081      ANDI	R24,1
    00A6 7090      ANDI	R25,0
    00A7 017C      MOVW	R14,R24
(0020)   b2  = (i>>2)&0x01;
    00A8 918000CE  LDS	R24,i
    00AA 919000CF  LDS	R25,i+1
    00AC 9595      ASR	R25
    00AD 9587      ROR	R24
    00AE 9595      ASR	R25
    00AF 9587      ROR	R24
    00B0 7081      ANDI	R24,1
    00B1 7090      ANDI	R25,0
    00B2 015C      MOVW	R10,R24
(0021)   b3  = (i>>3)&0x01;
    00B3 916000CE  LDS	R22,i
    00B5 917000CF  LDS	R23,i+1
    00B7 9575      ASR	R23
    00B8 9567      ROR	R22
    00B9 9575      ASR	R23
    00BA 9567      ROR	R22
    00BB 9575      ASR	R23
    00BC 9567      ROR	R22
    00BD 7061      ANDI	R22,1
    00BE 7070      ANDI	R23,0
(0022)  // b4  = (i>>4)&0x01;
(0023)   //b5  = (i>>5)&0x01;
(0024)  // b6  = (i>>6)&0x01;
(0025)   all = b0*8 + b1*4 + b2*2 + b3;   //*8 + b4*4 + b5*2 + b6;
    00BF E004      LDI	R16,4
    00C0 E010      LDI	R17,0
    00C1 0197      MOVW	R18,R14
    00C2 940E060D  CALL	empy16s
    00C4 0118      MOVW	R2,R16
    00C5 E008      LDI	R16,0x8
    00C6 E010      LDI	R17,0
    00C7 0196      MOVW	R18,R12
    00C8 940E060D  CALL	empy16s
    00CA 01A8      MOVW	R20,R16
    00CB 0D42      ADD	R20,R2
    00CC 1D53      ADC	R21,R3
    00CD E002      LDI	R16,2
    00CE E010      LDI	R17,0
    00CF 0195      MOVW	R18,R10
    00D0 940E060D  CALL	empy16s
    00D2 0F40      ADD	R20,R16
    00D3 1F51      ADC	R21,R17
    00D4 0F46      ADD	R20,R22
    00D5 1F57      ADC	R21,R23
(0026)   dataI[all] = dataR[i];
    00D6 912000CE  LDS	R18,i
    00D8 913000CF  LDS	R19,i+1
    00DA E002      LDI	R16,2
    00DB E010      LDI	R17,0
    00DC 940E060D  CALL	empy16s
    00DE 01F8      MOVW	R30,R16
    00DF E680      LDI	R24,0x60
    00E0 E090      LDI	R25,0
    00E1 0FE8      ADD	R30,R24
    00E2 1FF9      ADC	R31,R25
    00E3 8020      LDD	R2,Z+0
    00E4 8031      LDD	R3,Z+1
    00E5 E002      LDI	R16,2
    00E6 E010      LDI	R17,0
    00E7 019A      MOVW	R18,R20
    00E8 940E060D  CALL	empy16s
    00EA 01F8      MOVW	R30,R16
    00EB E880      LDI	R24,0x80
    00EC E090      LDI	R25,0
    00ED 0FE8      ADD	R30,R24
    00EE 1FF9      ADC	R31,R25
    00EF 8231      STD	Z+1,R3
    00F0 8220      STD	Z+0,R2
    00F1 940E0623  CALL	pop_gset5
    00F3 9508      RET
(0027)  }
(0028) 
(0029)  
(0030) void FFTT()
(0031)  {  TR=dataR[k]; 
_FFTT:
    00F4 912000CA  LDS	R18,k
    00F6 913000CB  LDS	R19,k+1
    00F8 E002      LDI	R16,2
    00F9 E010      LDI	R17,0
    00FA 940E060D  CALL	empy16s
    00FC 01F8      MOVW	R30,R16
    00FD E680      LDI	R24,0x60
    00FE E090      LDI	R25,0
    00FF 0FE8      ADD	R30,R24
    0100 1FF9      ADC	R31,R25
    0101 8020      LDD	R2,Z+0
    0102 8031      LDD	R3,Z+1
    0103 923000A5  STS	TR+1,R3
    0105 922000A4  STS	TR,R2
(0032)     TI=dataI[k];
    0107 912000CA  LDS	R18,k
    0109 913000CB  LDS	R19,k+1
    010B E002      LDI	R16,2
    010C E010      LDI	R17,0
    010D 940E060D  CALL	empy16s
    010F 01F8      MOVW	R30,R16
    0110 E880      LDI	R24,0x80
    0111 E090      LDI	R25,0
    0112 0FE8      ADD	R30,R24
    0113 1FF9      ADC	R31,R25
    0114 8020      LDD	R2,Z+0
    0115 8031      LDD	R3,Z+1
    0116 923000A3  STS	TI+1,R3
    0118 922000A2  STS	TI,R2
(0033)     temp=dataR[k+b]; 
    011A 902000C8  LDS	R2,b
    011C 903000C9  LDS	R3,b+1
    011E 912000CA  LDS	R18,k
    0120 913000CB  LDS	R19,k+1
    0122 0D22      ADD	R18,R2
    0123 1D33      ADC	R19,R3
    0124 E002      LDI	R16,2
    0125 E010      LDI	R17,0
    0126 940E060D  CALL	empy16s
    0128 01F8      MOVW	R30,R16
    0129 E680      LDI	R24,0x60
    012A E090      LDI	R25,0
    012B 0FE8      ADD	R30,R24
    012C 1FF9      ADC	R31,R25
    012D 8020      LDD	R2,Z+0
    012E 8031      LDD	R3,Z+1
    012F 923000A1  STS	temp+1,R3
    0131 922000A0  STS	temp,R2
(0034)     dataR[k]=dataR[k]+dataR[k+b]*cos(2*PI*p/16)+dataI[k+b]*sin(2*PI*p/16);
    0133 E600      LDI	R16,0x60
    0134 E010      LDI	R17,0
    0135 940E064E  CALL	lpm32
    0137 933A      ST	R19,-Y
    0138 932A      ST	R18,-Y
    0139 931A      ST	R17,-Y
    013A 930A      ST	R16,-Y
    013B 910000C6  LDS	R16,p
    013D 911000C7  LDS	R17,p+1
    013F 940E06B6  CALL	int2fp
    0141 933A      ST	R19,-Y
    0142 932A      ST	R18,-Y
    0143 931A      ST	R17,-Y
    0144 930A      ST	R16,-Y
    0145 940E083F  CALL	empy32fs
    0147 E50C      LDI	R16,0x5C
    0148 E010      LDI	R17,0
    0149 940E064E  CALL	lpm32
    014B 933A      ST	R19,-Y
    014C 932A      ST	R18,-Y
    014D 931A      ST	R17,-Y
    014E 930A      ST	R16,-Y
    014F 940E0774  CALL	div32f
    0151 940E08E6  CALL	_cos
    0153 0118      MOVW	R2,R16
    0154 0129      MOVW	R4,R18
    0155 E600      LDI	R16,0x60
    0156 E010      LDI	R17,0
    0157 940E064E  CALL	lpm32
    0159 933A      ST	R19,-Y
    015A 932A      ST	R18,-Y
    015B 931A      ST	R17,-Y
    015C 930A      ST	R16,-Y
    015D 910000C6  LDS	R16,p
    015F 911000C7  LDS	R17,p+1
    0161 940E06B6  CALL	int2fp
    0163 933A      ST	R19,-Y
    0164 932A      ST	R18,-Y
    0165 931A      ST	R17,-Y
    0166 930A      ST	R16,-Y
    0167 940E083F  CALL	empy32fs
    0169 E50C      LDI	R16,0x5C
    016A E010      LDI	R17,0
    016B 940E064E  CALL	lpm32
    016D 933A      ST	R19,-Y
    016E 932A      ST	R18,-Y
    016F 931A      ST	R17,-Y
    0170 930A      ST	R16,-Y
    0171 940E0774  CALL	div32f
    0173 922F      PUSH	R2
    0174 923F      PUSH	R3
    0175 924F      PUSH	R4
    0176 925F      PUSH	R5
    0177 940E0BA2  CALL	_sin
    0179 905F      POP	R5
    017A 904F      POP	R4
    017B 903F      POP	R3
    017C 902F      POP	R2
    017D 0138      MOVW	R6,R16
    017E 0149      MOVW	R8,R18
    017F 912000CA  LDS	R18,k
    0181 913000CB  LDS	R19,k+1
    0183 E002      LDI	R16,2
    0184 E010      LDI	R17,0
    0185 940E060D  CALL	empy16s
    0187 E680      LDI	R24,0x60
    0188 E090      LDI	R25,0
    0189 01F8      MOVW	R30,R16
    018A 0FE8      ADD	R30,R24
    018B 1FF9      ADC	R31,R25
    018C 01CF      MOVW	R24,R30
    018D 8100      LDD	R16,Z+0
    018E 8111      LDD	R17,Z+1
    018F 940E06B6  CALL	int2fp
    0191 933A      ST	R19,-Y
    0192 932A      ST	R18,-Y
    0193 931A      ST	R17,-Y
    0194 930A      ST	R16,-Y
    0195 91E000C8  LDS	R30,b
    0197 91F000C9  LDS	R31,b+1
    0199 912000CA  LDS	R18,k
    019B 913000CB  LDS	R19,k+1
    019D 0F2E      ADD	R18,R30
    019E 1F3F      ADC	R19,R31
    019F E002      LDI	R16,2
    01A0 E010      LDI	R17,0
    01A1 940E060D  CALL	empy16s
    01A3 01F8      MOVW	R30,R16
    01A4 E6A0      LDI	R26,0x60
    01A5 E0B0      LDI	R27,0
    01A6 0FEA      ADD	R30,R26
    01A7 1FFB      ADC	R31,R27
    01A8 8100      LDD	R16,Z+0
    01A9 8111      LDD	R17,Z+1
    01AA 940E06B6  CALL	int2fp
    01AC 933A      ST	R19,-Y
    01AD 932A      ST	R18,-Y
    01AE 931A      ST	R17,-Y
    01AF 930A      ST	R16,-Y
    01B0 925A      ST	R5,-Y
    01B1 924A      ST	R4,-Y
    01B2 923A      ST	R3,-Y
    01B3 922A      ST	R2,-Y
    01B4 940E083F  CALL	empy32fs
    01B6 940E0710  CALL	add32fs
    01B8 902000C8  LDS	R2,b
    01BA 903000C9  LDS	R3,b+1
    01BC 912000CA  LDS	R18,k
    01BE 913000CB  LDS	R19,k+1
    01C0 0D22      ADD	R18,R2
    01C1 1D33      ADC	R19,R3
    01C2 E002      LDI	R16,2
    01C3 E010      LDI	R17,0
    01C4 940E060D  CALL	empy16s
    01C6 01F8      MOVW	R30,R16
    01C7 E8A0      LDI	R26,0x80
    01C8 E0B0      LDI	R27,0
    01C9 0FEA      ADD	R30,R26
    01CA 1FFB      ADC	R31,R27
    01CB 8100      LDD	R16,Z+0
    01CC 8111      LDD	R17,Z+1
    01CD 940E06B6  CALL	int2fp
    01CF 933A      ST	R19,-Y
    01D0 932A      ST	R18,-Y
    01D1 931A      ST	R17,-Y
    01D2 930A      ST	R16,-Y
    01D3 929A      ST	R9,-Y
    01D4 928A      ST	R8,-Y
    01D5 927A      ST	R7,-Y
    01D6 926A      ST	R6,-Y
    01D7 940E083F  CALL	empy32fs
    01D9 940E0713  CALL	add32f
    01DB 940E066E  CALL	fp2int
    01DD 01FC      MOVW	R30,R24
    01DE 8311      STD	Z+1,R17
    01DF 8300      STD	Z+0,R16
(0035)     dataI[k]=dataI[k]-dataR[k+b]*sin(2*PI*p/16)+dataI[k+b]*cos(2*PI*p/16);
    01E0 E600      LDI	R16,0x60
    01E1 E010      LDI	R17,0
    01E2 940E064E  CALL	lpm32
    01E4 933A      ST	R19,-Y
    01E5 932A      ST	R18,-Y
    01E6 931A      ST	R17,-Y
    01E7 930A      ST	R16,-Y
    01E8 910000C6  LDS	R16,p
    01EA 911000C7  LDS	R17,p+1
    01EC 940E06B6  CALL	int2fp
    01EE 933A      ST	R19,-Y
    01EF 932A      ST	R18,-Y
    01F0 931A      ST	R17,-Y
    01F1 930A      ST	R16,-Y
    01F2 940E083F  CALL	empy32fs
    01F4 E50C      LDI	R16,0x5C
    01F5 E010      LDI	R17,0
    01F6 940E064E  CALL	lpm32
    01F8 933A      ST	R19,-Y
    01F9 932A      ST	R18,-Y
    01FA 931A      ST	R17,-Y
    01FB 930A      ST	R16,-Y
    01FC 940E0774  CALL	div32f
    01FE 940E0BA2  CALL	_sin
    0200 0118      MOVW	R2,R16
    0201 0129      MOVW	R4,R18
    0202 E600      LDI	R16,0x60
    0203 E010      LDI	R17,0
    0204 940E064E  CALL	lpm32
    0206 933A      ST	R19,-Y
    0207 932A      ST	R18,-Y
    0208 931A      ST	R17,-Y
    0209 930A      ST	R16,-Y
    020A 910000C6  LDS	R16,p
    020C 911000C7  LDS	R17,p+1
    020E 940E06B6  CALL	int2fp
    0210 933A      ST	R19,-Y
    0211 932A      ST	R18,-Y
    0212 931A      ST	R17,-Y
    0213 930A      ST	R16,-Y
    0214 940E083F  CALL	empy32fs
    0216 E50C      LDI	R16,0x5C
    0217 E010      LDI	R17,0
    0218 940E064E  CALL	lpm32
    021A 933A      ST	R19,-Y
    021B 932A      ST	R18,-Y
    021C 931A      ST	R17,-Y
    021D 930A      ST	R16,-Y
    021E 940E0774  CALL	div32f
    0220 922F      PUSH	R2
    0221 923F      PUSH	R3
    0222 924F      PUSH	R4
    0223 925F      PUSH	R5
    0224 940E08E6  CALL	_cos
    0226 905F      POP	R5
    0227 904F      POP	R4
    0228 903F      POP	R3
    0229 902F      POP	R2
    022A 0138      MOVW	R6,R16
    022B 0149      MOVW	R8,R18
    022C 912000CA  LDS	R18,k
    022E 913000CB  LDS	R19,k+1
    0230 E002      LDI	R16,2
    0231 E010      LDI	R17,0
    0232 940E060D  CALL	empy16s
    0234 E880      LDI	R24,0x80
    0235 E090      LDI	R25,0
    0236 01F8      MOVW	R30,R16
    0237 0FE8      ADD	R30,R24
    0238 1FF9      ADC	R31,R25
    0239 01CF      MOVW	R24,R30
    023A 8100      LDD	R16,Z+0
    023B 8111      LDD	R17,Z+1
    023C 940E06B6  CALL	int2fp
    023E 933A      ST	R19,-Y
    023F 932A      ST	R18,-Y
    0240 931A      ST	R17,-Y
    0241 930A      ST	R16,-Y
    0242 91E000C8  LDS	R30,b
    0244 91F000C9  LDS	R31,b+1
    0246 912000CA  LDS	R18,k
    0248 913000CB  LDS	R19,k+1
    024A 0F2E      ADD	R18,R30
    024B 1F3F      ADC	R19,R31
    024C E002      LDI	R16,2
    024D E010      LDI	R17,0
    024E 940E060D  CALL	empy16s
    0250 01F8      MOVW	R30,R16
    0251 E6A0      LDI	R26,0x60

⌨️ 快捷键说明

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