www.pudn.com > fft_iccavr.rar > fft.lis
.module fft.c
.area text(rom, con, rel)
0000 .dbfile D:\HJN\Design\AVR\fft\fft.c
0000 .dbfunc e four1 _four1 fV
0000 ; theta -> y+52
0000 ; wpi -> y+48
0000 ; wpr -> y+44
0000 ; wtemp -> y+40
0000 ; m -> y+36
0000 ; istep -> y+32
0000 ; n -> y+28
0000 ; mmax -> y+24
0000 ; wr -> y+20
0000 ; wi -> y+16
0000 ; tempi -> y+12
0000 ; tempr -> y+8
0000 ; i -> y+4
0000 ; j -> y+0
0000 ; isign -> R10,R11
0000 ; nn -> y+64
0000 ; data -> R12,R13
.even
0000 _four1::
0000 3A93 st -y,r19
0002 2A93 st -y,r18
0004 0E940000 xcall push_gset4
0008 6801 movw R12,R16
000A E897 sbiw R28,56
000C FE01 movw R30,R28
000E EC5B subi R30,188 ; addi 68
0010 FF4F sbci R31,255
0012 A080 ldd R10,z+0
0014 B180 ldd R11,z+1
0016 .dbline -1
0016 .dbline 9
0016 ; /*data是输入和输出(复数),nn是FFT的点数 isign指示FFT变换方向1为正变换,
0016 ; -1为反变换,程序出自《Numerical Recipes in C》 */
0016 ;
0016 ;
0016 ; #include
0016 ; #define SWAP(a,b) tempr=(a);(a)=(b);(b)=tempr
0016 ;
0016 ; void four1(float data[], unsigned long nn, int isign)
0016 ; {
0016 .dbline 14
0016 ; unsigned long n,mmax,m,j,istep,i;
0016 ; double wtemp,wr,wpr,wpi,wi,theta;
0016 ; float tempr,tempi;
0016 ;
0016 ; n=nn << 1; //nn乘以2赋给n,作为取样点数
0016 FE01 movw R30,R28
0018 E05C subi R30,192 ; addi 64
001A FF4F sbci R31,255
001C 2080 ldd R2,z+0
001E 3180 ldd R3,z+1
0020 4280 ldd R4,z+2
0022 5380 ldd R5,z+3
0024 220C lsl R2
0026 331C rol R3
0028 441C rol R4
002A 551C rol R5
002C FE01 movw R30,R28
002E 248E std z+28,R2
0030 358E std z+29,R3
0032 468E std z+30,R4
0034 578E std z+31,R5
0036 .dbline 15
0036 ; j=1;
0036 41E0 ldi R20,1
0038 50E0 ldi R21,0
003A 60E0 ldi R22,0
003C 70E0 ldi R23,0
003E FE01 movw R30,R28
0040 4083 std z+0,R20
0042 5183 std z+1,R21
0044 6283 std z+2,R22
0046 7383 std z+3,R23
0048 .dbline 16
0048 41E0 ldi R20,1
004A 50E0 ldi R21,0
004C 60E0 ldi R22,0
004E 70E0 ldi R23,0
0050 FE01 movw R30,R28
0052 4483 std z+4,R20
0054 5583 std z+5,R21
0056 6683 std z+6,R22
0058 7783 std z+7,R23
005A 79C1 xjmp L5
005C L2:
005C .dbline 16
005C ; for (i=1;i i) {
005C FE01 movw R30,R28
005E 2480 ldd R2,z+4
0060 3580 ldd R3,z+5
0062 4680 ldd R4,z+6
0064 5780 ldd R5,z+7
0066 FE01 movw R30,R28
0068 6080 ldd R6,z+0
006A 7180 ldd R7,z+1
006C 8280 ldd R8,z+2
006E 9380 ldd R9,z+3
0070 2614 cp R2,R6
0072 3704 cpc R3,R7
0074 4804 cpc R4,R8
0076 5904 cpc R5,R9
0078 08F0 brlo X0
007A F6C0 xjmp L6
007C X0:
007C .dbline 17
007C .dbline 18
007C ; SWAP(data[j],data[i]);
007C FE01 movw R30,R28
007E 2080 ldd R2,z+0
0080 3180 ldd R3,z+1
0082 4280 ldd R4,z+2
0084 5380 ldd R5,z+3
0086 44E0 ldi R20,4
0088 50E0 ldi R21,0
008A 60E0 ldi R22,0
008C 70E0 ldi R23,0
008E 5A92 st -y,R5
0090 4A92 st -y,R4
0092 3A92 st -y,R3
0094 2A92 st -y,R2
0096 8A01 movw R16,R20
0098 9B01 movw R18,R22
009A 0E940000 xcall empy32u
009E F801 movw R30,R16
00A0 EC0D add R30,R12
00A2 FD1D adc R31,R13
00A4 2080 ldd R2,z+0
00A6 3180 ldd R3,z+1
00A8 4280 ldd R4,z+2
00AA 5380 ldd R5,z+3
00AC FE01 movw R30,R28
00AE 2086 std z+8,R2
00B0 3186 std z+9,R3
00B2 4286 std z+10,R4
00B4 5386 std z+11,R5
00B6 .dbline 18
00B6 FE01 movw R30,R28
00B8 2480 ldd R2,z+4
00BA 3580 ldd R3,z+5
00BC 4680 ldd R4,z+6
00BE 5780 ldd R5,z+7
00C0 44E0 ldi R20,4
00C2 50E0 ldi R21,0
00C4 60E0 ldi R22,0
00C6 70E0 ldi R23,0
00C8 5A92 st -y,R5
00CA 4A92 st -y,R4
00CC 3A92 st -y,R3
00CE 2A92 st -y,R2
00D0 8A01 movw R16,R20
00D2 9B01 movw R18,R22
00D4 0E940000 xcall empy32u
00D8 F801 movw R30,R16
00DA EC0D add R30,R12
00DC FD1D adc R31,R13
00DE 2080 ldd R2,z+0
00E0 3180 ldd R3,z+1
00E2 4280 ldd R4,z+2
00E4 5380 ldd R5,z+3
00E6 FE01 movw R30,R28
00E8 6080 ldd R6,z+0
00EA 7180 ldd R7,z+1
00EC 8280 ldd R8,z+2
00EE 9380 ldd R9,z+3
00F0 44E0 ldi R20,4
00F2 50E0 ldi R21,0
00F4 60E0 ldi R22,0
00F6 70E0 ldi R23,0
00F8 9A92 st -y,R9
00FA 8A92 st -y,R8
00FC 7A92 st -y,R7
00FE 6A92 st -y,R6
0100 8A01 movw R16,R20
0102 9B01 movw R18,R22
0104 0E940000 xcall empy32u
0108 F801 movw R30,R16
010A EC0D add R30,R12
010C FD1D adc R31,R13
010E 2082 std z+0,R2
0110 3182 std z+1,R3
0112 4282 std z+2,R4
0114 5382 std z+3,R5
0116 .dbline 18
0116 FE01 movw R30,R28
0118 2480 ldd R2,z+4
011A 3580 ldd R3,z+5
011C 4680 ldd R4,z+6
011E 5780 ldd R5,z+7
0120 44E0 ldi R20,4
0122 50E0 ldi R21,0
0124 60E0 ldi R22,0
0126 70E0 ldi R23,0
0128 5A92 st -y,R5
012A 4A92 st -y,R4
012C 3A92 st -y,R3
012E 2A92 st -y,R2
0130 8A01 movw R16,R20
0132 9B01 movw R18,R22
0134 0E940000 xcall empy32u
0138 F801 movw R30,R16
013A EC0D add R30,R12
013C FD1D adc R31,R13
013E DE01 movw R26,R28
0140 1896 adiw R26,8
0142 2D90 ld R2,x+
0144 3D90 ld R3,x+
0146 4D90 ld R4,x+
0148 5C90 ld R5,x
014A 2082 std z+0,R2
014C 3182 std z+1,R3
014E 4282 std z+2,R4
0150 5382 std z+3,R5
0152 .dbline 19
0152 ; SWAP(data[j+1],data[i+1]);
0152 41E0 ldi R20,1
0154 50E0 ldi R21,0
0156 60E0 ldi R22,0
0158 70E0 ldi R23,0
015A FE01 movw R30,R28
015C 2080 ldd R2,z+0
015E 3180 ldd R3,z+1
0160 4280 ldd R4,z+2
0162 5380 ldd R5,z+3
0164 240E add R2,R20
0166 351E adc R3,R21
0168 461E adc R4,R22
016A 571E adc R5,R23
016C 44E0 ldi R20,4
016E 50E0 ldi R21,0
0170 60E0 ldi R22,0
0172 70E0 ldi R23,0
0174 5A92 st -y,R5
0176 4A92 st -y,R4
0178 3A92 st -y,R3
017A 2A92 st -y,R2
017C 8A01 movw R16,R20
017E 9B01 movw R18,R22
0180 0E940000 xcall empy32u
0184 F801 movw R30,R16
0186 EC0D add R30,R12
0188 FD1D adc R31,R13
018A 2080 ldd R2,z+0
018C 3180 ldd R3,z+1
018E 4280 ldd R4,z+2
0190 5380 ldd R5,z+3
0192 FE01 movw R30,R28
0194 2086 std z+8,R2
0196 3186 std z+9,R3
0198 4286 std z+10,R4
019A 5386 std z+11,R5
019C .dbline 19
019C 41E0 ldi R20,1
019E 50E0 ldi R21,0
01A0 60E0 ldi R22,0
01A2 70E0 ldi R23,0
01A4 FE01 movw R30,R28
01A6 2480 ldd R2,z+4
01A8 3580 ldd R3,z+5
01AA 4680 ldd R4,z+6
01AC 5780 ldd R5,z+7
01AE 240E add R2,R20
01B0 351E adc R3,R21
01B2 461E adc R4,R22
01B4 571E adc R5,R23
01B6 44E0 ldi R20,4
01B8 50E0 ldi R21,0
01BA 60E0 ldi R22,0
01BC 70E0 ldi R23,0
01BE 5A92 st -y,R5
01C0 4A92 st -y,R4
01C2 3A92 st -y,R3
01C4 2A92 st -y,R2
01C6 8A01 movw R16,R20
01C8 9B01 movw R18,R22
01CA 0E940000 xcall empy32u
01CE F801 movw R30,R16
01D0 EC0D add R30,R12
01D2 FD1D adc R31,R13
01D4 2080 ldd R2,z+0
01D6 3180 ldd R3,z+1
01D8 4280 ldd R4,z+2
01DA 5380 ldd R5,z+3
01DC 41E0 ldi R20,1
01DE 50E0 ldi R21,0
01E0 60E0 ldi R22,0
01E2 70E0 ldi R23,0
01E4 FE01 movw R30,R28
01E6 6080 ldd R6,z+0
01E8 7180 ldd R7,z+1
01EA 8280 ldd R8,z+2
01EC 9380 ldd R9,z+3
01EE 640E add R6,R20
01F0 751E adc R7,R21
01F2 861E adc R8,R22
01F4 971E adc R9,R23
01F6 44E0 ldi R20,4
01F8 50E0 ldi R21,0
01FA 60E0 ldi R22,0
01FC 70E0 ldi R23,0
01FE 9A92 st -y,R9
0200 8A92 st -y,R8
0202 7A92 st -y,R7
0204 6A92 st -y,R6
0206 8A01 movw R16,R20
0208 9B01 movw R18,R22
020A 0E940000 xcall empy32u
020E F801 movw R30,R16
0210 EC0D add R30,R12
0212 FD1D adc R31,R13
0214 2082 std z+0,R2
0216 3182 std z+1,R3
0218 4282 std z+2,R4
021A 5382 std z+3,R5
021C .dbline 19
021C 41E0 ldi R20,1
021E 50E0 ldi R21,0
0220 60E0 ldi R22,0
0222 70E0 ldi R23,0
0224 FE01 movw R30,R28
0226 2480 ldd R2,z+4
0228 3580 ldd R3,z+5
022A 4680 ldd R4,z+6
022C 5780 ldd R5,z+7
022E 240E add R2,R20
0230 351E adc R3,R21
0232 461E adc R4,R22
0234 571E adc R5,R23
0236 44E0 ldi R20,4
0238 50E0 ldi R21,0
023A 60E0 ldi R22,0
023C 70E0 ldi R23,0
023E 5A92 st -y,R5
0240 4A92 st -y,R4
0242 3A92 st -y,R3
0244 2A92 st -y,R2
0246 8A01 movw R16,R20
0248 9B01 movw R18,R22
024A 0E940000 xcall empy32u
024E F801 movw R30,R16
0250 EC0D add R30,R12
0252 FD1D adc R31,R13
0254 DE01 movw R26,R28
0256 1896 adiw R26,8
0258 2D90 ld R2,x+
025A 3D90 ld R3,x+
025C 4D90 ld R4,x+
025E 5C90 ld R5,x
0260 2082 std z+0,R2
0262 3182 std z+1,R3
0264 4282 std z+2,R4
0266 5382 std z+3,R5
0268 .dbline 20
0268 ; }
0268 L6:
0268 .dbline 21
0268 ; m=n >> 1; //将n除以2的值赋给m
0268 FE01 movw R30,R28
026A 248C ldd R2,z+28
026C 358C ldd R3,z+29
026E 468C ldd R4,z+30
0270 578C ldd R5,z+31
0272 5694 lsr R5
0274 4794 ror R4
0276 3794 ror R3
0278 2794 ror R2
027A FE01 movw R30,R28
027C 24A2 std z+36,R2
027E 35A2 std z+37,R3
0280 46A2 std z+38,R4
0282 57A2 std z+39,R5
0284 21C0 xjmp L9
0286 L8:
0286 .dbline 23
0286 .dbline 24
0286 FE01 movw R30,R28
0288 24A0 ldd R2,z+36
028A 35A0 ldd R3,z+37
028C 46A0 ldd R4,z+38
028E 57A0 ldd R5,z+39
0290 FE01 movw R30,R28
0292 6080 ldd R6,z+0
0294 7180 ldd R7,z+1
0296 8280 ldd R8,z+2
0298 9380 ldd R9,z+3
029A 6218 sub R6,R2
029C 7308 sbc R7,R3
029E 8408 sbc R8,R4
02A0 9508 sbc R9,R5
02A2 FE01 movw R30,R28
02A4 6082 std z+0,R6
02A6 7182 std z+1,R7
02A8 8282 std z+2,R8
02AA 9382 std z+3,R9
02AC .dbline 25
02AC FE01 movw R30,R28
02AE 24A0 ldd R2,z+36
02B0 35A0 ldd R3,z+37
02B2 46A0 ldd R4,z+38
02B4 57A0 ldd R5,z+39
02B6 5694 lsr R5
02B8 4794 ror R4
02BA 3794 ror R3
02BC 2794 ror R2
02BE FE01 movw R30,R28
02C0 24A2 std z+36,R2
02C2 35A2 std z+37,R3
02C4 46A2 std z+38,R4
02C6 57A2 std z+39,R5
02C8 .dbline 26
02C8 L9:
02C8 .dbline 22
02C8 ; while (m >= 2 && j > m)
02C8 42E0 ldi R20,2
02CA 50E0 ldi R21,0
02CC 60E0 ldi R22,0
02CE 70E0 ldi R23,0
02D0 FE01 movw R30,R28
02D2 24A0 ldd R2,z+36
02D4 35A0 ldd R3,z+37
02D6 46A0 ldd R4,z+38
02D8 57A0 ldd R5,z+39
02DA 2416 cp R2,R20
02DC 3506 cpc R3,R21
02DE 4606 cpc R4,R22
02E0 5706 cpc R5,R23
02E2 80F0 brlo L11
02E4 FE01 movw R30,R28
02E6 24A0 ldd R2,z+36
02E8 35A0 ldd R3,z+37
02EA 46A0 ldd R4,z+38
02EC 57A0 ldd R5,z+39
02EE FE01 movw R30,R28
02F0 6080 ldd R6,z+0
02F2 7180 ldd R7,z+1
02F4 8280 ldd R8,z+2
02F6 9380 ldd R9,z+3
02F8 2614 cp R2,R6
02FA 3704 cpc R3,R7
02FC 4804 cpc R4,R8
02FE 5904 cpc R5,R9
0300 08F4 brsh X1
0302 C1CF xjmp L8
0304 X1:
0304 L11:
0304 .dbline 27
0304 FE01 movw R30,R28
0306 24A0 ldd R2,z+36
0308 35A0 ldd R3,z+37
030A 46A0 ldd R4,z+38
030C 57A0 ldd R5,z+39
030E FE01 movw R30,R28
0310 6080 ldd R6,z+0
0312 7180 ldd R7,z+1
0314 8280 ldd R8,z+2
0316 9380 ldd R9,z+3
0318 620C add R6,R2
031A 731C adc R7,R3
031C 841C adc R8,R4
031E 951C adc R9,R5
0320 FE01 movw R30,R28
0322 6082 std z+0,R6
0324 7182 std z+1,R7
0326 8282 std z+2,R8
0328 9382 std z+3,R9
032A .dbline 28
032A L3:
032A .dbline 16
032A 42E0 ldi R20,2
032C 50E0 ldi R21,0
032E 60E0 ldi R22,0
0330 70E0 ldi R23,0
0332 FE01 movw R30,R28
0334 2480 ldd R2,z+4
0336 3580 ldd R3,z+5
0338 4680 ldd R4,z+6
033A 5780 ldd R5,z+7
033C 240E add R2,R20
033E 351E adc R3,R21
0340 461E adc R4,R22
0342 571E adc R5,R23
0344 FE01 movw R30,R28
0346 2482 std z+4,R2
0348 3582 std z+5,R3
034A 4682 std z+6,R4
034C 5782 std z+7,R5
034E L5:
034E .dbline 16
034E FE01 movw R30,R28
0350 248C ldd R2,z+28
0352 358C ldd R3,z+29
0354 468C ldd R4,z+30
0356 578C ldd R5,z+31
0358 FE01 movw R30,R28
035A 6480 ldd R6,z+4
035C 7580 ldd R7,z+5
035E 8680 ldd R8,z+6
0360 9780 ldd R9,z+7
0362 6214 cp R6,R2
0364 7304 cpc R7,R3
0366 8404 cpc R8,R4
0368 9504 cpc R9,R5
036A 08F4 brsh X2
036C 77CE xjmp L2
036E X2:
036E .dbline 29
036E ; {
036E ; j -= m;
036E ; m >>= 1; //将m除以2的值赋给m
036E ; }
036E ; j += m;
036E ; }
036E ; mmax=2;
036E 42E0 ldi R20,2
0370 50E0 ldi R21,0
0372 60E0 ldi R22,0
0374 70E0 ldi R23,0
0376 FE01 movw R30,R28
0378 408F std z+24,R20
037A 518F std z+25,R21
037C 628F std z+26,R22
037E 738F std z+27,R23
0380 52C3 xjmp L13
0382 L12:
0382 .dbline 30
0382 ; while (n > mmax) {
0382 .dbline 31
0382 ; istep=mmax << 1;
0382 FE01 movw R30,R28
0384 208C ldd R2,z+24
0386 318C ldd R3,z+25
0388 428C ldd R4,z+26
038A 538C ldd R5,z+27
038C 220C lsl R2
038E 331C rol R3
0390 441C rol R4
0392 551C rol R5
0394 FE01 movw R30,R28
0396 20A2 std z+32,R2
0398 31A2 std z+33,R3
039A 42A2 std z+34,R4
039C 53A2 std z+35,R5
039E .dbline 32
039E ; theta=isign*(6.28318530717959/mmax);
039E 8501 movw R16,R10
03A0 0E940000 xcall int2fp
03A4 3A93 st -y,R19
03A6 2A93 st -y,R18
03A8 1A93 st -y,R17
03AA 0A93 st -y,R16
03AC 00E0 ldi R16,L15
03B0 0E940000 xcall lpm32
03B4 3A93 st -y,R19
03B6 2A93 st -y,R18
03B8 1A93 st -y,R17
03BA 0A93 st -y,R16
03BC 00E0 ldi R16,L16
03C0 0E940000 xcall lpm32
03C4 3A93 st -y,R19
03C6 2A93 st -y,R18
03C8 1A93 st -y,R17
03CA 0A93 st -y,R16
03CC FE01 movw R30,R28
03CE ; stack offset 12
03CE 24A0 ldd R2,z+36
03D0 35A0 ldd R3,z+37
03D2 46A0 ldd R4,z+38
03D4 57A0 ldd R5,z+39
03D6 5694 lsr R5
03D8 4794 ror R4
03DA 3794 ror R3
03DC 2794 ror R2
03DE 8101 movw R16,R2
03E0 9201 movw R18,R4
03E2 0E940000 xcall long2fp
03E6 3A93 st -y,R19
03E8 2A93 st -y,R18
03EA 1A93 st -y,R17
03EC 0A93 st -y,R16
03EE 0E940000 xcall empy32fs
03F2 41E0 ldi R20,1
03F4 50E0 ldi R21,0
03F6 60E0 ldi R22,0
03F8 70E0 ldi R23,0
03FA FE01 movw R30,R28
03FC ; stack offset 12
03FC 24A0 ldd R2,z+36
03FE 35A0 ldd R3,z+37
0400 46A0 ldd R4,z+38
0402 57A0 ldd R5,z+39
0404 2422 and R2,R20
0406 3522 and R3,R21
0408 4622 and R4,R22
040A 5722 and R5,R23
040C 8101 movw R16,R2
040E 9201 movw R18,R4
0410 0E940000 xcall long2fp
0414 3A93 st -y,R19
0416 2A93 st -y,R18
0418 1A93 st -y,R17
041A 0A93 st -y,R16
041C 0E940000 xcall add32fs
0420 0E940000 xcall div32fs
0424 0E940000 xcall empy32f
0428 FE01 movw R30,R28
042A 04AB std z+52,R16
042C 15AB std z+53,R17
042E 26AB std z+54,R18
0430 37AB std z+55,R19
0432 .dbline 33
0432 ; wtemp=sin(0.5*theta);
0432 00E0 ldi R16,L17
0436 0E940000 xcall lpm32
043A 3A93 st -y,R19
043C 2A93 st -y,R18
043E 1A93 st -y,R17
0440 0A93 st -y,R16
0442 FE01 movw R30,R28
0444 ; stack offset 4
0444 20AC ldd R2,z+56
0446 31AC ldd R3,z+57
0448 42AC ldd R4,z+58
044A 53AC ldd R5,z+59
044C 5A92 st -y,R5
044E 4A92 st -y,R4
0450 3A92 st -y,R3
0452 2A92 st -y,R2
0454 0E940000 xcall empy32f
0458 0E940000 xcall _sin
045C FE01 movw R30,R28
045E 00A7 std z+40,R16
0460 11A7 std z+41,R17
0462 22A7 std z+42,R18
0464 33A7 std z+43,R19
0466 .dbline 34
0466 ; wpr = -2.0*wtemp*wtemp;
0466 00E0 ldi R16,L18
046A 0E940000 xcall lpm32
046E 3A93 st -y,R19
0470 2A93 st -y,R18
0472 1A93 st -y,R17
0474 0A93 st -y,R16
0476 FE01 movw R30,R28
0478 ; stack offset 4
0478 24A4 ldd R2,z+44
047A 35A4 ldd R3,z+45
047C 46A4 ldd R4,z+46
047E 57A4 ldd R5,z+47
0480 5A92 st -y,R5
0482 4A92 st -y,R4
0484 3A92 st -y,R3
0486 2A92 st -y,R2
0488 0E940000 xcall empy32fs
048C FE01 movw R30,R28
048E ; stack offset 4
048E 24A4 ldd R2,z+44
0490 35A4 ldd R3,z+45
0492 46A4 ldd R4,z+46
0494 57A4 ldd R5,z+47
0496 5A92 st -y,R5
0498 4A92 st -y,R4
049A 3A92 st -y,R3
049C 2A92 st -y,R2
049E 0E940000 xcall empy32f
04A2 FE01 movw R30,R28
04A4 04A7 std z+44,R16
04A6 15A7 std z+45,R17
04A8 26A7 std z+46,R18
04AA 37A7 std z+47,R19
04AC .dbline 35
04AC ; wpi=sin(theta);
04AC FE01 movw R30,R28
04AE 04A9 ldd R16,z+52
04B0 15A9 ldd R17,z+53
04B2 26A9 ldd R18,z+54
04B4 37A9 ldd R19,z+55
04B6 0E940000 xcall _sin
04BA FE01 movw R30,R28
04BC 00AB std z+48,R16
04BE 11AB std z+49,R17
04C0 22AB std z+50,R18
04C2 33AB std z+51,R19
04C4 .dbline 36
04C4 ; wr=1.0;
04C4 00E0 ldi R16,L19
04C8 0E940000 xcall lpm32
04CC FE01 movw R30,R28
04CE 048B std z+20,R16
04D0 158B std z+21,R17
04D2 268B std z+22,R18
04D4 378B std z+23,R19
04D6 .dbline 37
04D6 ; wi=0.0;
04D6 00E0 ldi R16,L20
04DA 0E940000 xcall lpm32
04DE FE01 movw R30,R28
04E0 008B std z+16,R16
04E2 118B std z+17,R17
04E4 228B std z+18,R18
04E6 338B std z+19,R19
04E8 .dbline 38
04E8 41E0 ldi R20,1
04EA 50E0 ldi R21,0
04EC 60E0 ldi R22,0
04EE 70E0 ldi R23,0
04F0 FE01 movw R30,R28
04F2 44A3 std z+36,R20
04F4 55A3 std z+37,R21
04F6 66A3 std z+38,R22
04F8 77A3 std z+39,R23
04FA 7BC2 xjmp L24
04FC L21:
04FC .dbline 38
04FC ; for (m=1;m