📄 main.lss
字号:
main.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 00000d40 00000000 00000000 00000074 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .bss 00000036 00800100 00800100 00000db4 2**0
ALLOC
2 .stab 00000378 00000000 00000000 00000db4 2**2
CONTENTS, READONLY, DEBUGGING
3 .stabstr 00000071 00000000 00000000 0000112c 2**0
CONTENTS, READONLY, DEBUGGING
4 .debug_aranges 000000c0 00000000 00000000 0000119d 2**0
CONTENTS, READONLY, DEBUGGING
5 .debug_pubnames 0000029c 00000000 00000000 0000125d 2**0
CONTENTS, READONLY, DEBUGGING
6 .debug_info 00000c4c 00000000 00000000 000014f9 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_abbrev 00000557 00000000 00000000 00002145 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_line 00000cc7 00000000 00000000 0000269c 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_frame 000001f0 00000000 00000000 00003364 2**2
CONTENTS, READONLY, DEBUGGING
10 .debug_str 000003c2 00000000 00000000 00003554 2**0
CONTENTS, READONLY, DEBUGGING
11 .debug_loc 000004d8 00000000 00000000 00003916 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 28 c0 rjmp .+80 ; 0x52 <__ctors_end>
2: 91 c0 rjmp .+290 ; 0x126 <__vector_1>
4: a2 c0 rjmp .+324 ; 0x14a <__vector_2>
6: 40 c0 rjmp .+128 ; 0x88 <__bad_interrupt>
8: 3f c0 rjmp .+126 ; 0x88 <__bad_interrupt>
a: 3e c0 rjmp .+124 ; 0x88 <__bad_interrupt>
c: 3d c0 rjmp .+122 ; 0x88 <__bad_interrupt>
e: 3c c0 rjmp .+120 ; 0x88 <__bad_interrupt>
10: 3b c0 rjmp .+118 ; 0x88 <__bad_interrupt>
12: b2 c0 rjmp .+356 ; 0x178 <__vector_9>
14: c6 c0 rjmp .+396 ; 0x1a2 <__vector_10>
16: dc c0 rjmp .+440 ; 0x1d0 <__vector_11>
18: dc c0 rjmp .+440 ; 0x1d2 <__vector_12>
1a: dc c0 rjmp .+440 ; 0x1d4 <__vector_13>
1c: 35 c0 rjmp .+106 ; 0x88 <__bad_interrupt>
1e: 34 c0 rjmp .+104 ; 0x88 <__bad_interrupt>
20: 13 c1 rjmp .+550 ; 0x248 <__vector_16>
22: 32 c0 rjmp .+100 ; 0x88 <__bad_interrupt>
24: 31 c0 rjmp .+98 ; 0x88 <__bad_interrupt>
26: 30 c0 rjmp .+96 ; 0x88 <__bad_interrupt>
28: 2f c0 rjmp .+94 ; 0x88 <__bad_interrupt>
2a: 2e c0 rjmp .+92 ; 0x88 <__bad_interrupt>
2c: 2d c0 rjmp .+90 ; 0x88 <__bad_interrupt>
2e: 2c c0 rjmp .+88 ; 0x88 <__bad_interrupt>
30: 2b c0 rjmp .+86 ; 0x88 <__bad_interrupt>
32: 2a c0 rjmp .+84 ; 0x88 <__bad_interrupt>
00000034 <led_seg>:
34: fc 60 da f2 66 b6 be e0 fe f6 ee 3e 9c 7a 9e 8e .`..f......>.z..
00000044 <led_select>:
44: 40 20 10 08 04 02 01 01 20 10 08 04 02 00 @ ...... .....
00000052 <__ctors_end>:
52: 11 24 eor r1, r1
54: 1f be out 0x3f, r1 ; 63
56: cf ef ldi r28, 0xFF ; 255
58: d2 e0 ldi r29, 0x02 ; 2
5a: de bf out 0x3e, r29 ; 62
5c: cd bf out 0x3d, r28 ; 61
0000005e <__do_copy_data>:
5e: 11 e0 ldi r17, 0x01 ; 1
60: a0 e0 ldi r26, 0x00 ; 0
62: b1 e0 ldi r27, 0x01 ; 1
64: e0 e4 ldi r30, 0x40 ; 64
66: fd e0 ldi r31, 0x0D ; 13
68: 02 c0 rjmp .+4 ; 0x6e <.do_copy_data_start>
0000006a <.do_copy_data_loop>:
6a: 05 90 lpm r0, Z+
6c: 0d 92 st X+, r0
0000006e <.do_copy_data_start>:
6e: a0 30 cpi r26, 0x00 ; 0
70: b1 07 cpc r27, r17
72: d9 f7 brne .-10 ; 0x6a <.do_copy_data_loop>
00000074 <__do_clear_bss>:
74: 11 e0 ldi r17, 0x01 ; 1
76: a0 e0 ldi r26, 0x00 ; 0
78: b1 e0 ldi r27, 0x01 ; 1
7a: 01 c0 rjmp .+2 ; 0x7e <.do_clear_bss_start>
0000007c <.do_clear_bss_loop>:
7c: 1d 92 st X+, r1
0000007e <.do_clear_bss_start>:
7e: a6 33 cpi r26, 0x36 ; 54
80: b1 07 cpc r27, r17
82: e1 f7 brne .-8 ; 0x7c <.do_clear_bss_loop>
84: 02 d0 rcall .+4 ; 0x8a <main>
86: 5b c6 rjmp .+3254 ; 0xd3e <_exit>
00000088 <__bad_interrupt>:
88: bb cf rjmp .-138 ; 0x0 <__vectors>
0000008a <main>:
#include "cc.h"
#include "proccess.h"
s16_t main(void) {
8a: 37 d5 rcall .+2670 ; 0xafa <proc_init>
proc_init();
/* while(1) {
proc_poweroff();
proc_calculate();
proc_save();
proc_display();
proc_key();
}
*/
while(1) { // 测试采样脉冲
proc_test_sample();
8c: 34 d3 rcall .+1640 ; 0x6f6 <proc_test_sample>
8e: 33 d3 rcall .+1638 ; 0x6f6 <proc_test_sample>
90: fd cf rjmp .-6 ; 0x8c <main+0x2>
00000092 <init_interrupt>:
// =========================================================================
void init_interrupt(void){
92: f8 94 cli
cli();
// FV 输入于ICP1,空闲为高(低边缘检测)
DDRB &= ~_BV(FV);
94: 20 98 cbi 0x04, 0 ; 4
PORTB |= _BV(FV);
96: 28 9a sbi 0x05, 0 ; 5
// FI 输入于INT1,空闲为高(低边缘检测)
DDRD &= ~_BV(FI);
98: 53 98 cbi 0x0a, 3 ; 10
PORTD |= _BV(FI);
9a: 5b 9a sbi 0x0b, 3 ; 11
flag0 = 0;
9c: 10 92 07 01 sts 0x0107, r1
// setup T0;
TCNT0 = TIME0;
a0: 80 ee ldi r24, 0xE0 ; 224
a2: 86 bd out 0x26, r24 ; 38
// TCCR0 = (_BV(CS01)|_BV(CS00)); // fosc/64
#ifdef MCU_MEGA8
TCCR0 = _BV(CS02); // fosc/256
#else
TCCR0B = _BV(CS02);
a4: 84 e0 ldi r24, 0x04 ; 4
a6: 85 bd out 0x25, r24 ; 37
#endif
#ifdef MCU_MEGA8
TIMSK |= _BV(TOIE0); // enable T0 interrupt
#else
TIMSK0 |= _BV(TOIE0);
a8: ee e6 ldi r30, 0x6E ; 110
aa: f0 e0 ldi r31, 0x00 ; 0
ac: 80 81 ld r24, Z
ae: 81 60 ori r24, 0x01 ; 1
b0: 80 83 st Z, r24
#endif
cnt_t0 = 0;
b2: 10 92 04 01 sts 0x0104, r1
// setup T1; T1 is always runing....
TCNT1 = TIME1;
b6: 80 e8 ldi r24, 0x80 ; 128
b8: 9f e8 ldi r25, 0x8F ; 143
ba: 90 93 85 00 sts 0x0085, r25
be: 80 93 84 00 sts 0x0084, r24
#ifdef MCU_MEGA8
TIMSK |= _BV(TOIE1); // enable T1 interrupt
#else
TIMSK1 |= _BV(TOIE1);
c2: ef e6 ldi r30, 0x6F ; 111
c4: f0 e0 ldi r31, 0x00 ; 0
c6: 80 81 ld r24, Z
c8: 81 60 ori r24, 0x01 ; 1
ca: 80 83 st Z, r24
#endif
cnt_t1 = 0;
cc: 10 92 09 01 sts 0x0109, r1
d0: 10 92 08 01 sts 0x0108, r1
// ICP1
TCCR1A = 0x00; // 输出捕捉模式普通
d4: 10 92 80 00 sts 0x0080, r1
#ifdef MCU_MEGA8
TIMSK |= _BV(TICIE1);
#else
TIMSK1 |= _BV(ICIE1);
d8: 80 81 ld r24, Z
da: 80 62 ori r24, 0x20 ; 32
dc: 80 83 st Z, r24
#endif
// 允许滤波、下降沿、fosc/64
// TCCR1B = (_BV(ICNC1)|_BV(CS11)|_BV(CS10)); // 同样也是 T1的分频数
TCCR1B = (_BV(ICNC1)|_BV(CS12)); // 同样也是 T1的分频数
de: 84 e8 ldi r24, 0x84 ; 132
e0: 80 93 81 00 sts 0x0081, r24
cnt_icp1 = 0;
e4: 10 92 06 01 sts 0x0106, r1
e8: 10 92 05 01 sts 0x0105, r1
// T2:
TCNT2 = TIME2;
ec: 80 e1 ldi r24, 0x10 ; 16
ee: 80 93 b2 00 sts 0x00B2, r24
#ifdef MCU_MEGA8
TCCR2 = (_BV(CS22)|_BV(CS21)|_BV(CS20)); // fosc/1024
#else
TCCR2B = (_BV(CS22)|_BV(CS21)|_BV(CS20)); // fosc/1024
f2: 87 e0 ldi r24, 0x07 ; 7
f4: 80 93 b1 00 sts 0x00B1, r24
#endif
#ifdef MCU_MEGA8
TIMSK |= _BV(TOIE2); // enable T2 interrupt
#else
TIMSK2 |= _BV(TOIE2);
f8: e0 e7 ldi r30, 0x70 ; 112
fa: f0 e0 ldi r31, 0x00 ; 0
fc: 80 81 ld r24, Z
fe: 81 60 ori r24, 0x01 ; 1
100: 80 83 st Z, r24
#endif
cnt_t2 = 0;
102: 10 92 0e 01 sts 0x010E, r1
// INT1:
#ifdef MCU_MEGA8
MCUCR |= _BV(ISC11); // 下降沿有效
#else
EICRA |= _BV(ISC11);
106: e9 e6 ldi r30, 0x69 ; 105
108: f0 e0 ldi r31, 0x00 ; 0
10a: 80 81 ld r24, Z
10c: 88 60 ori r24, 0x08 ; 8
10e: 80 83 st Z, r24
#endif
#ifdef MCU_MEGA8
GICR |= _BV(INT1); // enable
#else
EIMSK |= _BV(INT1);
110: e9 9a sbi 0x1d, 1 ; 29
#endif
cnt_int1 = 0;
112: 10 92 0b 01 sts 0x010B, r1
116: 10 92 0a 01 sts 0x010A, r1
// INT0:
#ifdef MCU_MEGA8
MCUCR |= _BV(ISC01)|_BV(ISC00); // 上升沿有效
#else
EICRA |= _BV(ISC01)|_BV(ISC00); // 上升沿有效
11a: 80 81 ld r24, Z
11c: 83 60 ori r24, 0x03 ; 3
11e: 80 83 st Z, r24
#endif
#ifdef MCU_MEGA8
GICR |= _BV(INT0); // enable
#else
EIMSK |= _BV(INT0); // enable
120: e8 9a sbi 0x1d, 0 ; 29
#endif
// enable
sei();
122: 78 94 sei
124: 08 95 ret
00000126 <__vector_1>:
return;
}
// interrup rounting
SIGNAL(SIG_INTERRUPT0) {
126: 1f 92 push r1
128: 0f 92 push r0
12a: 0f b6 in r0, 0x3f ; 63
12c: 0f 92 push r0
12e: 11 24 eor r1, r1
130: 8f 93 push r24
cli();
132: f8 94 cli
flag0 |= _BV(FLAG0_INT0);
134: 80 91 07 01 lds r24, 0x0107
138: 80 61 ori r24, 0x10 ; 16
13a: 80 93 07 01 sts 0x0107, r24
13e: 8f 91 pop r24
140: 0f 90 pop r0
142: 0f be out 0x3f, r0 ; 63
144: 0f 90 pop r0
146: 1f 90 pop r1
148: 18 95 reti
0000014a <__vector_2>:
}
SIGNAL(SIG_INTERRUPT1) {
14a: 1f 92 push r1
14c: 0f 92 push r0
14e: 0f b6 in r0, 0x3f ; 63
150: 0f 92 push r0
152: 11 24 eor r1, r1
154: 8f 93 push r24
156: 9f 93 push r25
++cnt_int1;
158: 80 91 0a 01 lds r24, 0x010A
15c: 90 91 0b 01 lds r25, 0x010B
160: 01 96 adiw r24, 0x01 ; 1
162: 90 93 0b 01 sts 0x010B, r25
166: 80 93 0a 01 sts 0x010A, r24
16a: 9f 91 pop r25
16c: 8f 91 pop r24
16e: 0f 90 pop r0
170: 0f be out 0x3f, r0 ; 63
172: 0f 90 pop r0
174: 1f 90 pop r1
176: 18 95 reti
00000178 <__vector_9>:
}
#ifdef MCU_MEGA8
EMPTY_INTERRUPT(SIG_OUTPUT_COMPARE2);
#endif
// T2
SIGNAL(SIG_OVERFLOW2) {
178: 1f 92 push r1
17a: 0f 92 push r0
17c: 0f b6 in r0, 0x3f ; 63
17e: 0f 92 push r0
180: 11 24 eor r1, r1
182: 8f 93 push r24
TCNT2 = TIME2;
184: 80 e1 ldi r24, 0x10 ; 16
186: 80 93 b2 00 sts 0x00B2, r24
++cnt_t2;
18a: 80 91 0e 01 lds r24, 0x010E
18e: 8f 5f subi r24, 0xFF ; 255
190: 80 93 0e 01 sts 0x010E, r24
wdt_reset();
194: a8 95 wdr
196: 8f 91 pop r24
198: 0f 90 pop r0
19a: 0f be out 0x3f, r0 ; 63
19c: 0f 90 pop r0
19e: 1f 90 pop r1
1a0: 18 95 reti
000001a2 <__vector_10>:
}
// ICP1 输入捕捉
SIGNAL(SIG_INPUT_CAPTURE1) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -