?? car_prevent.lss
字號:
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
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 + -