📄 spokepov.lss
字号:
230: b7 df rcall .-146 ; 0x1a0 <clock_leds>
232: 08 95 ret
00000234 <__vector_2>:
234: 1f 92 push r1
236: 0f 92 push r0
238: 0f b6 in r0, 0x3f ; 63
23a: 0f 92 push r0
23c: 11 24 eor r1, r1
23e: 2f 93 push r18
240: 3f 93 push r19
242: 4f 93 push r20
244: 5f 93 push r21
246: 6f 93 push r22
248: 7f 93 push r23
24a: 8f 93 push r24
24c: 9f 93 push r25
24e: af 93 push r26
250: bf 93 push r27
252: ef 93 push r30
254: ff 93 push r31
256: c3 9a sbi 0x18, 3 ; 24
258: 80 91 69 00 lds r24, 0x0069
25c: 85 30 cpi r24, 0x05 ; 5
25e: 08 f4 brcc .+2 ; 0x262 <__vector_2+0x2e>
260: 6b c0 rjmp .+214 ; 0x338 <__vector_2+0x104>
262: 81 e0 ldi r24, 0x01 ; 1
264: 80 93 64 00 sts 0x0064, r24
268: 80 91 60 00 lds r24, 0x0060
26c: 28 2f mov r18, r24
26e: 33 27 eor r19, r19
270: 80 91 67 00 lds r24, 0x0067
274: 90 91 68 00 lds r25, 0x0068
278: 82 17 cp r24, r18
27a: 93 07 cpc r25, r19
27c: 51 f0 breq .+20 ; 0x292 <__vector_2+0x5e>
27e: 80 91 67 00 lds r24, 0x0067
282: 90 91 68 00 lds r25, 0x0068
286: 01 96 adiw r24, 0x01 ; 1
288: 90 93 68 00 sts 0x0068, r25
28c: 80 93 67 00 sts 0x0067, r24
290: 0e c0 rjmp .+28 ; 0x2ae <__vector_2+0x7a>
292: 10 92 68 00 sts 0x0068, r1
296: 10 92 67 00 sts 0x0067, r1
29a: 80 91 65 00 lds r24, 0x0065
29e: 90 91 66 00 lds r25, 0x0066
2a2: 80 50 subi r24, 0x00 ; 0
2a4: 9c 4f sbci r25, 0xFC ; 252
2a6: 90 93 66 00 sts 0x0066, r25
2aa: 80 93 65 00 sts 0x0065, r24
2ae: 1d bc out 0x2d, r1 ; 45
2b0: 1c bc out 0x2c, r1 ; 44
2b2: 80 91 6a 00 lds r24, 0x006A
2b6: 90 91 6b 00 lds r25, 0x006B
2ba: 8f 3f cpi r24, 0xFF ; 255
2bc: 91 05 cpc r25, r1
2be: 78 f5 brcc .+94 ; 0x31e <__vector_2+0xea>
2c0: 80 91 6a 00 lds r24, 0x006A
2c4: 90 91 6b 00 lds r25, 0x006B
2c8: 04 97 sbiw r24, 0x04 ; 4
2ca: 48 f1 brcs .+82 ; 0x31e <__vector_2+0xea>
2cc: 80 91 6a 00 lds r24, 0x006A
2d0: 90 91 6b 00 lds r25, 0x006B
2d4: 98 2f mov r25, r24
2d6: 88 27 eor r24, r24
2d8: 22 b7 in r18, 0x32 ; 50
2da: 33 27 eor r19, r19
2dc: 82 2b or r24, r18
2de: 93 2b or r25, r19
2e0: 9b bd out 0x2b, r25 ; 43
2e2: 8a bd out 0x2a, r24 ; 42
2e4: 12 be out 0x32, r1 ; 50
2e6: 80 e0 ldi r24, 0x00 ; 0
2e8: 2d df rcall .-422 ; 0x144 <internal_eeprom_read>
2ea: 99 27 eor r25, r25
2ec: 28 2f mov r18, r24
2ee: 39 2f mov r19, r25
2f0: 20 70 andi r18, 0x00 ; 0
2f2: 31 70 andi r19, 0x01 ; 1
2f4: 82 1b sub r24, r18
2f6: 93 0b sbc r25, r19
2f8: 88 0f add r24, r24
2fa: 99 1f adc r25, r25
2fc: 88 0f add r24, r24
2fe: 99 1f adc r25, r25
300: 90 93 63 00 sts 0x0063, r25
304: 80 93 62 00 sts 0x0062, r24
308: 81 e0 ldi r24, 0x01 ; 1
30a: 1c df rcall .-456 ; 0x144 <internal_eeprom_read>
30c: 80 93 74 00 sts 0x0074, r24
310: 8e b5 in r24, 0x2e ; 46
312: 81 60 ori r24, 0x01 ; 1
314: 8e bd out 0x2e, r24 ; 46
316: 89 b7 in r24, 0x39 ; 57
318: 80 64 ori r24, 0x40 ; 64
31a: 89 bf out 0x39, r24 ; 57
31c: 09 c0 rjmp .+18 ; 0x330 <__vector_2+0xfc>
31e: 64 e0 ldi r22, 0x04 ; 4
320: 82 e0 ldi r24, 0x02 ; 2
322: 68 df rcall .-304 ; 0x1f4 <set_led>
324: 65 e0 ldi r22, 0x05 ; 5
326: 82 e0 ldi r24, 0x02 ; 2
328: 65 df rcall .-310 ; 0x1f4 <set_led>
32a: 8e b5 in r24, 0x2e ; 46
32c: 8e 7f andi r24, 0xFE ; 254
32e: 8e bd out 0x2e, r24 ; 46
330: 10 92 6b 00 sts 0x006B, r1
334: 10 92 6a 00 sts 0x006A, r1
338: 10 92 69 00 sts 0x0069, r1
33c: c3 98 cbi 0x18, 3 ; 24
33e: ff 91 pop r31
340: ef 91 pop r30
342: bf 91 pop r27
344: af 91 pop r26
346: 9f 91 pop r25
348: 8f 91 pop r24
34a: 7f 91 pop r23
34c: 6f 91 pop r22
34e: 5f 91 pop r21
350: 4f 91 pop r20
352: 3f 91 pop r19
354: 2f 91 pop r18
356: 0f 90 pop r0
358: 0f be out 0x3f, r0 ; 63
35a: 0f 90 pop r0
35c: 1f 90 pop r1
35e: 18 95 reti
00000360 <__vector_4>:
360: 1f 92 push r1
362: 0f 92 push r0
364: 0f b6 in r0, 0x3f ; 63
366: 0f 92 push r0
368: 11 24 eor r1, r1
36a: 2f 93 push r18
36c: 3f 93 push r19
36e: 4f 93 push r20
370: 5f 93 push r21
372: 6f 93 push r22
374: 7f 93 push r23
376: 8f 93 push r24
378: 9f 93 push r25
37a: af 93 push r26
37c: bf 93 push r27
37e: cf 93 push r28
380: df 93 push r29
382: ef 93 push r30
384: ff 93 push r31
386: 78 94 sei
388: c1 9a sbi 0x18, 1 ; 24
38a: 20 91 62 00 lds r18, 0x0062
38e: 30 91 63 00 lds r19, 0x0063
392: 80 91 6a 00 lds r24, 0x006A
396: 90 91 6b 00 lds r25, 0x006B
39a: 82 56 subi r24, 0x62 ; 98
39c: 92 40 sbci r25, 0x02 ; 2
39e: 90 f5 brcc .+100 ; 0x404 <__vector_4+0xa4>
3a0: d8 9a sbi 0x1b, 0 ; 27
3a2: d3 2f mov r29, r19
3a4: c2 2f mov r28, r18
3a6: d3 70 andi r29, 0x03 ; 3
3a8: 80 91 65 00 lds r24, 0x0065
3ac: 90 91 66 00 lds r25, 0x0066
3b0: 64 e0 ldi r22, 0x04 ; 4
3b2: 8c 0f add r24, r28
3b4: 9d 1f adc r25, r29
3b6: e1 d1 rcall .+962 ; 0x77a <spieeprom_read_into_leds>
3b8: 80 91 74 00 lds r24, 0x0074
3bc: 88 23 and r24, r24
3be: 59 f0 breq .+22 ; 0x3d6 <__vector_4+0x76>
3c0: 80 91 65 00 lds r24, 0x0065
3c4: 90 91 66 00 lds r25, 0x0066
3c8: 8c 1b sub r24, r28
3ca: 9d 0b sbc r25, r29
3cc: 65 e0 ldi r22, 0x05 ; 5
3ce: 80 50 subi r24, 0x00 ; 0
3d0: 9c 4f sbci r25, 0xFC ; 252
3d2: d3 d1 rcall .+934 ; 0x77a <spieeprom_read_into_leds>
3d4: 06 c0 rjmp .+12 ; 0x3e2 <__vector_4+0x82>
3d6: 95 9a sbi 0x12, 5 ; 18
...
3e0: 95 98 cbi 0x12, 5 ; 18
3e2: f8 94 cli
3e4: 80 91 62 00 lds r24, 0x0062
3e8: 90 91 63 00 lds r25, 0x0063
3ec: 93 70 andi r25, 0x03 ; 3
3ee: c8 17 cp r28, r24
3f0: d9 07 cpc r29, r25
3f2: 29 f4 brne .+10 ; 0x3fe <__vector_4+0x9e>
3f4: 24 96 adiw r28, 0x04 ; 4
3f6: d0 93 63 00 sts 0x0063, r29
3fa: c0 93 62 00 sts 0x0062, r28
3fe: 78 94 sei
400: d8 98 cbi 0x1b, 0 ; 27
402: 0d c0 rjmp .+26 ; 0x41e <__vector_4+0xbe>
404: d9 9a sbi 0x1b, 1 ; 27
406: f8 94 cli
408: 8e b5 in r24, 0x2e ; 46
40a: 88 7f andi r24, 0xF8 ; 248
40c: 8e bd out 0x2e, r24 ; 46
40e: 78 94 sei
410: 64 e0 ldi r22, 0x04 ; 4
412: 82 e0 ldi r24, 0x02 ; 2
414: ef de rcall .-546 ; 0x1f4 <set_led>
416: 65 e0 ldi r22, 0x05 ; 5
418: 82 e0 ldi r24, 0x02 ; 2
41a: ec de rcall .-552 ; 0x1f4 <set_led>
41c: d9 98 cbi 0x1b, 1 ; 27
41e: c1 98 cbi 0x18, 1 ; 24
420: ff 91 pop r31
422: ef 91 pop r30
424: df 91 pop r29
426: cf 91 pop r28
428: bf 91 pop r27
42a: af 91 pop r26
42c: 9f 91 pop r25
42e: 8f 91 pop r24
430: 7f 91 pop r23
432: 6f 91 pop r22
434: 5f 91 pop r21
436: 4f 91 pop r20
438: 3f 91 pop r19
43a: 2f 91 pop r18
43c: 0f 90 pop r0
43e: 0f be out 0x3f, r0 ; 63
440: 0f 90 pop r0
442: 1f 90 pop r1
444: 18 95 reti
00000446 <set_all>:
446: 64 30 cpi r22, 0x04 ; 4
448: 19 f4 brne .+6 ; 0x450 <set_all+0xa>
44a: e0 e7 ldi r30, 0x70 ; 112
44c: f0 e0 ldi r31, 0x00 ; 0
44e: 02 c0 rjmp .+4 ; 0x454 <set_all+0xe>
450: ec e6 ldi r30, 0x6C ; 108
452: f0 e0 ldi r31, 0x00 ; 0
454: 83 83 std Z+3, r24 ; 0x03
456: 82 83 std Z+2, r24 ; 0x02
458: 81 83 std Z+1, r24 ; 0x01
45a: 80 83 st Z, r24
45c: 86 2f mov r24, r22
45e: a0 de rcall .-704 ; 0x1a0 <clock_leds>
460: 08 95 ret
00000462 <test_leds>:
462: cf 93 push r28
464: c0 e0 ldi r28, 0x00 ; 0
466: 64 e0 ldi r22, 0x04 ; 4
468: 81 e2 ldi r24, 0x21 ; 33
46a: 8c 1b sub r24, r28
46c: c3 de rcall .-634 ; 0x1f4 <set_led>
46e: 65 e0 ldi r22, 0x05 ; 5
470: 8c 2f mov r24, r28
472: c0 de rcall .-640 ; 0x1f4 <set_led>
474: 8a e0 ldi r24, 0x0A ; 10
476: 1c de rcall .-968 ; 0xb0 <delay_ms>
478: cf 5f subi r28, 0xFF ; 255
47a: c1 32 cpi r28, 0x21 ; 33
47c: a0 f3 brcs .-24 ; 0x466 <test_leds+0x4>
47e: 64 e0 ldi r22, 0x04 ; 4
480: 8a ea ldi r24, 0xAA ; 170
482: e1 df rcall .-62 ; 0x446 <set_all>
484: 65 e0 ldi r22, 0x05 ; 5
486: 8a ea ldi r24, 0xAA ; 170
488: de df rcall .-68 ; 0x446 <set_all>
48a: 82 e3 ldi r24, 0x32 ; 50
48c: 11 de rcall .-990 ; 0xb0 <delay_ms>
48e: 64 e0 ldi r22, 0x04 ; 4
490: 85 e5 ldi r24, 0x55 ; 85
492: d9 df rcall .-78 ; 0x446 <set_all>
494: 65 e0 ldi r22, 0x05 ; 5
496: 85 e5 ldi r24, 0x55 ; 85
498: d6 df rcall .-84 ; 0x446 <set_all>
49a: 82 e3 ldi r24, 0x32 ; 50
49c: 09 de rcall .-1006 ; 0xb0 <delay_ms>
49e: 64 e0 ldi r22, 0x04 ; 4
4a0: 8e ef ldi r24, 0xFE ; 254
4a2: d1 df rcall .-94 ; 0x446 <set_all>
4a4: 65 e0 ldi r22, 0x05 ; 5
4a6: 8e ef ldi r24, 0xFE ; 254
4a8: ce df rcall .-100 ; 0x446 <set_all>
4aa: 8f ef ldi r24, 0xFF ; 255
4ac: 01 de rcall .-1022 ; 0xb0 <delay_ms>
4ae: 8f ef ldi r24, 0xFF ; 255
4b0: ff dd rcall .-1026 ; 0xb0 <delay_ms>
4b2: cf 91 pop r28
4b4: 08 95 ret
000004b6 <tx_computer_byte>:
4b6: 98 2f mov r25, r24
4b8: 1a ba out 0x1a, r1 ; 26
4ba: 8f e5 ldi r24, 0x5F ; 95
4bc: 87 bb out 0x17, r24 ; 23
4be: 88 e1 ldi r24, 0x18 ; 24
4c0: 8d b9 out 0x0d, r24 ; 13
4c2: 9f b9 out 0x0f, r25 ; 15
4c4: 80 e4 ldi r24, 0x40 ; 64
4c6: 8e b9 out 0x0e, r24 ; 14
4c8: 76 99 sbic 0x0e, 6 ; 14
4ca: 11 c0 rjmp .+34 ; 0x4ee <tx_computer_byte+0x38>
4cc: a8 95 wdr
4ce: 80 91 6a 00 lds r24, 0x006A
4d2: 90 91 6b 00 lds r25, 0x006B
4d6: 8f 5f subi r24, 0xFF ; 255
4d8: 9f 4f sbci r25, 0xFF ; 255
4da: 19 f4 brne .+6 ; 0x4e2 <tx_computer_byte+0x2c>
4dc: 81 e0 ldi r24, 0x01 ; 1
4de: 80 93 64 00 sts 0x0064, r24
4e2: 80 91 64 00 lds r24, 0x0064
4e6: 88 23 and r24, r24
4e8: 11 f4 brne .+4 ; 0x4ee <tx_computer_byte+0x38>
4ea: 76 9b sbis 0x0e, 6 ; 14
4ec: ef cf rjmp .-34 ; 0x4cc <tx_computer_byte+0x16>
4ee: 9f b1 in r25, 0x0f ; 15
4f0: 8f ed ldi r24, 0xDF ; 223
4f2: 87 bb out 0x17, r24 ; 23
4f4: 1d b8 out 0x0d, r1 ; 13
4f6: 89 2f mov r24, r25
4f8: 99 27 eor r25, r25
4fa: 08 95 ret
000004fc <internal_eeprom_write>:
// Write the internal EEPROM
void internal_eeprom_write(uint8_t addr, uint8_t data) {
loop_until_bit_is_clear(EECR, EEWE); // Wait for last write to finish
4fc: e1 99 sbic 0x1c, 1 ; 28
4fe: fe cf rjmp .-4 ; 0x4fc <internal_eeprom_write>
EEAR = addr; // Store address to write
500: 8e bb out 0x1e, r24 ; 30
EEDR = data; // and the data
502: 6d bb out 0x1d, r22 ; 29
// The following register bitflips are time-critical and must
// happen within 4 cycles of each other. For this reason,
// interrupts cannot be allowed here.
// Note: Page 19 refers to EEWE as EEPE and EEMWE as EEMPE.
// POSSIBLE BUG: EEPM{0,1} bits in EECR define what programming
// mode the EEPROM is in. They do not have a defined initial
// value if the EEPROM is programming when a reset comes in.
// This is a tiny time window, but should they be explicitly
// cleared?
cli(); // Turn off interrupts
504: f8 94 cli
EECR |= _BV(EEMWE); // Master enable, unlocks ability to write to EEPROM
506: e2 9a sbi 0x1c, 2 ; 28
EECR |= _BV(EEWE); // Program enable, actually does it.
508: e1 9a sbi 0x1c, 1 ; 28
sei(); // Turn on interrupts again
50a: 78 94 sei
50c: 08 95 ret
0000050e <main>:
50e: ce ec ldi r28, 0xCE ; 206
510: d0 e0 ldi r29, 0x00 ; 0
512: de bf out 0x3e, r29 ; 62
514: cd bf out 0x3d, r28 ; 61
516: 04 b7 in r16, 0x34 ; 52
518: 14 be out 0x34, r1 ; 52
51a: 8e e0 ldi r24, 0x0E ; 14
51c: 81 bd out 0x21, r24 ; 33
51e: 19 de rcall .-974 ; 0x152 <ioinit>
520: 00 fd sbrc r16, 0
522: 9f df rcall .-194 ; 0x462 <test_leds>
524: 64 e0 ldi r22, 0x04 ; 4
526: 80 2f mov r24, r16
528: 8e 5f subi r24, 0xFE ; 254
52a: 64 de rcall .-824 ; 0x1f4 <set_led>
52c: 65 e0 ldi r22, 0x05 ; 5
52e: 82 e0 ldi r24, 0x02 ; 2
530: 61 de rcall .-830 ; 0x1f4 <set_led>
532: 82 e0 ldi r24, 0x02 ; 2
534: 07 de rcall .-1010 ; 0x144 <internal_eeprom_read>
536: 80 93 60 00 sts 0x0060, r24
53a: 78 94 sei
53c: 78 94 sei
53e: 80 e0 ldi r24, 0x00 ; 0
540: ba df rcall .-140 ; 0x4b6 <tx_computer_byte>
542: 08 2f mov r16, r24
544: 88 23 and r24, r24
546: 09 f4 brne .+2 ; 0x54a <main+0x3c>
548: 92 c0 rjmp .+292 ; 0x66e <main+0x160>
54a: f8 94 cli
54c: 10 92 6b 00 sts 0x006B, r1
550: 10 92 6a 00 sts 0x006A, r1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -