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

📄 car_prevent.lss

📁 基于AT Mega16的多功能小车
💻 LSS
📖 第 1 页 / 共 3 页
字号:

car_prevent.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         0000045e  00000000  00000000  00000074  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .bss          00000004  00800060  00800060  000004d2  2**0
                  ALLOC
  2 .stab         000006b4  00000000  00000000  000004d4  2**2
                  CONTENTS, READONLY, DEBUGGING
  3 .stabstr      0000005f  00000000  00000000  00000b88  2**0
                  CONTENTS, READONLY, DEBUGGING
  4 .debug_aranges 00000060  00000000  00000000  00000be7  2**0
                  CONTENTS, READONLY, DEBUGGING
  5 .debug_pubnames 00000164  00000000  00000000  00000c47  2**0
                  CONTENTS, READONLY, DEBUGGING
  6 .debug_info   000009bf  00000000  00000000  00000dab  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_abbrev 000002cd  00000000  00000000  0000176a  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_line   00000821  00000000  00000000  00001a37  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_frame  00000140  00000000  00000000  00002258  2**2
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_str    000001b1  00000000  00000000  00002398  2**0
                  CONTENTS, READONLY, DEBUGGING
 11 .debug_loc    00000613  00000000  00000000  00002549  2**0
                  CONTENTS, READONLY, DEBUGGING

Disassembly of section .text:

00000000 <__vectors>:
   0:	0c 94 2a 00 	jmp	0x54	; 0x54 <__ctors_end>
   4:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
   8:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
   c:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  10:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  14:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  18:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  1c:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  20:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  24:	0c 94 4d 00 	jmp	0x9a	; 0x9a <__vector_9>
  28:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  2c:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  30:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  34:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  38:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  3c:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  40:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  44:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  48:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  4c:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  50:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>

00000054 <__ctors_end>:
  54:	11 24       	eor	r1, r1
  56:	1f be       	out	0x3f, r1	; 63
  58:	cf e5       	ldi	r28, 0x5F	; 95
  5a:	d4 e0       	ldi	r29, 0x04	; 4
  5c:	de bf       	out	0x3e, r29	; 62
  5e:	cd bf       	out	0x3d, r28	; 61

00000060 <__do_copy_data>:
  60:	10 e0       	ldi	r17, 0x00	; 0
  62:	a0 e6       	ldi	r26, 0x60	; 96
  64:	b0 e0       	ldi	r27, 0x00	; 0
  66:	ee e5       	ldi	r30, 0x5E	; 94
  68:	f4 e0       	ldi	r31, 0x04	; 4
  6a:	02 c0       	rjmp	.+4      	; 0x70 <.do_copy_data_start>

0000006c <.do_copy_data_loop>:
  6c:	05 90       	lpm	r0, Z+
  6e:	0d 92       	st	X+, r0

00000070 <.do_copy_data_start>:
  70:	a0 36       	cpi	r26, 0x60	; 96
  72:	b1 07       	cpc	r27, r17
  74:	d9 f7       	brne	.-10     	; 0x6c <.do_copy_data_loop>

00000076 <__do_clear_bss>:
  76:	10 e0       	ldi	r17, 0x00	; 0
  78:	a0 e6       	ldi	r26, 0x60	; 96
  7a:	b0 e0       	ldi	r27, 0x00	; 0
  7c:	01 c0       	rjmp	.+2      	; 0x80 <.do_clear_bss_start>

0000007e <.do_clear_bss_loop>:
  7e:	1d 92       	st	X+, r1

00000080 <.do_clear_bss_start>:
  80:	a4 36       	cpi	r26, 0x64	; 100
  82:	b1 07       	cpc	r27, r17
  84:	e1 f7       	brne	.-8      	; 0x7e <.do_clear_bss_loop>
  86:	0e 94 6d 01 	call	0x2da	; 0x2da <main>
  8a:	0c 94 2d 02 	jmp	0x45a	; 0x45a <_exit>

0000008e <__bad_interrupt>:
  8e:	0c 94 00 00 	jmp	0	; 0x0 <__vectors>

00000092 <sensor_init>:
//	入口参数:	无
//	返回  值:	无
//======================================================================
void sensor_init(void)
{
	DDRA &= ~0x30;						// PA4~PA5 设置为输入
  92:	8a b3       	in	r24, 0x1a	; 26
  94:	8f 7c       	andi	r24, 0xCF	; 207
  96:	8a bb       	out	0x1a, r24	; 26
}
  98:	08 95       	ret

0000009a <__vector_9>:


// 定时器0
//ISR(SIG_OVERFLOW0)
ISR(TIMER0_OVF_vect)
{
  9a:	1f 92       	push	r1
  9c:	0f 92       	push	r0
  9e:	0f b6       	in	r0, 0x3f	; 63
  a0:	0f 92       	push	r0
  a2:	11 24       	eor	r1, r1
  a4:	2f 93       	push	r18
  a6:	3f 93       	push	r19
  a8:	4f 93       	push	r20
  aa:	5f 93       	push	r21
  ac:	6f 93       	push	r22
  ae:	7f 93       	push	r23
  b0:	8f 93       	push	r24
  b2:	9f 93       	push	r25
  b4:	af 93       	push	r26
  b6:	bf 93       	push	r27
  b8:	ef 93       	push	r30
  ba:	ff 93       	push	r31
	Key_Scan();
  bc:	0e 94 ea 01 	call	0x3d4	; 0x3d4 <Key_Scan>
}
  c0:	ff 91       	pop	r31
  c2:	ef 91       	pop	r30
  c4:	bf 91       	pop	r27
  c6:	af 91       	pop	r26
  c8:	9f 91       	pop	r25
  ca:	8f 91       	pop	r24
  cc:	7f 91       	pop	r23
  ce:	6f 91       	pop	r22
  d0:	5f 91       	pop	r21
  d2:	4f 91       	pop	r20
  d4:	3f 91       	pop	r19
  d6:	2f 91       	pop	r18
  d8:	0f 90       	pop	r0
  da:	0f be       	out	0x3f, r0	; 63
  dc:	0f 90       	pop	r0
  de:	1f 90       	pop	r1
  e0:	18 95       	reti

000000e2 <car_prevent>:
// D ---> D:	前->前方障碍	小车后退并右转

void car_prevent(void)
{
	unsigned int sensor;
	sensor = (PINA&0x30);					// 蔽障传感器信号
  e2:	89 b3       	in	r24, 0x19	; 25
  e4:	90 e0       	ldi	r25, 0x00	; 0
  e6:	80 73       	andi	r24, 0x30	; 48
  e8:	90 70       	andi	r25, 0x00	; 0

	switch(g_state)
  ea:	20 91 60 00 	lds	r18, 0x0060
  ee:	21 30       	cpi	r18, 0x01	; 1
  f0:	09 f4       	brne	.+2      	; 0xf4 <car_prevent+0x12>
  f2:	53 c0       	rjmp	.+166    	; 0x19a <car_prevent+0xb8>
  f4:	21 30       	cpi	r18, 0x01	; 1
  f6:	38 f0       	brcs	.+14     	; 0x106 <car_prevent+0x24>
  f8:	22 30       	cpi	r18, 0x02	; 2
  fa:	09 f4       	brne	.+2      	; 0xfe <car_prevent+0x1c>
  fc:	7f c0       	rjmp	.+254    	; 0x1fc <car_prevent+0x11a>
  fe:	23 30       	cpi	r18, 0x03	; 3
 100:	09 f0       	breq	.+2      	; 0x104 <car_prevent+0x22>
 102:	ea c0       	rjmp	.+468    	; 0x2d8 <car_prevent+0x1f6>
 104:	ac c0       	rjmp	.+344    	; 0x25e <car_prevent+0x17c>
	{
		case OBSTACLE_NONE:
			switch(sensor)
 106:	80 31       	cpi	r24, 0x10	; 16
 108:	91 05       	cpc	r25, r1
 10a:	21 f1       	breq	.+72     	; 0x154 <car_prevent+0x72>
 10c:	81 31       	cpi	r24, 0x11	; 17
 10e:	91 05       	cpc	r25, r1
 110:	18 f4       	brcc	.+6      	; 0x118 <car_prevent+0x36>
 112:	89 2b       	or	r24, r25
 114:	59 f1       	breq	.+86     	; 0x16c <car_prevent+0x8a>
 116:	08 95       	ret
 118:	80 32       	cpi	r24, 0x20	; 32
 11a:	91 05       	cpc	r25, r1
 11c:	79 f0       	breq	.+30     	; 0x13c <car_prevent+0x5a>
 11e:	c0 97       	sbiw	r24, 0x30	; 48
 120:	09 f0       	breq	.+2      	; 0x124 <car_prevent+0x42>
 122:	da c0       	rjmp	.+436    	; 0x2d8 <car_prevent+0x1f6>
			{
				case SENSOR_N:				// A ---> A:	无障碍 			小车直走
					car_ahead();
 124:	0e 94 85 01 	call	0x30a	; 0x30a <car_ahead>
 128:	88 e8       	ldi	r24, 0x88	; 136
 12a:	93 e1       	ldi	r25, 0x13	; 19
    milliseconds can be achieved.
 */
void
_delay_loop_2(uint16_t __count)
{
	__asm__ volatile (
 12c:	28 eb       	ldi	r18, 0xB8	; 184
 12e:	30 e0       	ldi	r19, 0x00	; 0
 130:	f9 01       	movw	r30, r18
 132:	31 97       	sbiw	r30, 0x01	; 1
 134:	f1 f7       	brne	.-4      	; 0x132 <car_prevent+0x50>
		__ticks = (uint16_t) (__ms * 10.0);
		while(__ticks)
		{
			// wait 1/10 ms
			_delay_loop_2(((F_CPU) / 4e3) / 10);
			__ticks --;
 136:	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)
 138:	d9 f7       	brne	.-10     	; 0x130 <car_prevent+0x4e>
 13a:	a1 c0       	rjmp	.+322    	; 0x27e <car_prevent+0x19c>
					_delay_ms(500);
					g_state = OBSTACLE_NONE;
					break;
				case SENSOR_L:				// A ---> B:	左侧障碍		小车右转
					car_right();
 13c:	0e 94 d0 01 	call	0x3a0	; 0x3a0 <car_right>
 140:	88 e8       	ldi	r24, 0x88	; 136
 142:	93 e1       	ldi	r25, 0x13	; 19
 144:	28 eb       	ldi	r18, 0xB8	; 184
 146:	30 e0       	ldi	r19, 0x00	; 0
 148:	f9 01       	movw	r30, r18
 14a:	31 97       	sbiw	r30, 0x01	; 1
 14c:	f1 f7       	brne	.-4      	; 0x14a <car_prevent+0x68>
		{
			// wait 1/10 ms
			_delay_loop_2(((F_CPU) / 4e3) / 10);
			__ticks --;
 14e:	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)
 150:	d9 f7       	brne	.-10     	; 0x148 <car_prevent+0x66>
 152:	a3 c0       	rjmp	.+326    	; 0x29a <car_prevent+0x1b8>
					_delay_ms(500);
					g_state = OBSTACLE_LEFT;
					break;
				case SENSOR_R:				// A ---> C:	右侧障碍		小车左转
					car_left();
 154:	0e 94 c7 01 	call	0x38e	; 0x38e <car_left>
 158:	88 e8       	ldi	r24, 0x88	; 136
 15a:	93 e1       	ldi	r25, 0x13	; 19
 15c:	28 eb       	ldi	r18, 0xB8	; 184
 15e:	30 e0       	ldi	r19, 0x00	; 0
 160:	f9 01       	movw	r30, r18
 162:	31 97       	sbiw	r30, 0x01	; 1
 164:	f1 f7       	brne	.-4      	; 0x162 <car_prevent+0x80>
		{
			// wait 1/10 ms
			_delay_loop_2(((F_CPU) / 4e3) / 10);
			__ticks --;
 166:	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)
 168:	d9 f7       	brne	.-10     	; 0x160 <car_prevent+0x7e>
 16a:	a4 c0       	rjmp	.+328    	; 0x2b4 <car_prevent+0x1d2>
					_delay_ms(500);
					g_state = OBSTRACLE_RIGHT;
					break;
				case SENSOR_B:				// A ---> D:	前方障碍		小车后退并右转
					car_backward();
 16c:	0e 94 90 01 	call	0x320	; 0x320 <car_backward>
 170:	80 e7       	ldi	r24, 0x70	; 112
 172:	97 e1       	ldi	r25, 0x17	; 23
 174:	28 eb       	ldi	r18, 0xB8	; 184
 176:	30 e0       	ldi	r19, 0x00	; 0
 178:	f9 01       	movw	r30, r18
 17a:	31 97       	sbiw	r30, 0x01	; 1
 17c:	f1 f7       	brne	.-4      	; 0x17a <car_prevent+0x98>
		{
			// wait 1/10 ms
			_delay_loop_2(((F_CPU) / 4e3) / 10);
			__ticks --;
 17e:	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)
 180:	d9 f7       	brne	.-10     	; 0x178 <car_prevent+0x96>
					_delay_ms(600);
					car_right();
 182:	0e 94 d0 01 	call	0x3a0	; 0x3a0 <car_right>
 186:	80 e4       	ldi	r24, 0x40	; 64
 188:	9f e1       	ldi	r25, 0x1F	; 31
 18a:	28 eb       	ldi	r18, 0xB8	; 184
 18c:	30 e0       	ldi	r19, 0x00	; 0
 18e:	f9 01       	movw	r30, r18
 190:	31 97       	sbiw	r30, 0x01	; 1
 192:	f1 f7       	brne	.-4      	; 0x190 <car_prevent+0xae>
		{
			// wait 1/10 ms
			_delay_loop_2(((F_CPU) / 4e3) / 10);
			__ticks --;
 194:	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)
 196:	d9 f7       	brne	.-10     	; 0x18e <car_prevent+0xac>
 198:	60 c0       	rjmp	.+192    	; 0x25a <car_prevent+0x178>
					g_state = OBSTRACLE_FRONT;
					break;
			}

⌨️ 快捷键说明

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