📄 main.lss
字号:
main.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 0000009e 00000000 00000000 00000094 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000000 00800060 0000009e 00000132 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 00000000 00800060 0000009e 00000132 2**0
ALLOC
3 .noinit 00000000 00800060 00800060 00000132 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 00000132 2**0
CONTENTS
5 .stab 00000348 00000000 00000000 00000134 2**2
CONTENTS, READONLY, DEBUGGING
6 .stabstr 00000548 00000000 00000000 0000047c 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 0a c0 rjmp .+20 ; 0x16
2: 22 c0 rjmp .+68 ; 0x48
4: 21 c0 rjmp .+66 ; 0x48
6: 20 c0 rjmp .+64 ; 0x48
8: 1f c0 rjmp .+62 ; 0x48
a: 1e c0 rjmp .+60 ; 0x48
c: 1d c0 rjmp .+58 ; 0x48
e: 1c c0 rjmp .+56 ; 0x48
10: 1b c0 rjmp .+54 ; 0x48
12: 1a c0 rjmp .+52 ; 0x48
14: 19 c0 rjmp .+50 ; 0x48
00000016 <__ctors_end>:
16: 11 24 eor r1, r1
18: 1f be out 0x3f, r1 ; 63
1a: cf ed ldi r28, 0xDF ; 223
1c: cd bf out 0x3d, r28 ; 61
0000001e <__do_copy_data>:
1e: 10 e0 ldi r17, 0x00 ; 0
20: a0 e6 ldi r26, 0x60 ; 96
22: b0 e0 ldi r27, 0x00 ; 0
24: ee e9 ldi r30, 0x9E ; 158
26: f0 e0 ldi r31, 0x00 ; 0
28: 03 c0 rjmp .+6 ; 0x30
0000002a <.do_copy_data_loop>:
2a: c8 95 lpm
2c: 31 96 adiw r30, 0x01 ; 1
2e: 0d 92 st X+, r0
00000030 <.do_copy_data_start>:
30: a0 36 cpi r26, 0x60 ; 96
32: b1 07 cpc r27, r17
34: d1 f7 brne .-12 ; 0x2a
00000036 <__do_clear_bss>:
36: 10 e0 ldi r17, 0x00 ; 0
38: a0 e6 ldi r26, 0x60 ; 96
3a: b0 e0 ldi r27, 0x00 ; 0
3c: 01 c0 rjmp .+2 ; 0x40
0000003e <.do_clear_bss_loop>:
3e: 1d 92 st X+, r1
00000040 <.do_clear_bss_start>:
40: a0 36 cpi r26, 0x60 ; 96
42: b1 07 cpc r27, r17
44: e1 f7 brne .-8 ; 0x3e
46: 0d c0 rjmp .+26 ; 0x62
00000048 <__bad_interrupt>:
48: db cf rjmp .-74 ; 0x0
0000004a <DelayMs>:
void DelayMs(uint ms)
{
uint i;
for(i=0;i<ms;i++)
4a: 00 97 sbiw r24, 0x00 ; 0
4c: 49 f0 breq .+18 ; 0x60
4e: 28 2f mov r18, r24
50: 39 2f mov r19, r25
/* 16-bit count, 4 cycles/loop */
static __inline__ void
_delay_loop_2(uint16_t __count)
{
52: 88 ee ldi r24, 0xE8 ; 232
54: 93 e0 ldi r25, 0x03 ; 3
asm volatile (
56: 01 97 sbiw r24, 0x01 ; 1
58: f1 f7 brne .-4 ; 0x56
5a: 21 50 subi r18, 0x01 ; 1
5c: 30 40 sbci r19, 0x00 ; 0
5e: c9 f7 brne .-14 ; 0x52
60: 08 95 ret
00000062 <main>:
_delay_loop_2(FREQ * 250);
}
int main (void)
{
62: cf ed ldi r28, 0xDF ; 223
64: d0 e0 ldi r29, 0x00 ; 0
66: de bf out 0x3e, r29 ; 62
68: cd bf out 0x3d, r28 ; 61
uchar direction=1;
6a: 11 e0 ldi r17, 0x01 ; 1
uchar pwm=0;
6c: c0 e0 ldi r28, 0x00 ; 0
TCCR1A = _BV (PWM10) | _BV (COM1A1); // 8位PWM模式 , 向上计数时匹配清除OC1
6e: 81 e8 ldi r24, 0x81 ; 129
70: 8f bd out 0x2f, r24 ; 47
DDRB= _BV (PB3); //PWM引脚PB3方向设置为输出
72: 88 e0 ldi r24, 0x08 ; 8
74: 87 bb out 0x17, r24 ; 23
TCCR1B = _BV (CS11); //启动PWM 时钟源:CK/8 PWM 频率为 4MHz/8/512=976Hz
76: 82 e0 ldi r24, 0x02 ; 2
78: 8e bd out 0x2e, r24 ; 46
while(1)
{
if(direction)
7a: 11 23 and r17, r17
7c: 29 f0 breq .+10 ; 0x88
{
if(++pwm==254)
7e: cf 5f subi r28, 0xFF ; 255
80: ce 3f cpi r28, 0xFE ; 254
82: 29 f4 brne .+10 ; 0x8e
direction=0;
84: 10 e0 ldi r17, 0x00 ; 0
86: 03 c0 rjmp .+6 ; 0x8e
}
else
{
if(--pwm==0)
88: c1 50 subi r28, 0x01 ; 1
8a: 09 f4 brne .+2 ; 0x8e
direction=1;
8c: 11 e0 ldi r17, 0x01 ; 1
}
OCR1=pwm;
8e: 8c 2f mov r24, r28
90: 99 27 eor r25, r25
92: 9b bd out 0x2b, r25 ; 43
94: 8a bd out 0x2a, r24 ; 42
DelayMs(10);
96: 8a e0 ldi r24, 0x0A ; 10
98: 90 e0 ldi r25, 0x00 ; 0
9a: d7 df rcall .-82 ; 0x4a
9c: ee cf rjmp .-36 ; 0x7a
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -