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

📄 motor_control.lss

📁 利用avr c编程的综合程序
💻 LSS
📖 第 1 页 / 共 5 页
字号:
		motor(0x1a, 0, 0);
	}
	else
		motor(0x1a, 0, 0);
     40e:	40 e0       	ldi	r20, 0x00	; 0
     410:	50 e0       	ldi	r21, 0x00	; 0
     412:	60 e0       	ldi	r22, 0x00	; 0
     414:	70 e0       	ldi	r23, 0x00	; 0
     416:	8a e1       	ldi	r24, 0x1A	; 26
     418:	0e 94 a5 03 	call	0x74a	; 0x74a <motor>
	
	motor(0x1a, 0, 0);
     41c:	40 e0       	ldi	r20, 0x00	; 0
     41e:	50 e0       	ldi	r21, 0x00	; 0
     420:	60 e0       	ldi	r22, 0x00	; 0
     422:	70 e0       	ldi	r23, 0x00	; 0
     424:	8a e1       	ldi	r24, 0x1A	; 26
     426:	0e 94 a5 03 	call	0x74a	; 0x74a <motor>
	
	ledDispInit();
     42a:	0e 94 19 07 	call	0xe32	; 0xe32 <ledDispInit>
     42e:	ff cf       	rjmp	.-2      	; 0x42e <main+0x1fa>

00000430 <TWI_initialize>:
volatile struct TWI_slave_data *TWI_slave_send = 0;
volatile struct TWI_slave_data *TWI_slave_receive = 0;

void TWI_initialize()
{
  TWDR = 0xFF;
     430:	8f ef       	ldi	r24, 0xFF	; 255
     432:	83 b9       	out	0x03, r24	; 3
  TWSR = 0;
     434:	11 b8       	out	0x01, r1	; 1
  TWCR = (1 << TWEN) |  (1 << TWIE) | (0 << TWINT) |
     436:	85 e0       	ldi	r24, 0x05	; 5
     438:	86 bf       	out	0x36, r24	; 54
    (0 << TWEA) | (0 << TWSTA) | (0 << TWSTO) | (0 << TWWC);
  sei ();
     43a:	78 94       	sei
}
     43c:	08 95       	ret

0000043e <TWI_master_initialize>:

void TWI_master_initialize (unsigned scl_frequency)
{
  TWBR = TWI_clock_frequency / (2 * scl_frequency) - 8;
     43e:	9c 01       	movw	r18, r24
     440:	22 0f       	add	r18, r18
     442:	33 1f       	adc	r19, r19
     444:	40 e0       	ldi	r20, 0x00	; 0
     446:	50 e0       	ldi	r21, 0x00	; 0
     448:	60 e0       	ldi	r22, 0x00	; 0
     44a:	74 e2       	ldi	r23, 0x24	; 36
     44c:	84 ef       	ldi	r24, 0xF4	; 244
     44e:	90 e0       	ldi	r25, 0x00	; 0
     450:	0e 94 74 09 	call	0x12e8	; 0x12e8 <__divmodsi4>
     454:	28 50       	subi	r18, 0x08	; 8
     456:	20 b9       	out	0x00, r18	; 0
} 
     458:	08 95       	ret

0000045a <TWI_slave_initialize>:
void
TWI_slave_initialize (unsigned char own_address,
		      struct TWI_slave_data *send,
		      struct TWI_slave_data *receive)
{
  TWAR = own_address;
     45a:	82 b9       	out	0x02, r24	; 2
  TWI_slave_send = send;
     45c:	70 93 72 00 	sts	0x0072, r23
     460:	60 93 71 00 	sts	0x0071, r22
  TWI_slave_receive = receive;
     464:	50 93 74 00 	sts	0x0074, r21
     468:	40 93 73 00 	sts	0x0073, r20
  TWCR |= (1 << TWEA) | (0 << TWIE);
     46c:	86 b7       	in	r24, 0x36	; 54
     46e:	80 64       	ori	r24, 0x40	; 64
     470:	86 bf       	out	0x36, r24	; 54
} 
     472:	08 95       	ret

00000474 <TWI_master>:

void TWI_master (struct TWI_master_data *data)
{
     474:	9c 01       	movw	r18, r24
  if (TWI_task_first == 0)
     476:	80 91 6b 00 	lds	r24, 0x006B
     47a:	90 91 6c 00 	lds	r25, 0x006C
     47e:	89 2b       	or	r24, r25
     480:	81 f4       	brne	.+32     	; 0x4a2 <TWI_master+0x2e>
  {
    TWI_task_first = TWI_task_last = TWI_task_current =
     482:	20 93 6f 00 	sts	0x006F, r18
     486:	30 93 70 00 	sts	0x0070, r19
     48a:	20 93 6d 00 	sts	0x006D, r18
     48e:	30 93 6e 00 	sts	0x006E, r19
     492:	20 93 6b 00 	sts	0x006B, r18
     496:	30 93 6c 00 	sts	0x006C, r19
      data;
    TWCR |= (1 << TWSTA) | (1 << TWINT);
     49a:	86 b7       	in	r24, 0x36	; 54
     49c:	80 6a       	ori	r24, 0xA0	; 160
     49e:	86 bf       	out	0x36, r24	; 54
     4a0:	08 95       	ret
  }
  else
  {
    TWI_task_last->next = data;
     4a2:	e0 91 6d 00 	lds	r30, 0x006D
     4a6:	f0 91 6e 00 	lds	r31, 0x006E
     4aa:	36 83       	std	Z+6, r19	; 0x06
     4ac:	25 83       	std	Z+5, r18	; 0x05
    TWI_task_last = data;
     4ae:	30 93 6e 00 	sts	0x006E, r19
     4b2:	20 93 6d 00 	sts	0x006D, r18
     4b6:	08 95       	ret

000004b8 <__vector_17>:
/* TWI Miscellaneous status codes */
#define TWI_NO_STATE               0xF8
#define TWI_BUS_ERROR              0x00

ISR (TWI_vect)
{
     4b8:	1f 92       	push	r1
     4ba:	0f 92       	push	r0
     4bc:	0f b6       	in	r0, 0x3f	; 63
     4be:	0f 92       	push	r0
     4c0:	11 24       	eor	r1, r1
     4c2:	2f 93       	push	r18
     4c4:	3f 93       	push	r19
     4c6:	8f 93       	push	r24
     4c8:	9f 93       	push	r25
     4ca:	ef 93       	push	r30
     4cc:	ff 93       	push	r31

  static unsigned char string_index;
  switch (TWSR)
     4ce:	81 b1       	in	r24, 0x01	; 1
     4d0:	80 35       	cpi	r24, 0x50	; 80
     4d2:	09 f4       	brne	.+2      	; 0x4d6 <__vector_17+0x1e>
     4d4:	61 c0       	rjmp	.+194    	; 0x598 <__vector_17+0xe0>
     4d6:	81 35       	cpi	r24, 0x51	; 81
     4d8:	20 f5       	brcc	.+72     	; 0x522 <__vector_17+0x6a>
     4da:	88 32       	cpi	r24, 0x28	; 40
     4dc:	09 f4       	brne	.+2      	; 0x4e0 <__vector_17+0x28>
     4de:	48 c0       	rjmp	.+144    	; 0x570 <__vector_17+0xb8>
     4e0:	89 32       	cpi	r24, 0x29	; 41
     4e2:	78 f4       	brcc	.+30     	; 0x502 <__vector_17+0x4a>
     4e4:	80 31       	cpi	r24, 0x10	; 16
     4e6:	09 f4       	brne	.+2      	; 0x4ea <__vector_17+0x32>
     4e8:	41 c0       	rjmp	.+130    	; 0x56c <__vector_17+0xb4>
     4ea:	81 31       	cpi	r24, 0x11	; 17
     4ec:	20 f4       	brcc	.+8      	; 0x4f6 <__vector_17+0x3e>
     4ee:	88 30       	cpi	r24, 0x08	; 8
     4f0:	09 f0       	breq	.+2      	; 0x4f4 <__vector_17+0x3c>
     4f2:	1e c1       	rjmp	.+572    	; 0x730 <__vector_17+0x278>
     4f4:	3b c0       	rjmp	.+118    	; 0x56c <__vector_17+0xb4>
     4f6:	88 31       	cpi	r24, 0x18	; 24
     4f8:	d9 f1       	breq	.+118    	; 0x570 <__vector_17+0xb8>
     4fa:	80 32       	cpi	r24, 0x20	; 32
     4fc:	09 f0       	breq	.+2      	; 0x500 <__vector_17+0x48>
     4fe:	18 c1       	rjmp	.+560    	; 0x730 <__vector_17+0x278>
     500:	a1 c0       	rjmp	.+322    	; 0x644 <__vector_17+0x18c>
     502:	88 33       	cpi	r24, 0x38	; 56
     504:	09 f4       	brne	.+2      	; 0x508 <__vector_17+0x50>
     506:	12 c1       	rjmp	.+548    	; 0x72c <__vector_17+0x274>
     508:	89 33       	cpi	r24, 0x39	; 57
     50a:	20 f4       	brcc	.+8      	; 0x514 <__vector_17+0x5c>
     50c:	80 33       	cpi	r24, 0x30	; 48
     50e:	09 f0       	breq	.+2      	; 0x512 <__vector_17+0x5a>
     510:	0f c1       	rjmp	.+542    	; 0x730 <__vector_17+0x278>
     512:	98 c0       	rjmp	.+304    	; 0x644 <__vector_17+0x18c>
     514:	80 34       	cpi	r24, 0x40	; 64
     516:	09 f4       	brne	.+2      	; 0x51a <__vector_17+0x62>
     518:	4f c0       	rjmp	.+158    	; 0x5b8 <__vector_17+0x100>
     51a:	88 34       	cpi	r24, 0x48	; 72
     51c:	09 f0       	breq	.+2      	; 0x520 <__vector_17+0x68>
     51e:	08 c1       	rjmp	.+528    	; 0x730 <__vector_17+0x278>
     520:	91 c0       	rjmp	.+290    	; 0x644 <__vector_17+0x18c>
     522:	80 39       	cpi	r24, 0x90	; 144
     524:	09 f4       	brne	.+2      	; 0x528 <__vector_17+0x70>
     526:	c9 c0       	rjmp	.+402    	; 0x6ba <__vector_17+0x202>
     528:	81 39       	cpi	r24, 0x91	; 145
     52a:	80 f4       	brcc	.+32     	; 0x54c <__vector_17+0x94>
     52c:	80 36       	cpi	r24, 0x60	; 96
     52e:	09 f4       	brne	.+2      	; 0x532 <__vector_17+0x7a>
     530:	b8 c0       	rjmp	.+368    	; 0x6a2 <__vector_17+0x1ea>
     532:	81 36       	cpi	r24, 0x61	; 97
     534:	20 f4       	brcc	.+8      	; 0x53e <__vector_17+0x86>
     536:	88 35       	cpi	r24, 0x58	; 88
     538:	09 f0       	breq	.+2      	; 0x53c <__vector_17+0x84>
     53a:	fa c0       	rjmp	.+500    	; 0x730 <__vector_17+0x278>
     53c:	4d c0       	rjmp	.+154    	; 0x5d8 <__vector_17+0x120>
     53e:	80 37       	cpi	r24, 0x70	; 112
     540:	09 f4       	brne	.+2      	; 0x544 <__vector_17+0x8c>
     542:	af c0       	rjmp	.+350    	; 0x6a2 <__vector_17+0x1ea>
     544:	80 38       	cpi	r24, 0x80	; 128
     546:	09 f0       	breq	.+2      	; 0x54a <__vector_17+0x92>
     548:	f3 c0       	rjmp	.+486    	; 0x730 <__vector_17+0x278>
     54a:	b7 c0       	rjmp	.+366    	; 0x6ba <__vector_17+0x202>
     54c:	88 3a       	cpi	r24, 0xA8	; 168
     54e:	09 f4       	brne	.+2      	; 0x552 <__vector_17+0x9a>
     550:	82 c0       	rjmp	.+260    	; 0x656 <__vector_17+0x19e>
     552:	89 3a       	cpi	r24, 0xA9	; 169
     554:	20 f4       	brcc	.+8      	; 0x55e <__vector_17+0xa6>
     556:	80 3a       	cpi	r24, 0xA0	; 160
     558:	09 f0       	breq	.+2      	; 0x55c <__vector_17+0xa4>
     55a:	ea c0       	rjmp	.+468    	; 0x730 <__vector_17+0x278>
     55c:	cf c0       	rjmp	.+414    	; 0x6fc <__vector_17+0x244>
     55e:	88 3b       	cpi	r24, 0xB8	; 184
     560:	09 f4       	brne	.+2      	; 0x564 <__vector_17+0xac>
     562:	84 c0       	rjmp	.+264    	; 0x66c <__vector_17+0x1b4>
     564:	80 3c       	cpi	r24, 0xC0	; 192
     566:	09 f0       	breq	.+2      	; 0x56a <__vector_17+0xb2>
     568:	e3 c0       	rjmp	.+454    	; 0x730 <__vector_17+0x278>
     56a:	96 c0       	rjmp	.+300    	; 0x698 <__vector_17+0x1e0>
  {
  case TWI_START:
  case TWI_REP_START:
    string_index = 0;
     56c:	10 92 75 00 	sts	0x0075, r1
  case TWI_MTX_ADR_ACK:
  case TWI_MTX_DATA_ACK:
    if (string_index < TWI_task_current->length)
     570:	90 91 75 00 	lds	r25, 0x0075
     574:	e0 91 6f 00 	lds	r30, 0x006F
     578:	f0 91 70 00 	lds	r31, 0x0070
     57c:	80 81       	ld	r24, Z
     57e:	98 17       	cp	r25, r24
     580:	e0 f5       	brcc	.+120    	; 0x5fa <__vector_17+0x142>
    {
      TWDR = TWI_task_current->string[string_index++];
     582:	01 80       	ldd	r0, Z+1	; 0x01
     584:	f2 81       	ldd	r31, Z+2	; 0x02
     586:	e0 2d       	mov	r30, r0
     588:	e9 0f       	add	r30, r25
     58a:	f1 1d       	adc	r31, r1
     58c:	80 81       	ld	r24, Z
     58e:	83 b9       	out	0x03, r24	; 3
     590:	9f 5f       	subi	r25, 0xFF	; 255
     592:	90 93 75 00 	sts	0x0075, r25
     596:	1e c0       	rjmp	.+60     	; 0x5d4 <__vector_17+0x11c>
	  | (0 << TWSTA) | (1 << TWSTO) | (0 << TWWC);
      }
    }
    break;
  case TWI_MRX_DATA_ACK:
    TWI_task_current->string[string_index++] = TWDR;
     598:	e0 91 6f 00 	lds	r30, 0x006F
     59c:	f0 91 70 00 	lds	r31, 0x0070
     5a0:	01 80       	ldd	r0, Z+1	; 0x01
     5a2:	f2 81       	ldd	r31, Z+2	; 0x02
     5a4:	e0 2d       	mov	r30, r0
     5a6:	80 91 75 00 	lds	r24, 0x0075
     5aa:	e8 0f       	add	r30, r24
     5ac:	f1 1d       	adc	r31, r1
     5ae:	93 b1       	in	r25, 0x03	; 3
     5b0:	90 83       	st	Z, r25
     5b2:	8f 5f       	subi	r24, 0xFF	; 255
     5b4:	80 93 75 00 	sts	0x0075, r24
  case TWI_MRX_ADR_ACK:
    if (string_index < (TWI_task_current->length - 1))
     5b8:	e0 91 6f 00 	lds	r30, 0x006F
     5bc:	f0 91 70 00 	lds	r31, 0x0070
     5c0:	80 81       	ld	r24, Z
     5c2:	20 91 75 00 	lds	r18, 0x0075
     5c6:	30 e0       	ldi	r19, 0x00	; 0
     5c8:	90 e0       	ldi	r25, 0x00	; 0
     5ca:	01 97       	sbiw	r24, 0x01	; 1
     5cc:	28 17       	cp	r18, r24
     5ce:	39 07       	cpc	r19, r25
     5d0:	0c f4       	brge	.+2      	; 0x5d4 <__vector_17+0x11c>
     5d2:	ae c0       	rjmp	.+348    	; 0x730 <__vector_17+0x278>
	(1 << TWEA) | (0 << TWSTA) | (0 << TWSTO) |
	(0 << TWWC);
    }
    else
    {
      TWCR = (1 << TWEN) |
     5d4:	85 e8       	ldi	r24, 0x85	; 133
     5d6:	ad c0       	rjmp	.+346    	; 0x732 <__vector_17+0x27a>
	(0 << TWEA) | (0 << TWSTA) | (0 << TWSTO) |
	(0 << TWWC);
    }
    break;
  case TWI_MRX_DATA_NACK:
    TWI_task_current->string[string_index] = TWDR;
     5d8:	e0 91 6f 00 	lds	r30, 0x006F
     5dc:	f0 91 70 00 	lds	r31, 0x0070
     5e0:	01 80       	ldd	r0, Z+1	; 0x01
     5e2:	f2 81       	ldd	r31, Z+2	; 0x02
     5e4:	e0 2d       	mov	r30, r0
     5e6:	80 91 75 00 	lds	r24, 0x0075
     5ea:	e8 0f       	add	r30, r24
     5ec:	f1 1d       	adc	r31, r1
     5ee:	83 b1       	in	r24, 0x03	; 3
     5f0:	80 83       	st	Z, r24
    *TWI_task_current->flag = 0;
     5f2:	e0 91 6f 00 	lds	r30, 0x006F
     5f6:	f0 91 70 00 	lds	r31, 0x0070
     5fa:	03 80       	ldd	r0, Z+3	; 0x03
     5fc:	f4 81       	ldd	r31, Z+4	; 0x04
     5fe:	e0 2d       	mov	r30, r0
     600:	10 82       	st	Z, r1
    if (TWI_task_current != TWI_task_last)
     602:	e0 91 6f 00 	lds	r30, 0x006F
     606:	f0 91 70 00 	lds	r31, 0x0070
     60a:	80 91 6d 00 	lds	r24, 0x006D
     60e:	90 91 6e 00 	lds	r25, 0x006E
     612:	e8 17       	cp	r30, r24
     614:	f9 07       	cpc	r31, r25
     616:	41 f0       	breq	.+16     	; 0x628 <__vector_17+0x170>
    {
      TWI_task_current = TWI_task_current->next;
     618:	85 81       	ldd	r24, Z+5	; 0x05
     61a:	96 81       	ldd	r25, Z+6	; 0x06
     61c:	90 93 70 00 	sts	0x0070, r25
     620:	80 93 6f 00 	sts	0x006F, r24
      TWCR = (1 << TWEN) |
     624:	85 ea       	ldi	r24, 0xA5	; 165
     626:	85 c0       	rjmp	.+266    	; 0x732 <__vector_17+0x27a>
	(0 << TWEA) | (1 << TWSTA) | (0 << TWSTO) |
	(0 << TWWC);
    }
    else
    {
      TWI_task_first = TWI_task_last = TWI_task_current = 0;
     628:	10 92 70 00 	sts	0x0070, r1
     62c:	10 92 6f 00 	sts	0x006F, r1
     630:	10 92 6e 00 	sts	0x006E, r1
     634:	10 92 6d 00 	sts	0x006D, r1
     638:	10 92 6c 00 	sts	0x006C, r1
     63c:	10 92 6b 00 	sts	0x006B, r1
      TWCR =
     640:	85 ed       	ldi	r24, 0xD5	; 213
     642:	77 c0       	rjmp	.+238    	; 0x732 <__vector_17+0x27a>
      (0 << TWWC);
    break;
  case TWI_MTX_ADR_NACK:
  case TWI_MRX_ADR_NACK:
  case TWI_MTX_DATA_NACK:
    TWI_task_first = TWI_task_current;
     644:	80 91 6f 00 	lds	r24, 0x006F
     648:	90 91 70 00 	lds	r25, 0x0070
     64c:	90 93 6c 00 	sts	0x006C, r25
     650:	80 93 6b 00 	sts	0x006B, r24
     654:	6b c0       	rjmp	.+214    	; 0x72c <__vector_17+0x274>
      (1 << TWIE) | (1 << TWINT) |
      (1 << TWEA) | (1 << TWSTA) | (0 << TWSTO) |
      (0 << TWWC);
    break;
  case TWI_STX_ADR_ACK:
    string_index = 0;
     656:	10 92 75 00 	sts	0x0075, r1
    *TWI_slave_send->flag = 0xFF;
     65a:	e0 91 71 00 	lds	r30, 0x0071
     65e:	f0 91 72 00 	lds	r31, 0x0072
     662:	03 80       	ldd	r0, Z+3	; 0x03
     664:	f4 81       	ldd	r31, Z+4	; 0x04
     666:	e0 2d       	mov	r30, r0
     668:	8f ef       	ldi	r24, 0xFF	; 255
     66a:	80 83       	st	Z, r24
  case TWI_STX_DATA_ACK:
    if (string_index < TWI_slave_send->length)
     66c:	90 91 75 00 	lds	r25, 0x0075
     670:	e0 91 71 00 	lds	r30, 0x0071
     674:	f0 91 72 00 	lds	r31, 0x0072
     678:	80 81       	ld	r24, Z
     67a:	98 17       	cp	r25, r24

⌨️ 快捷键说明

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