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

📄 motor_control.lss

📁 利用avr c编程的综合程序
💻 LSS
📖 第 1 页 / 共 5 页
字号:

motor_control.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         0000138e  00000000  00000000  00000074  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         0000000a  00800060  0000138e  00001402  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          00000039  0080006a  00001398  0000140c  2**0
                  ALLOC
  3 .stab         00002484  00000000  00000000  0000140c  2**2
                  CONTENTS, READONLY, DEBUGGING
  4 .stabstr      00000ef2  00000000  00000000  00003890  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00000000 <__vectors>:
       0:	0c 94 41 00 	jmp	0x82	; 0x82 <__ctors_end>
       4:	0c 94 5e 00 	jmp	0xbc	; 0xbc <__bad_interrupt>
       8:	0c 94 5e 00 	jmp	0xbc	; 0xbc <__bad_interrupt>
       c:	0c 94 5e 00 	jmp	0xbc	; 0xbc <__bad_interrupt>
      10:	0c 94 5e 00 	jmp	0xbc	; 0xbc <__bad_interrupt>
      14:	0c 94 5e 00 	jmp	0xbc	; 0xbc <__bad_interrupt>
      18:	0c 94 5e 00 	jmp	0xbc	; 0xbc <__bad_interrupt>
      1c:	0c 94 5e 00 	jmp	0xbc	; 0xbc <__bad_interrupt>
      20:	0c 94 5e 00 	jmp	0xbc	; 0xbc <__bad_interrupt>
      24:	0c 94 31 04 	jmp	0x862	; 0x862 <__vector_9>
      28:	0c 94 5e 00 	jmp	0xbc	; 0xbc <__bad_interrupt>
      2c:	0c 94 79 04 	jmp	0x8f2	; 0x8f2 <__vector_11>
      30:	0c 94 5e 00 	jmp	0xbc	; 0xbc <__bad_interrupt>
      34:	0c 94 5e 00 	jmp	0xbc	; 0xbc <__bad_interrupt>
      38:	0c 94 5e 00 	jmp	0xbc	; 0xbc <__bad_interrupt>
      3c:	0c 94 5e 00 	jmp	0xbc	; 0xbc <__bad_interrupt>
      40:	0c 94 5e 00 	jmp	0xbc	; 0xbc <__bad_interrupt>
      44:	0c 94 5c 02 	jmp	0x4b8	; 0x4b8 <__vector_17>
      48:	0c 94 5e 00 	jmp	0xbc	; 0xbc <__bad_interrupt>
      4c:	0c 94 5e 00 	jmp	0xbc	; 0xbc <__bad_interrupt>
      50:	0c 94 5e 00 	jmp	0xbc	; 0xbc <__bad_interrupt>
      54:	08 4a       	sbci	r16, 0xA8	; 168
      56:	d7 3b       	cpi	r29, 0xB7	; 183
      58:	3b ce       	rjmp	.-906    	; 0xfffffcd0 <__eeprom_end+0xff7efcd0>
      5a:	01 6e       	ori	r16, 0xE1	; 225
      5c:	84 bc       	out	0x24, r8	; 36
      5e:	bf fd       	.word	0xfdbf	; ????
      60:	c1 2f       	mov	r28, r17
      62:	3d 6c       	ori	r19, 0xCD	; 205
      64:	74 31       	cpi	r23, 0x14	; 20
      66:	9a bd       	out	0x2a, r25	; 42
      68:	56 83       	std	Z+6, r21	; 0x06
      6a:	3d da       	rcall	.-2950   	; 0xfffff4e6 <__eeprom_end+0xff7ef4e6>
      6c:	3d 00       	.word	0x003d	; ????
      6e:	c7 7f       	andi	r28, 0xF7	; 247
      70:	11 be       	out	0x31, r1	; 49
      72:	d9 e4       	ldi	r29, 0x49	; 73
      74:	bb 4c       	sbci	r27, 0xCB	; 203
      76:	3e 91       	ld	r19, -X
      78:	6b aa       	std	Y+51, r6	; 0x33
      7a:	aa be       	out	0x3a, r10	; 58
      7c:	00 00       	nop
      7e:	00 80       	ld	r0, Z
      80:	3f 00       	.word	0x003f	; ????

00000082 <__ctors_end>:
      82:	11 24       	eor	r1, r1
      84:	1f be       	out	0x3f, r1	; 63
      86:	cf e5       	ldi	r28, 0x5F	; 95
      88:	d4 e0       	ldi	r29, 0x04	; 4
      8a:	de bf       	out	0x3e, r29	; 62
      8c:	cd bf       	out	0x3d, r28	; 61

0000008e <__do_copy_data>:
      8e:	10 e0       	ldi	r17, 0x00	; 0
      90:	a0 e6       	ldi	r26, 0x60	; 96
      92:	b0 e0       	ldi	r27, 0x00	; 0
      94:	ee e8       	ldi	r30, 0x8E	; 142
      96:	f3 e1       	ldi	r31, 0x13	; 19
      98:	02 c0       	rjmp	.+4      	; 0x9e <.do_copy_data_start>

0000009a <.do_copy_data_loop>:
      9a:	05 90       	lpm	r0, Z+
      9c:	0d 92       	st	X+, r0

0000009e <.do_copy_data_start>:
      9e:	aa 36       	cpi	r26, 0x6A	; 106
      a0:	b1 07       	cpc	r27, r17
      a2:	d9 f7       	brne	.-10     	; 0x9a <.do_copy_data_loop>

000000a4 <__do_clear_bss>:
      a4:	10 e0       	ldi	r17, 0x00	; 0
      a6:	aa e6       	ldi	r26, 0x6A	; 106
      a8:	b0 e0       	ldi	r27, 0x00	; 0
      aa:	01 c0       	rjmp	.+2      	; 0xae <.do_clear_bss_start>

000000ac <.do_clear_bss_loop>:
      ac:	1d 92       	st	X+, r1

000000ae <.do_clear_bss_start>:
      ae:	a3 3a       	cpi	r26, 0xA3	; 163
      b0:	b1 07       	cpc	r27, r17
      b2:	e1 f7       	brne	.-8      	; 0xac <.do_clear_bss_loop>
      b4:	0e 94 1a 01 	call	0x234	; 0x234 <main>
      b8:	0c 94 c5 09 	jmp	0x138a	; 0x138a <_exit>

000000bc <__bad_interrupt>:
      bc:	0c 94 00 00 	jmp	0	; 0x0 <__vectors>

000000c0 <n_second>:
		;
	}
}

void n_second(unsigned char n)
{
      c0:	df 93       	push	r29
      c2:	cf 93       	push	r28
      c4:	0f 92       	push	r0
      c6:	cd b7       	in	r28, 0x3d	; 61
      c8:	de b7       	in	r29, 0x3e	; 62
      ca:	48 2f       	mov	r20, r24
	volatile unsigned char i = 0;
      cc:	19 82       	std	Y+1, r1	; 0x01
    milliseconds can be achieved.
 */
void
_delay_loop_2(uint16_t __count)
{
	__asm__ volatile (
      ce:	20 e9       	ldi	r18, 0x90	; 144
      d0:	31 e0       	ldi	r19, 0x01	; 1
      d2:	0a c0       	rjmp	.+20     	; 0xe8 <n_second+0x28>
	for(; i < n; i++)
      d4:	80 e1       	ldi	r24, 0x10	; 16
      d6:	97 e2       	ldi	r25, 0x27	; 39
      d8:	f9 01       	movw	r30, r18
      da:	31 97       	sbiw	r30, 0x01	; 1
      dc:	f1 f7       	brne	.-4      	; 0xda <n_second+0x1a>
		__ticks = (uint16_t) (__ms * 10.0);
		while(__ticks)
		{
			// wait 1/10 ms
			_delay_loop_2(((F_CPU) / 4e3) / 10);
			__ticks --;
      de:	01 97       	sbiw	r24, 0x01	; 1
		__ticks = 1;
	else if (__tmp > 65535)
	{
		//	__ticks = requested delay in 1/10 ms
		__ticks = (uint16_t) (__ms * 10.0);
		while(__ticks)
      e0:	d9 f7       	brne	.-10     	; 0xd8 <n_second+0x18>
      e2:	89 81       	ldd	r24, Y+1	; 0x01
      e4:	8f 5f       	subi	r24, 0xFF	; 255
      e6:	89 83       	std	Y+1, r24	; 0x01
      e8:	89 81       	ldd	r24, Y+1	; 0x01
      ea:	84 17       	cp	r24, r20
      ec:	98 f3       	brcs	.-26     	; 0xd4 <n_second+0x14>
		_delay_ms(1000);
}
      ee:	0f 90       	pop	r0
      f0:	cf 91       	pop	r28
      f2:	df 91       	pop	r29
      f4:	08 95       	ret

000000f6 <get_cheese>:

void get_cheese(void)
{
      f6:	0f 93       	push	r16
      f8:	1f 93       	push	r17
      fa:	df 93       	push	r29
      fc:	cf 93       	push	r28
      fe:	0f 92       	push	r0
     100:	cd b7       	in	r28, 0x3d	; 61
     102:	de b7       	in	r29, 0x3e	; 62
	uartClose();
     104:	0e 94 d3 04 	call	0x9a6	; 0x9a6 <uartClose>
	
	unsigned char temp_time = getTime();
     108:	0e 94 2e 04 	call	0x85c	; 0x85c <getTime>
     10c:	18 2f       	mov	r17, r24
	
	motor(0x1a, 150, 150);
     10e:	46 e9       	ldi	r20, 0x96	; 150
     110:	50 e0       	ldi	r21, 0x00	; 0
     112:	66 e9       	ldi	r22, 0x96	; 150
     114:	70 e0       	ldi	r23, 0x00	; 0
     116:	8a e1       	ldi	r24, 0x1A	; 26
     118:	0e 94 a5 03 	call	0x74a	; 0x74a <motor>
     11c:	88 ee       	ldi	r24, 0xE8	; 232
     11e:	93 e0       	ldi	r25, 0x03	; 3
     120:	20 e9       	ldi	r18, 0x90	; 144
     122:	31 e0       	ldi	r19, 0x01	; 1
     124:	f9 01       	movw	r30, r18
     126:	31 97       	sbiw	r30, 0x01	; 1
     128:	f1 f7       	brne	.-4      	; 0x126 <get_cheese+0x30>
		{
			// wait 1/10 ms
			_delay_loop_2(((F_CPU) / 4e3) / 10);
			__ticks --;
     12a:	01 97       	sbiw	r24, 0x01	; 1
		__ticks = 1;
	else if (__tmp > 65535)
	{
		//	__ticks = requested delay in 1/10 ms
		__ticks = (uint16_t) (__ms * 10.0);
		while(__ticks)
     12c:	d9 f7       	brne	.-10     	; 0x124 <get_cheese+0x2e>
	_delay_ms(100);
	
	motor(0x2a, 7400, -1000);
     12e:	48 e1       	ldi	r20, 0x18	; 24
     130:	5c ef       	ldi	r21, 0xFC	; 252
     132:	68 ee       	ldi	r22, 0xE8	; 232
     134:	7c e1       	ldi	r23, 0x1C	; 28
     136:	8a e2       	ldi	r24, 0x2A	; 42
     138:	0e 94 a5 03 	call	0x74a	; 0x74a <motor>
     13c:	80 e1       	ldi	r24, 0x10	; 16
     13e:	97 e2       	ldi	r25, 0x27	; 39
     140:	20 e9       	ldi	r18, 0x90	; 144
     142:	31 e0       	ldi	r19, 0x01	; 1
     144:	f9 01       	movw	r30, r18
     146:	31 97       	sbiw	r30, 0x01	; 1
     148:	f1 f7       	brne	.-4      	; 0x146 <get_cheese+0x50>
		{
			// wait 1/10 ms
			_delay_loop_2(((F_CPU) / 4e3) / 10);
			__ticks --;
     14a:	01 97       	sbiw	r24, 0x01	; 1
		__ticks = 1;
	else if (__tmp > 65535)
	{
		//	__ticks = requested delay in 1/10 ms
		__ticks = (uint16_t) (__ms * 10.0);
		while(__ticks)
     14c:	d9 f7       	brne	.-10     	; 0x144 <get_cheese+0x4e>
	
	_delay_ms(1000);
	hand_open();
     14e:	40 e2       	ldi	r20, 0x20	; 32
     150:	53 e0       	ldi	r21, 0x03	; 3
     152:	64 ef       	ldi	r22, 0xF4	; 244
     154:	71 e0       	ldi	r23, 0x01	; 1
     156:	8a e3       	ldi	r24, 0x3A	; 58
     158:	0e 94 a5 03 	call	0x74a	; 0x74a <motor>
	
	while(1)
	{
		get_sensor();
		if(Hold_pole == 0 || (getTime() - temp_time) > 3)
     15c:	01 2f       	mov	r16, r17
     15e:	10 e0       	ldi	r17, 0x00	; 0
	_delay_ms(1000);
	hand_open();
	
	while(1)
	{
		get_sensor();
     160:	0e 94 e3 03 	call	0x7c6	; 0x7c6 <get_sensor>
		if(Hold_pole == 0 || (getTime() - temp_time) > 3)
     164:	80 91 67 00 	lds	r24, 0x0067
     168:	86 ff       	sbrs	r24, 6
     16a:	07 c0       	rjmp	.+14     	; 0x17a <get_cheese+0x84>
     16c:	0e 94 2e 04 	call	0x85c	; 0x85c <getTime>
     170:	90 e0       	ldi	r25, 0x00	; 0
     172:	80 1b       	sub	r24, r16
     174:	91 0b       	sbc	r25, r17
     176:	04 97       	sbiw	r24, 0x04	; 4
     178:	9c f3       	brlt	.-26     	; 0x160 <get_cheese+0x6a>
		break;
	}
	motor(0x1a, 0, 0);
     17a:	40 e0       	ldi	r20, 0x00	; 0
     17c:	50 e0       	ldi	r21, 0x00	; 0
     17e:	60 e0       	ldi	r22, 0x00	; 0
     180:	70 e0       	ldi	r23, 0x00	; 0
     182:	8a e1       	ldi	r24, 0x1A	; 26
     184:	0e 94 a5 03 	call	0x74a	; 0x74a <motor>
		
	hand_close();
     188:	40 e4       	ldi	r20, 0x40	; 64
     18a:	56 e0       	ldi	r21, 0x06	; 6
     18c:	64 ef       	ldi	r22, 0xF4	; 244
     18e:	71 e0       	ldi	r23, 0x01	; 1
     190:	8a e3       	ldi	r24, 0x3A	; 58
     192:	0e 94 a5 03 	call	0x74a	; 0x74a <motor>
	}
}

void n_second(unsigned char n)
{
	volatile unsigned char i = 0;
     196:	19 82       	std	Y+1, r1	; 0x01
     198:	20 e9       	ldi	r18, 0x90	; 144
     19a:	31 e0       	ldi	r19, 0x01	; 1
     19c:	0a c0       	rjmp	.+20     	; 0x1b2 <get_cheese+0xbc>
     19e:	80 e1       	ldi	r24, 0x10	; 16
     1a0:	97 e2       	ldi	r25, 0x27	; 39
     1a2:	f9 01       	movw	r30, r18
     1a4:	31 97       	sbiw	r30, 0x01	; 1
     1a6:	f1 f7       	brne	.-4      	; 0x1a4 <get_cheese+0xae>
		{
			// wait 1/10 ms
			_delay_loop_2(((F_CPU) / 4e3) / 10);
			__ticks --;
     1a8:	01 97       	sbiw	r24, 0x01	; 1
		__ticks = 1;
	else if (__tmp > 65535)
	{
		//	__ticks = requested delay in 1/10 ms
		__ticks = (uint16_t) (__ms * 10.0);
		while(__ticks)
     1aa:	d9 f7       	brne	.-10     	; 0x1a2 <get_cheese+0xac>
	for(; i < n; i++)
     1ac:	89 81       	ldd	r24, Y+1	; 0x01
     1ae:	8f 5f       	subi	r24, 0xFF	; 255
     1b0:	89 83       	std	Y+1, r24	; 0x01
     1b2:	89 81       	ldd	r24, Y+1	; 0x01
     1b4:	86 30       	cpi	r24, 0x06	; 6
     1b6:	98 f3       	brcs	.-26     	; 0x19e <get_cheese+0xa8>
	motor(0x1a, 0, 0);
		
	hand_close();
	n_second(6);

	motor(0x2a, 8900, -1000);
     1b8:	48 e1       	ldi	r20, 0x18	; 24
     1ba:	5c ef       	ldi	r21, 0xFC	; 252
     1bc:	64 ec       	ldi	r22, 0xC4	; 196
     1be:	72 e2       	ldi	r23, 0x22	; 34
     1c0:	8a e2       	ldi	r24, 0x2A	; 42
     1c2:	0e 94 a5 03 	call	0x74a	; 0x74a <motor>
	
	motor(0x1a, -100, -100);
     1c6:	4c e9       	ldi	r20, 0x9C	; 156
     1c8:	5f ef       	ldi	r21, 0xFF	; 255
     1ca:	6c e9       	ldi	r22, 0x9C	; 156
     1cc:	7f ef       	ldi	r23, 0xFF	; 255
     1ce:	8a e1       	ldi	r24, 0x1A	; 26
     1d0:	0e 94 a5 03 	call	0x74a	; 0x74a <motor>
     1d4:	80 e1       	ldi	r24, 0x10	; 16
     1d6:	97 e2       	ldi	r25, 0x27	; 39
     1d8:	20 e9       	ldi	r18, 0x90	; 144
     1da:	31 e0       	ldi	r19, 0x01	; 1
     1dc:	f9 01       	movw	r30, r18
     1de:	31 97       	sbiw	r30, 0x01	; 1
     1e0:	f1 f7       	brne	.-4      	; 0x1de <get_cheese+0xe8>
		{
			// wait 1/10 ms
			_delay_loop_2(((F_CPU) / 4e3) / 10);
			__ticks --;
     1e2:	01 97       	sbiw	r24, 0x01	; 1
		__ticks = 1;
	else if (__tmp > 65535)
	{
		//	__ticks = requested delay in 1/10 ms
		__ticks = (uint16_t) (__ms * 10.0);
		while(__ticks)
     1e4:	d9 f7       	brne	.-10     	; 0x1dc <get_cheese+0xe6>
	_delay_ms(1000);
	
	uartOpen();
     1e6:	0e 94 d0 04 	call	0x9a0	; 0x9a0 <uartOpen>
	get_position();
     1ea:	0e 94 88 05 	call	0xb10	; 0xb10 <get_position>
	rotate(0, 0);
     1ee:	60 e0       	ldi	r22, 0x00	; 0
     1f0:	70 e0       	ldi	r23, 0x00	; 0
     1f2:	80 e0       	ldi	r24, 0x00	; 0
     1f4:	90 e0       	ldi	r25, 0x00	; 0
     1f6:	0e 94 d4 05 	call	0xba8	; 0xba8 <rotate>
	
	motor(0x1a, -100, -100);
     1fa:	4c e9       	ldi	r20, 0x9C	; 156

⌨️ 快捷键说明

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