📄 main.lss
字号:
main.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 0000012e 00000000 00000000 00000094 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000008 00800060 0000012e 000001c2 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 00000001 00800068 00800068 000001ca 2**0
ALLOC
3 .noinit 00000000 00800069 00800069 000001ca 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 000001ca 2**0
CONTENTS
5 .debug_aranges 00000014 00000000 00000000 000001ca 2**0
CONTENTS, READONLY, DEBUGGING
6 .debug_pubnames 0000004e 00000000 00000000 000001de 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_info 0000015e 00000000 00000000 0000022c 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_abbrev 000000af 00000000 00000000 0000038a 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_line 0000012b 00000000 00000000 00000439 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_str 00000088 00000000 00000000 00000564 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 2a 00 jmp 0x54
4: 0c 94 45 00 jmp 0x8a
8: 0c 94 45 00 jmp 0x8a
c: 0c 94 45 00 jmp 0x8a
10: 0c 94 45 00 jmp 0x8a
14: 0c 94 45 00 jmp 0x8a
18: 0c 94 45 00 jmp 0x8a
1c: 0c 94 45 00 jmp 0x8a
20: 0c 94 45 00 jmp 0x8a
24: 0c 94 45 00 jmp 0x8a
28: 0c 94 45 00 jmp 0x8a
2c: 0c 94 45 00 jmp 0x8a
30: 0c 94 45 00 jmp 0x8a
34: 0c 94 45 00 jmp 0x8a
38: 0c 94 45 00 jmp 0x8a
3c: 0c 94 45 00 jmp 0x8a
40: 0c 94 45 00 jmp 0x8a
44: 0c 94 45 00 jmp 0x8a
48: 0c 94 45 00 jmp 0x8a
4c: 0c 94 45 00 jmp 0x8a
50: 0c 94 45 00 jmp 0x8a
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 e2 ldi r30, 0x2E ; 46
68: f1 e0 ldi r31, 0x01 ; 1
6a: 02 c0 rjmp .+4 ; 0x70
0000006c <.do_copy_data_loop>:
6c: 05 90 lpm r0, Z+
6e: 0d 92 st X+, r0
00000070 <.do_copy_data_start>:
70: a8 36 cpi r26, 0x68 ; 104
72: b1 07 cpc r27, r17
74: d9 f7 brne .-10 ; 0x6c
00000076 <__do_clear_bss>:
76: 10 e0 ldi r17, 0x00 ; 0
78: a8 e6 ldi r26, 0x68 ; 104
7a: b0 e0 ldi r27, 0x00 ; 0
7c: 01 c0 rjmp .+2 ; 0x80
0000007e <.do_clear_bss_loop>:
7e: 1d 92 st X+, r1
00000080 <.do_clear_bss_start>:
80: a9 36 cpi r26, 0x69 ; 105
82: b1 07 cpc r27, r17
84: e1 f7 brne .-8 ; 0x7e
86: 0c 94 84 00 jmp 0x108
0000008a <__bad_interrupt>:
8a: 0c 94 00 00 jmp 0x0
0000008e <delay>:
void delay(uchar t)// 每步延时的子程序
{
uchar i;
uint j;
for (i=0;i<t;i++)
8e: 90 e0 ldi r25, 0x00 ; 0
90: 98 17 cp r25, r24
92: 40 f4 brcc .+16 ; 0xa4
94: 23 e8 ldi r18, 0x83 ; 131
96: 33 e0 ldi r19, 0x03 ; 3
for (j=0;j<900;j++);
98: 22 53 subi r18, 0x32 ; 50
9a: 30 40 sbci r19, 0x00 ; 0
9c: 37 ff sbrs r19, 7
9e: fc cf rjmp .-8 ; 0x98
a0: 9f 5f subi r25, 0xFF ; 255
a2: f6 cf rjmp .-20 ; 0x90
a4: 08 95 ret
000000a6 <a_step>:
}
void a_step(uchar d,uchar t) //步进电机走一步d=0 正转d=1 反转, t 越大走得越慢
{
a6: 90 91 68 00 lds r25, 0x0068
if (d&0x01) //d=1 反转
aa: 80 ff sbrs r24, 0
ac: 08 c0 rjmp .+16 ; 0xbe
{
if (np==0)
ae: 99 23 and r25, r25
b0: 21 f4 brne .+8 ; 0xba
np=7;
b2: 87 e0 ldi r24, 0x07 ; 7
b4: 80 93 68 00 sts 0x0068, r24
b8: 0a c0 rjmp .+20 ; 0xce
else np--;
ba: 91 50 subi r25, 0x01 ; 1
bc: 06 c0 rjmp .+12 ; 0xca
}
else // d=0 正转
{
if (np==7)
be: 97 30 cpi r25, 0x07 ; 7
c0: 19 f4 brne .+6 ; 0xc8
np=0;
c2: 10 92 68 00 sts 0x0068, r1
c6: 03 c0 rjmp .+6 ; 0xce
else np++;
c8: 9f 5f subi r25, 0xFF ; 255
ca: 90 93 68 00 sts 0x0068, r25
}
PORTA=motortb[np];//查步进电机运行数据表
ce: 80 91 68 00 lds r24, 0x0068
d2: e8 2f mov r30, r24
d4: ff 27 eor r31, r31
d6: e0 5a subi r30, 0xA0 ; 160
d8: ff 4f sbci r31, 0xFF ; 255
da: 80 81 ld r24, Z
dc: 8b bb out 0x1b, r24 ; 27
delay(t);
de: 86 2f mov r24, r22
e0: 0e 94 47 00 call 0x8e
e4: 08 95 ret
000000e6 <a_turn>:
}
void a_turn(uchar d,uchar t)// 步进电机走一圈
{
e6: 0f 93 push r16
e8: 1f 93 push r17
ea: cf 93 push r28
ec: 08 2f mov r16, r24
ee: 16 2f mov r17, r22
f0: cf e5 ldi r28, 0x5F ; 95
uchar i;
for (i=0;i<96;i++)
a_step(d,t);
f2: 61 2f mov r22, r17
f4: 80 2f mov r24, r16
f6: 0e 94 53 00 call 0xa6
fa: c1 50 subi r28, 0x01 ; 1
fc: c7 ff sbrs r28, 7
fe: f9 cf rjmp .-14 ; 0xf2
100: cf 91 pop r28
102: 1f 91 pop r17
104: 0f 91 pop r16
106: 08 95 ret
00000108 <main>:
}
void main(void)
{
108: cf e5 ldi r28, 0x5F ; 95
10a: d4 e0 ldi r29, 0x04 ; 4
10c: de bf out 0x3e, r29 ; 62
10e: cd bf out 0x3d, r28 ; 61
PORTB=0xFF;//上拉
110: 8f ef ldi r24, 0xFF ; 255
112: 88 bb out 0x18, r24 ; 24
PORTC=0xFF;
114: 85 bb out 0x15, r24 ; 21
PORTD=0xFF;
116: 82 bb out 0x12, r24 ; 18
DDRA=0xff;
118: 8a bb out 0x1a, r24 ; 26
PORTA=0x44;
11a: 84 e4 ldi r24, 0x44 ; 68
11c: 8b bb out 0x1b, r24 ; 27
np=4;
11e: 84 e0 ldi r24, 0x04 ; 4
120: 80 93 68 00 sts 0x0068, r24
while (1)
a_turn(0,20);//转速可以在5-25左右的范围内调节,t太小则嗡嗡作响,转不起来???(我的t=1000时才转)
124: 64 e1 ldi r22, 0x14 ; 20
126: 80 e0 ldi r24, 0x00 ; 0
128: 0e 94 73 00 call 0xe6
12c: fb cf rjmp .-10 ; 0x124
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -