📄 adc.lss
字号:
adc.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 00001428 00000000 00000000 00000094 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000040 00800060 00001428 000014bc 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 00000006 008000a0 008000a0 000014fc 2**0
ALLOC
3 .noinit 00000000 008000a6 008000a6 000014fc 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 000014fc 2**0
CONTENTS
5 .stab 0000036c 00000000 00000000 000014fc 2**2
CONTENTS, READONLY, DEBUGGING
6 .stabstr 00000084 00000000 00000000 00001868 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_aranges 00000028 00000000 00000000 000018ec 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_pubnames 00000078 00000000 00000000 00001914 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_info 00000379 00000000 00000000 0000198c 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_abbrev 00000243 00000000 00000000 00001d05 2**0
CONTENTS, READONLY, DEBUGGING
11 .debug_line 0000030c 00000000 00000000 00001f48 2**0
CONTENTS, READONLY, DEBUGGING
12 .debug_str 0000015d 00000000 00000000 00002254 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 2a 00 jmp 0x54 <__ctors_end>
4: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
8: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
c: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
10: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
14: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
18: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
1c: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
20: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
24: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
28: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
2c: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
30: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
34: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
38: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
3c: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
40: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
44: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
48: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
4c: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
50: 0c 94 45 00 jmp 0x8a <__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: e8 e2 ldi r30, 0x28 ; 40
68: f4 e1 ldi r31, 0x14 ; 20
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 3a cpi r26, 0xA0 ; 160
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 ea ldi r26, 0xA0 ; 160
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: a6 3a cpi r26, 0xA6 ; 166
82: b1 07 cpc r27, r17
84: e1 f7 brne .-8 ; 0x7e <.do_clear_bss_loop>
86: 0c 94 a8 00 jmp 0x150 <main>
0000008a <__bad_interrupt>:
8a: 0c 94 00 00 jmp 0x0 <__vectors>
0000008e <delay_ms>:
#define refer ((5000.0/1024.0)*REF)
void delay_ms(unsigned int ms)
{
8e: cf 93 push r28
90: df 93 push r29
*/
void
_delay_loop_2(uint16_t __count)
{
__asm__ volatile (
92: 9c 01 movw r18, r24
94: 21 50 subi r18, 0x01 ; 1
96: 30 40 sbci r19, 0x00 ; 0
98: 8f ef ldi r24, 0xFF ; 255
9a: 2f 3f cpi r18, 0xFF ; 255
9c: 38 07 cpc r19, r24
9e: 69 f0 breq .+26 ; 0xba <delay_ms+0x2c>
a0: a0 ed ldi r26, 0xD0 ; 208
a2: b7 e0 ldi r27, 0x07 ; 7
a4: c0 e0 ldi r28, 0x00 ; 0
a6: d0 e0 ldi r29, 0x00 ; 0
a8: cd 01 movw r24, r26
aa: 01 97 sbiw r24, 0x01 ; 1
ac: f1 f7 brne .-4 ; 0xaa <delay_ms+0x1c>
ae: 21 50 subi r18, 0x01 ; 1
b0: 30 40 sbci r19, 0x00 ; 0
b2: 8f ef ldi r24, 0xFF ; 255
b4: 2f 3f cpi r18, 0xFF ; 255
b6: 38 07 cpc r19, r24
b8: b9 f7 brne .-18 ; 0xa8 <delay_ms+0x1a>
ba: df 91 pop r29
bc: cf 91 pop r28
be: 08 95 ret
000000c0 <AD_Convert>:
while(ms--)
_delay_ms(1);
}
unsigned int AD_Convert(unsigned char channel)
{
c0: cf 93 push r28
c2: df 93 push r29
c4: 28 2f mov r18, r24
unsigned char i=10;
unsigned int AD_Value=0;
c6: c0 e0 ldi r28, 0x00 ; 0
c8: d0 e0 ldi r29, 0x00 ; 0
DDRA &=~(1<<channel);
ca: 81 e0 ldi r24, 0x01 ; 1
cc: 90 e0 ldi r25, 0x00 ; 0
ce: 02 2e mov r0, r18
d0: 02 c0 rjmp .+4 ; 0xd6 <AD_Convert+0x16>
d2: 88 0f add r24, r24
d4: 99 1f adc r25, r25
d6: 0a 94 dec r0
d8: e2 f7 brpl .-8 ; 0xd2 <AD_Convert+0x12>
da: 98 2f mov r25, r24
dc: 90 95 com r25
de: 8a b3 in r24, 0x1a ; 26
e0: 89 23 and r24, r25
e2: 8a bb out 0x1a, r24 ; 26
ADMUX = (0<<REFS1)|(1<<REFS0)|(0<<ADLAR)|(channel); /* REFS1,REFS0=[0,1] extern avcc ref. ADLAR=0 Right-alignment */
e4: 20 64 ori r18, 0x40 ; 64
e6: 27 b9 out 0x07, r18 ; 7
ADCSRA= (1<<ADEN )|(1<<ADPS2)|(1<<ADPS1); /* enable adc. ad_clk=F_CPU/64(125kHz). */
e8: 86 e8 ldi r24, 0x86 ; 134
ea: 86 b9 out 0x06, r24 ; 6
while(i--)
{
ADCSRA|=(1<<ADSC); /* start ad convert. */
while(!(ADCSRA&(1<<ADIF))); /* wait while convert end. */
AD_Value+=ADC; /* added the result. */
ec: 29 e0 ldi r18, 0x09 ; 9
ee: 36 9a sbi 0x06, 6 ; 6
f0: 34 9b sbis 0x06, 4 ; 6
f2: fe cf rjmp .-4 ; 0xf0 <AD_Convert+0x30>
f4: 84 b1 in r24, 0x04 ; 4
f6: 95 b1 in r25, 0x05 ; 5
f8: c8 0f add r28, r24
fa: d9 1f adc r29, r25
fc: 21 50 subi r18, 0x01 ; 1
fe: b8 f7 brcc .-18 ; 0xee <AD_Convert+0x2e>
}
AD_Value/=10; /* filter by average the sum. */
100: ce 01 movw r24, r28
102: 6a e0 ldi r22, 0x0A ; 10
104: 70 e0 ldi r23, 0x00 ; 0
106: 0e 94 a7 09 call 0x134e <__udivmodhi4>
10a: eb 01 movw r28, r22
AD_Value=AD_Value*refer;
10c: cb 01 movw r24, r22
10e: aa 27 eor r26, r26
110: 97 fd sbrc r25, 7
112: a0 95 com r26
114: ba 2f mov r27, r26
116: bc 01 movw r22, r24
118: cd 01 movw r24, r26
11a: 0e 94 fe 03 call 0x7fc <__floatsisf>
11e: d7 ff sbrs r29, 7
120: 06 c0 rjmp .+12 ; 0x12e <AD_Convert+0x6e>
122: 20 e0 ldi r18, 0x00 ; 0
124: 30 e0 ldi r19, 0x00 ; 0
126: 40 e8 ldi r20, 0x80 ; 128
128: 57 e4 ldi r21, 0x47 ; 71
12a: 0e 94 47 02 call 0x48e <__addsf3>
12e: 20 e0 ldi r18, 0x00 ; 0
130: 30 e4 ldi r19, 0x40 ; 64
132: 4c e9 ldi r20, 0x9C ; 156
134: 50 e4 ldi r21, 0x40 ; 64
136: 0e 94 ad 02 call 0x55a <__mulsf3>
13a: dc 01 movw r26, r24
13c: cb 01 movw r24, r22
13e: bc 01 movw r22, r24
140: cd 01 movw r24, r26
142: 0e 94 f9 00 call 0x1f2 <__fixunssfsi>
146: dc 01 movw r26, r24
148: cb 01 movw r24, r22
14a: df 91 pop r29
14c: cf 91 pop r28
14e: 08 95 ret
00000150 <main>:
return AD_Value; /* return the voltage in mV. */
}
int main(void)
{
150: cf e5 ldi r28, 0x5F ; 95
152: d4 e0 ldi r29, 0x04 ; 4
154: de bf out 0x3e, r29 ; 62
156: cd bf out 0x3d, r28 ; 61
unsigned char CH=0;
158: c0 e0 ldi r28, 0x00 ; 0
unsigned int voltage;
/* Set LED and Smg LE pin as output , databus as output */
DDRA |=(1<<PA4)|(1<<PA5)|(1<<PA6);
15a: 8a b3 in r24, 0x1a ; 26
15c: 80 67 ori r24, 0x70 ; 112
15e: 8a bb out 0x1a, r24 ; 26
DDRB = 0xFF;
160: 8f ef ldi r24, 0xFF ; 255
162: 87 bb out 0x17, r24 ; 23
/* Off the Smg display */
PORTA|= (1<<PA5);
164: dd 9a sbi 0x1b, 5 ; 27
PORTB = 0x00;
166: c8 bb out 0x18, r28 ; 24
PORTA&=~(1<<PA5);
168: dd 98 cbi 0x1b, 5 ; 27
/* Off the LED display */
PORTA|= (1<<PA6);
16a: de 9a sbi 0x1b, 6 ; 27
PORTB = 0xFF;
16c: 88 bb out 0x18, r24 ; 24
PORTA&=~(1<<PA6);
16e: de 98 cbi 0x1b, 6 ; 27
UART_Config();
170: 0e 94 f0 00 call 0x1e0 <UART_Config>
while(1)
{
voltage=AD_Convert(CH);
174: 8c 2f mov r24, r28
176: 0e 94 60 00 call 0xc0 <AD_Convert>
printf("The voltage of channel %d is : %4d mV .\r\n",CH,voltage);
17a: 9f 93 push r25
17c: 8f 93 push r24
17e: 8c 2f mov r24, r28
180: 99 27 eor r25, r25
182: 9f 93 push r25
184: 8f 93 push r24
186: 80 e6 ldi r24, 0x60 ; 96
188: 90 e0 ldi r25, 0x00 ; 0
18a: 9f 93 push r25
18c: 8f 93 push r24
18e: 0e 94 89 06 call 0xd12 <printf>
CH++;
192: cf 5f subi r28, 0xFF ; 255
if(CH==8)
194: 8d b7 in r24, 0x3d ; 61
196: 9e b7 in r25, 0x3e ; 62
198: 06 96 adiw r24, 0x06 ; 6
19a: 0f b6 in r0, 0x3f ; 63
19c: f8 94 cli
19e: 9e bf out 0x3e, r25 ; 62
1a0: 0f be out 0x3f, r0 ; 63
1a2: 8d bf out 0x3d, r24 ; 61
1a4: c8 30 cpi r28, 0x08 ; 8
1a6: 09 f4 brne .+2 ; 0x1aa <main+0x5a>
CH=0;
1a8: c0 e0 ldi r28, 0x00 ; 0
delay_ms(500);
1aa: 84 ef ldi r24, 0xF4 ; 244
1ac: 91 e0 ldi r25, 0x01 ; 1
1ae: 0e 94 47 00 call 0x8e <delay_ms>
1b2: e0 cf rjmp .-64 ; 0x174 <main+0x24>
000001b4 <UART_Init>:
void UART_Init(void)
{
UCSRA = 0x00;
1b4: 1b b8 out 0x0b, r1 ; 11
UCSRB = (1<<RXCIE)|(1<<RXEN)|(1<<TXEN);
1b6: 88 e9 ldi r24, 0x98 ; 152
1b8: 8a b9 out 0x0a, r24 ; 10
UCSRC = (1<<7)|(1<<UCSZ1)|(1<<UCSZ0);
1ba: 86 e8 ldi r24, 0x86 ; 134
1bc: 80 bd out 0x20, r24 ; 32
UBRRH = UBRR>>8;
1be: 10 bc out 0x20, r1 ; 32
UBRRL = UBRR&0xFF;
1c0: 8c e0 ldi r24, 0x0C ; 12
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -