📄 main.lss
字号:
main.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 00000d76 00000000 00000000 00000094 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 0000000e 00800060 00000d76 00000e0a 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 0000001a 0080006e 0080006e 00000e18 2**0
ALLOC
3 .noinit 00000000 00800088 00800088 00000e18 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 00000e18 2**0
CONTENTS
5 .stab 00000834 00000000 00000000 00000e18 2**2
CONTENTS, READONLY, DEBUGGING
6 .stabstr 0000063f 00000000 00000000 0000164c 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 12 c0 rjmp .+36 ; 0x26
2: 2b c0 rjmp .+86 ; 0x5a
4: 2a c0 rjmp .+84 ; 0x5a
6: 29 c0 rjmp .+82 ; 0x5a
8: 28 c0 rjmp .+80 ; 0x5a
a: 27 c0 rjmp .+78 ; 0x5a
c: 26 c0 rjmp .+76 ; 0x5a
e: 25 c0 rjmp .+74 ; 0x5a
10: 24 c0 rjmp .+72 ; 0x5a
12: 23 c0 rjmp .+70 ; 0x5a
14: 22 c0 rjmp .+68 ; 0x5a
16: 21 c0 rjmp .+66 ; 0x5a
18: 20 c0 rjmp .+64 ; 0x5a
1a: 1f c0 rjmp .+62 ; 0x5a
1c: 1e c0 rjmp .+60 ; 0x5a
1e: 1d c0 rjmp .+58 ; 0x5a
20: 1c c0 rjmp .+56 ; 0x5a
22: 1b c0 rjmp .+54 ; 0x5a
24: 1a c0 rjmp .+52 ; 0x5a
00000026 <__ctors_end>:
26: 11 24 eor r1, r1
28: 1f be out 0x3f, r1 ; 63
2a: cf e5 ldi r28, 0x5F ; 95
2c: d4 e0 ldi r29, 0x04 ; 4
2e: de bf out 0x3e, r29 ; 62
30: cd bf out 0x3d, r28 ; 61
00000032 <__do_copy_data>:
32: 10 e0 ldi r17, 0x00 ; 0
34: a0 e6 ldi r26, 0x60 ; 96
36: b0 e0 ldi r27, 0x00 ; 0
38: e6 e7 ldi r30, 0x76 ; 118
3a: fd e0 ldi r31, 0x0D ; 13
3c: 02 c0 rjmp .+4 ; 0x42
0000003e <.do_copy_data_loop>:
3e: 05 90 lpm r0, Z+
40: 0d 92 st X+, r0
00000042 <.do_copy_data_start>:
42: ae 36 cpi r26, 0x6E ; 110
44: b1 07 cpc r27, r17
46: d9 f7 brne .-10 ; 0x3e
00000048 <__do_clear_bss>:
48: 10 e0 ldi r17, 0x00 ; 0
4a: ae e6 ldi r26, 0x6E ; 110
4c: b0 e0 ldi r27, 0x00 ; 0
4e: 01 c0 rjmp .+2 ; 0x52
00000050 <.do_clear_bss_loop>:
50: 1d 92 st X+, r1
00000052 <.do_clear_bss_start>:
52: a8 38 cpi r26, 0x88 ; 136
54: b1 07 cpc r27, r17
56: e1 f7 brne .-8 ; 0x50
58: 79 c0 rjmp .+242 ; 0x14c
0000005a <__bad_interrupt>:
5a: d2 cf rjmp .-92 ; 0x0
0000005c <AdcConvert>:
void IoInit(void);
uint AdcConvert(void)
{
5c: cf 93 push r28
uchar i;
uint ret;
uchar max_id,min_id,max_value,min_value;
ADMUX=0Xc0;//内部2.56V参考电压,0通道
5e: 80 ec ldi r24, 0xC0 ; 192
60: 87 b9 out 0x07, r24 ; 7
ADCSRA=_BV(ADEN);//使能ADC,单次转换模式
62: 80 e8 ldi r24, 0x80 ; 128
64: 86 b9 out 0x06, r24 ; 6
//连续转换8次
for(i=0;i<8;i++)
66: 40 e0 ldi r20, 0x00 ; 0
68: ee e6 ldi r30, 0x6E ; 110
6a: f0 e0 ldi r31, 0x00 ; 0
{
ADCSRA|=_BV(ADSC);
6c: 36 9a sbi 0x06, 6 ; 6
/* 8-bit count, 3 cycles/loop */
static inline void
_delay_loop_1(unsigned char __count)
{
6e: 8c e3 ldi r24, 0x3C ; 60
asm volatile (
70: 8a 95 dec r24
72: f1 f7 brne .-4 ; 0x70
_delay_loop_1(60);
while(ADCSRA&_BV(ADSC))
74: 36 9b sbis 0x06, 6 ; 6
76: 05 c0 rjmp .+10 ; 0x82
/* 8-bit count, 3 cycles/loop */
static inline void
_delay_loop_1(unsigned char __count)
{
78: 8c e3 ldi r24, 0x3C ; 60
asm volatile (
7a: 8a 95 dec r24
7c: f1 f7 brne .-4 ; 0x7a
7e: 36 99 sbic 0x06, 6 ; 6
80: fb cf rjmp .-10 ; 0x78
_delay_loop_1(60);
ret=ADCL;
82: 84 b1 in r24, 0x04 ; 4
84: 68 2f mov r22, r24
86: 77 27 eor r23, r23
ret|=(uint)(ADCH<<8);
88: 85 b1 in r24, 0x05 ; 5
8a: 99 27 eor r25, r25
8c: 98 2f mov r25, r24
8e: 88 27 eor r24, r24
90: 86 2b or r24, r22
92: 97 2b or r25, r23
g_aAdValue[i]=ret;
94: 81 93 st Z+, r24
96: 91 93 st Z+, r25
98: 4f 5f subi r20, 0xFF ; 255
9a: 48 30 cpi r20, 0x08 ; 8
9c: 38 f3 brcs .-50 ; 0x6c
}
ret=0;
9e: 60 e0 ldi r22, 0x00 ; 0
a0: 70 e0 ldi r23, 0x00 ; 0
for(i=1;i<8;i++)
a2: 41 e0 ldi r20, 0x01 ; 1
a4: e0 e7 ldi r30, 0x70 ; 112
a6: f0 e0 ldi r31, 0x00 ; 0
ret+=g_aAdValue[i];
a8: 81 91 ld r24, Z+
aa: 91 91 ld r25, Z+
ac: 68 0f add r22, r24
ae: 79 1f adc r23, r25
b0: 4f 5f subi r20, 0xFF ; 255
b2: 48 30 cpi r20, 0x08 ; 8
b4: c8 f3 brcs .-14 ; 0xa8
//找到最大和最小值索引
ret/=7;
b6: cb 01 movw r24, r22
b8: 67 e0 ldi r22, 0x07 ; 7
ba: 70 e0 ldi r23, 0x00 ; 0
bc: cd d5 rcall .+2970 ; 0xc58
max_id=min_id=1;
be: b1 e0 ldi r27, 0x01 ; 1
c0: cb 2f mov r28, r27
max_value=min_value=0;
c2: 50 e0 ldi r21, 0x00 ; 0
c4: a5 2f mov r26, r21
for(i=1;i<8;i++)
c6: 4b 2f mov r20, r27
c8: e0 e7 ldi r30, 0x70 ; 112
ca: f0 e0 ldi r31, 0x00 ; 0
{
if(g_aAdValue[i]>ret)
cc: 20 81 ld r18, Z
ce: 31 81 ldd r19, Z+1 ; 0x01
d0: 62 17 cp r22, r18
d2: 73 07 cpc r23, r19
d4: 58 f4 brcc .+22 ; 0xec
{
if(g_aAdValue[i]-ret>max_value)
d6: 26 1b sub r18, r22
d8: 37 0b sbc r19, r23
da: 8a 2f mov r24, r26
dc: 99 27 eor r25, r25
de: 82 17 cp r24, r18
e0: 93 07 cpc r25, r19
e2: 88 f4 brcc .+34 ; 0x106
{
max_value=g_aAdValue[i]-ret;
e4: a0 81 ld r26, Z
e6: a6 1b sub r26, r22
max_id=i;
e8: c4 2f mov r28, r20
ea: 0d c0 rjmp .+26 ; 0x106
}
}
else
{
if(ret-g_aAdValue[i]>min_value)
ec: cb 01 movw r24, r22
ee: 82 1b sub r24, r18
f0: 93 0b sbc r25, r19
f2: 9c 01 movw r18, r24
f4: 85 2f mov r24, r21
f6: 99 27 eor r25, r25
f8: 82 17 cp r24, r18
fa: 93 07 cpc r25, r19
fc: 20 f4 brcc .+8 ; 0x106
{
min_value=ret-g_aAdValue[i];
fe: 80 81 ld r24, Z
100: 56 2f mov r21, r22
102: 58 1b sub r21, r24
min_id=i;
104: b4 2f mov r27, r20
106: 4f 5f subi r20, 0xFF ; 255
108: 32 96 adiw r30, 0x02 ; 2
10a: 48 30 cpi r20, 0x08 ; 8
10c: f8 f2 brcs .-66 ; 0xcc
}
}
}
//去掉第一个和最大最小值后的平均值
ret=0;
10e: 60 e0 ldi r22, 0x00 ; 0
110: 70 e0 ldi r23, 0x00 ; 0
for(i=1;i<8;i++)
112: 41 e0 ldi r20, 0x01 ; 1
114: e0 e7 ldi r30, 0x70 ; 112
116: f0 e0 ldi r31, 0x00 ; 0
{
if((i!=min_id)&&(i!=max_id))
118: 4b 17 cp r20, r27
11a: 31 f0 breq .+12 ; 0x128
11c: 4c 17 cp r20, r28
11e: 21 f0 breq .+8 ; 0x128
ret+=g_aAdValue[i];
120: 80 81 ld r24, Z
122: 91 81 ldd r25, Z+1 ; 0x01
124: 68 0f add r22, r24
126: 79 1f adc r23, r25
128: 4f 5f subi r20, 0xFF ; 255
12a: 32 96 adiw r30, 0x02 ; 2
12c: 48 30 cpi r20, 0x08 ; 8
12e: a0 f3 brcs .-24 ; 0x118
}
if(min_id!=max_id)
130: bc 17 cp r27, r28
132: 21 f0 breq .+8 ; 0x13c
ret/=5;
134: cb 01 movw r24, r22
136: 65 e0 ldi r22, 0x05 ; 5
138: 70 e0 ldi r23, 0x00 ; 0
13a: 03 c0 rjmp .+6 ; 0x142
else
ret/=6;
13c: cb 01 movw r24, r22
13e: 66 e0 ldi r22, 0x06 ; 6
140: 70 e0 ldi r23, 0x00 ; 0
142: 8a d5 rcall .+2836 ; 0xc58
ADCSRA=0;//关闭ADC
144: 16 b8 out 0x06, r1 ; 6
return ret;
}
146: cb 01 movw r24, r22
148: cf 91 pop r28
14a: 08 95 ret
0000014c <main>:
int main(void)
{
14c: ce e5 ldi r28, 0x5E ; 94
14e: d4 e0 ldi r29, 0x04 ; 4
150: de bf out 0x3e, r29 ; 62
152: cd bf out 0x3d, r28 ; 61
uchar i;
IoInit();
154: 2f d0 rcall .+94 ; 0x1b4
while(1)
{
scanf("%c",&i);
156: ce 01 movw r24, r28
158: 01 96 adiw r24, 0x01 ; 1
15a: 9f 93 push r25
15c: 8f 93 push r24
15e: 80 e6 ldi r24, 0x60 ; 96
160: 90 e0 ldi r25, 0x00 ; 0
162: 9f 93 push r25
164: 8f 93 push r24
166: 17 d4 rcall .+2094 ; 0x996
if(i=='c')
168: 89 81 ldd r24, Y+1 ; 0x01
16a: 0f 90 pop r0
16c: 0f 90 pop r0
16e: 0f 90 pop r0
170: 0f 90 pop r0
172: 83 36 cpi r24, 0x63 ; 99
174: 81 f7 brne .-32 ; 0x156
printf("%d\n",AdcConvert());
176: 72 df rcall .-284 ; 0x5c
178: 9f 93 push r25
17a: 8f 93 push r24
17c: 83 e6 ldi r24, 0x63 ; 99
17e: 90 e0 ldi r25, 0x00 ; 0
180: 9f 93 push r25
182: 8f 93 push r24
184: f4 d3 rcall .+2024 ; 0x96e
186: 0f 90 pop r0
188: 0f 90 pop r0
18a: 0f 90 pop r0
18c: 0f 90 pop r0
18e: e3 cf rjmp .-58 ; 0x156
00000190 <usart_putchar>:
#include <stdio.h>
//uart写一字节数据
int usart_putchar(char c)
{
190: cf 93 push r28
192: c8 2f mov r28, r24
if(c=='\n')
194: 8a 30 cpi r24, 0x0A ; 10
196: 11 f4 brne .+4 ; 0x19c
usart_putchar('\r');
198: 8d e0 ldi r24, 0x0D ; 13
19a: fa df rcall .-12 ; 0x190
loop_until_bit_is_set(UCSRA,UDRE);
19c: 5d 9b sbis 0x0b, 5 ; 11
19e: fe cf rjmp .-4 ; 0x19c
UDR=c;
1a0: cc b9 out 0x0c, r28 ; 12
return 0;
}
1a2: 80 e0 ldi r24, 0x00 ; 0
1a4: 90 e0 ldi r25, 0x00 ; 0
1a6: cf 91 pop r28
1a8: 08 95 ret
000001aa <usart_getchar>:
//uart读一字节数据
int usart_getchar(void)
{
loop_until_bit_is_set(UCSRA,RXC);
1aa: 5f 9b sbis 0x0b, 7 ; 11
1ac: fe cf rjmp .-4 ; 0x1aa
return UDR;
1ae: 8c b1 in r24, 0x0c ; 12
1b0: 99 27 eor r25, r25
}
1b2: 08 95 ret
000001b4 <IoInit>:
void IoInit(void)
{
//初始化uart
UCSRB=_BV(RXEN)|_BV(TXEN);/*(1<<RXCIE)|(1<<TXCIE)|*/
1b4: 88 e1 ldi r24, 0x18 ; 24
1b6: 8a b9 out 0x0a, r24 ; 10
UBRRL=25; //9600 baud 6MHz:38 4MHz:25
1b8: 89 e1 ldi r24, 0x19 ; 25
1ba: 89 b9 out 0x09, r24 ; 9
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -