📄 spokepov.lss
字号:
506: 91 05 cpc r25, r1
508: 09 f4 brne .+2 ; 0x50c <main+0x40>
50a: 43 c0 rjmp .+134 ; 0x592 <main+0xc6>
50c: 87 38 cpi r24, 0x87 ; 135
50e: 91 05 cpc r25, r1
510: 24 f4 brge .+8 ; 0x51a <main+0x4e>
512: 85 38 cpi r24, 0x85 ; 133
514: 91 05 cpc r25, r1
516: 41 f0 breq .+16 ; 0x528 <main+0x5c>
518: e8 cf rjmp .-48 ; 0x4ea <main+0x1e>
51a: 87 38 cpi r24, 0x87 ; 135
51c: 91 05 cpc r25, r1
51e: 21 f0 breq .+8 ; 0x528 <main+0x5c>
520: 88 38 cpi r24, 0x88 ; 136
522: 91 05 cpc r25, r1
524: b1 f1 breq .+108 ; 0x592 <main+0xc6>
526: e1 cf rjmp .-62 ; 0x4ea <main+0x1e>
528: 07 38 cpi r16, 0x87 ; 135
52a: 19 f4 brne .+6 ; 0x532 <main+0x66>
52c: 00 e1 ldi r16, 0x10 ; 16
52e: b0 2e mov r11, r16
530: 02 c0 rjmp .+4 ; 0x536 <main+0x6a>
532: 11 e0 ldi r17, 0x01 ; 1
534: b1 2e mov r11, r17
536: 80 e0 ldi r24, 0x00 ; 0
538: 96 df rcall .-212 ; 0x466 <tx_computer_byte>
53a: e8 2e mov r14, r24
53c: ff 24 eor r15, r15
53e: fe 2c mov r15, r14
540: ee 24 eor r14, r14
542: 80 e0 ldi r24, 0x00 ; 0
544: 90 df rcall .-224 ; 0x466 <tx_computer_byte>
546: 99 27 eor r25, r25
548: e8 2a or r14, r24
54a: f9 2a or r15, r25
54c: f7 fe sbrs r15, 7
54e: 04 c0 rjmp .+8 ; 0x558 <main+0x8c>
550: 8e 2d mov r24, r14
552: ac df rcall .-168 ; 0x4ac <internal_eeprom_read>
554: 88 df rcall .-240 ; 0x466 <tx_computer_byte>
556: 1a c0 rjmp .+52 ; 0x58c <main+0xc0>
558: 4b 2d mov r20, r11
55a: 6c 2f mov r22, r28
55c: 7d 2f mov r23, r29
55e: 6f 5f subi r22, 0xFF ; 255
560: 7f 4f sbci r23, 0xFF ; 255
562: 9f 2d mov r25, r15
564: 8e 2d mov r24, r14
566: b6 d0 rcall .+364 ; 0x6d4 <spieeprom_read>
568: 90 e0 ldi r25, 0x00 ; 0
56a: 9b 15 cp r25, r11
56c: 78 f4 brcc .+30 ; 0x58c <main+0xc0>
56e: 00 e0 ldi r16, 0x00 ; 0
570: 10 e0 ldi r17, 0x00 ; 0
572: fd 2f mov r31, r29
574: ec 2f mov r30, r28
576: e0 0f add r30, r16
578: f1 1f adc r31, r17
57a: 81 81 ldd r24, Z+1 ; 0x01
57c: 99 8b std Y+17, r25 ; 0x11
57e: 73 df rcall .-282 ; 0x466 <tx_computer_byte>
580: 99 89 ldd r25, Y+17 ; 0x11
582: 9f 5f subi r25, 0xFF ; 255
584: 0f 5f subi r16, 0xFF ; 255
586: 1f 4f sbci r17, 0xFF ; 255
588: 9b 15 cp r25, r11
58a: 98 f3 brcs .-26 ; 0x572 <main+0xa6>
58c: 80 e8 ldi r24, 0x80 ; 128
58e: 6b df rcall .-298 ; 0x466 <tx_computer_byte>
590: ac cf rjmp .-168 ; 0x4ea <main+0x1e>
592: 08 38 cpi r16, 0x88 ; 136
594: 19 f4 brne .+6 ; 0x59c <main+0xd0>
596: a0 e1 ldi r26, 0x10 ; 16
598: ba 2e mov r11, r26
59a: 02 c0 rjmp .+4 ; 0x5a0 <main+0xd4>
59c: f1 e0 ldi r31, 0x01 ; 1
59e: bf 2e mov r11, r31
5a0: 80 e0 ldi r24, 0x00 ; 0
5a2: 61 df rcall .-318 ; 0x466 <tx_computer_byte>
5a4: e8 2e mov r14, r24
5a6: ff 24 eor r15, r15
5a8: fe 2c mov r15, r14
5aa: ee 24 eor r14, r14
5ac: 80 e0 ldi r24, 0x00 ; 0
5ae: 5b df rcall .-330 ; 0x466 <tx_computer_byte>
5b0: 99 27 eor r25, r25
5b2: e8 2a or r14, r24
5b4: f9 2a or r15, r25
5b6: 9f 2d mov r25, r15
5b8: 8e 2d mov r24, r14
5ba: 74 e0 ldi r23, 0x04 ; 4
5bc: 96 95 lsr r25
5be: 87 95 ror r24
5c0: 7a 95 dec r23
5c2: e1 f7 brne .-8 ; 0x5bc <main+0xf0>
5c4: 8f 71 andi r24, 0x1F ; 31
5c6: f8 dd rcall .-1040 ; 0x1b8 <set_led>
5c8: 90 e0 ldi r25, 0x00 ; 0
5ca: 9b 15 cp r25, r11
5cc: a8 f4 brcc .+42 ; 0x5f8 <main+0x12c>
5ce: cc 24 eor r12, r12
5d0: dd 24 eor r13, r13
5d2: 0c 2f mov r16, r28
5d4: 1d 2f mov r17, r29
5d6: 0f 5f subi r16, 0xFF ; 255
5d8: 1f 4f sbci r17, 0xFF ; 255
5da: 0c 0d add r16, r12
5dc: 1d 1d adc r17, r13
5de: 80 e0 ldi r24, 0x00 ; 0
5e0: 99 8b std Y+17, r25 ; 0x11
5e2: 41 df rcall .-382 ; 0x466 <tx_computer_byte>
5e4: f1 2f mov r31, r17
5e6: e0 2f mov r30, r16
5e8: 80 83 st Z, r24
5ea: 99 89 ldd r25, Y+17 ; 0x11
5ec: 9f 5f subi r25, 0xFF ; 255
5ee: 08 94 sec
5f0: c1 1c adc r12, r1
5f2: d1 1c adc r13, r1
5f4: 9b 15 cp r25, r11
5f6: 68 f3 brcs .-38 ; 0x5d2 <main+0x106>
5f8: 80 e8 ldi r24, 0x80 ; 128
5fa: 35 df rcall .-406 ; 0x466 <tx_computer_byte>
5fc: f7 fe sbrs r15, 7
5fe: 04 c0 rjmp .+8 ; 0x608 <main+0x13c>
600: 69 81 ldd r22, Y+1 ; 0x01
602: 8e 2d mov r24, r14
604: 5a df rcall .-332 ; 0x4ba <internal_eeprom_write>
606: 71 cf rjmp .-286 ; 0x4ea <main+0x1e>
608: 4b 2d mov r20, r11
60a: 6c 2f mov r22, r28
60c: 7d 2f mov r23, r29
60e: 6f 5f subi r22, 0xFF ; 255
610: 7f 4f sbci r23, 0xFF ; 255
612: 9f 2d mov r25, r15
614: 8e 2d mov r24, r14
616: 1a d0 rcall .+52 ; 0x64c <spieeprom_write>
618: 68 cf rjmp .-304 ; 0x4ea <main+0x1e>
61a: 90 9a sbi 0x12, 0 ; 18
61c: a8 95 wdr
61e: 90 98 cbi 0x12, 0 ; 18
620: 80 91 8b 00 lds r24, 0x008B
624: 90 91 8c 00 lds r25, 0x008C
628: 8f 5f subi r24, 0xFF ; 255
62a: 9f 4f sbci r25, 0xFF ; 255
62c: b1 f7 brne .-20 ; 0x61a <main+0x14e>
62e: f8 94 cli
630: 80 e0 ldi r24, 0x00 ; 0
632: c2 dd rcall .-1148 ; 0x1b8 <set_led>
634: 96 98 cbi 0x12, 6 ; 18
636: c4 9a sbi 0x18, 4 ; 24
638: 81 b5 in r24, 0x21 ; 33
63a: 88 61 ori r24, 0x18 ; 24
63c: 81 bd out 0x21, r24 ; 33
63e: 11 bc out 0x21, r1 ; 33
640: 85 b7 in r24, 0x35 ; 53
642: 80 67 ori r24, 0x70 ; 112
644: 85 bf out 0x35, r24 ; 53
646: 78 94 sei
648: 88 95 sleep
64a: e7 cf rjmp .-50 ; 0x61a <main+0x14e>
0000064c <spieeprom_write>:
#include <avr/io.h>
#include "eeprom.h"
#include "main.h"
uint8_t spieeprom_write(uint16_t addr, uint8_t *data, uint8_t len) {
64c: ef 92 push r14
64e: ff 92 push r15
650: 0f 93 push r16
652: 1f 93 push r17
654: cf 93 push r28
656: df 93 push r29
658: d9 2f mov r29, r25
65a: c8 2f mov r28, r24
65c: e6 2e mov r14, r22
65e: f7 2e mov r15, r23
660: 04 2f mov r16, r20
uint8_t i;
/* check if there is a write in progress, wait */
do {
asm("wdr");
662: a8 95 wdr
SPIEE_CS_PORT &= ~_BV(SPIEE_CS); // pull CS low
664: c4 98 cbi 0x18, 4 ; 24
...
NOP; NOP; NOP; NOP; // wait 500 ns, CS setup time
spi_transfer(SPI_EEPROM_RDSR); // write "READ STATUS REG" cmd
66e: 85 e0 ldi r24, 0x05 ; 5
670: 84 dd rcall .-1272 ; 0x17a <spi_transfer>
i = spi_transfer(0); // read status
672: 80 e0 ldi r24, 0x00 ; 0
674: 82 dd rcall .-1276 ; 0x17a <spi_transfer>
SPIEE_CS_PORT |= _BV(SPIEE_CS); // pull CS high
676: c4 9a sbi 0x18, 4 ; 24
} while ((i & 0x1) != 0);
678: 80 fd sbrc r24, 0
67a: f3 cf rjmp .-26 ; 0x662 <spieeprom_write+0x16>
/* set the spi write enable latch */
SPIEE_CS_PORT &= ~_BV(SPIEE_CS); // pull CS low
67c: c4 98 cbi 0x18, 4 ; 24
...
NOP; NOP; NOP; NOP; // wait 500 ns, CS setup time
spi_transfer(SPI_EEPROM_WREN); // send command
686: 86 e0 ldi r24, 0x06 ; 6
688: 78 dd rcall .-1296 ; 0x17a <spi_transfer>
SPIEE_CS_PORT |= _BV(SPIEE_CS); // pull CS high
68a: c4 9a sbi 0x18, 4 ; 24
...
NOP; NOP; NOP; NOP; // 500ns hold time
SPIEE_CS_PORT &= ~_BV(SPIEE_CS); // pull CS low
694: c4 98 cbi 0x18, 4 ; 24
spi_transfer(SPI_EEPROM_WRITE); // send command
696: 82 e0 ldi r24, 0x02 ; 2
698: 70 dd rcall .-1312 ; 0x17a <spi_transfer>
spi_transfer(addr >> 8); // send high addr
69a: 8d 2f mov r24, r29
69c: 99 27 eor r25, r25
69e: 6d dd rcall .-1318 ; 0x17a <spi_transfer>
spi_transfer(addr & 0xFF); // send low addr
6a0: 8c 2f mov r24, r28
6a2: 6b dd rcall .-1322 ; 0x17a <spi_transfer>
for (i = 0; i< len; i++)
6a4: 10 e0 ldi r17, 0x00 ; 0
6a6: 10 17 cp r17, r16
6a8: 38 f4 brcc .+14 ; 0x6b8 <spieeprom_write+0x6c>
6aa: df 2d mov r29, r15
6ac: ce 2d mov r28, r14
spi_transfer(data[i]); // send data
6ae: 89 91 ld r24, Y+
6b0: 64 dd rcall .-1336 ; 0x17a <spi_transfer>
6b2: 1f 5f subi r17, 0xFF ; 255
6b4: 10 17 cp r17, r16
6b6: d8 f3 brcs .-10 ; 0x6ae <spieeprom_write+0x62>
...
NOP; NOP; NOP; NOP; // 500ns hold time
SPIEE_CS_PORT |= _BV(SPIEE_CS); // pull CS high
6c0: c4 9a sbi 0x18, 4 ; 24
return 0;
}
6c2: 80 e0 ldi r24, 0x00 ; 0
6c4: 90 e0 ldi r25, 0x00 ; 0
6c6: df 91 pop r29
6c8: cf 91 pop r28
6ca: 1f 91 pop r17
6cc: 0f 91 pop r16
6ce: ff 90 pop r15
6d0: ef 90 pop r14
6d2: 08 95 ret
000006d4 <spieeprom_read>:
void spieeprom_read(uint16_t addr, uint8_t *buff, uint8_t len) {
6d4: ff 92 push r15
6d6: 0f 93 push r16
6d8: 1f 93 push r17
6da: cf 93 push r28
6dc: df 93 push r29
6de: 08 2f mov r16, r24
6e0: 19 2f mov r17, r25
6e2: d7 2f mov r29, r23
6e4: c6 2f mov r28, r22
6e6: f4 2e mov r15, r20
uint8_t data, i;
SPIEE_CS_PORT &= ~_BV(SPIEE_CS); // pull CS low
6e8: c4 98 cbi 0x18, 4 ; 24
...
NOP; NOP; NOP; NOP;
spi_transfer(SPI_EEPROM_READ); // send READ command
6f2: 83 e0 ldi r24, 0x03 ; 3
6f4: 42 dd rcall .-1404 ; 0x17a <spi_transfer>
spi_transfer(addr >> 8); // send high addr
6f6: 81 2f mov r24, r17
6f8: 99 27 eor r25, r25
6fa: 3f dd rcall .-1410 ; 0x17a <spi_transfer>
spi_transfer(addr & 0xFF); // send low addr
6fc: 80 2f mov r24, r16
6fe: 3d dd rcall .-1414 ; 0x17a <spi_transfer>
for (i=0; i<len; i++)
700: 00 e0 ldi r16, 0x00 ; 0
702: 0f 15 cp r16, r15
704: 28 f4 brcc .+10 ; 0x710 <spieeprom_read+0x3c>
buff[i] = spi_transfer(0);
706: 80 e0 ldi r24, 0x00 ; 0
708: 38 dd rcall .-1424 ; 0x17a <spi_transfer>
70a: 89 93 st Y+, r24
70c: 0f 5f subi r16, 0xFF ; 255
70e: f9 cf rjmp .-14 ; 0x702 <spieeprom_read+0x2e>
SPIEE_CS_PORT |= _BV(SPIEE_CS); // pull CS high
710: c4 9a sbi 0x18, 4 ; 24
712: df 91 pop r29
714: cf 91 pop r28
716: 1f 91 pop r17
718: 0f 91 pop r16
71a: ff 90 pop r15
71c: 08 95 ret
0000071e <spieeprom_read_into_leds>:
}
void spieeprom_read_into_leds(uint16_t addr, uint8_t side) {
71e: ff 92 push r15
720: 0f 93 push r16
722: 1f 93 push r17
724: 08 2f mov r16, r24
726: 19 2f mov r17, r25
728: f6 2e mov r15, r22
uint8_t x;
SPIEE_CS_PORT &= ~_BV(SPIEE_CS); // pull CS low
72a: c4 98 cbi 0x18, 4 ; 24
...
NOP; NOP; NOP; NOP;
spi_transfer(SPI_EEPROM_READ); // send READ command
734: 83 e0 ldi r24, 0x03 ; 3
736: 21 dd rcall .-1470 ; 0x17a <spi_transfer>
spi_transfer(addr >> 8); // send high addr
738: 81 2f mov r24, r17
73a: 99 27 eor r25, r25
73c: 1e dd rcall .-1476 ; 0x17a <spi_transfer>
spi_transfer(addr & 0xFF); // send low addr
73e: 80 2f mov r24, r16
740: 1c dd rcall .-1480 ; 0x17a <spi_transfer>
x = spi_transfer(0);
742: 80 e0 ldi r24, 0x00 ; 0
744: 1a dd rcall .-1484 ; 0x17a <spi_transfer>
x = spi_transfer(x);
746: 19 dd rcall .-1486 ; 0x17a <spi_transfer>
x = spi_transfer(x);
748: 18 dd rcall .-1488 ; 0x17a <spi_transfer>
x = spi_transfer(x);
74a: 17 dd rcall .-1490 ; 0x17a <spi_transfer>
spi_transfer(x);
74c: 16 dd rcall .-1492 ; 0x17a <spi_transfer>
SPIEE_CS_PORT |= _BV(SPIEE_CS); // pull CS high
74e: c4 9a sbi 0x18, 4 ; 24
LATCH_SELECT_PORT |= _BV(side);
750: 21 e0 ldi r18, 0x01 ; 1
752: 30 e0 ldi r19, 0x00 ; 0
754: 02 c0 rjmp .+4 ; 0x75a <spieeprom_read_into_leds+0x3c>
756: 22 0f add r18, r18
758: 33 1f adc r19, r19
75a: fa 94 dec r15
75c: e2 f7 brpl .-8 ; 0x756 <spieeprom_read_into_leds+0x38>
75e: 82 b3 in r24, 0x12 ; 18
760: 82 2b or r24, r18
762: 82 bb out 0x12, r24 ; 18
...
NOP; NOP; NOP; NOP;
LATCH_SELECT_PORT &= ~_BV(side);
76c: 92 2f mov r25, r18
76e: 90 95 com r25
770: 82 b3 in r24, 0x12 ; 18
772: 89 23 and r24, r25
774: 82 bb out 0x12, r24 ; 18
776: 1f 91 pop r17
778: 0f 91 pop r16
77a: ff 90 pop r15
77c: 08 95 ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -