📄 main.lss
字号:
main.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 000002ac 00000000 00000000 00000094 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000040 00800060 000002ac 00000340 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 00000040 008000a0 008000a0 00000380 2**0
ALLOC
3 .noinit 00000000 008000e0 008000e0 00000380 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 00000380 2**0
CONTENTS
5 .stab 0000036c 00000000 00000000 00000380 2**2
CONTENTS, READONLY, DEBUGGING
6 .stabstr 00000084 00000000 00000000 000006ec 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_aranges 00000014 00000000 00000000 00000770 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_pubnames 00000091 00000000 00000000 00000784 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_info 000001b1 00000000 00000000 00000815 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_abbrev 000000e5 00000000 00000000 000009c6 2**0
CONTENTS, READONLY, DEBUGGING
11 .debug_line 00000171 00000000 00000000 00000aab 2**0
CONTENTS, READONLY, DEBUGGING
12 .debug_str 000000f9 00000000 00000000 00000c1c 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 3b 01 jmp 0x276 <__vector_9>
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 6d 00 jmp 0xda <__vector_14>
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: ec ea ldi r30, 0xAC ; 172
68: f2 e0 ldi r31, 0x02 ; 2
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: a0 3e cpi r26, 0xE0 ; 224
82: b1 07 cpc r27, r17
84: e1 f7 brne .-8 ; 0x7e <.do_clear_bss_loop>
86: 0c 94 4a 01 jmp 0x294 <main>
0000008a <__bad_interrupt>:
8a: 0c 94 00 00 jmp 0x0 <__vectors>
0000008e <ADC_INT>:
int FIR_coefficient[steps_N]={ -1,1,2,4,5,3,-4,-15,-24,-27,-14,18,67,123,172,201,201,172,
123,67,18,-14,-27,-24,-15,-4,3,5,4,2,1,-1};//2^10 >>10 */
unsigned int FIR_data[steps_N]={0};
void ADC_INT()
{ ADMUX=0xc1;//|_BV(ADLAR);//2.56v片内基准电压,通道1,//数据左对齐
8e: 81 ec ldi r24, 0xC1 ; 193
90: 87 b9 out 0x07, r24 ; 7
//ADC使能 ADC开中断 64分频(ADC时钟) 单次转换模式
ADCSRA=_BV(ADEN)|_BV(ADIE)|_BV(ADPS1)|_BV(ADPS2);//|_BV(ADATE);//在ATMEGA128中 ADATE 是 ADFR
92: 8e e8 ldi r24, 0x8E ; 142
94: 86 b9 out 0x06, r24 ; 6
ADCSRA|=_BV(ADSC);//start first ADC convert
96: 36 9a sbi 0x06, 6 ; 6
98: 08 95 ret
0000009a <time0_INT>:
}
void time0_INT()
{ TCNT0=194;//每500US进一次定时器0中断
9a: 82 ec ldi r24, 0xC2 ; 194
9c: 82 bf out 0x32, r24 ; 50
TCCR0=_BV(CS01)|_BV(CS00);//64分频//ATMEGA128:............
9e: 83 e0 ldi r24, 0x03 ; 3
a0: 83 bf out 0x33, r24 ; 51
TIMSK=_BV(TOIE0);
a2: 81 e0 ldi r24, 0x01 ; 1
a4: 89 bf out 0x39, r24 ; 57
a6: 08 95 ret
000000a8 <UART_INT>:
}
void UART_INT()////////////////////test
{ //接收使能,发送使能,接收中断允许
UCSRB=_BV(RXEN)|_BV(TXEN)|_BV(RXCIE);
a8: 88 e9 ldi r24, 0x98 ; 152
aa: 8a b9 out 0x0a, r24 ; 10
UBRRL=8;//波特率 57600//UBRRL 8M *******************************************
ac: 88 e0 ldi r24, 0x08 ; 8
ae: 89 b9 out 0x09, r24 ; 9
b0: 08 95 ret
000000b2 <send_Nbyte>:
}
void send_Nbyte(uchar *UART_TXD_buf,unsigned int N )///////////test
{ unsigned int i=0;
while(N--)
{ while( !(UCSRA&( _BV(UDRE) ) ) );
UDR=*(UART_TXD_buf+i++);
b2: 61 50 subi r22, 0x01 ; 1
b4: 70 40 sbci r23, 0x00 ; 0
b6: 2f ef ldi r18, 0xFF ; 255
b8: 6f 3f cpi r22, 0xFF ; 255
ba: 72 07 cpc r23, r18
bc: 69 f0 breq .+26 ; 0xd8 <send_Nbyte+0x26>
be: fc 01 movw r30, r24
c0: 31 97 sbiw r30, 0x01 ; 1
c2: 5d 9b sbis 0x0b, 5 ; 11
c4: fe cf rjmp .-4 ; 0xc2 <send_Nbyte+0x10>
c6: 31 96 adiw r30, 0x01 ; 1
c8: 80 81 ld r24, Z
ca: 8c b9 out 0x0c, r24 ; 12
cc: 61 50 subi r22, 0x01 ; 1
ce: 70 40 sbci r23, 0x00 ; 0
d0: 8f ef ldi r24, 0xFF ; 255
d2: 6f 3f cpi r22, 0xFF ; 255
d4: 78 07 cpc r23, r24
d6: a9 f7 brne .-22 ; 0xc2 <send_Nbyte+0x10>
d8: 08 95 ret
000000da <__vector_14>:
}
}
SIGNAL(SIG_ADC)
{ volatile long FIR_data1=0;
da: 1f 92 push r1
dc: 0f 92 push r0
de: 0f b6 in r0, 0x3f ; 63
e0: 0f 92 push r0
e2: 11 24 eor r1, r1
e4: ff 92 push r15
e6: 0f 93 push r16
e8: 1f 93 push r17
ea: 2f 93 push r18
ec: 3f 93 push r19
ee: 4f 93 push r20
f0: 5f 93 push r21
f2: 6f 93 push r22
f4: 7f 93 push r23
f6: 8f 93 push r24
f8: 9f 93 push r25
fa: af 93 push r26
fc: bf 93 push r27
fe: ef 93 push r30
100: ff 93 push r31
102: cf 93 push r28
104: df 93 push r29
106: cd b7 in r28, 0x3d ; 61
108: de b7 in r29, 0x3e ; 62
10a: 28 97 sbiw r28, 0x08 ; 8
10c: de bf out 0x3e, r29 ; 62
10e: cd bf out 0x3d, r28 ; 61
110: 19 82 std Y+1, r1 ; 0x01
112: 1a 82 std Y+2, r1 ; 0x02
114: 1b 82 std Y+3, r1 ; 0x03
116: 1c 82 std Y+4, r1 ; 0x04
uint data_lo,data_hi;
char N;
N=steps_N-1;
118: 5f e1 ldi r21, 0x1F ; 31
11a: f5 2e mov r15, r21
data_lo=ADCL;
11c: 84 b1 in r24, 0x04 ; 4
11e: 28 2f mov r18, r24
120: 33 27 eor r19, r19
122: 38 87 std Y+8, r19 ; 0x08
124: 2f 83 std Y+7, r18 ; 0x07
data_hi=ADCH;
126: 85 b1 in r24, 0x05 ; 5
128: 99 27 eor r25, r25
12a: 9e 83 std Y+6, r25 ; 0x06
12c: 8d 83 std Y+5, r24 ; 0x05
FIR_data[0]=data_hi<<8;
12e: 98 2f mov r25, r24
130: 88 27 eor r24, r24
FIR_data[0]|=data_lo;
132: 82 2b or r24, r18
134: 93 2b or r25, r19
136: 90 93 a1 00 sts 0x00A1, r25
13a: 80 93 a0 00 sts 0x00A0, r24
13e: 0e e9 ldi r16, 0x9E ; 158
140: 10 e0 ldi r17, 0x00 ; 0
142: 6e ed ldi r22, 0xDE ; 222
144: 70 e0 ldi r23, 0x00 ; 0
for(;N>0;N--)
{ FIR_data1+=FIR_coefficient[N]*FIR_data[N];
146: d8 01 movw r26, r16
148: 2d 91 ld r18, X+
14a: 3c 91 ld r19, X
14c: 02 50 subi r16, 0x02 ; 2
14e: 10 40 sbci r17, 0x00 ; 0
150: fb 01 movw r30, r22
152: 80 81 ld r24, Z
154: 91 81 ldd r25, Z+1 ; 0x01
156: 28 9f mul r18, r24
158: a0 01 movw r20, r0
15a: 29 9f mul r18, r25
15c: 50 0d add r21, r0
15e: 38 9f mul r19, r24
160: 50 0d add r21, r0
162: 11 24 eor r1, r1
164: ca 01 movw r24, r20
166: 9c 01 movw r18, r24
168: 44 27 eor r20, r20
16a: 55 27 eor r21, r21
16c: 89 81 ldd r24, Y+1 ; 0x01
16e: 9a 81 ldd r25, Y+2 ; 0x02
170: ab 81 ldd r26, Y+3 ; 0x03
172: bc 81 ldd r27, Y+4 ; 0x04
174: 82 0f add r24, r18
176: 93 1f adc r25, r19
178: a4 1f adc r26, r20
17a: b5 1f adc r27, r21
17c: 89 83 std Y+1, r24 ; 0x01
17e: 9a 83 std Y+2, r25 ; 0x02
180: ab 83 std Y+3, r26 ; 0x03
182: bc 83 std Y+4, r27 ; 0x04
FIR_data[N]=FIR_data[N-1];
184: 32 97 sbiw r30, 0x02 ; 2
186: 80 81 ld r24, Z
188: 91 81 ldd r25, Z+1 ; 0x01
18a: db 01 movw r26, r22
18c: 8d 93 st X+, r24
18e: 9c 93 st X, r25
190: fa 94 dec r15
192: bf 01 movw r22, r30
194: c1 f6 brne .-80 ; 0x146 <__vector_14+0x6c>
}
FIR_data1+=FIR_data[0]*FIR_coefficient[0];
196: 20 91 a0 00 lds r18, 0x00A0
19a: 30 91 a1 00 lds r19, 0x00A1
19e: 80 91 60 00 lds r24, 0x0060
1a2: 90 91 61 00 lds r25, 0x0061
1a6: 28 9f mul r18, r24
1a8: f0 01 movw r30, r0
1aa: 29 9f mul r18, r25
1ac: f0 0d add r31, r0
1ae: 38 9f mul r19, r24
1b0: f0 0d add r31, r0
1b2: 11 24 eor r1, r1
1b4: 9f 01 movw r18, r30
1b6: 44 27 eor r20, r20
1b8: 55 27 eor r21, r21
1ba: 89 81 ldd r24, Y+1 ; 0x01
1bc: 9a 81 ldd r25, Y+2 ; 0x02
1be: ab 81 ldd r26, Y+3 ; 0x03
1c0: bc 81 ldd r27, Y+4 ; 0x04
1c2: 82 0f add r24, r18
1c4: 93 1f adc r25, r19
1c6: a4 1f adc r26, r20
1c8: b5 1f adc r27, r21
1ca: 89 83 std Y+1, r24 ; 0x01
1cc: 9a 83 std Y+2, r25 ; 0x02
1ce: ab 83 std Y+3, r26 ; 0x03
1d0: bc 83 std Y+4, r27 ; 0x04
FIR_data1>>=10;
1d2: 89 81 ldd r24, Y+1 ; 0x01
1d4: 9a 81 ldd r25, Y+2 ; 0x02
1d6: ab 81 ldd r26, Y+3 ; 0x03
1d8: bc 81 ldd r27, Y+4 ; 0x04
1da: 2a e0 ldi r18, 0x0A ; 10
1dc: b5 95 asr r27
1de: a7 95 ror r26
1e0: 97 95 ror r25
1e2: 87 95 ror r24
1e4: 2a 95 dec r18
1e6: d1 f7 brne .-12 ; 0x1dc <__vector_14+0x102>
1e8: 89 83 std Y+1, r24 ; 0x01
1ea: 9a 83 std Y+2, r25 ; 0x02
1ec: ab 83 std Y+3, r26 ; 0x03
1ee: bc 83 std Y+4, r27 ; 0x04
data_hi=0;
1f0: 1e 82 std Y+6, r1 ; 0x06
1f2: 1d 82 std Y+5, r1 ; 0x05
if(FIR_data1&0x100) data_hi|=0x01;
1f4: 89 81 ldd r24, Y+1 ; 0x01
1f6: 9a 81 ldd r25, Y+2 ; 0x02
1f8: ab 81 ldd r26, Y+3 ; 0x03
1fa: bc 81 ldd r27, Y+4 ; 0x04
1fc: 90 ff sbrs r25, 0
1fe: 04 c0 rjmp .+8 ; 0x208 <__vector_14+0x12e>
200: 81 e0 ldi r24, 0x01 ; 1
202: 90 e0 ldi r25, 0x00 ; 0
204: 9e 83 std Y+6, r25 ; 0x06
206: 8d 83 std Y+5, r24 ; 0x05
if(FIR_data1&0x200) data_hi|=0x02;
208: 89 81 ldd r24, Y+1 ; 0x01
20a: 9a 81 ldd r25, Y+2 ; 0x02
20c: ab 81 ldd r26, Y+3 ; 0x03
20e: bc 81 ldd r27, Y+4 ; 0x04
210: 91 ff sbrs r25, 1
212: 05 c0 rjmp .+10 ; 0x21e <__vector_14+0x144>
214: 8d 81 ldd r24, Y+5 ; 0x05
216: 9e 81 ldd r25, Y+6 ; 0x06
218: 82 60 ori r24, 0x02 ; 2
21a: 9e 83 std Y+6, r25 ; 0x06
21c: 8d 83 std Y+5, r24 ; 0x05
send_Nbyte(&data_hi,1);
21e: 61 e0 ldi r22, 0x01 ; 1
220: 70 e0 ldi r23, 0x00 ; 0
222: ce 01 movw r24, r28
224: 05 96 adiw r24, 0x05 ; 5
226: 0e 94 59 00 call 0xb2 <send_Nbyte>
data_lo=FIR_data1;
22a: 89 81 ldd r24, Y+1 ; 0x01
22c: 9a 81 ldd r25, Y+2 ; 0x02
22e: ab 81 ldd r26, Y+3 ; 0x03
230: bc 81 ldd r27, Y+4 ; 0x04
232: 98 87 std Y+8, r25 ; 0x08
234: 8f 83 std Y+7, r24 ; 0x07
send_Nbyte(&data_lo,1);
236: 61 e0 ldi r22, 0x01 ; 1
238: 70 e0 ldi r23, 0x00 ; 0
23a: ce 01 movw r24, r28
23c: 07 96 adiw r24, 0x07 ; 7
23e: 0e 94 59 00 call 0xb2 <send_Nbyte>
242: 28 96 adiw r28, 0x08 ; 8
244: f8 94 cli
246: de bf out 0x3e, r29 ; 62
248: cd bf out 0x3d, r28 ; 61
24a: df 91 pop r29
24c: cf 91 pop r28
24e: ff 91 pop r31
250: ef 91 pop r30
252: bf 91 pop r27
254: af 91 pop r26
256: 9f 91 pop r25
258: 8f 91 pop r24
25a: 7f 91 pop r23
25c: 6f 91 pop r22
25e: 5f 91 pop r21
260: 4f 91 pop r20
262: 3f 91 pop r19
264: 2f 91 pop r18
266: 1f 91 pop r17
268: 0f 91 pop r16
26a: ff 90 pop r15
26c: 0f 90 pop r0
26e: 0f be out 0x3f, r0 ; 63
270: 0f 90 pop r0
272: 1f 90 pop r1
274: 18 95 reti
00000276 <__vector_9>:
}
SIGNAL(SIG_OVERFLOW0)//ADC sample rate is 2k
{ TCNT0=194;//重新装载初值
276: 1f 92 push r1
278: 0f 92 push r0
27a: 0f b6 in r0, 0x3f ; 63
27c: 0f 92 push r0
27e: 11 24 eor r1, r1
280: 8f 93 push r24
282: 82 ec ldi r24, 0xC2 ; 194
284: 82 bf out 0x32, r24 ; 50
ADCSRA|=_BV(ADSC);//start ADC convert
286: 36 9a sbi 0x06, 6 ; 6
288: 8f 91 pop r24
28a: 0f 90 pop r0
28c: 0f be out 0x3f, r0 ; 63
28e: 0f 90 pop r0
290: 1f 90 pop r1
292: 18 95 reti
00000294 <main>:
}
void main()
{ ADC_INT();
294: cf e5 ldi r28, 0x5F ; 95
296: d4 e0 ldi r29, 0x04 ; 4
298: de bf out 0x3e, r29 ; 62
29a: cd bf out 0x3d, r28 ; 61
29c: 0e 94 47 00 call 0x8e <ADC_INT>
time0_INT();
2a0: 0e 94 4d 00 call 0x9a <time0_INT>
UART_INT();////////test
2a4: 0e 94 54 00 call 0xa8 <UART_INT>
sei();
2a8: 78 94 sei
while(1);
2aa: ff cf rjmp .-2 ; 0x2aa <main+0x16>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -