📄 adc-disp.lss
字号:
adc-disp.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 0000032c 00000000 00000000 00000074 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000010 00800060 0000032c 000003a0 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 00000014 00800070 0000033c 000003b0 2**0
ALLOC
3 .debug_aranges 00000020 00000000 00000000 000003b0 2**0
CONTENTS, READONLY, DEBUGGING
4 .debug_pubnames 0000004d 00000000 00000000 000003d0 2**0
CONTENTS, READONLY, DEBUGGING
5 .debug_info 000003bf 00000000 00000000 0000041d 2**0
CONTENTS, READONLY, DEBUGGING
6 .debug_abbrev 0000018f 00000000 00000000 000007dc 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_line 00000331 00000000 00000000 0000096b 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_frame 00000060 00000000 00000000 00000c9c 2**2
CONTENTS, READONLY, DEBUGGING
9 .debug_str 00000131 00000000 00000000 00000cfc 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_loc 000001ad 00000000 00000000 00000e2d 2**0
CONTENTS, READONLY, DEBUGGING
11 .debug_ranges 00000120 00000000 00000000 00000fda 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 2a 00 jmp 0x54 ; 0x54 <__ctors_end>
4: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
8: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
c: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
10: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
14: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
18: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
1c: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
20: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
24: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
28: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
2c: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
30: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
34: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
38: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
3c: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
40: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
44: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
48: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
4c: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
50: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
00000054 <__ctors_end>:
54: 11 24 eor r1, r1
56: 1f be out 0x3f, r1 ; 63
58: cf e5 ldi r28, 0x5F ; 95
5a: d4 e0 ldi r29, 0x04 ; 4
5c: de bf out 0x3e, r29 ; 62
5e: cd bf out 0x3d, r28 ; 61
00000060 <__do_copy_data>:
60: 10 e0 ldi r17, 0x00 ; 0
62: a0 e6 ldi r26, 0x60 ; 96
64: b0 e0 ldi r27, 0x00 ; 0
66: ec e2 ldi r30, 0x2C ; 44
68: f3 e0 ldi r31, 0x03 ; 3
6a: 02 c0 rjmp .+4 ; 0x70 <.do_copy_data_start>
0000006c <.do_copy_data_loop>:
6c: 05 90 lpm r0, Z+
6e: 0d 92 st X+, r0
00000070 <.do_copy_data_start>:
70: a0 37 cpi r26, 0x70 ; 112
72: b1 07 cpc r27, r17
74: d9 f7 brne .-10 ; 0x6c <.do_copy_data_loop>
00000076 <__do_clear_bss>:
76: 10 e0 ldi r17, 0x00 ; 0
78: a0 e7 ldi r26, 0x70 ; 112
7a: b0 e0 ldi r27, 0x00 ; 0
7c: 01 c0 rjmp .+2 ; 0x80 <.do_clear_bss_start>
0000007e <.do_clear_bss_loop>:
7e: 1d 92 st X+, r1
00000080 <.do_clear_bss_start>:
80: a4 38 cpi r26, 0x84 ; 132
82: b1 07 cpc r27, r17
84: e1 f7 brne .-8 ; 0x7e <.do_clear_bss_loop>
86: 0e 94 50 01 call 0x2a0 ; 0x2a0 <main>
8a: 0c 94 94 01 jmp 0x328 ; 0x328 <_exit>
0000008e <__bad_interrupt>:
8e: 0c 94 00 00 jmp 0 ; 0x0 <__vectors>
00000092 <IoInit>:
static uint g_aAdValue[8]; //A/D转换缓冲区
static uchar g_aLed[4];
void IoInit(void)
{
92: d8 98 cbi 0x1b, 0 ; 27
PORTA&=~_BV(PA0); //初始化pa0
DDRC=0xff;
94: 8f ef ldi r24, 0xFF ; 255
96: 84 bb out 0x14, r24 ; 20
PORTC=0X00;
98: 15 ba out 0x15, r1 ; 21
DDRA=0xf0;
9a: 80 ef ldi r24, 0xF0 ; 240
9c: 8a bb out 0x1a, r24 ; 26
PORTA=0xf0;
9e: 8b bb out 0x1b, r24 ; 27
}
a0: 08 95 ret
000000a2 <AdcConvert>:
uint AdcConvert(void)
{
a2: ff 92 push r15
a4: 0f 93 push r16
a6: 1f 93 push r17
a8: cf 93 push r28
aa: df 93 push r29
uchar i;
uint ret;
uchar max_id,min_id,max_value,min_value;
ADMUX=0xc0;//内部2.56V参考电压,0通道
ac: 80 ec ldi r24, 0xC0 ; 192
ae: 87 b9 out 0x07, r24 ; 7
ADCSRA=_BV(ADEN);//使能ADC,单次转换模式
b0: 80 e8 ldi r24, 0x80 ; 128
b2: 86 b9 out 0x06, r24 ; 6
b4: e0 e7 ldi r30, 0x70 ; 112
b6: f0 e0 ldi r31, 0x00 ; 0
can be achieved.
*/
void
_delay_loop_1(uint8_t __count)
{
__asm__ volatile (
b8: 40 e5 ldi r20, 0x50 ; 80
//连续转换8次
for(i=0;i<8;i++)
{
ADCSRA|=_BV(ADSC);
ba: 36 9a sbi 0x06, 6 ; 6
bc: 84 2f mov r24, r20
be: 8a 95 dec r24
c0: f1 f7 brne .-4 ; 0xbe <AdcConvert+0x1c>
_delay_us(60);
while(ADCSRA&_BV(ADSC))
c2: 36 99 sbic 0x06, 6 ; 6
c4: fb cf rjmp .-10 ; 0xbc <AdcConvert+0x1a>
_delay_us(60);
ret=ADCL;
c6: 84 b1 in r24, 0x04 ; 4
c8: 90 e0 ldi r25, 0x00 ; 0
ret|=(uint)(ADCH<<8);
ca: 25 b1 in r18, 0x05 ; 5
g_aAdValue[i]=ret;
cc: 32 2f mov r19, r18
ce: 20 e0 ldi r18, 0x00 ; 0
d0: 82 2b or r24, r18
d2: 93 2b or r25, r19
d4: 81 93 st Z+, r24
d6: 91 93 st Z+, r25
ADMUX=0xc0;//内部2.56V参考电压,0通道
ADCSRA=_BV(ADEN);//使能ADC,单次转换模式
//连续转换8次
for(i=0;i<8;i++)
d8: 80 e0 ldi r24, 0x00 ; 0
da: e0 38 cpi r30, 0x80 ; 128
dc: f8 07 cpc r31, r24
de: 69 f7 brne .-38 ; 0xba <AdcConvert+0x18>
e0: ef 01 movw r28, r30
e2: 2e 97 sbiw r28, 0x0e ; 14
e4: fe 01 movw r30, r28
e6: 20 e0 ldi r18, 0x00 ; 0
e8: 30 e0 ldi r19, 0x00 ; 0
ret|=(uint)(ADCH<<8);
g_aAdValue[i]=ret;
}
ret=0;
for(i=1;i<8;i++)
ret+=g_aAdValue[i];
ea: 81 91 ld r24, Z+
ec: 91 91 ld r25, Z+
ee: 28 0f add r18, r24
f0: 39 1f adc r19, r25
ret=ADCL;
ret|=(uint)(ADCH<<8);
g_aAdValue[i]=ret;
}
ret=0;
for(i=1;i<8;i++)
f2: 80 e0 ldi r24, 0x00 ; 0
f4: e0 38 cpi r30, 0x80 ; 128
f6: f8 07 cpc r31, r24
f8: c1 f7 brne .-16 ; 0xea <AdcConvert+0x48>
ret+=g_aAdValue[i];
//找到最大和最小值索引
ret/=7;
fa: c9 01 movw r24, r18
fc: 67 e0 ldi r22, 0x07 ; 7
fe: 70 e0 ldi r23, 0x00 ; 0
100: 0e 94 80 01 call 0x300 ; 0x300 <__udivmodhi4>
104: ab 01 movw r20, r22
106: 3e 97 sbiw r30, 0x0e ; 14
108: a1 e0 ldi r26, 0x01 ; 1
10a: 11 e0 ldi r17, 0x01 ; 1
10c: b1 e0 ldi r27, 0x01 ; 1
10e: ff 24 eor r15, r15
110: 00 e0 ldi r16, 0x00 ; 0
max_id=min_id=1;
max_value=min_value=0;
for(i=1;i<8;i++)
{
if(g_aAdValue[i]>ret)
112: 60 81 ld r22, Z
114: 71 81 ldd r23, Z+1 ; 0x01
116: 46 17 cp r20, r22
118: 57 07 cpc r21, r23
11a: 60 f4 brcc .+24 ; 0x134 <AdcConvert+0x92>
{
if(g_aAdValue[i]-ret>max_value)
11c: 9b 01 movw r18, r22
11e: 24 1b sub r18, r20
120: 35 0b sbc r19, r21
122: 8f 2d mov r24, r15
124: 90 e0 ldi r25, 0x00 ; 0
126: 82 17 cp r24, r18
128: 93 07 cpc r25, r19
12a: 78 f4 brcc .+30 ; 0x14a <AdcConvert+0xa8>
{
max_value=g_aAdValue[i]-ret;
12c: f6 2e mov r15, r22
12e: f4 1a sub r15, r20
130: 1a 2f mov r17, r26
132: 0b c0 rjmp .+22 ; 0x14a <AdcConvert+0xa8>
max_id=i;
}
}
else
{
if(ret-g_aAdValue[i]>min_value)
134: 9a 01 movw r18, r20
136: 26 1b sub r18, r22
138: 37 0b sbc r19, r23
13a: 80 2f mov r24, r16
13c: 90 e0 ldi r25, 0x00 ; 0
13e: 82 17 cp r24, r18
140: 93 07 cpc r25, r19
142: 18 f4 brcc .+6 ; 0x14a <AdcConvert+0xa8>
{
min_value=ret-g_aAdValue[i];
144: 04 2f mov r16, r20
146: 06 1b sub r16, r22
148: ba 2f mov r27, r26
//找到最大和最小值索引
ret/=7;
max_id=min_id=1;
max_value=min_value=0;
for(i=1;i<8;i++)
14a: af 5f subi r26, 0xFF ; 255
14c: 32 96 adiw r30, 0x02 ; 2
14e: a8 30 cpi r26, 0x08 ; 8
150: 01 f7 brne .-64 ; 0x112 <AdcConvert+0x70>
152: 41 e0 ldi r20, 0x01 ; 1
154: 20 e0 ldi r18, 0x00 ; 0
156: 30 e0 ldi r19, 0x00 ; 0
//去掉第一个和最大最小值后的平均值
ret=0;
for(i=1;i<8;i++)
{
if((i!=min_id)&&(i!=max_id))
158: 4b 17 cp r20, r27
15a: 31 f0 breq .+12 ; 0x168 <AdcConvert+0xc6>
15c: 41 17 cp r20, r17
15e: 21 f0 breq .+8 ; 0x168 <AdcConvert+0xc6>
ret+=g_aAdValue[i];
160: 88 81 ld r24, Y
162: 99 81 ldd r25, Y+1 ; 0x01
164: 28 0f add r18, r24
166: 39 1f adc r19, r25
}
}
//去掉第一个和最大最小值后的平均值
ret=0;
for(i=1;i<8;i++)
168: 4f 5f subi r20, 0xFF ; 255
16a: 22 96 adiw r28, 0x02 ; 2
16c: 48 30 cpi r20, 0x08 ; 8
16e: a1 f7 brne .-24 ; 0x158 <AdcConvert+0xb6>
{
if((i!=min_id)&&(i!=max_id))
ret+=g_aAdValue[i];
}
if(min_id!=max_id)
170: b1 17 cp r27, r17
172: 21 f0 breq .+8 ; 0x17c <AdcConvert+0xda>
ret/=5;
174: c9 01 movw r24, r18
176: 65 e0 ldi r22, 0x05 ; 5
178: 70 e0 ldi r23, 0x00 ; 0
17a: 03 c0 rjmp .+6 ; 0x182 <AdcConvert+0xe0>
else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -