📄 main.lss
字号:
main.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 00000fa0 00000000 00000000 00000074 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .bss 00000036 00800100 00800100 00001014 2**0
ALLOC
2 .stab 00000378 00000000 00000000 00001014 2**2
CONTENTS, READONLY, DEBUGGING
3 .stabstr 00000071 00000000 00000000 0000138c 2**0
CONTENTS, READONLY, DEBUGGING
4 .debug_aranges 000000c0 00000000 00000000 000013fd 2**0
CONTENTS, READONLY, DEBUGGING
5 .debug_pubnames 0000029c 00000000 00000000 000014bd 2**0
CONTENTS, READONLY, DEBUGGING
6 .debug_info 00000c3b 00000000 00000000 00001759 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_abbrev 00000557 00000000 00000000 00002394 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_line 00000ce4 00000000 00000000 000028eb 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_frame 000001f0 00000000 00000000 000035d0 2**2
CONTENTS, READONLY, DEBUGGING
10 .debug_str 0000039a 00000000 00000000 000037c0 2**0
CONTENTS, READONLY, DEBUGGING
11 .debug_loc 000004ba 00000000 00000000 00003b5a 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 28 c0 rjmp .+80 ; 0x52 <__ctors_end>
2: 94 c0 rjmp .+296 ; 0x12c <__vector_1>
4: a5 c0 rjmp .+330 ; 0x150 <__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: b5 c0 rjmp .+362 ; 0x17e <__vector_9>
14: c9 c0 rjmp .+402 ; 0x1a8 <__vector_10>
16: df c0 rjmp .+446 ; 0x1d6 <__vector_11>
18: df c0 rjmp .+446 ; 0x1d8 <__vector_12>
1a: df c0 rjmp .+446 ; 0x1da <__vector_13>
1c: 35 c0 rjmp .+106 ; 0x88 <__bad_interrupt>
1e: 34 c0 rjmp .+104 ; 0x88 <__bad_interrupt>
20: 16 c1 rjmp .+556 ; 0x24e <__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 ea ldi r30, 0xA0 ; 160
66: ff e0 ldi r31, 0x0F ; 15
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: 8b c7 rjmp .+3862 ; 0xf9e <_exit>
00000088 <__bad_interrupt>:
88: bb cf rjmp .-138 ; 0x0 <__vectors>
0000008a <main>:
#include "cc.h"
#include "proccess.h"
s16_t main(void) {
8a: 64 d5 rcall .+2760 ; 0xb54 <proc_init>
proc_init();
while(1) {
proc_poweroff();
8c: 53 d5 rcall .+2726 ; 0xb34 <proc_poweroff>
proc_calculate();
8e: 90 d2 rcall .+1312 ; 0x5b0 <proc_calculate>
proc_save();
90: 5d d4 rcall .+2234 ; 0x94c <proc_save>
proc_display();
92: 7a d3 rcall .+1780 ; 0x788 <proc_display>
proc_key();
94: 21 d4 rcall .+2114 ; 0x8d8 <proc_key>
96: fa cf rjmp .-12 ; 0x8c <main+0x2>
00000098 <init_interrupt>:
// =========================================================================
void init_interrupt(void){
98: f8 94 cli
cli();
// FV 输入于ICP1,空闲为高(低边缘检测)
DDRB &= ~_BV(FV);
9a: 20 98 cbi 0x04, 0 ; 4
PORTB |= _BV(FV);
9c: 28 9a sbi 0x05, 0 ; 5
// FI 输入于INT1,空闲为高(低边缘检测)
DDRD &= ~_BV(FI);
9e: 53 98 cbi 0x0a, 3 ; 10
PORTD |= _BV(FI);
a0: 5b 9a sbi 0x0b, 3 ; 11
flag0 = 0;
a2: 10 92 07 01 sts 0x0107, r1
// setup T0;
TCNT0 = TIME0;
a6: 80 ee ldi r24, 0xE0 ; 224
a8: 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);
aa: 84 e0 ldi r24, 0x04 ; 4
ac: 85 bd out 0x25, r24 ; 37
#endif
#ifdef MCU_MEGA8
TIMSK |= _BV(TOIE0); // enable T0 interrupt
#else
TIMSK0 |= _BV(TOIE0);
ae: ee e6 ldi r30, 0x6E ; 110
b0: f0 e0 ldi r31, 0x00 ; 0
b2: 80 81 ld r24, Z
b4: 81 60 ori r24, 0x01 ; 1
b6: 80 83 st Z, r24
#endif
cnt_t0 = 0;
b8: 10 92 04 01 sts 0x0104, r1
// setup T1; T1 is always runing....
TCNT1 = TIME1;
bc: 80 e8 ldi r24, 0x80 ; 128
be: 9f e8 ldi r25, 0x8F ; 143
c0: 90 93 85 00 sts 0x0085, r25
c4: 80 93 84 00 sts 0x0084, r24
#ifdef MCU_MEGA8
TIMSK |= _BV(TOIE1); // enable T1 interrupt
#else
TIMSK1 |= _BV(TOIE1);
c8: ef e6 ldi r30, 0x6F ; 111
ca: f0 e0 ldi r31, 0x00 ; 0
cc: 80 81 ld r24, Z
ce: 81 60 ori r24, 0x01 ; 1
d0: 80 83 st Z, r24
#endif
cnt_t1 = 0;
d2: 10 92 09 01 sts 0x0109, r1
d6: 10 92 08 01 sts 0x0108, r1
// ICP1
TCCR1A = 0x00; // 输出捕捉模式普通
da: 10 92 80 00 sts 0x0080, r1
#ifdef MCU_MEGA8
TIMSK |= _BV(TICIE1);
#else
TIMSK1 |= _BV(ICIE1);
de: 80 81 ld r24, Z
e0: 80 62 ori r24, 0x20 ; 32
e2: 80 83 st Z, r24
#endif
// 允许滤波、下降沿、fosc/64
// TCCR1B = (_BV(ICNC1)|_BV(CS11)|_BV(CS10)); // 同样也是 T1的分频数
TCCR1B = (_BV(ICNC1)|_BV(CS12)); // 同样也是 T1的分频数
e4: 84 e8 ldi r24, 0x84 ; 132
e6: 80 93 81 00 sts 0x0081, r24
cnt_icp1 = 0;
ea: 10 92 06 01 sts 0x0106, r1
ee: 10 92 05 01 sts 0x0105, r1
// T2:
TCNT2 = TIME2;
f2: 80 e1 ldi r24, 0x10 ; 16
f4: 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
f8: 87 e0 ldi r24, 0x07 ; 7
fa: 80 93 b1 00 sts 0x00B1, r24
#endif
#ifdef MCU_MEGA8
TIMSK |= _BV(TOIE2); // enable T2 interrupt
#else
TIMSK2 |= _BV(TOIE2);
fe: e0 e7 ldi r30, 0x70 ; 112
100: f0 e0 ldi r31, 0x00 ; 0
102: 80 81 ld r24, Z
104: 81 60 ori r24, 0x01 ; 1
106: 80 83 st Z, r24
#endif
cnt_t2 = 0;
108: 10 92 0e 01 sts 0x010E, r1
// INT1:
#ifdef MCU_MEGA8
MCUCR |= _BV(ISC11); // 下降沿有效
#else
EICRA |= _BV(ISC11);
10c: e9 e6 ldi r30, 0x69 ; 105
10e: f0 e0 ldi r31, 0x00 ; 0
110: 80 81 ld r24, Z
112: 88 60 ori r24, 0x08 ; 8
114: 80 83 st Z, r24
#endif
#ifdef MCU_MEGA8
GICR |= _BV(INT1); // enable
#else
EIMSK |= _BV(INT1);
116: e9 9a sbi 0x1d, 1 ; 29
#endif
cnt_int1 = 0;
118: 10 92 0b 01 sts 0x010B, r1
11c: 10 92 0a 01 sts 0x010A, r1
// INT0:
#ifdef MCU_MEGA8
MCUCR |= _BV(ISC01)|_BV(ISC00); // 上升沿有效
#else
EICRA |= _BV(ISC01)|_BV(ISC00); // 上升沿有效
120: 80 81 ld r24, Z
122: 83 60 ori r24, 0x03 ; 3
124: 80 83 st Z, r24
#endif
#ifdef MCU_MEGA8
GICR |= _BV(INT0); // enable
#else
EIMSK |= _BV(INT0); // enable
126: e8 9a sbi 0x1d, 0 ; 29
#endif
// enable
sei();
128: 78 94 sei
12a: 08 95 ret
0000012c <__vector_1>:
return;
}
// interrup rounting
SIGNAL(SIG_INTERRUPT0) {
12c: 1f 92 push r1
12e: 0f 92 push r0
130: 0f b6 in r0, 0x3f ; 63
132: 0f 92 push r0
134: 11 24 eor r1, r1
136: 8f 93 push r24
cli();
138: f8 94 cli
flag0 |= _BV(FLAG0_INT0);
13a: 80 91 07 01 lds r24, 0x0107
13e: 80 61 ori r24, 0x10 ; 16
140: 80 93 07 01 sts 0x0107, r24
144: 8f 91 pop r24
146: 0f 90 pop r0
148: 0f be out 0x3f, r0 ; 63
14a: 0f 90 pop r0
14c: 1f 90 pop r1
14e: 18 95 reti
00000150 <__vector_2>:
}
SIGNAL(SIG_INTERRUPT1) {
150: 1f 92 push r1
152: 0f 92 push r0
154: 0f b6 in r0, 0x3f ; 63
156: 0f 92 push r0
158: 11 24 eor r1, r1
15a: 8f 93 push r24
15c: 9f 93 push r25
++cnt_int1;
15e: 80 91 0a 01 lds r24, 0x010A
162: 90 91 0b 01 lds r25, 0x010B
166: 01 96 adiw r24, 0x01 ; 1
168: 90 93 0b 01 sts 0x010B, r25
16c: 80 93 0a 01 sts 0x010A, r24
170: 9f 91 pop r25
172: 8f 91 pop r24
174: 0f 90 pop r0
176: 0f be out 0x3f, r0 ; 63
178: 0f 90 pop r0
17a: 1f 90 pop r1
17c: 18 95 reti
0000017e <__vector_9>:
}
#ifdef MCU_MEGA8
EMPTY_INTERRUPT(SIG_OUTPUT_COMPARE2);
#endif
// T2
SIGNAL(SIG_OVERFLOW2) {
17e: 1f 92 push r1
180: 0f 92 push r0
182: 0f b6 in r0, 0x3f ; 63
184: 0f 92 push r0
186: 11 24 eor r1, r1
188: 8f 93 push r24
TCNT2 = TIME2;
18a: 80 e1 ldi r24, 0x10 ; 16
18c: 80 93 b2 00 sts 0x00B2, r24
++cnt_t2;
190: 80 91 0e 01 lds r24, 0x010E
194: 8f 5f subi r24, 0xFF ; 255
196: 80 93 0e 01 sts 0x010E, r24
wdt_reset();
19a: a8 95 wdr
19c: 8f 91 pop r24
19e: 0f 90 pop r0
1a0: 0f be out 0x3f, r0 ; 63
1a2: 0f 90 pop r0
1a4: 1f 90 pop r1
1a6: 18 95 reti
000001a8 <__vector_10>:
}
// ICP1 输入捕捉
SIGNAL(SIG_INPUT_CAPTURE1) {
1a8: 1f 92 push r1
1aa: 0f 92 push r0
1ac: 0f b6 in r0, 0x3f ; 63
1ae: 0f 92 push r0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -