📄 motor_control.lss
字号:
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 + -