📄 main.lis
字号:
0218 FF4F sbci R31,255
021A 0082 std z+0,R0
021C 29C0 xjmp L38
021E L35:
021E .dbline 247
021E 82E0 ldi R24,2
0220 FE01 movw R30,R28
0222 E85B subi R30,184 ; addi 72
0224 FF4F sbci R31,255
0226 0080 ldd R0,z+0
0228 809D mul R24,R0
022A F001 movw R30,R0
022C CE01 movw R24,R28
022E E80F add R30,R24
0230 F91F adc R31,R25
0232 2080 ldd R2,z+0
0234 3180 ldd R3,z+1
0236 4424 clr R4
0238 5524 clr R5
023A FE01 movw R30,R28
023C EC5B subi R30,188 ; addi 68
023E FF4F sbci R31,255
0240 6080 ldd R6,z+0
0242 7180 ldd R7,z+1
0244 8280 ldd R8,z+2
0246 9380 ldd R9,z+3
0248 620C add R6,R2
024A 731C adc R7,R3
024C 841C adc R8,R4
024E 951C adc R9,R5
0250 FE01 movw R30,R28
0252 EC5B subi R30,188 ; addi 68
0254 FF4F sbci R31,255
0256 6082 std z+0,R6
0258 7182 std z+1,R7
025A 8282 std z+2,R8
025C 9382 std z+3,R9
025E L36:
025E .dbline 246
025E FE01 movw R30,R28
0260 E85B subi R30,184 ; addi 72
0262 FF4F sbci R31,255
0264 0080 ldd R0,z+0
0266 0394 inc R0
0268 FE01 movw R30,R28
026A E85B subi R30,184 ; addi 72
026C FF4F sbci R31,255
026E 0082 std z+0,R0
0270 L38:
0270 .dbline 246
0270 FE01 movw R30,R28
0272 E85B subi R30,184 ; addi 72
0274 FF4F sbci R31,255
0276 8081 ldd R24,z+0
0278 8132 cpi R24,33
027A 08F4 brsh X2
027C D0CF xjmp L35
027E X2:
027E .dbline 248
027E ; sum += value_buf[count];
027E ; return (sum/(N-2));
027E 85E0 ldi R24,5
0280 90E0 ldi R25,0
0282 FE01 movw R30,R28
0284 EC5B subi R30,188 ; addi 68
0286 FF4F sbci R31,255
0288 2080 ldd R2,z+0
028A 3180 ldd R3,z+1
028C 4280 ldd R4,z+2
028E 5380 ldd R5,z+3
0290 8A93 st -y,R24
0292 8101 movw R16,R2
0294 9201 movw R18,R4
0296 0E940000 xcall lsr32
029A .dbline -2
029A L17:
029A EF96 adiw R28,63
029C 2A96 adiw R28,10 ; offset = 73
029E 0E940000 xcall pop_gset5x
02A2 .dbline 0 ; func end
02A2 0895 ret
02A4 .dbsym l sum 68 l
02A4 .dbsym l count 72 c
02A4 .dbsym r temp 10 i
02A4 .dbsym r j 12 c
02A4 .dbsym l value_buf 0 A[68:34]i
02A4 .dbsym r i 14 c
02A4 .dbend
02A4 .dbfunc e AdAverageT _AdAverageT fi
02A4 ; sum -> y+40
02A4 ; count -> y+44
02A4 ; temp -> R10,R11
02A4 ; j -> R12
02A4 ; value_buf -> y+0
02A4 ; i -> R14
.even
02A4 _AdAverageT::
02A4 0E940000 xcall push_gset5x
02A8 AD97 sbiw R28,45
02AA .dbline -1
02AA .dbline 252
02AA ; }
02AA ;
02AA ; unsigned int AdAverageT(void)
02AA ; {
02AA .dbline 256
02AA ; unsigned char count,i,j;
02AA ; unsigned int value_buf[20];
02AA ; unsigned int temp;
02AA ; unsigned long sum=0;
02AA 80E0 ldi R24,0
02AC 90E0 ldi R25,0
02AE A0E0 ldi R26,0
02B0 B0E0 ldi R27,0
02B2 FE01 movw R30,R28
02B4 80A7 std z+40,R24
02B6 91A7 std z+41,R25
02B8 A2A7 std z+42,R26
02BA B3A7 std z+43,R27
02BC .dbline 257
02BC ; for (count=0;count<20;count++)
02BC 0024 clr R0
02BE 0CA6 std y+44,R0
02C0 0EC0 xjmp L43
02C2 L40:
02C2 .dbline 258
02C2 .dbline 259
02C2 33DF xcall _AdAverage
02C4 1801 movw R2,R16
02C6 82E0 ldi R24,2
02C8 0CA4 ldd R0,y+44
02CA 809D mul R24,R0
02CC F001 movw R30,R0
02CE CE01 movw R24,R28
02D0 E80F add R30,R24
02D2 F91F adc R31,R25
02D4 3182 std z+1,R3
02D6 2082 std z+0,R2
02D8 .dbline 261
02D8 L41:
02D8 .dbline 257
02D8 0CA4 ldd R0,y+44
02DA 0394 inc R0
02DC 0CA6 std y+44,R0
02DE L43:
02DE .dbline 257
02DE 8CA5 ldd R24,y+44
02E0 8431 cpi R24,20
02E2 78F3 brlo L40
02E4 .dbline 262
02E4 ; {
02E4 ; value_buf[count] = AdAverage();
02E4 ;
02E4 ; }
02E4 ; for (j=0;j<20-1;j++)
02E4 CC24 clr R12
02E6 3BC0 xjmp L47
02E8 L44:
02E8 .dbline 263
02E8 ; {
02E8 .dbline 264
02E8 ; for (i=0;i<20-j;i++)
02E8 EE24 clr R14
02EA 33C0 xjmp L51
02EC L48:
02EC .dbline 265
02EC ; {
02EC .dbline 266
02EC ; if ( value_buf[i]>value_buf[i+1] )
02EC 82E0 ldi R24,2
02EE 8E9D mul R24,R14
02F0 CE01 movw R24,R28
02F2 0296 adiw R24,2
02F4 F001 movw R30,R0
02F6 E80F add R30,R24
02F8 F91F adc R31,R25
02FA 2080 ldd R2,z+0
02FC 3180 ldd R3,z+1
02FE CE01 movw R24,R28
0300 F001 movw R30,R0
0302 E80F add R30,R24
0304 F91F adc R31,R25
0306 4080 ldd R4,z+0
0308 5180 ldd R5,z+1
030A 2414 cp R2,R4
030C 3504 cpc R3,R5
030E 00F5 brsh L52
0310 .dbline 267
0310 ; {
0310 .dbline 268
0310 ; temp = value_buf[i];
0310 82E0 ldi R24,2
0312 8E9D mul R24,R14
0314 F001 movw R30,R0
0316 CE01 movw R24,R28
0318 E80F add R30,R24
031A F91F adc R31,R25
031C A080 ldd R10,z+0
031E B180 ldd R11,z+1
0320 .dbline 269
0320 ; value_buf[i] = value_buf[i+1];
0320 82E0 ldi R24,2
0322 8E9D mul R24,R14
0324 CE01 movw R24,R28
0326 0296 adiw R24,2
0328 F001 movw R30,R0
032A E80F add R30,R24
032C F91F adc R31,R25
032E 2080 ldd R2,z+0
0330 3180 ldd R3,z+1
0332 CE01 movw R24,R28
0334 F001 movw R30,R0
0336 E80F add R30,R24
0338 F91F adc R31,R25
033A 3182 std z+1,R3
033C 2082 std z+0,R2
033E .dbline 270
033E ; value_buf[i+1] = temp;
033E 82E0 ldi R24,2
0340 8E9D mul R24,R14
0342 F001 movw R30,R0
0344 CE01 movw R24,R28
0346 0296 adiw R24,2
0348 E80F add R30,R24
034A F91F adc R31,R25
034C B182 std z+1,R11
034E A082 std z+0,R10
0350 .dbline 271
0350 ; }
0350 L52:
0350 .dbline 272
0350 L49:
0350 .dbline 264
0350 E394 inc R14
0352 L51:
0352 .dbline 264
0352 84E1 ldi R24,20
0354 8C19 sub R24,R12
0356 E816 cp R14,R24
0358 08F4 brsh X3
035A C8CF xjmp L48
035C X3:
035C .dbline 273
035C L45:
035C .dbline 262
035C C394 inc R12
035E L47:
035E .dbline 262
035E 8C2D mov R24,R12
0360 8331 cpi R24,19
0362 08F4 brsh X4
0364 C1CF xjmp L44
0366 X4:
0366 .dbline 274
0366 ; }
0366 ; }
0366 ; for(count=1;count<20-1;count++)
0366 0024 clr R0
0368 0394 inc R0
036A 0CA6 std y+44,R0
036C 1CC0 xjmp L60
036E L57:
036E .dbline 275
036E 82E0 ldi R24,2
0370 0CA4 ldd R0,y+44
0372 809D mul R24,R0
0374 F001 movw R30,R0
0376 CE01 movw R24,R28
0378 E80F add R30,R24
037A F91F adc R31,R25
037C 2080 ldd R2,z+0
037E 3180 ldd R3,z+1
0380 4424 clr R4
0382 5524 clr R5
0384 FE01 movw R30,R28
0386 60A4 ldd R6,z+40
0388 71A4 ldd R7,z+41
038A 82A4 ldd R8,z+42
038C 93A4 ldd R9,z+43
038E 620C add R6,R2
0390 731C adc R7,R3
0392 841C adc R8,R4
0394 951C adc R9,R5
0396 FE01 movw R30,R28
0398 60A6 std z+40,R6
039A 71A6 std z+41,R7
039C 82A6 std z+42,R8
039E 93A6 std z+43,R9
03A0 L58:
03A0 .dbline 274
03A0 0CA4 ldd R0,y+44
03A2 0394 inc R0
03A4 0CA6 std y+44,R0
03A6 L60:
03A6 .dbline 274
03A6 8CA5 ldd R24,y+44
03A8 8331 cpi R24,19
03AA 08F3 brlo L57
03AC .dbline 276
03AC ; sum += value_buf[count];
03AC ; return (sum/(20-2));
03AC 82E1 ldi R24,18
03AE 90E0 ldi R25,0
03B0 A0E0 ldi R26,0
03B2 B0E0 ldi R27,0
03B4 FE01 movw R30,R28
03B6 20A4 ldd R2,z+40
03B8 31A4 ldd R3,z+41
03BA 42A4 ldd R4,z+42
03BC 53A4 ldd R5,z+43
03BE BA93 st -y,R27
03C0 AA93 st -y,R26
03C2 9A93 st -y,R25
03C4 8A93 st -y,R24
03C6 8101 movw R16,R2
03C8 9201 movw R18,R4
03CA 0E940000 xcall div32u
03CE .dbline -2
03CE L39:
03CE AD96 adiw R28,45
03D0 0E940000 xcall pop_gset5x
03D4 .dbline 0 ; func end
03D4 0895 ret
03D6 .dbsym l sum 40 l
03D6 .dbsym l count 44 c
03D6 .dbsym r temp 10 i
03D6 .dbsym r j 12 c
03D6 .dbsym l value_buf 0 A[40:20]i
03D6
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -