📄 main.lss
字号:
main.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 00000226 00000000 00000000 00000074 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .bss 00000002 00800060 00800060 0000029a 2**0
ALLOC
2 .stab 0000036c 00000000 00000000 0000029c 2**2
CONTENTS, READONLY, DEBUGGING
3 .stabstr 00000084 00000000 00000000 00000608 2**0
CONTENTS, READONLY, DEBUGGING
4 .debug_aranges 00000040 00000000 00000000 0000068c 2**0
CONTENTS, READONLY, DEBUGGING
5 .debug_pubnames 0000009a 00000000 00000000 000006cc 2**0
CONTENTS, READONLY, DEBUGGING
6 .debug_info 00000228 00000000 00000000 00000766 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_abbrev 0000016a 00000000 00000000 0000098e 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_line 000002ba 00000000 00000000 00000af8 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_frame 00000090 00000000 00000000 00000db2 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_str 000000f2 00000000 00000000 00000e42 2**0
CONTENTS, READONLY, DEBUGGING
11 .debug_loc 00000080 00000000 00000000 00000f34 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 2a 00 jmp 0x54 ; 0x54 <__ctors_end>
4: 0c 94 45 00 jmp 0x8a ; 0x8a <__bad_interrupt>
8: 0c 94 45 00 jmp 0x8a ; 0x8a <__bad_interrupt>
c: 0c 94 45 00 jmp 0x8a ; 0x8a <__bad_interrupt>
10: 0c 94 45 00 jmp 0x8a ; 0x8a <__bad_interrupt>
14: 0c 94 45 00 jmp 0x8a ; 0x8a <__bad_interrupt>
18: 0c 94 45 00 jmp 0x8a ; 0x8a <__bad_interrupt>
1c: 0c 94 45 00 jmp 0x8a ; 0x8a <__bad_interrupt>
20: 0c 94 45 00 jmp 0x8a ; 0x8a <__bad_interrupt>
24: 0c 94 47 00 jmp 0x8e ; 0x8e <__vector_9>
28: 0c 94 45 00 jmp 0x8a ; 0x8a <__bad_interrupt>
2c: 0c 94 45 00 jmp 0x8a ; 0x8a <__bad_interrupt>
30: 0c 94 45 00 jmp 0x8a ; 0x8a <__bad_interrupt>
34: 0c 94 45 00 jmp 0x8a ; 0x8a <__bad_interrupt>
38: 0c 94 45 00 jmp 0x8a ; 0x8a <__bad_interrupt>
3c: 0c 94 45 00 jmp 0x8a ; 0x8a <__bad_interrupt>
40: 0c 94 45 00 jmp 0x8a ; 0x8a <__bad_interrupt>
44: 0c 94 45 00 jmp 0x8a ; 0x8a <__bad_interrupt>
48: 0c 94 45 00 jmp 0x8a ; 0x8a <__bad_interrupt>
4c: 0c 94 45 00 jmp 0x8a ; 0x8a <__bad_interrupt>
50: 0c 94 45 00 jmp 0x8a ; 0x8a <__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: e6 e2 ldi r30, 0x26 ; 38
68: f2 e0 ldi r31, 0x02 ; 2
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: 0c 94 71 00 jmp 0xe2 ; 0xe2 <main>
0000008a <__bad_interrupt>:
8a: 0c 94 00 00 jmp 0 ; 0x0 <__vectors>
0000008e <__vector_9>:
//T/C0定时中断服务程序
ISR(TIMER0_OVF_vect )
{
8e: 1f 92 push r1
90: 0f 92 push r0
92: 0f b6 in r0, 0x3f ; 63
94: 0f 92 push r0
96: 11 24 eor r1, r1
98: 6f 93 push r22
9a: 7f 93 push r23
9c: 8f 93 push r24
9e: 9f 93 push r25
TCNT0 = 0xfa; //重装计数初值
a0: 8a ef ldi r24, 0xFA ; 250
a2: 82 bf out 0x32, r24 ; 50
if(Counter500us < jiaodu) //判断0.5ms的次数是否小于角度标识
a4: 90 91 61 00 lds r25, 0x0061
a8: 80 91 60 00 lds r24, 0x0060
ac: 98 17 cp r25, r24
ae: 18 f4 brcc .+6 ; 0xb6 <__vector_9+0x28>
{
PORTB = 0x01; //小于,则继续发送高电平
b0: 81 e0 ldi r24, 0x01 ; 1
b2: 88 bb out 0x18, r24 ; 24
b4: 01 c0 rjmp .+2 ; 0xb8 <__vector_9+0x2a>
}
else
{
PORTB = 0x00; //大于,则输出低电平
b6: 18 ba out 0x18, r1 ; 24
}
Counter500us++; //0.5ms次数加1
b8: 80 91 61 00 lds r24, 0x0061
bc: 8f 5f subi r24, 0xFF ; 255
be: 80 93 61 00 sts 0x0061, r24
Counter500us = Counter500us % 40; //0.5ms次数始终为40,既保持脉冲周期为20ms
c2: 80 91 61 00 lds r24, 0x0061
c6: 68 e2 ldi r22, 0x28 ; 40
c8: 0e 94 07 01 call 0x20e ; 0x20e <__udivmodqi4>
cc: 90 93 61 00 sts 0x0061, r25
d0: 9f 91 pop r25
d2: 8f 91 pop r24
d4: 7f 91 pop r23
d6: 6f 91 pop r22
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 <main>:
e2: 91 e0 ldi r25, 0x01 ; 1
e4: 97 bb out 0x17, r25 ; 23
e6: 8e ef ldi r24, 0xFE ; 254
e8: 88 bb out 0x18, r24 ; 24
ea: 14 ba out 0x14, r1 ; 20
ec: 8f ef ldi r24, 0xFF ; 255
ee: 85 bb out 0x15, r24 ; 21
f0: 1a ba out 0x1a, r1 ; 26
f2: 8b bb out 0x1b, r24 ; 27
f4: 89 b7 in r24, 0x39 ; 57
f6: 81 60 ori r24, 0x01 ; 1
f8: 89 bf out 0x39, r24 ; 57
fa: 83 b7 in r24, 0x33 ; 51
fc: 85 60 ori r24, 0x05 ; 5
fe: 83 bf out 0x33, r24 ; 51
100: 8a ef ldi r24, 0xFA ; 250
102: 82 bf out 0x32, r24 ; 50
104: 10 92 61 00 sts 0x0061, r1
108: 90 93 60 00 sts 0x0060, r25
10c: 78 94 sei
10e: 0e 94 e8 00 call 0x1d0 ; 0x1d0 <KeyValue>
112: 82 30 cpi r24, 0x02 ; 2
114: 61 f0 breq .+24 ; 0x12e <main+0x4c>
116: 83 30 cpi r24, 0x03 ; 3
118: 18 f4 brcc .+6 ; 0x120 <main+0x3e>
11a: 81 30 cpi r24, 0x01 ; 1
11c: c1 f7 brne .-16 ; 0x10e <main+0x2c>
11e: 05 c0 rjmp .+10 ; 0x12a <main+0x48>
120: 83 30 cpi r24, 0x03 ; 3
122: 39 f0 breq .+14 ; 0x132 <main+0x50>
124: 84 30 cpi r24, 0x04 ; 4
126: 99 f7 brne .-26 ; 0x10e <main+0x2c>
128: 06 c0 rjmp .+12 ; 0x136 <main+0x54>
12a: 82 e0 ldi r24, 0x02 ; 2
12c: 05 c0 rjmp .+10 ; 0x138 <main+0x56>
12e: 83 e0 ldi r24, 0x03 ; 3
130: 03 c0 rjmp .+6 ; 0x138 <main+0x56>
132: 84 e0 ldi r24, 0x04 ; 4
134: 01 c0 rjmp .+2 ; 0x138 <main+0x56>
136: 85 e0 ldi r24, 0x05 ; 5
138: 80 93 60 00 sts 0x0060, r24
13c: e8 cf rjmp .-48 ; 0x10e <main+0x2c>
0000013e <keyPort_init>:
#include "key.h"
//按键端口初始化
void keyPort_init(void)
{
13e: 11 ba out 0x11, r1 ; 17
//DDRD = 0x33; //PD2\3\6\7定义为输入口
//PORTD |= key2 | key3 | key4; //按键key1\2\3内部上拉电阻使能
DDRD = 0x00; //PD口全部为输入脚
PORTD = 0xfb; //按键key1内部上拉电阻不使能,其余使能
140: 8b ef ldi r24, 0xFB ; 251
142: 82 bb out 0x12, r24 ; 18
144: 08 95 ret
00000146 <Delayus>:
}
//按键检测
unsigned char keyScan(void)
{
if((!(PIND & key4)) || (!(PIND & key3)) ||
(!(PIND & key2)) || ((PIND & key1))) //是否有按键按下
{
Delayms(20);
if((!(PIND & key4)) || (!(PIND & key3)) ||
(!(PIND & key2)) || ((PIND & key1))) //按键消除抖动后,是否有按键按下
{
return 1; //有按键按下,返回1
}
return 0; //干扰信号,返回0
}
return 0; //没有按键按下,返回0
}
//获取按键值
unsigned char KeyValue(void)
{
if(keyScan()) //判断那个按键被按下
{
if(!(PIND & key4)) //按键4被按下,则返回键值4
return 4;
if(!(PIND & key3)) //按键3被按下,则返回键值3
return 3;
if(!(PIND & key2)) //按键2被按下,则返回键值2
return 2;
if(PIND & key1) //按键1被按下,则返回键值1
return 1;
}
return 0; //没有按键按下,返回0
}
//us级别的延时函数
void Delayus(unsigned int lus)
{
146: 9c 01 movw r18, r24
148: e4 e0 ldi r30, 0x04 ; 4
14a: f0 e0 ldi r31, 0x00 ; 0
14c: 03 c0 rjmp .+6 ; 0x154 <Delayus+0xe>
*/
void
_delay_loop_2(uint16_t __count)
{
__asm__ volatile (
14e: cf 01 movw r24, r30
150: 01 97 sbiw r24, 0x01 ; 1
152: f1 f7 brne .-4 ; 0x150 <Delayus+0xa>
while(lus--)
154: 21 50 subi r18, 0x01 ; 1
156: 30 40 sbci r19, 0x00 ; 0
158: 8f ef ldi r24, 0xFF ; 255
15a: 2f 3f cpi r18, 0xFF ; 255
15c: 38 07 cpc r19, r24
15e: b9 f7 brne .-18 ; 0x14e <Delayus+0x8>
160: 08 95 ret
00000162 <Delayms>:
{
_delay_loop_2(4); //_delay_loop_2(1)是延时4个时钟周期,参数为3则延时12
//个时钟周期,本实验用12M晶体,则12个时钟周期为12/12=1us
}
}
//ms级别的延时函数
void Delayms(unsigned int lms)
{
162: 9c 01 movw r18, r24
164: 0d c0 rjmp .+26 ; 0x180 <Delayms+0x1e>
while(lms--)
166: 47 ee ldi r20, 0xE7 ; 231
168: 53 e0 ldi r21, 0x03 ; 3
16a: e4 e0 ldi r30, 0x04 ; 4
16c: f0 e0 ldi r31, 0x00 ; 0
*/
void
_delay_loop_2(uint16_t __count)
{
__asm__ volatile (
16e: cf 01 movw r24, r30
170: 01 97 sbiw r24, 0x01 ; 1
172: f1 f7 brne .-4 ; 0x170 <Delayms+0xe>
174: 41 50 subi r20, 0x01 ; 1
176: 50 40 sbci r21, 0x00 ; 0
178: 8f ef ldi r24, 0xFF ; 255
17a: 4f 3f cpi r20, 0xFF ; 255
17c: 58 07 cpc r21, r24
17e: b9 f7 brne .-18 ; 0x16e <Delayms+0xc>
180: 21 50 subi r18, 0x01 ; 1
182: 30 40 sbci r19, 0x00 ; 0
184: 8f ef ldi r24, 0xFF ; 255
186: 2f 3f cpi r18, 0xFF ; 255
188: 38 07 cpc r19, r24
18a: 69 f7 brne .-38 ; 0x166 <Delayms+0x4>
18c: 08 95 ret
0000018e <keyScan>:
18e: 87 9b sbis 0x10, 7 ; 16
190: 09 c0 rjmp .+18 ; 0x1a4 <keyScan+0x16>
192: 86 9b sbis 0x10, 6 ; 16
194: 07 c0 rjmp .+14 ; 0x1a4 <keyScan+0x16>
196: 83 9b sbis 0x10, 3 ; 16
198: 05 c0 rjmp .+10 ; 0x1a4 <keyScan+0x16>
19a: 82 99 sbic 0x10, 2 ; 16
19c: 03 c0 rjmp .+6 ; 0x1a4 <keyScan+0x16>
19e: 80 e0 ldi r24, 0x00 ; 0
1a0: 90 e0 ldi r25, 0x00 ; 0
1a2: 08 95 ret
1a4: 84 e1 ldi r24, 0x14 ; 20
1a6: 90 e0 ldi r25, 0x00 ; 0
1a8: 0e 94 b1 00 call 0x162 ; 0x162 <Delayms>
1ac: 87 9b sbis 0x10, 7 ; 16
1ae: 0d c0 rjmp .+26 ; 0x1ca <keyScan+0x3c>
1b0: 86 9b sbis 0x10, 6 ; 16
1b2: 0b c0 rjmp .+22 ; 0x1ca <keyScan+0x3c>
1b4: 83 9b sbis 0x10, 3 ; 16
1b6: 09 c0 rjmp .+18 ; 0x1ca <keyScan+0x3c>
1b8: 80 b3 in r24, 0x10 ; 16
1ba: 99 27 eor r25, r25
1bc: 96 95 lsr r25
1be: 87 95 ror r24
1c0: 96 95 lsr r25
1c2: 87 95 ror r24
1c4: 81 70 andi r24, 0x01 ; 1
1c6: 90 70 andi r25, 0x00 ; 0
1c8: 08 95 ret
1ca: 81 e0 ldi r24, 0x01 ; 1
1cc: 90 e0 ldi r25, 0x00 ; 0
1ce: 08 95 ret
000001d0 <KeyValue>:
1d0: 0e 94 c7 00 call 0x18e ; 0x18e <keyScan>
1d4: 88 23 and r24, r24
1d6: 19 f4 brne .+6 ; 0x1de <KeyValue+0xe>
1d8: 80 e0 ldi r24, 0x00 ; 0
1da: 90 e0 ldi r25, 0x00 ; 0
1dc: 08 95 ret
1de: 87 99 sbic 0x10, 7 ; 16
1e0: 03 c0 rjmp .+6 ; 0x1e8 <KeyValue+0x18>
1e2: 84 e0 ldi r24, 0x04 ; 4
1e4: 90 e0 ldi r25, 0x00 ; 0
1e6: 08 95 ret
1e8: 86 99 sbic 0x10, 6 ; 16
1ea: 03 c0 rjmp .+6 ; 0x1f2 <KeyValue+0x22>
1ec: 83 e0 ldi r24, 0x03 ; 3
1ee: 90 e0 ldi r25, 0x00 ; 0
1f0: 08 95 ret
1f2: 83 99 sbic 0x10, 3 ; 16
1f4: 03 c0 rjmp .+6 ; 0x1fc <KeyValue+0x2c>
1f6: 82 e0 ldi r24, 0x02 ; 2
1f8: 90 e0 ldi r25, 0x00 ; 0
1fa: 08 95 ret
1fc: 80 b3 in r24, 0x10 ; 16
1fe: 99 27 eor r25, r25
200: 96 95 lsr r25
202: 87 95 ror r24
204: 96 95 lsr r25
206: 87 95 ror r24
208: 81 70 andi r24, 0x01 ; 1
20a: 90 70 andi r25, 0x00 ; 0
20c: 08 95 ret
0000020e <__udivmodqi4>:
20e: 99 1b sub r25, r25
210: 79 e0 ldi r23, 0x09 ; 9
212: 04 c0 rjmp .+8 ; 0x21c <__udivmodqi4_ep>
00000214 <__udivmodqi4_loop>:
214: 99 1f adc r25, r25
216: 96 17 cp r25, r22
218: 08 f0 brcs .+2 ; 0x21c <__udivmodqi4_ep>
21a: 96 1b sub r25, r22
0000021c <__udivmodqi4_ep>:
21c: 88 1f adc r24, r24
21e: 7a 95 dec r23
220: c9 f7 brne .-14 ; 0x214 <__udivmodqi4_loop>
222: 80 95 com r24
224: 08 95 ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -