⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 spokepov.lss

📁 旋转16个LED灯控制程序
💻 LSS
📖 第 1 页 / 共 5 页
字号:
 554:	99 27       	eor	r25, r25
 556:	86 38       	cpi	r24, 0x86	; 134
 558:	91 05       	cpc	r25, r1
 55a:	09 f4       	brne	.+2      	; 0x55e <main+0x50>
 55c:	43 c0       	rjmp	.+134    	; 0x5e4 <main+0xd6>
 55e:	87 38       	cpi	r24, 0x87	; 135
 560:	91 05       	cpc	r25, r1
 562:	24 f4       	brge	.+8      	; 0x56c <main+0x5e>
 564:	85 38       	cpi	r24, 0x85	; 133
 566:	91 05       	cpc	r25, r1
 568:	41 f0       	breq	.+16     	; 0x57a <main+0x6c>
 56a:	e8 cf       	rjmp	.-48     	; 0x53c <main+0x2e>
 56c:	87 38       	cpi	r24, 0x87	; 135
 56e:	91 05       	cpc	r25, r1
 570:	21 f0       	breq	.+8      	; 0x57a <main+0x6c>
 572:	88 38       	cpi	r24, 0x88	; 136
 574:	91 05       	cpc	r25, r1
 576:	b1 f1       	breq	.+108    	; 0x5e4 <main+0xd6>
 578:	e1 cf       	rjmp	.-62     	; 0x53c <main+0x2e>
 57a:	07 38       	cpi	r16, 0x87	; 135
 57c:	19 f4       	brne	.+6      	; 0x584 <main+0x76>
 57e:	a0 e1       	ldi	r26, 0x10	; 16
 580:	ba 2e       	mov	r11, r26
 582:	02 c0       	rjmp	.+4      	; 0x588 <main+0x7a>
 584:	f1 e0       	ldi	r31, 0x01	; 1
 586:	bf 2e       	mov	r11, r31
 588:	80 e0       	ldi	r24, 0x00	; 0
 58a:	95 df       	rcall	.-214    	; 0x4b6 <tx_computer_byte>
 58c:	e8 2e       	mov	r14, r24
 58e:	ff 24       	eor	r15, r15
 590:	fe 2c       	mov	r15, r14
 592:	ee 24       	eor	r14, r14
 594:	80 e0       	ldi	r24, 0x00	; 0
 596:	8f df       	rcall	.-226    	; 0x4b6 <tx_computer_byte>
 598:	99 27       	eor	r25, r25
 59a:	e8 2a       	or	r14, r24
 59c:	f9 2a       	or	r15, r25
 59e:	f7 fe       	sbrs	r15, 7
 5a0:	04 c0       	rjmp	.+8      	; 0x5aa <main+0x9c>
 5a2:	8e 2d       	mov	r24, r14
 5a4:	cf dd       	rcall	.-1122   	; 0x144 <internal_eeprom_read>
 5a6:	87 df       	rcall	.-242    	; 0x4b6 <tx_computer_byte>
 5a8:	1a c0       	rjmp	.+52     	; 0x5de <main+0xd0>
 5aa:	4b 2d       	mov	r20, r11
 5ac:	6c 2f       	mov	r22, r28
 5ae:	7d 2f       	mov	r23, r29
 5b0:	6f 5f       	subi	r22, 0xFF	; 255
 5b2:	7f 4f       	sbci	r23, 0xFF	; 255
 5b4:	9f 2d       	mov	r25, r15
 5b6:	8e 2d       	mov	r24, r14
 5b8:	bb d0       	rcall	.+374    	; 0x730 <spieeprom_read>
 5ba:	90 e0       	ldi	r25, 0x00	; 0
 5bc:	9b 15       	cp	r25, r11
 5be:	78 f4       	brcc	.+30     	; 0x5de <main+0xd0>
 5c0:	00 e0       	ldi	r16, 0x00	; 0
 5c2:	10 e0       	ldi	r17, 0x00	; 0
 5c4:	fd 2f       	mov	r31, r29
 5c6:	ec 2f       	mov	r30, r28
 5c8:	e0 0f       	add	r30, r16
 5ca:	f1 1f       	adc	r31, r17
 5cc:	81 81       	ldd	r24, Z+1	; 0x01
 5ce:	99 8b       	std	Y+17, r25	; 0x11
 5d0:	72 df       	rcall	.-284    	; 0x4b6 <tx_computer_byte>
 5d2:	99 89       	ldd	r25, Y+17	; 0x11
 5d4:	9f 5f       	subi	r25, 0xFF	; 255
 5d6:	0f 5f       	subi	r16, 0xFF	; 255
 5d8:	1f 4f       	sbci	r17, 0xFF	; 255
 5da:	9b 15       	cp	r25, r11
 5dc:	98 f3       	brcs	.-26     	; 0x5c4 <main+0xb6>
 5de:	80 e8       	ldi	r24, 0x80	; 128
 5e0:	6a df       	rcall	.-300    	; 0x4b6 <tx_computer_byte>
 5e2:	ac cf       	rjmp	.-168    	; 0x53c <main+0x2e>
 5e4:	08 38       	cpi	r16, 0x88	; 136
 5e6:	19 f4       	brne	.+6      	; 0x5ee <main+0xe0>
 5e8:	70 e1       	ldi	r23, 0x10	; 16
 5ea:	b7 2e       	mov	r11, r23
 5ec:	02 c0       	rjmp	.+4      	; 0x5f2 <main+0xe4>
 5ee:	61 e0       	ldi	r22, 0x01	; 1
 5f0:	b6 2e       	mov	r11, r22
 5f2:	80 e0       	ldi	r24, 0x00	; 0
 5f4:	60 df       	rcall	.-320    	; 0x4b6 <tx_computer_byte>
 5f6:	e8 2e       	mov	r14, r24
 5f8:	ff 24       	eor	r15, r15
 5fa:	fe 2c       	mov	r15, r14
 5fc:	ee 24       	eor	r14, r14
 5fe:	80 e0       	ldi	r24, 0x00	; 0
 600:	5a df       	rcall	.-332    	; 0x4b6 <tx_computer_byte>
 602:	99 27       	eor	r25, r25
 604:	e8 2a       	or	r14, r24
 606:	f9 2a       	or	r15, r25
 608:	9f 2d       	mov	r25, r15
 60a:	8e 2d       	mov	r24, r14
 60c:	44 e0       	ldi	r20, 0x04	; 4
 60e:	96 95       	lsr	r25
 610:	87 95       	ror	r24
 612:	4a 95       	dec	r20
 614:	e1 f7       	brne	.-8      	; 0x60e <main+0x100>
 616:	64 e0       	ldi	r22, 0x04	; 4
 618:	8f 71       	andi	r24, 0x1F	; 31
 61a:	ec dd       	rcall	.-1064   	; 0x1f4 <set_led>
 61c:	90 e0       	ldi	r25, 0x00	; 0
 61e:	9b 15       	cp	r25, r11
 620:	a8 f4       	brcc	.+42     	; 0x64c <main+0x13e>
 622:	cc 24       	eor	r12, r12
 624:	dd 24       	eor	r13, r13
 626:	0c 2f       	mov	r16, r28
 628:	1d 2f       	mov	r17, r29
 62a:	0f 5f       	subi	r16, 0xFF	; 255
 62c:	1f 4f       	sbci	r17, 0xFF	; 255
 62e:	0c 0d       	add	r16, r12
 630:	1d 1d       	adc	r17, r13
 632:	80 e0       	ldi	r24, 0x00	; 0
 634:	99 8b       	std	Y+17, r25	; 0x11
 636:	3f df       	rcall	.-386    	; 0x4b6 <tx_computer_byte>
 638:	f1 2f       	mov	r31, r17
 63a:	e0 2f       	mov	r30, r16
 63c:	80 83       	st	Z, r24
 63e:	99 89       	ldd	r25, Y+17	; 0x11
 640:	9f 5f       	subi	r25, 0xFF	; 255
 642:	08 94       	sec
 644:	c1 1c       	adc	r12, r1
 646:	d1 1c       	adc	r13, r1
 648:	9b 15       	cp	r25, r11
 64a:	68 f3       	brcs	.-38     	; 0x626 <main+0x118>
 64c:	80 e8       	ldi	r24, 0x80	; 128
 64e:	33 df       	rcall	.-410    	; 0x4b6 <tx_computer_byte>
 650:	f7 fe       	sbrs	r15, 7
 652:	04 c0       	rjmp	.+8      	; 0x65c <main+0x14e>
 654:	69 81       	ldd	r22, Y+1	; 0x01
 656:	8e 2d       	mov	r24, r14
 658:	51 df       	rcall	.-350    	; 0x4fc <internal_eeprom_write>
 65a:	70 cf       	rjmp	.-288    	; 0x53c <main+0x2e>
 65c:	4b 2d       	mov	r20, r11
 65e:	6c 2f       	mov	r22, r28
 660:	7d 2f       	mov	r23, r29
 662:	6f 5f       	subi	r22, 0xFF	; 255
 664:	7f 4f       	sbci	r23, 0xFF	; 255
 666:	9f 2d       	mov	r25, r15
 668:	8e 2d       	mov	r24, r14
 66a:	1e d0       	rcall	.+60     	; 0x6a8 <spieeprom_write>
 66c:	67 cf       	rjmp	.-306    	; 0x53c <main+0x2e>
 66e:	90 9a       	sbi	0x12, 0	; 18
 670:	a8 95       	wdr
 672:	90 98       	cbi	0x12, 0	; 18
 674:	80 91 6a 00 	lds	r24, 0x006A
 678:	90 91 6b 00 	lds	r25, 0x006B
 67c:	8f 5f       	subi	r24, 0xFF	; 255
 67e:	9f 4f       	sbci	r25, 0xFF	; 255
 680:	b1 f7       	brne	.-20     	; 0x66e <main+0x160>
 682:	f8 94       	cli
 684:	64 e0       	ldi	r22, 0x04	; 4
 686:	80 e0       	ldi	r24, 0x00	; 0
 688:	b5 dd       	rcall	.-1174   	; 0x1f4 <set_led>
 68a:	65 e0       	ldi	r22, 0x05	; 5
 68c:	80 e0       	ldi	r24, 0x00	; 0
 68e:	b2 dd       	rcall	.-1180   	; 0x1f4 <set_led>
 690:	96 98       	cbi	0x12, 6	; 18
 692:	c4 9a       	sbi	0x18, 4	; 24
 694:	81 b5       	in	r24, 0x21	; 33
 696:	88 61       	ori	r24, 0x18	; 24
 698:	81 bd       	out	0x21, r24	; 33
 69a:	11 bc       	out	0x21, r1	; 33
 69c:	85 b7       	in	r24, 0x35	; 53
 69e:	80 67       	ori	r24, 0x70	; 112
 6a0:	85 bf       	out	0x35, r24	; 53
 6a2:	78 94       	sei
 6a4:	88 95       	sleep
 6a6:	e3 cf       	rjmp	.-58     	; 0x66e <main+0x160>

000006a8 <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) {
 6a8:	ef 92       	push	r14
 6aa:	ff 92       	push	r15
 6ac:	0f 93       	push	r16
 6ae:	1f 93       	push	r17
 6b0:	cf 93       	push	r28
 6b2:	df 93       	push	r29
 6b4:	d9 2f       	mov	r29, r25
 6b6:	c8 2f       	mov	r28, r24
 6b8:	e6 2e       	mov	r14, r22
 6ba:	f7 2e       	mov	r15, r23
 6bc:	04 2f       	mov	r16, r20
  uint8_t i;

  /* check if there is a write in progress, wait */
  do {
    asm("wdr");
 6be:	a8 95       	wdr
    SPIEE_CS_PORT &= ~_BV(SPIEE_CS);       // pull CS low
 6c0:	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
 6ca:	85 e0       	ldi	r24, 0x05	; 5
 6cc:	5d dd       	rcall	.-1350   	; 0x188 <spi_transfer>
    i = spi_transfer(0);              // read status
 6ce:	80 e0       	ldi	r24, 0x00	; 0
 6d0:	5b dd       	rcall	.-1354   	; 0x188 <spi_transfer>
    
    SPIEE_CS_PORT |= _BV(SPIEE_CS);        // pull CS high
 6d2:	c4 9a       	sbi	0x18, 4	; 24
    
  } while ((i & 0x1) != 0);
 6d4:	80 fd       	sbrc	r24, 0
 6d6:	f3 cf       	rjmp	.-26     	; 0x6be <spieeprom_write+0x16>
	/* set the spi write enable latch */
	
  SPIEE_CS_PORT &= ~_BV(SPIEE_CS);         // pull CS low
 6d8:	c4 98       	cbi	0x18, 4	; 24
	...
  NOP; NOP; NOP; NOP;                      // wait 500 ns, CS setup time
  
  spi_transfer(SPI_EEPROM_WREN);           // send command
 6e2:	86 e0       	ldi	r24, 0x06	; 6
 6e4:	51 dd       	rcall	.-1374   	; 0x188 <spi_transfer>
  
  SPIEE_CS_PORT |= _BV(SPIEE_CS);          // pull CS high
 6e6:	c4 9a       	sbi	0x18, 4	; 24
	...
  NOP; NOP; NOP; NOP;                      // 500ns hold time
  SPIEE_CS_PORT &= ~_BV(SPIEE_CS);         // pull CS low
 6f0:	c4 98       	cbi	0x18, 4	; 24
  
  spi_transfer(SPI_EEPROM_WRITE);          // send command
 6f2:	82 e0       	ldi	r24, 0x02	; 2
 6f4:	49 dd       	rcall	.-1390   	; 0x188 <spi_transfer>
  spi_transfer(addr >> 8);                 // send high addr 
 6f6:	8d 2f       	mov	r24, r29
 6f8:	99 27       	eor	r25, r25
 6fa:	46 dd       	rcall	.-1396   	; 0x188 <spi_transfer>
  spi_transfer(addr & 0xFF);               // send low addr
 6fc:	8c 2f       	mov	r24, r28
 6fe:	44 dd       	rcall	.-1400   	; 0x188 <spi_transfer>

  for (i = 0; i< len; i++)
 700:	10 e0       	ldi	r17, 0x00	; 0
 702:	10 17       	cp	r17, r16
 704:	38 f4       	brcc	.+14     	; 0x714 <spieeprom_write+0x6c>
 706:	df 2d       	mov	r29, r15
 708:	ce 2d       	mov	r28, r14
    spi_transfer(data[i]);                      // send data
 70a:	89 91       	ld	r24, Y+
 70c:	3d dd       	rcall	.-1414   	; 0x188 <spi_transfer>
 70e:	1f 5f       	subi	r17, 0xFF	; 255
 710:	10 17       	cp	r17, r16
 712:	d8 f3       	brcs	.-10     	; 0x70a <spieeprom_write+0x62>
	...

  NOP; NOP; NOP; NOP;                      // 500ns hold time

  SPIEE_CS_PORT |= _BV(SPIEE_CS);          // pull CS high
 71c:	c4 9a       	sbi	0x18, 4	; 24

  return 0;
}
 71e:	80 e0       	ldi	r24, 0x00	; 0
 720:	90 e0       	ldi	r25, 0x00	; 0
 722:	df 91       	pop	r29
 724:	cf 91       	pop	r28
 726:	1f 91       	pop	r17
 728:	0f 91       	pop	r16
 72a:	ff 90       	pop	r15
 72c:	ef 90       	pop	r14
 72e:	08 95       	ret

00000730 <spieeprom_read>:

void spieeprom_read(uint16_t addr, uint8_t *buff, uint8_t len) {
 730:	ff 92       	push	r15
 732:	0f 93       	push	r16
 734:	1f 93       	push	r17
 736:	cf 93       	push	r28
 738:	df 93       	push	r29
 73a:	08 2f       	mov	r16, r24
 73c:	19 2f       	mov	r17, r25
 73e:	d7 2f       	mov	r29, r23
 740:	c6 2f       	mov	r28, r22
 742:	f4 2e       	mov	r15, r20
  uint8_t data, i;

  SPIEE_CS_PORT &= ~_BV(SPIEE_CS); // pull CS low
 744:	c4 98       	cbi	0x18, 4	; 24
	...
  NOP; NOP; NOP; NOP;

  spi_transfer(SPI_EEPROM_READ);           // send READ command
 74e:	83 e0       	ldi	r24, 0x03	; 3
 750:	1b dd       	rcall	.-1482   	; 0x188 <spi_transfer>
  spi_transfer(addr >> 8);                 // send high addr 
 752:	81 2f       	mov	r24, r17
 754:	99 27       	eor	r25, r25
 756:	18 dd       	rcall	.-1488   	; 0x188 <spi_transfer>
  spi_transfer(addr & 0xFF);               // send low addr
 758:	80 2f       	mov	r24, r16
 75a:	16 dd       	rcall	.-1492   	; 0x188 <spi_transfer>

  for (i=0; i<len; i++)
 75c:	00 e0       	ldi	r16, 0x00	; 0
 75e:	0f 15       	cp	r16, r15
 760:	28 f4       	brcc	.+10     	; 0x76c <spieeprom_read+0x3c>
    buff[i] = spi_transfer(0);
 762:	80 e0       	ldi	r24, 0x00	; 0
 764:	11 dd       	rcall	.-1502   	; 0x188 <spi_transfer>
 766:	89 93       	st	Y+, r24
 768:	0f 5f       	subi	r16, 0xFF	; 255
 76a:	f9 cf       	rjmp	.-14     	; 0x75e <spieeprom_read+0x2e>

  SPIEE_CS_PORT |= _BV(SPIEE_CS);      // pull CS high
 76c:	c4 9a       	sbi	0x18, 4	; 24
 76e:	df 91       	pop	r29
 770:	cf 91       	pop	r28
 772:	1f 91       	pop	r17
 774:	0f 91       	pop	r16
 776:	ff 90       	pop	r15
 778:	08 95       	ret

0000077a <spieeprom_read_into_leds>:
}


void spieeprom_read_into_leds(uint16_t addr, uint8_t side) {
 77a:	ff 92       	push	r15
 77c:	0f 93       	push	r16
 77e:	1f 93       	push	r17
 780:	08 2f       	mov	r16, r24
 782:	19 2f       	mov	r17, r25
 784:	f6 2e       	mov	r15, r22
  uint8_t x;
  
  SPIEE_CS_PORT &= ~_BV(SPIEE_CS); // pull CS low
 786:	c4 98       	cbi	0x18, 4	; 24
	...
  NOP; NOP; NOP; NOP;

  spi_transfer(SPI_EEPROM_READ);           // send READ command
 790:	83 e0       	ldi	r24, 0x03	; 3
 792:	fa dc       	rcall	.-1548   	; 0x188 <spi_transfer>
  spi_transfer(addr >> 8);                 // send high addr 
 794:	81 2f       	mov	r24, r17
 796:	99 27       	eor	r25, r25
 798:	f7 dc       	rcall	.-1554   	; 0x188 <spi_transfer>
  spi_transfer(addr & 0xFF);               // send low addr
 79a:	80 2f       	mov	r24, r16
 79c:	f5 dc       	rcall	.-1558   	; 0x188 <spi_transfer>

  x = spi_transfer(0);
 79e:	80 e0       	ldi	r24, 0x00	; 0
 7a0:	f3 dc       	rcall	.-1562   	; 0x188 <spi_transfer>
  x = spi_transfer(x);
 7a2:	f2 dc       	rcall	.-1564   	; 0x188 <spi_transfer>
  x = spi_transfer(x);
 7a4:	f1 dc       	rcall	.-1566   	; 0x188 <spi_transfer>
  x = spi_transfer(x);
 7a6:	f0 dc       	rcall	.-1568   	; 0x188 <spi_transfer>
  spi_transfer(x);
 7a8:	ef dc       	rcall	.-1570   	; 0x188 <spi_transfer>

  SPIEE_CS_PORT |= _BV(SPIEE_CS);      // pull CS high
 7aa:	c4 9a       	sbi	0x18, 4	; 24

  
  LATCH_SELECT_PORT |= _BV(side);
 7ac:	21 e0       	ldi	r18, 0x01	; 1
 7ae:	30 e0       	ldi	r19, 0x00	; 0
 7b0:	02 c0       	rjmp	.+4      	; 0x7b6 <spieeprom_read_into_leds+0x3c>
 7b2:	22 0f       	add	r18, r18
 7b4:	33 1f       	adc	r19, r19
 7b6:	fa 94       	dec	r15
 7b8:	e2 f7       	brpl	.-8      	; 0x7b2 <spieeprom_read_into_leds+0x38>
 7ba:	82 b3       	in	r24, 0x12	; 18
 7bc:	82 2b       	or	r24, r18
 7be:	82 bb       	out	0x12, r24	; 18
	...
  NOP; NOP; NOP; NOP;
  LATCH_SELECT_PORT &= ~_BV(side);
 7c8:	92 2f       	mov	r25, r18
 7ca:	90 95       	com	r25
 7cc:	82 b3       	in	r24, 0x12	; 18
 7ce:	89 23       	and	r24, r25
 7d0:	82 bb       	out	0x12, r24	; 18
 7d2:	1f 91       	pop	r17
 7d4:	0f 91       	pop	r16
 7d6:	ff 90       	pop	r15
 7d8:	08 95       	ret

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -