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

📄 spokepov.lss

📁 旋转16个LED灯控制程序
💻 LSS
📖 第 1 页 / 共 3 页
字号:
      sei();
     
      // Go into sleep mode
      
      asm("sleep");
    }
  }
  
  // *** PORTD |= 0x2;
}

// Move data over the serial link (to the 1K/4K EEPROM or the
// LED shift registers, or both!)  This is black magic to me!

uint8_t spi_transfer(uint8_t c) {

  USIDR = c;
 174:	8f b9       	out	0x0f, r24	; 15
  USISR = _BV(USIOIF);
 176:	80 e4       	ldi	r24, 0x40	; 64
 178:	8e b9       	out	0x0e, r24	; 14

  while (! (USISR & _BV(USIOIF))) {

    USICR = _BV(USIWM0) | _BV(USICS1) | _BV(USICLK) | _BV(USITC);
 17a:	76 99       	sbic	0x0e, 6	; 14
 17c:	04 c0       	rjmp	.+8      	; 0x186 <spi_transfer+0x12>
 17e:	8b e1       	ldi	r24, 0x1B	; 27
 180:	8d b9       	out	0x0d, r24	; 13
 182:	76 9b       	sbis	0x0e, 6	; 14
 184:	fd cf       	rjmp	.-6      	; 0x180 <spi_transfer+0xc>
    //NOP;  // slow down so that the eeprom isnt overwhelmed

  }

  return USIDR;
 186:	8f b1       	in	r24, 0x0f	; 15

}
 188:	99 27       	eor	r25, r25
 18a:	08 95       	ret

0000018c <clock_leds>:
 18c:	80 91 8f 00 	lds	r24, 0x008F
 190:	f1 df       	rcall	.-30     	; 0x174 <spi_transfer>
 192:	80 91 90 00 	lds	r24, 0x0090
 196:	ee df       	rcall	.-36     	; 0x174 <spi_transfer>
 198:	80 91 8d 00 	lds	r24, 0x008D
 19c:	eb df       	rcall	.-42     	; 0x174 <spi_transfer>
 19e:	80 91 8e 00 	lds	r24, 0x008E
 1a2:	e8 df       	rcall	.-48     	; 0x174 <spi_transfer>
 1a4:	94 9a       	sbi	0x12, 4	; 18
	...
 1ae:	94 98       	cbi	0x12, 4	; 18
 1b0:	08 95       	ret

000001b2 <set_led>:
 1b2:	28 2f       	mov	r18, r24
 1b4:	8f ef       	ldi	r24, 0xFF	; 255
 1b6:	80 93 90 00 	sts	0x0090, r24
 1ba:	80 93 8f 00 	sts	0x008F, r24
 1be:	80 93 8e 00 	sts	0x008E, r24
 1c2:	80 93 8d 00 	sts	0x008D, r24
 1c6:	82 2f       	mov	r24, r18
 1c8:	86 95       	lsr	r24
 1ca:	86 95       	lsr	r24
 1cc:	86 95       	lsr	r24
 1ce:	e8 2f       	mov	r30, r24
 1d0:	ff 27       	eor	r31, r31
 1d2:	e3 57       	subi	r30, 0x73	; 115
 1d4:	ff 4f       	sbci	r31, 0xFF	; 255
 1d6:	27 70       	andi	r18, 0x07	; 7
 1d8:	81 e0       	ldi	r24, 0x01	; 1
 1da:	90 e0       	ldi	r25, 0x00	; 0
 1dc:	02 c0       	rjmp	.+4      	; 0x1e2 <set_led+0x30>
 1de:	88 0f       	add	r24, r24
 1e0:	99 1f       	adc	r25, r25
 1e2:	2a 95       	dec	r18
 1e4:	e2 f7       	brpl	.-8      	; 0x1de <set_led+0x2c>
 1e6:	80 95       	com	r24
 1e8:	80 83       	st	Z, r24
 1ea:	d0 df       	rcall	.-96     	; 0x18c <clock_leds>
 1ec:	08 95       	ret

000001ee <__vector_2>:
 1ee:	1f 92       	push	r1
 1f0:	0f 92       	push	r0
 1f2:	0f b6       	in	r0, 0x3f	; 63
 1f4:	0f 92       	push	r0
 1f6:	11 24       	eor	r1, r1
 1f8:	2f 93       	push	r18
 1fa:	3f 93       	push	r19
 1fc:	4f 93       	push	r20
 1fe:	5f 93       	push	r21
 200:	6f 93       	push	r22
 202:	7f 93       	push	r23
 204:	8f 93       	push	r24
 206:	9f 93       	push	r25
 208:	af 93       	push	r26
 20a:	bf 93       	push	r27
 20c:	ef 93       	push	r30
 20e:	ff 93       	push	r31
 210:	80 91 8a 00 	lds	r24, 0x008A
 214:	85 30       	cpi	r24, 0x05	; 5
 216:	b0 f1       	brcs	.+108    	; 0x284 <__vector_2+0x96>
 218:	81 e0       	ldi	r24, 0x01	; 1
 21a:	80 93 89 00 	sts	0x0089, r24
 21e:	1d bc       	out	0x2d, r1	; 45
 220:	1c bc       	out	0x2c, r1	; 44
 222:	80 91 8b 00 	lds	r24, 0x008B
 226:	90 91 8c 00 	lds	r25, 0x008C
 22a:	8f 3f       	cpi	r24, 0xFF	; 255
 22c:	91 05       	cpc	r25, r1
 22e:	08 f5       	brcc	.+66     	; 0x272 <__vector_2+0x84>
 230:	80 91 8b 00 	lds	r24, 0x008B
 234:	90 91 8c 00 	lds	r25, 0x008C
 238:	04 97       	sbiw	r24, 0x04	; 4
 23a:	d8 f0       	brcs	.+54     	; 0x272 <__vector_2+0x84>
 23c:	80 91 8b 00 	lds	r24, 0x008B
 240:	90 91 8c 00 	lds	r25, 0x008C
 244:	98 2f       	mov	r25, r24
 246:	88 27       	eor	r24, r24
 248:	22 b7       	in	r18, 0x32	; 50
 24a:	33 27       	eor	r19, r19
 24c:	82 2b       	or	r24, r18
 24e:	93 2b       	or	r25, r19
 250:	9b bd       	out	0x2b, r25	; 43
 252:	8a bd       	out	0x2a, r24	; 42
 254:	12 be       	out	0x32, r1	; 50
 256:	8f e0       	ldi	r24, 0x0F	; 15
 258:	80 93 84 00 	sts	0x0084, r24
 25c:	80 93 83 00 	sts	0x0083, r24
 260:	10 92 82 00 	sts	0x0082, r1
 264:	8e b5       	in	r24, 0x2e	; 46
 266:	81 60       	ori	r24, 0x01	; 1
 268:	8e bd       	out	0x2e, r24	; 46
 26a:	89 b7       	in	r24, 0x39	; 57
 26c:	80 64       	ori	r24, 0x40	; 64
 26e:	89 bf       	out	0x39, r24	; 57
 270:	05 c0       	rjmp	.+10     	; 0x27c <__vector_2+0x8e>
 272:	82 e0       	ldi	r24, 0x02	; 2
 274:	9e df       	rcall	.-196    	; 0x1b2 <set_led>
 276:	8e b5       	in	r24, 0x2e	; 46
 278:	8e 7f       	andi	r24, 0xFE	; 254
 27a:	8e bd       	out	0x2e, r24	; 46
 27c:	10 92 8c 00 	sts	0x008C, r1
 280:	10 92 8b 00 	sts	0x008B, r1
 284:	10 92 8a 00 	sts	0x008A, r1
 288:	ff 91       	pop	r31
 28a:	ef 91       	pop	r30
 28c:	bf 91       	pop	r27
 28e:	af 91       	pop	r26
 290:	9f 91       	pop	r25
 292:	8f 91       	pop	r24
 294:	7f 91       	pop	r23
 296:	6f 91       	pop	r22
 298:	5f 91       	pop	r21
 29a:	4f 91       	pop	r20
 29c:	3f 91       	pop	r19
 29e:	2f 91       	pop	r18
 2a0:	0f 90       	pop	r0
 2a2:	0f be       	out	0x3f, r0	; 63
 2a4:	0f 90       	pop	r0
 2a6:	1f 90       	pop	r1
 2a8:	18 95       	reti

000002aa <__vector_4>:
 2aa:	1f 92       	push	r1
 2ac:	0f 92       	push	r0
 2ae:	0f b6       	in	r0, 0x3f	; 63
 2b0:	0f 92       	push	r0
 2b2:	11 24       	eor	r1, r1
 2b4:	ef 92       	push	r14
 2b6:	ff 92       	push	r15
 2b8:	0f 93       	push	r16
 2ba:	1f 93       	push	r17
 2bc:	2f 93       	push	r18
 2be:	3f 93       	push	r19
 2c0:	4f 93       	push	r20
 2c2:	5f 93       	push	r21
 2c4:	6f 93       	push	r22
 2c6:	7f 93       	push	r23
 2c8:	8f 93       	push	r24
 2ca:	9f 93       	push	r25
 2cc:	af 93       	push	r26
 2ce:	bf 93       	push	r27
 2d0:	cf 93       	push	r28
 2d2:	df 93       	push	r29
 2d4:	ef 93       	push	r30
 2d6:	ff 93       	push	r31
 2d8:	78 94       	sei
 2da:	00 91 87 00 	lds	r16, 0x0087
 2de:	10 91 88 00 	lds	r17, 0x0088
 2e2:	c0 91 85 00 	lds	r28, 0x0085
 2e6:	d0 91 86 00 	lds	r29, 0x0086
 2ea:	e0 90 84 00 	lds	r14, 0x0084
 2ee:	f0 90 83 00 	lds	r15, 0x0083
 2f2:	80 91 8b 00 	lds	r24, 0x008B
 2f6:	90 91 8c 00 	lds	r25, 0x008C
 2fa:	82 56       	subi	r24, 0x62	; 98
 2fc:	92 40       	sbci	r25, 0x02	; 2
 2fe:	08 f0       	brcs	.+2      	; 0x302 <__vector_4+0x58>
 300:	64 c0       	rjmp	.+200    	; 0x3ca <__vector_4+0x120>
 302:	f3 94       	inc	r15
 304:	80 e1       	ldi	r24, 0x10	; 16
 306:	f8 16       	cp	r15, r24
 308:	c9 f5       	brne	.+114    	; 0x37c <__vector_4+0xd2>
 30a:	ff 24       	eor	r15, r15
 30c:	8e 2d       	mov	r24, r14
 30e:	99 27       	eor	r25, r25
 310:	01 96       	adiw	r24, 0x01	; 1
 312:	28 2f       	mov	r18, r24
 314:	39 2f       	mov	r19, r25
 316:	80 7f       	andi	r24, 0xF0	; 240
 318:	91 70       	andi	r25, 0x01	; 1
 31a:	e2 2e       	mov	r14, r18
 31c:	e8 1a       	sub	r14, r24
 31e:	ae 2d       	mov	r26, r14
 320:	bb 27       	eor	r27, r27
 322:	fb 2f       	mov	r31, r27
 324:	ea 2f       	mov	r30, r26
 326:	ef 58       	subi	r30, 0x8F	; 143
 328:	ff 4f       	sbci	r31, 0xFF	; 255
 32a:	e0 81       	ld	r30, Z
 32c:	e0 52       	subi	r30, 0x20	; 32
 32e:	8e 2f       	mov	r24, r30
 330:	86 95       	lsr	r24
 332:	08 2f       	mov	r16, r24
 334:	11 27       	eor	r17, r17
 336:	66 e0       	ldi	r22, 0x06	; 6
 338:	00 0f       	add	r16, r16
 33a:	11 1f       	adc	r17, r17
 33c:	6a 95       	dec	r22
 33e:	e1 f7       	brne	.-8      	; 0x338 <__vector_4+0x8e>
 340:	8e 2f       	mov	r24, r30
 342:	99 27       	eor	r25, r25
 344:	81 70       	andi	r24, 0x01	; 1
 346:	90 70       	andi	r25, 0x00	; 0
 348:	88 0f       	add	r24, r24
 34a:	99 1f       	adc	r25, r25
 34c:	08 2b       	or	r16, r24
 34e:	19 2b       	or	r17, r25
 350:	a0 5a       	subi	r26, 0xA0	; 160
 352:	bf 4f       	sbci	r27, 0xFF	; 255
 354:	ec 91       	ld	r30, X
 356:	e0 52       	subi	r30, 0x20	; 32
 358:	8e 2f       	mov	r24, r30
 35a:	86 95       	lsr	r24
 35c:	c8 2f       	mov	r28, r24
 35e:	dd 27       	eor	r29, r29
 360:	46 e0       	ldi	r20, 0x06	; 6
 362:	cc 0f       	add	r28, r28
 364:	dd 1f       	adc	r29, r29
 366:	4a 95       	dec	r20
 368:	e1 f7       	brne	.-8      	; 0x362 <__vector_4+0xb8>
 36a:	8e 2f       	mov	r24, r30
 36c:	99 27       	eor	r25, r25
 36e:	81 70       	andi	r24, 0x01	; 1
 370:	90 70       	andi	r25, 0x00	; 0
 372:	88 0f       	add	r24, r24
 374:	99 1f       	adc	r25, r25
 376:	c8 2b       	or	r28, r24
 378:	d9 2b       	or	r29, r25
 37a:	03 c0       	rjmp	.+6      	; 0x382 <__vector_4+0xd8>
 37c:	0c 5f       	subi	r16, 0xFC	; 252
 37e:	1f 4f       	sbci	r17, 0xFF	; 255
 380:	24 96       	adiw	r28, 0x04	; 4
 382:	42 e0       	ldi	r20, 0x02	; 2
 384:	6f e8       	ldi	r22, 0x8F	; 143
 386:	70 e0       	ldi	r23, 0x00	; 0
 388:	91 2f       	mov	r25, r17
 38a:	80 2f       	mov	r24, r16
 38c:	87 d0       	rcall	.+270    	; 0x49c <spieeprom_read>
 38e:	42 e0       	ldi	r20, 0x02	; 2
 390:	6d e8       	ldi	r22, 0x8D	; 141
 392:	70 e0       	ldi	r23, 0x00	; 0
 394:	8c 2f       	mov	r24, r28
 396:	9d 2f       	mov	r25, r29
 398:	81 d0       	rcall	.+258    	; 0x49c <spieeprom_read>
 39a:	f8 de       	rcall	.-528    	; 0x18c <clock_leds>
 39c:	f8 94       	cli
 39e:	80 91 82 00 	lds	r24, 0x0082
 3a2:	88 23       	and	r24, r24
 3a4:	69 f0       	breq	.+26     	; 0x3c0 <__vector_4+0x116>
 3a6:	10 93 88 00 	sts	0x0088, r17
 3aa:	00 93 87 00 	sts	0x0087, r16
 3ae:	d0 93 86 00 	sts	0x0086, r29
 3b2:	c0 93 85 00 	sts	0x0085, r28
 3b6:	e0 92 84 00 	sts	0x0084, r14
 3ba:	f0 92 83 00 	sts	0x0083, r15
 3be:	03 c0       	rjmp	.+6      	; 0x3c6 <__vector_4+0x11c>
 3c0:	81 e0       	ldi	r24, 0x01	; 1
 3c2:	80 93 82 00 	sts	0x0082, r24
 3c6:	78 94       	sei
 3c8:	07 c0       	rjmp	.+14     	; 0x3d8 <__vector_4+0x12e>
 3ca:	f8 94       	cli
 3cc:	8e b5       	in	r24, 0x2e	; 46
 3ce:	88 7f       	andi	r24, 0xF8	; 248
 3d0:	8e bd       	out	0x2e, r24	; 46
 3d2:	78 94       	sei
 3d4:	82 e0       	ldi	r24, 0x02	; 2
 3d6:	ed de       	rcall	.-550    	; 0x1b2 <set_led>
 3d8:	ff 91       	pop	r31
 3da:	ef 91       	pop	r30
 3dc:	df 91       	pop	r29
 3de:	cf 91       	pop	r28
 3e0:	bf 91       	pop	r27
 3e2:	af 91       	pop	r26
 3e4:	9f 91       	pop	r25
 3e6:	8f 91       	pop	r24
 3e8:	7f 91       	pop	r23
 3ea:	6f 91       	pop	r22
 3ec:	5f 91       	pop	r21
 3ee:	4f 91       	pop	r20
 3f0:	3f 91       	pop	r19
 3f2:	2f 91       	pop	r18
 3f4:	1f 91       	pop	r17
 3f6:	0f 91       	pop	r16
 3f8:	ff 90       	pop	r15
 3fa:	ef 90       	pop	r14
 3fc:	0f 90       	pop	r0
 3fe:	0f be       	out	0x3f, r0	; 63
 400:	0f 90       	pop	r0
 402:	1f 90       	pop	r1
 404:	18 95       	reti

00000406 <set_all>:
 406:	80 93 90 00 	sts	0x0090, r24
 40a:	80 93 8f 00 	sts	0x008F, r24
 40e:	80 93 8e 00 	sts	0x008E, r24
 412:	80 93 8d 00 	sts	0x008D, r24
 416:	ba de       	rcall	.-652    	; 0x18c <clock_leds>
 418:	08 95       	ret

0000041a <test_leds>:
 41a:	cf 93       	push	r28
 41c:	c0 e0       	ldi	r28, 0x00	; 0
 41e:	8c 2f       	mov	r24, r28
 420:	c8 de       	rcall	.-624    	; 0x1b2 <set_led>
 422:	8a e0       	ldi	r24, 0x0A	; 10
 424:	44 de       	rcall	.-888    	; 0xae <delay_ms>
 426:	cf 5f       	subi	r28, 0xFF	; 255
 428:	c1 32       	cpi	r28, 0x21	; 33
 42a:	c8 f3       	brcs	.-14     	; 0x41e <test_leds+0x4>
 42c:	8a ea       	ldi	r24, 0xAA	; 170
 42e:	eb df       	rcall	.-42     	; 0x406 <set_all>
 430:	82 e3       	ldi	r24, 0x32	; 50
 432:	3d de       	rcall	.-902    	; 0xae <delay_ms>
 434:	85 e5       	ldi	r24, 0x55	; 85
 436:	e7 df       	rcall	.-50     	; 0x406 <set_all>
 438:	85 e5       	ldi	r24, 0x55	; 85
 43a:	e5 df       	rcall	.-54     	; 0x406 <set_all>
 43c:	82 e3       	ldi	r24, 0x32	; 50
 43e:	37 de       	rcall	.-914    	; 0xae <delay_ms>
 440:	80 e0       	ldi	r24, 0x00	; 0
 442:	e1 df       	rcall	.-62     	; 0x406 <set_all>
 444:	8f ef       	ldi	r24, 0xFF	; 255
 446:	33 de       	rcall	.-922    	; 0xae <delay_ms>
 448:	8f ef       	ldi	r24, 0xFF	; 255
 44a:	31 de       	rcall	.-926    	; 0xae <delay_ms>
 44c:	cf 91       	pop	r28
 44e:	08 95       	ret

00000450 <main>:
 450:	cf ed       	ldi	r28, 0xDF	; 223
 452:	d0 e0       	ldi	r29, 0x00	; 0
 454:	de bf       	out	0x3e, r29	; 62
 456:	cd bf       	out	0x3d, r28	; 61
 458:	c4 b7       	in	r28, 0x34	; 52
 45a:	14 be       	out	0x34, r1	; 52
 45c:	8e e0       	ldi	r24, 0x0E	; 14
 45e:	81 bd       	out	0x21, r24	; 33
 460:	6e de       	rcall	.-804    	; 0x13e <ioinit>
 462:	c0 fd       	sbrc	r28, 0
 464:	da df       	rcall	.-76     	; 0x41a <test_leds>
 466:	8c 2f       	mov	r24, r28
 468:	8e 5f       	subi	r24, 0xFE	; 254
 46a:	a3 de       	rcall	.-698    	; 0x1b2 <set_led>
 46c:	78 94       	sei
 46e:	a8 95       	wdr
 470:	80 91 8b 00 	lds	r24, 0x008B
 474:	90 91 8c 00 	lds	r25, 0x008C
 478:	8f 5f       	subi	r24, 0xFF	; 255
 47a:	9f 4f       	sbci	r25, 0xFF	; 255
 47c:	c1 f7       	brne	.-16     	; 0x46e <main+0x1e>
 47e:	f8 94       	cli
 480:	80 e0       	ldi	r24, 0x00	; 0
 482:	97 de       	rcall	.-722    	; 0x1b2 <set_led>
 484:	96 98       	cbi	0x12, 6	; 18
 486:	c4 9a       	sbi	0x18, 4	; 24
 488:	81 b5       	in	r24, 0x21	; 33
 48a:	88 61       	ori	r24, 0x18	; 24
 48c:	81 bd       	out	0x21, r24	; 33
 48e:	11 bc       	out	0x21, r1	; 33
 490:	85 b7       	in	r24, 0x35	; 53
 492:	80 67       	ori	r24, 0x70	; 112
 494:	85 bf       	out	0x35, r24	; 53
 496:	78 94       	sei
 498:	88 95       	sleep
 49a:	e9 cf       	rjmp	.-46     	; 0x46e <main+0x1e>

0000049c <spieeprom_read>:
#include <avr/io.h>
#include "eeprom.h"
#include "main.h"

void spieeprom_read(uint16_t addr, uint8_t *buff, uint8_t len) {
 49c:	ff 92       	push	r15
 49e:	0f 93       	push	r16
 4a0:	1f 93       	push	r17
 4a2:	cf 93       	push	r28
 4a4:	df 93       	push	r29
 4a6:	08 2f       	mov	r16, r24
 4a8:	19 2f       	mov	r17, r25
 4aa:	d7 2f       	mov	r29, r23
 4ac:	c6 2f       	mov	r28, r22
 4ae:	f4 2e       	mov	r15, r20
  uint8_t data, i;

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

  spi_transfer(SPI_EEPROM_READ);           // send READ command
 4ba:	83 e0       	ldi	r24, 0x03	; 3
 4bc:	5b de       	rcall	.-842    	; 0x174 <spi_transfer>
  spi_transfer(addr >> 8);                 // send high addr 
 4be:	81 2f       	mov	r24, r17
 4c0:	99 27       	eor	r25, r25
 4c2:	58 de       	rcall	.-848    	; 0x174 <spi_transfer>
  spi_transfer(addr & 0xFF);               // send low addr
 4c4:	80 2f       	mov	r24, r16
 4c6:	56 de       	rcall	.-852    	; 0x174 <spi_transfer>

  for (i=0; i<len; i++)
 4c8:	00 e0       	ldi	r16, 0x00	; 0
 4ca:	0f 15       	cp	r16, r15
 4cc:	28 f4       	brcc	.+10     	; 0x4d8 <spieeprom_read+0x3c>
    buff[i] = spi_transfer(0);
 4ce:	80 e0       	ldi	r24, 0x00	; 0
 4d0:	51 de       	rcall	.-862    	; 0x174 <spi_transfer>
 4d2:	89 93       	st	Y+, r24
 4d4:	0f 5f       	subi	r16, 0xFF	; 255
 4d6:	f9 cf       	rjmp	.-14     	; 0x4ca <spieeprom_read+0x2e>

  SPIEE_CS_PORT |= _BV(SPIEE_CS);      // pull CS high
 4d8:	c4 9a       	sbi	0x18, 4	; 24
 4da:	df 91       	pop	r29
 4dc:	cf 91       	pop	r28
 4de:	1f 91       	pop	r17
 4e0:	0f 91       	pop	r16
 4e2:	ff 90       	pop	r15
 4e4:	08 95       	ret

⌨️ 快捷键说明

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