📄 fftbook.lst
字号:
0252 E0B0 LDI R27,0
0253 0FEA ADD R30,R26
0254 1FFB ADC R31,R27
0255 8100 LDD R16,Z+0
0256 8111 LDD R17,Z+1
0257 940E06B6 CALL int2fp
0259 933A ST R19,-Y
025A 932A ST R18,-Y
025B 931A ST R17,-Y
025C 930A ST R16,-Y
025D 925A ST R5,-Y
025E 924A ST R4,-Y
025F 923A ST R3,-Y
0260 922A ST R2,-Y
0261 940E083F CALL empy32fs
0263 940E0718 CALL sub32fs
0265 902000C8 LDS R2,b
0267 903000C9 LDS R3,b+1
0269 912000CA LDS R18,k
026B 913000CB LDS R19,k+1
026D 0D22 ADD R18,R2
026E 1D33 ADC R19,R3
026F E002 LDI R16,2
0270 E010 LDI R17,0
0271 940E060D CALL empy16s
0273 01F8 MOVW R30,R16
0274 E8A0 LDI R26,0x80
0275 E0B0 LDI R27,0
0276 0FEA ADD R30,R26
0277 1FFB ADC R31,R27
0278 8100 LDD R16,Z+0
0279 8111 LDD R17,Z+1
027A 940E06B6 CALL int2fp
027C 933A ST R19,-Y
027D 932A ST R18,-Y
027E 931A ST R17,-Y
027F 930A ST R16,-Y
0280 929A ST R9,-Y
0281 928A ST R8,-Y
0282 927A ST R7,-Y
0283 926A ST R6,-Y
0284 940E083F CALL empy32fs
0286 940E0713 CALL add32f
0288 940E066E CALL fp2int
028A 01FC MOVW R30,R24
028B 8311 STD Z+1,R17
028C 8300 STD Z+0,R16
(0036) dataR[k+b]=TR-dataR[k+b]*cos(2*PI*p/16)-dataI[k+b]*sin(2*PI*p/16);
028D E600 LDI R16,0x60
028E E010 LDI R17,0
028F 940E064E CALL lpm32
0291 933A ST R19,-Y
0292 932A ST R18,-Y
0293 931A ST R17,-Y
0294 930A ST R16,-Y
0295 910000C6 LDS R16,p
0297 911000C7 LDS R17,p+1
0299 940E06B6 CALL int2fp
029B 933A ST R19,-Y
029C 932A ST R18,-Y
029D 931A ST R17,-Y
029E 930A ST R16,-Y
029F 940E083F CALL empy32fs
02A1 E50C LDI R16,0x5C
02A2 E010 LDI R17,0
02A3 940E064E CALL lpm32
02A5 933A ST R19,-Y
02A6 932A ST R18,-Y
02A7 931A ST R17,-Y
02A8 930A ST R16,-Y
02A9 940E0774 CALL div32f
02AB 940E08E6 CALL _cos
02AD 0118 MOVW R2,R16
02AE 0129 MOVW R4,R18
02AF E600 LDI R16,0x60
02B0 E010 LDI R17,0
02B1 940E064E CALL lpm32
02B3 933A ST R19,-Y
02B4 932A ST R18,-Y
02B5 931A ST R17,-Y
02B6 930A ST R16,-Y
02B7 910000C6 LDS R16,p
02B9 911000C7 LDS R17,p+1
02BB 940E06B6 CALL int2fp
02BD 933A ST R19,-Y
02BE 932A ST R18,-Y
02BF 931A ST R17,-Y
02C0 930A ST R16,-Y
02C1 940E083F CALL empy32fs
02C3 E50C LDI R16,0x5C
02C4 E010 LDI R17,0
02C5 940E064E CALL lpm32
02C7 933A ST R19,-Y
02C8 932A ST R18,-Y
02C9 931A ST R17,-Y
02CA 930A ST R16,-Y
02CB 940E0774 CALL div32f
02CD 922F PUSH R2
02CE 923F PUSH R3
02CF 924F PUSH R4
02D0 925F PUSH R5
02D1 940E0BA2 CALL _sin
02D3 905F POP R5
02D4 904F POP R4
02D5 903F POP R3
02D6 902F POP R2
02D7 0138 MOVW R6,R16
02D8 0149 MOVW R8,R18
02D9 918000C8 LDS R24,b
02DB 919000C9 LDS R25,b+1
02DD 912000CA LDS R18,k
02DF 913000CB LDS R19,k+1
02E1 0F28 ADD R18,R24
02E2 1F39 ADC R19,R25
02E3 E002 LDI R16,2
02E4 E010 LDI R17,0
02E5 940E060D CALL empy16s
02E7 01C8 MOVW R24,R16
02E8 E6E0 LDI R30,0x60
02E9 E0F0 LDI R31,0
02EA 0F8E ADD R24,R30
02EB 1F9F ADC R25,R31
02EC E508 LDI R16,0x58
02ED E010 LDI R17,0
02EE 940E064E CALL lpm32
02F0 933A ST R19,-Y
02F1 932A ST R18,-Y
02F2 931A ST R17,-Y
02F3 930A ST R16,-Y
02F4 910000A4 LDS R16,TR
02F6 911000A5 LDS R17,TR+1
02F8 9516 LSR R17
02F9 9507 ROR R16
02FA 940E06B6 CALL int2fp
02FC 933A ST R19,-Y
02FD 932A ST R18,-Y
02FE 931A ST R17,-Y
02FF 930A ST R16,-Y
0300 940E083F CALL empy32fs
0302 910000A4 LDS R16,TR
0304 911000A5 LDS R17,TR+1
0306 7001 ANDI R16,1
0307 7010 ANDI R17,0
0308 940E06B6 CALL int2fp
030A 933A ST R19,-Y
030B 932A ST R18,-Y
030C 931A ST R17,-Y
030D 930A ST R16,-Y
030E 940E0710 CALL add32fs
0310 01FC MOVW R30,R24
0311 8100 LDD R16,Z+0
0312 8111 LDD R17,Z+1
0313 940E06B6 CALL int2fp
0315 933A ST R19,-Y
0316 932A ST R18,-Y
0317 931A ST R17,-Y
0318 930A ST R16,-Y
0319 925A ST R5,-Y
031A 924A ST R4,-Y
031B 923A ST R3,-Y
031C 922A ST R2,-Y
031D 940E083F CALL empy32fs
031F 940E0718 CALL sub32fs
0321 902000C8 LDS R2,b
0323 903000C9 LDS R3,b+1
0325 912000CA LDS R18,k
0327 913000CB LDS R19,k+1
0329 0D22 ADD R18,R2
032A 1D33 ADC R19,R3
032B E002 LDI R16,2
032C E010 LDI R17,0
032D 940E060D CALL empy16s
032F 01F8 MOVW R30,R16
0330 E8A0 LDI R26,0x80
0331 E0B0 LDI R27,0
0332 0FEA ADD R30,R26
0333 1FFB ADC R31,R27
0334 8100 LDD R16,Z+0
0335 8111 LDD R17,Z+1
0336 940E06B6 CALL int2fp
0338 933A ST R19,-Y
0339 932A ST R18,-Y
033A 931A ST R17,-Y
033B 930A ST R16,-Y
033C 929A ST R9,-Y
033D 928A ST R8,-Y
033E 927A ST R7,-Y
033F 926A ST R6,-Y
0340 940E083F CALL empy32fs
0342 940E071B CALL sub32f
0344 940E066E CALL fp2int
0346 01FC MOVW R30,R24
0347 8311 STD Z+1,R17
0348 8300 STD Z+0,R16
(0037) dataI[k+b]=TI+temp*sin(2*PI*p/16)-dataI[k+b]*cos(2*PI*p/16);
0349 E600 LDI R16,0x60
034A E010 LDI R17,0
034B 940E064E CALL lpm32
034D 933A ST R19,-Y
034E 932A ST R18,-Y
034F 931A ST R17,-Y
0350 930A ST R16,-Y
0351 910000C6 LDS R16,p
0353 911000C7 LDS R17,p+1
0355 940E06B6 CALL int2fp
0357 933A ST R19,-Y
0358 932A ST R18,-Y
0359 931A ST R17,-Y
035A 930A ST R16,-Y
035B 940E083F CALL empy32fs
035D E50C LDI R16,0x5C
035E E010 LDI R17,0
035F 940E064E CALL lpm32
0361 933A ST R19,-Y
0362 932A ST R18,-Y
0363 931A ST R17,-Y
0364 930A ST R16,-Y
0365 940E0774 CALL div32f
0367 940E0BA2 CALL _sin
0369 0118 MOVW R2,R16
036A 0129 MOVW R4,R18
036B E600 LDI R16,0x60
036C E010 LDI R17,0
036D 940E064E CALL lpm32
036F 933A ST R19,-Y
0370 932A ST R18,-Y
0371 931A ST R17,-Y
0372 930A ST R16,-Y
0373 910000C6 LDS R16,p
0375 911000C7 LDS R17,p+1
0377 940E06B6 CALL int2fp
0379 933A ST R19,-Y
037A 932A ST R18,-Y
037B 931A ST R17,-Y
037C 930A ST R16,-Y
037D 940E083F CALL empy32fs
037F E50C LDI R16,0x5C
0380 E010 LDI R17,0
0381 940E064E CALL lpm32
0383 933A ST R19,-Y
0384 932A ST R18,-Y
0385 931A ST R17,-Y
0386 930A ST R16,-Y
0387 940E0774 CALL div32f
0389 922F PUSH R2
038A 923F PUSH R3
038B 924F PUSH R4
038C 925F PUSH R5
038D 940E08E6 CALL _cos
038F 905F POP R5
0390 904F POP R4
0391 903F POP R3
0392 902F POP R2
0393 0138 MOVW R6,R16
0394 0149 MOVW R8,R18
0395 E508 LDI R16,0x58
0396 E010 LDI R17,0
0397 940E064E CALL lpm32
0399 933A ST R19,-Y
039A 932A ST R18,-Y
039B 931A ST R17,-Y
039C 930A ST R16,-Y
039D 910000A2 LDS R16,TI
039F 911000A3 LDS R17,TI+1
03A1 9516 LSR R17
03A2 9507 ROR R16
03A3 940E06B6 CALL int2fp
03A5 933A ST R19,-Y
03A6 932A ST R18,-Y
03A7 931A ST R17,-Y
03A8 930A ST R16,-Y
03A9 940E083F CALL empy32fs
03AB 910000A2 LDS R16,TI
03AD 911000A3 LDS R17,TI+1
03AF 7001 ANDI R16,1
03B0 7010 ANDI R17,0
03B1 940E06B6 CALL int2fp
03B3 933A ST R19,-Y
03B4 932A ST R18,-Y
03B5 931A ST R17,-Y
03B6 930A ST R16,-Y
03B7 940E0710 CALL add32fs
03B9 E508 LDI R16,0x58
03BA E010 LDI R17,0
03BB 940E064E CALL lpm32
03BD 933A ST R19,-Y
03BE 932A ST R18,-Y
03BF 931A ST R17,-Y
03C0 930A ST R16,-Y
03C1 910000A0 LDS R16,temp
03C3 911000A1 LDS R17,temp+1
03C5 9516 LSR R17
03C6 9507 ROR R16
03C7 940E06B6 CALL int2fp
03C9 933A ST R19,-Y
03CA 932A ST R18,-Y
03CB 931A ST R17,-Y
03CC 930A ST R16,-Y
03CD 940E083F CALL empy32fs
03CF 910000A0 LDS R16,temp
03D1 911000A1 LDS R17,temp+1
03D3 7001 ANDI R16,1
03D4 7010 ANDI R17,0
03D5 940E06B6 CALL int2fp
03D7 933A ST R19,-Y
03D8 932A ST R18,-Y
03D9 931A ST R17,-Y
03DA 930A ST R16,-Y
03DB 940E0710 CALL add32fs
03DD 925A ST R5,-Y
03DE 924A ST R4,-Y
03DF 923A ST R3,-Y
03E0 922A ST R2,-Y
03E1 940E083F CALL empy32fs
03E3 940E0710 CALL add32fs
03E5 902000C8 LDS R2,b
03E7 903000C9 LDS R3,b+1
03E9 912000CA LDS R18,k
03EB 913000CB LDS R19,k+1
03ED 0D22 ADD R18,R2
03EE 1D33 ADC R19,R3
03EF E002 LDI R16,2
03F0 E010 LDI R17,0
03F1 940E060D CALL empy16s
03F3 01F8 MOVW R30,R16
03F4 E880 LDI R24,0x80
03F5 E090 LDI R25,0
03F6 0FE8 ADD R30,R24
03F7 1FF9 ADC R31,R25
03F8 8100 LDD R16,Z+0
03F9 8111 LDD R17,Z+1
03FA 940E06B6 CALL int2fp
03FC 933A ST R19,-Y
03FD 932A ST R18,-Y
03FE 931A ST R17,-Y
03FF 930A ST R16,-Y
0400 929A ST R9,-Y
0401 928A ST R8,-Y
0402 927A ST R7,-Y
0403 926A ST R6,-Y
0404 940E083F CALL empy32fs
0406 940E071B CALL sub32f
0408 940E066E CALL fp2int
040A 0118 MOVW R2,R16
040B 904000C8 LDS R4,b
040D 905000C9 LDS R5,b+1
040F 912000CA LDS R18,k
0411 913000CB LDS R19,k+1
0413 0D24 ADD R18,R4
0414 1D35 ADC R19,R5
0415 E002 LDI R16,2
0416 E010 LDI R17,0
0417 940E060D CALL empy16s
0419 01F8 MOVW R30,R16
041A E880 LDI R24,0x80
041B E090 LDI R25,0
041C 0FE8 ADD R30,R24
041D 1FF9 ADC R31,R25
041E 8231 STD Z+1,R3
041F 8220 STD Z+0,R2
0420 9508 RET
_FFT:
dataI --> R20
dataR --> R22
0421 940E062A CALL push_gset3
0423 01A9 MOVW R20,R18
0424 01B8 MOVW R22,R16
(0038)
(0039) /*dataR[k]=dataR[k]+dataR[k+b]*cos_tab[p]+dataI[k+b]*sin_tab[p];
(0040) dataI[k]=dataI[k]-dataR[k+b]*sin_tab[p]+dataI[k+b]*cos_tab[p];
(0041) dataR[k+b]=TR-dataR[k+b]*cos_tab[p]-dataI[k+b]*sin_tab[p];
(0042) dataI[k+b]=TI+temp*sin_tab[p]-dataI[k+b]*cos_tab[p];*/
(0043)
(0044) }
(0045) void FFT(int dataR[],int dataI[])
(0046) {
(0047) // 以下是数据掉头功能
(0048) for(i = 0 ; i < 16 ; i++)
0425 2422 CLR R2
0426 2433 CLR R3
0427 923000CF STS i+1,R3
0429 922000CE STS i,R2
(0049) {
(0050) CHANGE ( ) ;
042B DC60 RCALL _CHANGE
042C 918000CE LDS R24,i
042E 919000CF LDS R25,i+1
0430 9601 ADIW R24,1
0431 939000CF STS i+1,R25
0433 938000CE STS i,R24
0435 3180 CPI R24,0x10
0436 E0E0 LDI R30,0
0437 079E CPC R25,R30
0438 F394 BLT 0x042B
(0051) }
(0052) for(i=0;i<16;i++)
0439 2422 CLR R2
043A 2433 CLR R3
043B 923000CF STS i+1,R3
043D 922000CE STS i,R2
(0053) {
(0054) dataR[i]=dataI[i]; dataI[i]=0;
043F 912000CE LDS R18,i
0441 913000CF LDS R19,i+1
0443 E002 LDI R16,2
0444 E010 LDI R17,0
0445 940E060D CALL empy16s
0447 01F8 MOVW R30,R16
0448 0FE4 ADD R30,R20
0449 1FF5 ADC R31,R21
044A 8020 LDD R2,Z+0
044B 8031 LDD R3,Z+1
044C 01F8 MOVW R30,R16
044D 0FE6 ADD R30,R22
044E 1FF7 ADC R31,R23
044F 8231 STD Z+1,R3
0450 8220 STD Z+0,R2
0451 912000CE LDS R18,i
0453 913000CF LDS R19,i+1
0455 E002 LDI R16,2
0456 E010 LDI R17,0
0457 940E060D CALL empy16s
0459 01F8 MOVW R30,R16
045A 0FE4 ADD R30,R20
045B 1FF5 ADC R31,R21
045C 2422 CLR R2
045D 2433 CLR R3
045E 8231 STD Z+1,R3
045F 8220 STD Z+0,R2
0460 918000CE LDS R24,i
0462 919000CF LDS R25,i+1
0464 9601 ADIW R24,1
0465 939000CF STS i+1,R25
0467 938000CE STS i,R24
0469 3180 CPI R24,0x10
046A E0E0 LDI R30,0
046B 079E CPC R25,R30
046C F294 BLT 0x043F
(0055) }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -