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

📄 spokepov.lss

📁 旋转16个LED灯控制程序
💻 LSS
📖 第 1 页 / 共 5 页
字号:
 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 + -