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

📄 fftbook.lst

📁 在ICCAVR 环境实现的fft,
💻 LST
📖 第 1 页 / 共 5 页
字号:
(0056) // FFT算法
(0057)   for(L=1;L<=4;L++) 						// 第一层循环
    046D E081      LDI	R24,1
    046E E090      LDI	R25,0
    046F 939000D1  STS	L+1,R25
    0471 938000D0  STS	L,R24
(0058)   {
(0059)      b=1; i=L-1;
    0473 E081      LDI	R24,1
    0474 E090      LDI	R25,0
    0475 939000C9  STS	b+1,R25
    0477 938000C8  STS	b,R24
    0479 918000D0  LDS	R24,L
    047B 919000D1  LDS	R25,L+1
    047D 9701      SBIW	R24,1
    047E 939000CF  STS	i+1,R25
    0480 938000CE  STS	i,R24
    0482 C015      RJMP	0x0498
(0060)      while(i>0) 
(0061)     {
(0062)       b=b*2; i--;
    0483 912000C8  LDS	R18,b
    0485 913000C9  LDS	R19,b+1
    0487 E002      LDI	R16,2
    0488 E010      LDI	R17,0
    0489 940E060D  CALL	empy16s
    048B 931000C9  STS	b+1,R17
    048D 930000C8  STS	b,R16
    048F 918000CE  LDS	R24,i
    0491 919000CF  LDS	R25,i+1
    0493 9701      SBIW	R24,1
    0494 939000CF  STS	i+1,R25
    0496 938000CE  STS	i,R24
    0498 2422      CLR	R2
    0499 2433      CLR	R3
    049A 904000CE  LDS	R4,i
    049C 905000CF  LDS	R5,i+1
    049E 1424      CP	R2,R4
    049F 0435      CPC	R3,R5
    04A0 F314      BLT	0x0483
(0063)     } 
(0064)        for(j=0;j<=b-1;j++)						 // 第二层循环
    04A1 923000CD  STS	j+1,R3
    04A3 922000CC  STS	j,R2
    04A5 C06B      RJMP	0x0511
(0065)          { 
(0066)            p=1; i=4-L;
    04A6 E081      LDI	R24,1
    04A7 E090      LDI	R25,0
    04A8 939000C7  STS	p+1,R25
    04AA 938000C6  STS	p,R24
    04AC 902000D0  LDS	R2,L
    04AE 903000D1  LDS	R3,L+1
    04B0 E084      LDI	R24,4
    04B1 1982      SUB	R24,R2
    04B2 0993      SBC	R25,R3
    04B3 939000CF  STS	i+1,R25
    04B5 938000CE  STS	i,R24
    04B7 C015      RJMP	0x04CD
(0067)            while(i>0)					
(0068)                {
(0069) 			   p=p*2; i--;
    04B8 912000C6  LDS	R18,p
    04BA 913000C7  LDS	R19,p+1
    04BC E002      LDI	R16,2
    04BD E010      LDI	R17,0
    04BE 940E060D  CALL	empy16s
    04C0 931000C7  STS	p+1,R17
    04C2 930000C6  STS	p,R16
    04C4 918000CE  LDS	R24,i
    04C6 919000CF  LDS	R25,i+1
    04C8 9701      SBIW	R24,1
    04C9 939000CF  STS	i+1,R25
    04CB 938000CE  STS	i,R24
    04CD 2422      CLR	R2
    04CE 2433      CLR	R3
    04CF 904000CE  LDS	R4,i
    04D1 905000CF  LDS	R5,i+1
    04D3 1424      CP	R2,R4
    04D4 0435      CPC	R3,R5
    04D5 F314      BLT	0x04B8
(0070) 			   }
(0071)            p=p*j;
    04D6 912000CC  LDS	R18,j
    04D8 913000CD  LDS	R19,j+1
    04DA 910000C6  LDS	R16,p
    04DC 911000C7  LDS	R17,p+1
    04DE 940E060D  CALL	empy16s
    04E0 931000C7  STS	p+1,R17
    04E2 930000C6  STS	p,R16
(0072)             for(k=j;k<16;k=k+2*b) 				// 第三层循环
    04E4 902000CC  LDS	R2,j
    04E6 903000CD  LDS	R3,j+1
    04E8 923000CB  STS	k+1,R3
    04EA 922000CA  STS	k,R2
    04EC C013      RJMP	0x0500
(0073)               { 
(0074)                 FFTT();
    04ED DC06      RCALL	_FFTT
    04EE 912000C8  LDS	R18,b
    04F0 913000C9  LDS	R19,b+1
    04F2 E002      LDI	R16,2
    04F3 E010      LDI	R17,0
    04F4 940E060D  CALL	empy16s
    04F6 902000CA  LDS	R2,k
    04F8 903000CB  LDS	R3,k+1
    04FA 0E20      ADD	R2,R16
    04FB 1E31      ADC	R3,R17
    04FC 923000CB  STS	k+1,R3
    04FE 922000CA  STS	k,R2
    0500 918000CA  LDS	R24,k
    0502 919000CB  LDS	R25,k+1
    0504 3180      CPI	R24,0x10
    0505 E0E0      LDI	R30,0
    0506 079E      CPC	R25,R30
    0507 F32C      BLT	0x04ED
    0508 918000CC  LDS	R24,j
    050A 919000CD  LDS	R25,j+1
    050C 9601      ADIW	R24,1
    050D 939000CD  STS	j+1,R25
    050F 938000CC  STS	j,R24
    0511 918000C8  LDS	R24,b
    0513 919000C9  LDS	R25,b+1
    0515 9701      SBIW	R24,1
    0516 902000CC  LDS	R2,j
    0518 903000CD  LDS	R3,j+1
    051A 1582      CP	R24,R2
    051B 0593      CPC	R25,R3
    051C F00C      BLT	0x051E
    051D CF88      RJMP	0x04A6
    051E 918000D0  LDS	R24,L
    0520 919000D1  LDS	R25,L+1
    0522 9601      ADIW	R24,1
    0523 939000D1  STS	L+1,R25
    0525 938000D0  STS	L,R24
    0527 E084      LDI	R24,4
    0528 E090      LDI	R25,0
    0529 902000D0  LDS	R2,L
    052B 903000D1  LDS	R3,L+1
    052D 1582      CP	R24,R2
    052E 0593      CPC	R25,R3
    052F F00C      BLT	0x0531
    0530 CF42      RJMP	0x0473
(0075)               }
(0076)           }
(0077)   } 
(0078)   for(i=0;i<32;i++) 							// 32次以下的谐波分析
    0531 2422      CLR	R2
    0532 2433      CLR	R3
    0533 923000CF  STS	i+1,R3
    0535 922000CE  STS	i,R2
(0079)    {
(0080)     w[i]=sqrt(dataR[i]*dataR[i]+dataI[i]*dataI[i]);
    0537 912000CE  LDS	R18,i
    0539 913000CF  LDS	R19,i+1
    053B E002      LDI	R16,2
    053C E010      LDI	R17,0
    053D 940E060D  CALL	empy16s
    053F 01F8      MOVW	R30,R16
    0540 0FE6      ADD	R30,R22
    0541 1FF7      ADC	R31,R23
    0542 8020      LDD	R2,Z+0
    0543 8031      LDD	R3,Z+1
    0544 01F8      MOVW	R30,R16
    0545 0FE4      ADD	R30,R20
    0546 1FF5      ADC	R31,R21
    0547 8040      LDD	R4,Z+0
    0548 8051      LDD	R5,Z+1
    0549 0192      MOVW	R18,R4
    054A 0182      MOVW	R16,R4
    054B 940E060D  CALL	empy16s
    054D 0128      MOVW	R4,R16
    054E 0191      MOVW	R18,R2
    054F 0181      MOVW	R16,R2
    0550 940E060D  CALL	empy16s
    0552 0D04      ADD	R16,R4
    0553 1D15      ADC	R17,R5
    0554 940E06B6  CALL	int2fp
    0556 940E0BDB  CALL	_sqrt
    0558 0118      MOVW	R2,R16
    0559 0129      MOVW	R4,R18
    055A 933A      ST	R19,-Y
    055B 932A      ST	R18,-Y
    055C 931A      ST	R17,-Y
    055D 930A      ST	R16,-Y
    055E E504      LDI	R16,0x54
    055F E010      LDI	R17,0
    0560 940E064E  CALL	lpm32
    0562 933A      ST	R19,-Y
    0563 932A      ST	R18,-Y
    0564 931A      ST	R17,-Y
    0565 930A      ST	R16,-Y
    0566 940E07CE  CALL	cmp32f
    0568 F0AC      BLT	0x057E
    0569 925A      ST	R5,-Y
    056A 924A      ST	R4,-Y
    056B 923A      ST	R3,-Y
    056C 922A      ST	R2,-Y
    056D E504      LDI	R16,0x54
    056E E010      LDI	R17,0
    056F 940E064E  CALL	lpm32
    0571 933A      ST	R19,-Y
    0572 932A      ST	R18,-Y
    0573 931A      ST	R17,-Y
    0574 930A      ST	R16,-Y
    0575 940E071B  CALL	sub32f
    0577 940E066E  CALL	fp2int
    0579 01C8      MOVW	R24,R16
    057A 5080      SUBI	R24,0
    057B 4890      SBCI	R25,0x80
    057C 015C      MOVW	R10,R24
    057D C005      RJMP	0x0583
    057E 0181      MOVW	R16,R2
    057F 0192      MOVW	R18,R4
    0580 940E066E  CALL	fp2int
    0582 0158      MOVW	R10,R16
    0583 EA86      LDI	R24,0xA6
    0584 E090      LDI	R25,0
    0585 91E000CE  LDS	R30,i
    0587 91F000CF  LDS	R31,i+1
    0589 0FE8      ADD	R30,R24
    058A 1FF9      ADC	R31,R25
    058B 82A0      STD	Z+0,R10
(0081)     w[i]=w[i]/64;
    058C 906000CE  LDS	R6,i
    058E 907000CF  LDS	R7,i+1
    0590 0E68      ADD	R6,R24
    0591 1E79      ADC	R7,R25
    0592 E410      LDI	R17,0x40
    0593 01F3      MOVW	R30,R6
    0594 8100      LDD	R16,Z+0
    0595 940E05F7  CALL	div8u
    0597 01F3      MOVW	R30,R6
    0598 8300      STD	Z+0,R16
    0599 918000CE  LDS	R24,i
    059B 919000CF  LDS	R25,i+1
    059D 9601      ADIW	R24,1
    059E 939000CF  STS	i+1,R25
    05A0 938000CE  STS	i,R24
    05A2 3280      CPI	R24,0x20
    05A3 E0E0      LDI	R30,0
    05A4 079E      CPC	R25,R30
    05A5 F40C      BGE	0x05A7
    05A6 CF90      RJMP	0x0537
(0082)    }
(0083)   w[0]=w[0]/2;
    05A7 906000A6  LDS	R6,w
    05A9 9466      LSR	R6
    05AA 926000A6  STS	w,R6
    05AC 940E0620  CALL	pop_gset3
    05AE 9508      RET
(0084) }  
(0085) 
(0086) void main ()
(0087)   {
(0088)     FFT(dataR,dataI);
_main:
    05AF E820      LDI	R18,0x80
    05B0 E030      LDI	R19,0
    05B1 E600      LDI	R16,0x60
    05B2 E010      LDI	R17,0
    05B3 DE6D      RCALL	_FFT
(0089) 	while(1);
FILE: <library>
    05B4 CFFF      RJMP	0x05B4
    05B5 9508      RET
push_arg4:
    05B6 933A      ST	R19,-Y
    05B7 932A      ST	R18,-Y
push_arg2:
    05B8 931A      ST	R17,-Y
    05B9 930A      ST	R16,-Y
    05BA 9508      RET
mod16s:
    05BB 9468      BSET	6
    05BC 92DA      ST	R13,-Y
    05BD 2ED1      MOV	R13,R17
    05BE C004      RJMP	0x05C3
div16s:
    05BF 94E8      BCLR	6
    05C0 92DA      ST	R13,-Y
    05C1 2ED1      MOV	R13,R17
    05C2 26D3      EOR	R13,R19
    05C3 FF17      SBRS	R17,7
    05C4 C004      RJMP	0x05C9
    05C5 9510      COM	R17
    05C6 9500      COM	R16
    05C7 5F0F      SUBI	R16,0xFF
    05C8 4F1F      SBCI	R17,0xFF
    05C9 FF37      SBRS	R19,7
    05CA C004      RJMP	0x05CF
    05CB 9530      COM	R19
    05CC 9520      COM	R18
    05CD 5F2F      SUBI	R18,0xFF
    05CE 4F3F      SBCI	R19,0xFF
    05CF 940E05DC  CALL	xdiv16u
    05D1 FED7      SBRS	R13,7
    05D2 C004      RJMP	0x05D7
    05D3 9510      COM	R17
    05D4 9500      COM	R16
    05D5 5F0F      SUBI	R16,0xFF
    05D6 4F1F      SBCI	R17,0xFF
    05D7 90D9      LD	R13,Y+
    05D8 9508      RET
mod16u:
    05D9 9468      BSET	6
    05DA C001      RJMP	xdiv16u
div16u:
    05DB 94E8      BCLR	6
xdiv16u:
    05DC 92EA      ST	R14,-Y
    05DD 92FA      ST	R15,-Y
    05DE 938A      ST	R24,-Y
    05DF 24EE      CLR	R14
    05E0 24FF      CLR	R15
    05E1 E180      LDI	R24,0x10
    05E2 0F00      LSL	R16
    05E3 1F11      ROL	R17
    05E4 1CEE      ROL	R14
    05E5 1CFF      ROL	R15
    05E6 16E2      CP	R14,R18
    05E7 06F3      CPC	R15,R19
    05E8 F018      BCS	0x05EC
    05E9 1AE2      SUB	R14,R18
    05EA 0AF3      SBC	R15,R19
    05EB 9503      INC	R16
    05EC 958A      DEC	R24
    05ED F7A1      BNE	0x05E2
    05EE F416      BRTC	0x05F1
    05EF 2D0E      MOV	R16,R14
    05F0 2D1F      MOV	R17,R15
    05F1 9189      LD	R24,Y+
    05F2 90F9      LD	R15,Y+
    05F3 90E9      LD	R14,Y+
    05F4 9508      RET
mod8u:
    05F5 9468      BSET	6
    05F6 C001      RJMP	xdiv8u
div8u:
    05F7 94E8      BCLR	6
xdiv8u:
    05F8 932A      ST	R18,-Y
    05F9 92FA      ST	R15,-Y
    05FA 92EA      ST	R14,-Y
    05FB 24FF      CLR	R15
    05FC 24EE      CLR	R14
    05FD E120      LDI	R18,0x10
    05FE 0F00      LSL	R16
    05FF 1CFF      ROL	R15
    0600 1CEE      ROL	R14
    0601 16E1      CP	R14,R17
    0602 F010      BCS	0x0605
    0603 1AE1      SUB	R14,R17
    0604 9503      INC	R16
    0605 952A      DEC	R18
    0606 F7B9      BNE	0x05FE
    0607 F40E      BRTC	0x0609
    0608 2D0E      MOV	R16,R14
    0609 90E9      LD	R14,Y+
    060A 90F9      LD	R15,Y+
    060B 9129      LD	R18,Y+
    060C 9508      RET
empy16s:
    060D 920A      ST	R0,-Y
    060E 921A      ST	R1,-Y
    060F 938A      ST	R24,-Y
    0610 939A      ST	R25,-Y
    0611 9F02      MUL	R16,R18
    0612 01C0      MOVW	R24,R0
    0613 9F12      MUL	R17,R18
    0614 0D90      ADD	R25,R0
    0615 9F03      MUL	R16,R19
    0616 0D90      ADD	R25,R0
    0617 018C      MOVW	R16,R24
    0618 9199      LD	R25,Y+
    0619 9189      LD	R24,Y+
    061A 9019      LD	R1,Y+
    061B 9009      LD	R0,Y+
    061C 9508      RET
pop_gset2:
    061D E0E2      LDI	R30,2
    061E 940C0632  JMP	pop
pop_gset3:
    0620 E0E4      LDI	R30,4
    0621 940C0632  JMP	pop
pop_gset5:
    0623 27EE      CLR	R30
    0624 940C0632  JMP	pop
push_gset5:
    0626 92FA      ST	R15,-Y
    0627 92EA      ST	R14,-Y
push_gset4:
    0628 92DA      ST	R13,-Y
    0629 92CA      ST	R12,-Y
push_gset3:
    062A 92BA      ST	R11,-Y
    062B 92AA      ST	R10,-Y
push_gset2:
    062C 937A      ST	R23,-Y
    062D 936A      ST	R22,-Y
push_gset1:
    062E 935A      ST	R21,-Y
    062F 934A      ST	R20,-Y
    0630 9508      RET
pop_gset1:
    0631 E0E1      LDI	R30,1
pop:
    0632 9149      LD	R20,Y+
    0633 9159      LD	R21,Y+
    0634 FDE0      SBRC	R30,0
    0635 9508      RET
    0636 9169      LD	R22,Y+
    0637 9179      LD	R23,Y+
    0638 FDE1      SBRC	R30,1
    0639 9508      RET
    063A 90A9      LD	R10,Y+
    063B 90B9      LD	R11,Y+
    063C FDE2      SBRC	R30,2
    063D 9508      RET
    063E 90C9      LD	R12,Y+
    063F 90D9      LD	R13,Y+
    0640 FDE3      SBRC	R30,3
    0641 9508      RET
    0642 90E9      LD	R14,Y+
    0643 90F9      LD	R15,Y+
    0644 9508      RET
neg32:
    0645 9500      COM	R16
    0646 9510      COM	R17
    0647 9520      COM	R18
    0648 9530      COM	R19
    0649 5F0F      SUBI	R16,0xFF
    064A 4F1F      SBCI	R17,0xFF
    064B 4F2F      SBCI	R18,0xFF
    064C 4F3F      SBCI	R19,0xFF
    064D 9508      RET
lpm32:
    064E 93EA      ST	R30,-Y
    064F 93FA      ST	R31,-Y

⌨️ 快捷键说明

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