📄 spokepov.lss
字号:
spokepov.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 000006aa 00000000 00000000 00000094 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 0000000a 00800060 000006aa 0000073e 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 0000003f 0080006a 0080006a 00000748 2**0
ALLOC
3 .noinit 00000000 008000a9 008000a9 00000748 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 00000748 2**0
CONTENTS
5 .stab 00000354 00000000 00000000 00000748 2**2
CONTENTS, READONLY, DEBUGGING
6 .stabstr 00000084 00000000 00000000 00000a9c 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_aranges 00000028 00000000 00000000 00000b20 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_pubnames 000001e5 00000000 00000000 00000b48 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_info 0000058b 00000000 00000000 00000d2d 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_abbrev 000001e5 00000000 00000000 000012b8 2**0
CONTENTS, READONLY, DEBUGGING
11 .debug_line 0000051f 00000000 00000000 0000149d 2**0
CONTENTS, READONLY, DEBUGGING
12 .debug_str 000002b7 00000000 00000000 000019bc 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 9d c0 rjmp .+314 ; 0x13c <__init>
2: ce c1 rjmp .+924 ; 0x3a0 <__vector_1>
4: e7 c1 rjmp .+974 ; 0x3d4 <__vector_2>
6: b3 c0 rjmp .+358 ; 0x16e <__bad_interrupt>
8: 0a c1 rjmp .+532 ; 0x21e <__vector_4>
a: b1 c0 rjmp .+354 ; 0x16e <__bad_interrupt>
c: d8 c0 rjmp .+432 ; 0x1be <__vector_6>
e: af c0 rjmp .+350 ; 0x16e <__bad_interrupt>
10: ae c0 rjmp .+348 ; 0x16e <__bad_interrupt>
12: ad c0 rjmp .+346 ; 0x16e <__bad_interrupt>
14: ac c0 rjmp .+344 ; 0x16e <__bad_interrupt>
16: ab c0 rjmp .+342 ; 0x16e <__bad_interrupt>
18: aa c0 rjmp .+340 ; 0x16e <__bad_interrupt>
1a: a9 c0 rjmp .+338 ; 0x16e <__bad_interrupt>
1c: a8 c0 rjmp .+336 ; 0x16e <__bad_interrupt>
1e: a7 c0 rjmp .+334 ; 0x16e <__bad_interrupt>
20: a6 c0 rjmp .+332 ; 0x16e <__bad_interrupt>
22: a5 c0 rjmp .+330 ; 0x16e <__bad_interrupt>
24: a4 c0 rjmp .+328 ; 0x16e <__bad_interrupt>
00000026 <__ctors_end>:
26: 20 20 and r2, r0
28: 20 20 and r2, r0
2a: 20 20 and r2, r0
2c: 20 20 and r2, r0
2e: 20 20 and r2, r0
30: 20 20 and r2, r0
32: 20 20 and r2, r0
34: 20 20 and r2, r0
36: 20 20 and r2, r0
38: 20 54 subi r18, 0x40 ; 64
3a: 2e 4f sbci r18, 0xFE ; 254
3c: 2e 20 and r2, r14
3e: 32 30 cpi r19, 0x02 ; 2
40: 30 36 cpi r19, 0x60 ; 96
42: 20 20 and r2, r0
44: 20 20 and r2, r0
46: 20 20 and r2, r0
48: 20 54 subi r18, 0x40 ; 64
4a: 68 61 ori r22, 0x18 ; 24
4c: 6e 6b ori r22, 0xBE ; 190
4e: 2d 79 andi r18, 0x9D ; 157
50: 6f 75 andi r22, 0x5F ; 95
52: 73 20 and r7, r3
54: 20 20 and r2, r0
56: 20 20 and r2, r0
58: 20 50 subi r18, 0x00 ; 0
5a: 65 74 andi r22, 0x45 ; 69
5c: 65 72 andi r22, 0x25 ; 37
5e: 20 53 subi r18, 0x30 ; 48
60: 6d 69 ori r22, 0x9D ; 157
62: 74 68 ori r23, 0x84 ; 132
64: 20 20 and r2, r0
66: 20 20 and r2, r0
68: 20 4e sbci r18, 0xE0 ; 224
6a: 69 63 ori r22, 0x39 ; 57
6c: 6b 20 and r6, r11
6e: 4d 61 ori r20, 0x1D ; 29
70: 72 74 andi r23, 0x42 ; 66
72: 69 6e ori r22, 0xE9 ; 233
74: 20 20 and r2, r0
76: 20 20 and r2, r0
78: 20 53 subi r18, 0x30 ; 48
7a: 6f 6c ori r22, 0xCF ; 207
7c: 69 64 ori r22, 0x49 ; 73
7e: 77 6f ori r23, 0xF7 ; 247
80: 72 6b ori r23, 0xB2 ; 178
82: 73 20 and r7, r3
84: 20 20 and r2, r0
86: 20 20 and r2, r0
88: 20 20 and r2, r0
8a: 20 4d sbci r18, 0xD0 ; 208
8c: 65 74 andi r22, 0x45 ; 69
8e: 66 61 ori r22, 0x16 ; 22
90: 62 20 and r6, r2
92: 20 20 and r2, r0
94: 20 20 and r2, r0
96: 20 20 and r2, r0
98: 54 69 ori r21, 0x94 ; 148
9a: 74 61 ori r23, 0x14 ; 20
9c: 6e 69 ori r22, 0x9E ; 158
9e: 75 6d ori r23, 0xD5 ; 213
a0: 20 4a sbci r18, 0xA0 ; 160
a2: 6f 65 ori r22, 0x5F ; 95
a4: 20 20 and r2, r0
a6: 20 20 and r2, r0
a8: 54 65 ori r21, 0x54 ; 84
aa: 61 6d ori r22, 0xD1 ; 209
ac: 20 57 subi r18, 0x70 ; 112
ae: 68 79 andi r22, 0x98 ; 152
b0: 61 63 ori r22, 0x31 ; 49
b2: 68 69 ori r22, 0x98 ; 152
b4: 20 20 and r2, r0
b6: 20 20 and r2, r0
b8: 20 42 sbci r18, 0x20 ; 32
ba: 61 74 andi r22, 0x41 ; 65
bc: 74 6c ori r23, 0xC4 ; 196
be: 65 70 andi r22, 0x05 ; 5
c0: 61 63 ori r22, 0x31 ; 49
c2: 6b 73 andi r22, 0x3B ; 59
c4: 20 20 and r2, r0
c6: 20 20 and r2, r0
c8: 20 20 and r2, r0
ca: 44 75 andi r20, 0x54 ; 84
cc: 72 61 ori r23, 0x12 ; 18
ce: 6c 69 ori r22, 0x9C ; 156
d0: 74 65 ori r23, 0x54 ; 84
d2: 20 20 and r2, r0
d4: 20 20 and r2, r0
d6: 20 20 and r2, r0
d8: 20 20 and r2, r0
da: 20 20 and r2, r0
dc: 4c 69 ori r20, 0x9C ; 156
de: 6d 6f ori r22, 0xFD ; 253
e0: 72 20 and r7, r2
e2: 20 20 and r2, r0
e4: 20 20 and r2, r0
e6: 20 20 and r2, r0
e8: 20 20 and r2, r0
ea: 20 20 and r2, r0
ec: 41 54 subi r20, 0x41 ; 65
ee: 4d 45 sbci r20, 0x5D ; 93
f0: 4c 20 and r4, r12
f2: 20 20 and r2, r0
f4: 20 20 and r2, r0
f6: 20 20 and r2, r0
f8: 20 20 and r2, r0
fa: 41 56 subi r20, 0x61 ; 97
fc: 52 46 sbci r21, 0x62 ; 98
fe: 72 65 ori r23, 0x52 ; 82
100: 61 6b ori r22, 0xB1 ; 177
102: 73 20 and r7, r3
104: 20 20 and r2, r0
106: 20 20 and r2, r0
108: 41 6e ori r20, 0xE1 ; 225
10a: 64 20 and r6, r4
10c: 4d 61 ori r20, 0x1D ; 29
10e: 6e 79 andi r22, 0x9E ; 158
110: 20 4d sbci r18, 0xD0 ; 208
112: 6f 72 andi r22, 0x2F ; 47
114: 65 20 and r6, r5
116: 20 20 and r2, r0
118: 28 6f ori r18, 0xF8 ; 248
11a: 75 74 andi r23, 0x45 ; 69
11c: 20 6f ori r18, 0xF0 ; 240
11e: 66 20 and r6, r6
120: 52 41 sbci r21, 0x12 ; 18
122: 4d 29 or r20, r13
124: 20 20 and r2, r0
...
00000127 <lineOffsets>:
127: 00 10 20 00 30 40 00 50 60 70 80 90 a0 b0 c0 d0 .. .0@.P`p......
137: 00 e0 f0 00 10 .....
0000013c <__init>:
13c: 11 24 eor r1, r1
13e: 1f be out 0x3f, r1 ; 63
140: cf ed ldi r28, 0xDF ; 223
142: cd bf out 0x3d, r28 ; 61
00000144 <__do_copy_data>:
144: 10 e0 ldi r17, 0x00 ; 0
146: a0 e6 ldi r26, 0x60 ; 96
148: b0 e0 ldi r27, 0x00 ; 0
14a: ea ea ldi r30, 0xAA ; 170
14c: f6 e0 ldi r31, 0x06 ; 6
14e: 03 c0 rjmp .+6 ; 0x156 <.do_copy_data_start>
00000150 <.do_copy_data_loop>:
150: c8 95 lpm
152: 31 96 adiw r30, 0x01 ; 1
154: 0d 92 st X+, r0
00000156 <.do_copy_data_start>:
156: aa 36 cpi r26, 0x6A ; 106
158: b1 07 cpc r27, r17
15a: d1 f7 brne .-12 ; 0x150 <.do_copy_data_loop>
0000015c <__do_clear_bss>:
15c: 10 e0 ldi r17, 0x00 ; 0
15e: aa e6 ldi r26, 0x6A ; 106
160: b0 e0 ldi r27, 0x00 ; 0
162: 01 c0 rjmp .+2 ; 0x166 <.do_clear_bss_start>
00000164 <.do_clear_bss_loop>:
164: 1d 92 st X+, r1
00000166 <.do_clear_bss_start>:
166: a9 3a cpi r26, 0xA9 ; 169
168: b1 07 cpc r27, r17
16a: e1 f7 brne .-8 ; 0x164 <.do_clear_bss_loop>
16c: 33 c2 rjmp .+1126 ; 0x5d4 <main>
0000016e <__bad_interrupt>:
16e: 48 cf rjmp .-368 ; 0x0 <__vectors>
00000170 <clock_scroll>:
// Sends 4 bytes + sCount extra bits over the serial link
// to implement smooth scrolling. Can be used with a 0
// parameter to just send out the regular 4 bytes.
void clock_scroll(uint8_t sCount) {
170: cf 93 push r28
172: c8 2f mov r28, r24
// First, send the basic 4 bytes, they go no matter what
spi_transfer(fleds[0]);
174: 80 91 83 00 lds r24, 0x0083
178: 5c d2 rcall .+1208 ; 0x632 <spi_transfer>
spi_transfer(fleds[1]);
17a: 80 91 84 00 lds r24, 0x0084
17e: 59 d2 rcall .+1202 ; 0x632 <spi_transfer>
spi_transfer(fleds[2]);
180: 80 91 85 00 lds r24, 0x0085
184: 56 d2 rcall .+1196 ; 0x632 <spi_transfer>
spi_transfer(fleds[3]);
186: 80 91 86 00 lds r24, 0x0086
18a: 53 d2 rcall .+1190 ; 0x632 <spi_transfer>
// If there is anything to do..
if (sCount != 0) {
18c: cc 23 and r28, r28
18e: 79 f0 breq .+30 ; 0x1ae <clock_scroll+0x3e>
// If we have < 8 bits to transfer
if (sCount < 8) {
190: c8 30 cpi r28, 0x08 ; 8
192: 20 f4 brcc .+8 ; 0x19c <clock_scroll+0x2c>
// Then that is all that we need to do
spi_transfer_n(fleds[4],sCount);
194: 6c 2f mov r22, r28
196: 80 91 87 00 lds r24, 0x0087
19a: 08 c0 rjmp .+16 ; 0x1ac <clock_scroll+0x3c>
} else {
// First latch out the full first 8 bits
spi_transfer(fleds[4]);
19c: 80 91 87 00 lds r24, 0x0087
1a0: 48 d2 rcall .+1168 ; 0x632 <spi_transfer>
// How many bits left to do?
sCount = sCount - 8;
1a2: c8 50 subi r28, 0x08 ; 8
if (sCount != 0) {
1a4: 21 f0 breq .+8 ; 0x1ae <clock_scroll+0x3e>
spi_transfer_n(fleds[5],sCount);
1a6: 6c 2f mov r22, r28
1a8: 80 91 88 00 lds r24, 0x0088
1ac: 34 d2 rcall .+1128 ; 0x616 <spi_transfer_n>
}
}
}
// finally, latch the bits into the LEDS
LATCH_SELECT_PORT |= _BV(FRONT);
1ae: 94 9a sbi 0x12, 4 ; 18
...
NOP; NOP; NOP; NOP;
LATCH_SELECT_PORT &= ~_BV(FRONT);
1b8: 94 98 cbi 0x12, 4 ; 18
1ba: cf 91 pop r28
1bc: 08 95 ret
000001be <__vector_6>:
}
// TIMER0 interrupt handler. This runs about every 8ms
// AFAICT. It increments the hall_debounce and sensor_timer
// values until they pin.
// QUESTION: what's with the setting and clearing of PORTB0?
// According to the wiring diagram, it isn't connected to
// anything. Is this vestigial code from when you were using
// Pin Change Interrupts? Or is it debugger code so you
// can monitor the pins and tell when something happens.
SIGNAL (SIG_TIMER0_OVF) {
1be: 1f 92 push r1
1c0: 0f 92 push r0
1c2: 0f b6 in r0, 0x3f ; 63
1c4: 0f 92 push r0
1c6: 11 24 eor r1, r1
1c8: 8f 93 push r24
1ca: 9f 93 push r25
// *** PORTB |= 0x1;
// Let hall_debounce just wrap around. At worst it'll just
// mess things up for one of the initial speedup rotations
// of the blade...
// if (hall_debounce != 0xFF)
hall_debounce++;
1cc: 80 91 80 00 lds r24, 0x0080
1d0: 8f 5f subi r24, 0xFF ; 255
1d2: 80 93 80 00 sts 0x0080, r24
if (sensor_timer.bytes.high_byte != 0xFF)
1d6: 80 91 82 00 lds r24, 0x0082
1da: 8f 3f cpi r24, 0xFF ; 255
1dc: 49 f0 breq .+18 ; 0x1f0 <__vector_6+0x32>
sensor_timer.word++;
1de: 80 91 81 00 lds r24, 0x0081
1e2: 90 91 82 00 lds r25, 0x0082
1e6: 01 96 adiw r24, 0x01 ; 1
1e8: 90 93 82 00 sts 0x0082, r25
1ec: 80 93 81 00 sts 0x0081, r24
#if NUM_LINES > 0
// Increment the line timer - we only need to do this
// if we are scrolling
line_timer++; // increment the low byte
1f0: 80 91 68 00 lds r24, 0x0068
1f4: 8f 5f subi r24, 0xFF ; 255
1f6: 80 93 68 00 sts 0x0068, r24
1fa: 9f 91 pop r25
1fc: 8f 91 pop r24
1fe: 0f 90 pop r0
200: 0f be out 0x3f, r0 ; 63
202: 0f 90 pop r0
204: 1f 90 pop r1
206: 18 95 reti
00000208 <set_all>:
#endif
#ifdef DYNAMIC_TIME
// Increment the dynamic time fractional seconds byte
dynamicTimeCounter.word += DYNAMIC_TIME_CALIBRATION;
if (dynamicTimeCounter.bytes.high_byte > 0x7F) {
// wrap the counter
dynamicTimeCounter.bytes.high_byte &= 0x7F;
// Add 1 second to the time HH:MM:SS
// 76-43-10
// Bytes in reverse order
// Increment seconds
dynamicTime[0]++;
// Check for units seconds overflow - has the digit become 10?
if ( dynamicTime[0] == ':' ) {
// If so, reset it and increment 10's digit
dynamicTime[0] = '0';
dynamicTime[1]++;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -