📄 car_prevent.lss
字号:
car_prevent.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 00000188 00000000 00000000 00000074 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .bss 00000002 00800060 00800060 000001fc 2**0
ALLOC
2 .debug_aranges 00000040 00000000 00000000 000001fc 2**0
CONTENTS, READONLY, DEBUGGING
3 .debug_pubnames 000000e4 00000000 00000000 0000023c 2**0
CONTENTS, READONLY, DEBUGGING
4 .debug_info 000002eb 00000000 00000000 00000320 2**0
CONTENTS, READONLY, DEBUGGING
5 .debug_abbrev 00000129 00000000 00000000 0000060b 2**0
CONTENTS, READONLY, DEBUGGING
6 .debug_line 0000032a 00000000 00000000 00000734 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_frame 000000f0 00000000 00000000 00000a60 2**2
CONTENTS, READONLY, DEBUGGING
8 .debug_str 00000140 00000000 00000000 00000b50 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_loc 00000068 00000000 00000000 00000c90 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 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
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: e8 e8 ldi r30, 0x88 ; 136
68: f1 e0 ldi r31, 0x01 ; 1
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: a2 36 cpi r26, 0x62 ; 98
82: b1 07 cpc r27, r17
84: e1 f7 brne .-8 ; 0x7e <.do_clear_bss_loop>
86: 0e 94 7b 00 call 0xf6 ; 0xf6 <main>
8a: 0c 94 c2 00 jmp 0x184 ; 0x184 <_exit>
0000008e <__bad_interrupt>:
8e: 0c 94 00 00 jmp 0 ; 0x0 <__vectors>
00000092 <sensor_init>:
unsigned int temp;
void sensor_init()
{
DDRA &= ~0x0F;
92: 8a b3 in r24, 0x1a ; 26
94: 80 7f andi r24, 0xF0 ; 240
96: 8a bb out 0x1a, r24 ; 26
PORTA |= 0x08;
98: db 9a sbi 0x1b, 3 ; 27
}
9a: 08 95 ret
0000009c <car_prevent>:
void car_prevent()
{
9c: 0f 93 push r16
9e: 1f 93 push r17
temp = (PINA&0x03);
a0: 89 b3 in r24, 0x19 ; 25
a2: 90 e0 ldi r25, 0x00 ; 0
a4: 83 70 andi r24, 0x03 ; 3
a6: 90 70 andi r25, 0x00 ; 0
a8: 90 93 61 00 sts 0x0061, r25
ac: 80 93 60 00 sts 0x0060, r24
switch(temp)
b0: 81 30 cpi r24, 0x01 ; 1
b2: 91 05 cpc r25, r1
b4: 89 f0 breq .+34 ; 0xd8 <car_prevent+0x3c>
b6: 81 30 cpi r24, 0x01 ; 1
b8: 91 05 cpc r25, r1
ba: 18 f0 brcs .+6 ; 0xc2 <car_prevent+0x26>
bc: 02 97 sbiw r24, 0x02 ; 2
be: b1 f4 brne .+44 ; 0xec <car_prevent+0x50>
c0: 0e c0 rjmp .+28 ; 0xde <car_prevent+0x42>
{
case 0x00: // 正前障碍,倒车并右转
car_backward();
c2: 0e 94 95 00 call 0x12a ; 0x12a <car_backward>
milliseconds can be achieved.
*/
void
_delay_loop_2(uint16_t __count)
{
__asm__ volatile (
c6: 08 ea ldi r16, 0xA8 ; 168
c8: 11 e6 ldi r17, 0x61 ; 97
ca: c8 01 movw r24, r16
cc: 01 97 sbiw r24, 0x01 ; 1
ce: f1 f7 brne .-4 ; 0xcc <car_prevent+0x30>
_delay_ms(100);
car_right();
d0: 0e 94 a3 00 call 0x146 ; 0x146 <car_right>
d4: c8 01 movw r24, r16
d6: 07 c0 rjmp .+14 ; 0xe6 <car_prevent+0x4a>
_delay_ms(100);
break;
case 0x01: // 右侧障碍,左转
car_left();
d8: 0e 94 9c 00 call 0x138 ; 0x138 <car_left>
dc: 02 c0 rjmp .+4 ; 0xe2 <car_prevent+0x46>
_delay_ms(100);
break;
case 0x02: // 左侧障碍,右转
car_right();
de: 0e 94 a3 00 call 0x146 ; 0x146 <car_right>
e2: 88 ea ldi r24, 0xA8 ; 168
e4: 91 e6 ldi r25, 0x61 ; 97
e6: 01 97 sbiw r24, 0x01 ; 1
e8: f1 f7 brne .-4 ; 0xe6 <car_prevent+0x4a>
ea: 02 c0 rjmp .+4 ; 0xf0 <car_prevent+0x54>
_delay_ms(100);
break;
default:
car_ahead();
ec: 0e 94 8e 00 call 0x11c ; 0x11c <car_ahead>
break;
}
}
f0: 1f 91 pop r17
f2: 0f 91 pop r16
f4: 08 95 ret
000000f6 <main>:
void main()
{
car_init();
f6: 0e 94 86 00 call 0x10c ; 0x10c <car_init>
unsigned int temp;
void sensor_init()
{
DDRA &= ~0x0F;
fa: 8a b3 in r24, 0x1a ; 26
fc: 80 7f andi r24, 0xF0 ; 240
fe: 8a bb out 0x1a, r24 ; 26
PORTA |= 0x08;
100: db 9a sbi 0x1b, 3 ; 27
void main()
{
car_init();
sensor_init();
while((PINA&0x08)==0x08);
102: cb 99 sbic 0x19, 3 ; 25
104: fe cf rjmp .-4 ; 0x102 <main+0xc>
while(1)
{
car_prevent();
106: 0e 94 4e 00 call 0x9c ; 0x9c <car_prevent>
10a: fd cf rjmp .-6 ; 0x106 <main+0x10>
0000010c <car_init>:
#include "avr/io.h"
#include "util/delay.h"
void car_init(void)
{
DDRD |= _BV(PD2) | _BV(PD3) | _BV(PD4) | _BV(PD5);
10c: 81 b3 in r24, 0x11 ; 17
10e: 8c 63 ori r24, 0x3C ; 60
110: 81 bb out 0x11, r24 ; 17
}
112: 08 95 ret
00000114 <car_stop>:
void car_stop(void)
{
PORTD |= _BV(PD2) | _BV(PD3) | _BV(PD4) | _BV(PD5);
114: 82 b3 in r24, 0x12 ; 18
116: 8c 63 ori r24, 0x3C ; 60
118: 82 bb out 0x12, r24 ; 18
}
11a: 08 95 ret
0000011c <car_ahead>:
void car_ahead(void)
{
PORTD &= ~(_BV(PD2) | _BV(PD3) | _BV(PD4) | _BV(PD5));
11c: 82 b3 in r24, 0x12 ; 18
11e: 83 7c andi r24, 0xC3 ; 195
120: 82 bb out 0x12, r24 ; 18
PORTD |= _BV(PD2) | _BV(PD4);
122: 82 b3 in r24, 0x12 ; 18
124: 84 61 ori r24, 0x14 ; 20
126: 82 bb out 0x12, r24 ; 18
}
128: 08 95 ret
0000012a <car_backward>:
void car_backward(void)
{
PORTD &= ~(_BV(PD2) | _BV(PD3) | _BV(PD4) | _BV(PD5));
12a: 82 b3 in r24, 0x12 ; 18
12c: 83 7c andi r24, 0xC3 ; 195
12e: 82 bb out 0x12, r24 ; 18
PORTD |= _BV(PD3) | _BV(PD5);
130: 82 b3 in r24, 0x12 ; 18
132: 88 62 ori r24, 0x28 ; 40
134: 82 bb out 0x12, r24 ; 18
}
136: 08 95 ret
00000138 <car_left>:
void car_left(void) // 急右转
{
PORTD &= ~(_BV(PD2) | _BV(PD3) | _BV(PD4) | _BV(PD5));
138: 82 b3 in r24, 0x12 ; 18
13a: 83 7c andi r24, 0xC3 ; 195
13c: 82 bb out 0x12, r24 ; 18
PORTD |= _BV(PD3) | _BV(PD4);
13e: 82 b3 in r24, 0x12 ; 18
140: 88 61 ori r24, 0x18 ; 24
142: 82 bb out 0x12, r24 ; 18
}
144: 08 95 ret
00000146 <car_right>:
void car_right(void) // 急右转
{
PORTD &= ~(_BV(PD2) | _BV(PD3) | _BV(PD4) | _BV(PD5));
146: 82 b3 in r24, 0x12 ; 18
148: 83 7c andi r24, 0xC3 ; 195
14a: 82 bb out 0x12, r24 ; 18
PORTD |= _BV(PD2) | _BV(PD5);
14c: 82 b3 in r24, 0x12 ; 18
14e: 84 62 ori r24, 0x24 ; 36
150: 82 bb out 0x12, r24 ; 18
}
152: 08 95 ret
00000154 <car_left1>:
void car_left1(void) // 刹车+左转
{
PORTD &= ~(_BV(PD2) | _BV(PD3) | _BV(PD4) | _BV(PD5));
154: 82 b3 in r24, 0x12 ; 18
156: 83 7c andi r24, 0xC3 ; 195
158: 82 bb out 0x12, r24 ; 18
PORTD |= _BV(PD2) | _BV(PD3) | _BV(PD4) ;
15a: 82 b3 in r24, 0x12 ; 18
15c: 8c 61 ori r24, 0x1C ; 28
15e: 82 bb out 0x12, r24 ; 18
}
160: 08 95 ret
00000162 <car_right1>:
void car_right1(void) // 刹车+右转
{
PORTD &= ~(_BV(PD2) | _BV(PD3) | _BV(PD4) | _BV(PD5));
162: 82 b3 in r24, 0x12 ; 18
164: 83 7c andi r24, 0xC3 ; 195
166: 82 bb out 0x12, r24 ; 18
PORTD |= _BV(PD2) | _BV(PD4) | _BV(PD5);
168: 82 b3 in r24, 0x12 ; 18
16a: 84 63 ori r24, 0x34 ; 52
16c: 82 bb out 0x12, r24 ; 18
}
16e: 08 95 ret
00000170 <car_left2>:
void car_left2(void) // 自由+左转
{
PORTD &= ~(_BV(PD2) | _BV(PD3) | _BV(PD4) | _BV(PD5));
170: 82 b3 in r24, 0x12 ; 18
172: 83 7c andi r24, 0xC3 ; 195
174: 82 bb out 0x12, r24 ; 18
PORTD |= _BV(PD4);
176: 94 9a sbi 0x12, 4 ; 18
}
178: 08 95 ret
0000017a <car_right2>:
void car_right2(void) // 自由+右转
{
PORTD &= ~(_BV(PD2) | _BV(PD3) | _BV(PD4) | _BV(PD5));
17a: 82 b3 in r24, 0x12 ; 18
17c: 83 7c andi r24, 0xC3 ; 195
17e: 82 bb out 0x12, r24 ; 18
PORTD |= _BV(PD5);
180: 95 9a sbi 0x12, 5 ; 18
}
182: 08 95 ret
00000184 <_exit>:
184: f8 94 cli
00000186 <__stop_program>:
186: ff cf rjmp .-2 ; 0x186 <__stop_program>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -