📄 main.lss
字号:
main.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 000000b4 00000000 00000000 00000094 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000000 00800060 000000b4 00000148 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 00000001 00800060 00800060 00000148 2**0
ALLOC
3 .noinit 00000000 00800061 00800061 00000148 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 00000148 2**0
CONTENTS
5 .stab 0000036c 00000000 00000000 00000148 2**2
CONTENTS, READONLY, DEBUGGING
6 .stabstr 00000084 00000000 00000000 000004b4 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_aranges 00000014 00000000 00000000 00000538 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_pubnames 00000040 00000000 00000000 0000054c 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_info 0000010d 00000000 00000000 0000058c 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_abbrev 000000db 00000000 00000000 00000699 2**0
CONTENTS, READONLY, DEBUGGING
11 .debug_line 00000113 00000000 00000000 00000774 2**0
CONTENTS, READONLY, DEBUGGING
12 .debug_str 00000093 00000000 00000000 00000887 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 12 c0 rjmp .+36 ; 0x26 <__ctors_end>
2: 2b c0 rjmp .+86 ; 0x5a <__bad_interrupt>
4: 2a c0 rjmp .+84 ; 0x5a <__bad_interrupt>
6: 29 c0 rjmp .+82 ; 0x5a <__bad_interrupt>
8: 28 c0 rjmp .+80 ; 0x5a <__bad_interrupt>
a: 27 c0 rjmp .+78 ; 0x5a <__bad_interrupt>
c: 26 c0 rjmp .+76 ; 0x5a <__bad_interrupt>
e: 25 c0 rjmp .+74 ; 0x5a <__bad_interrupt>
10: 24 c0 rjmp .+72 ; 0x5a <__bad_interrupt>
12: 23 c0 rjmp .+70 ; 0x5a <__bad_interrupt>
14: 22 c0 rjmp .+68 ; 0x5a <__bad_interrupt>
16: 21 c0 rjmp .+66 ; 0x5a <__bad_interrupt>
18: 20 c0 rjmp .+64 ; 0x5a <__bad_interrupt>
1a: 1f c0 rjmp .+62 ; 0x5a <__bad_interrupt>
1c: 1e c0 rjmp .+60 ; 0x5a <__bad_interrupt>
1e: 1d c0 rjmp .+58 ; 0x5a <__bad_interrupt>
20: 1c c0 rjmp .+56 ; 0x5a <__bad_interrupt>
22: 1b c0 rjmp .+54 ; 0x5a <__bad_interrupt>
24: 1a c0 rjmp .+52 ; 0x5a <__bad_interrupt>
00000026 <__ctors_end>:
26: 11 24 eor r1, r1
28: 1f be out 0x3f, r1 ; 63
2a: cf e5 ldi r28, 0x5F ; 95
2c: d4 e0 ldi r29, 0x04 ; 4
2e: de bf out 0x3e, r29 ; 62
30: cd bf out 0x3d, r28 ; 61
00000032 <__do_copy_data>:
32: 10 e0 ldi r17, 0x00 ; 0
34: a0 e6 ldi r26, 0x60 ; 96
36: b0 e0 ldi r27, 0x00 ; 0
38: e4 eb ldi r30, 0xB4 ; 180
3a: f0 e0 ldi r31, 0x00 ; 0
3c: 02 c0 rjmp .+4 ; 0x42 <.do_copy_data_start>
0000003e <.do_copy_data_loop>:
3e: 05 90 lpm r0, Z+
40: 0d 92 st X+, r0
00000042 <.do_copy_data_start>:
42: a0 36 cpi r26, 0x60 ; 96
44: b1 07 cpc r27, r17
46: d9 f7 brne .-10 ; 0x3e <.do_copy_data_loop>
00000048 <__do_clear_bss>:
48: 10 e0 ldi r17, 0x00 ; 0
4a: a0 e6 ldi r26, 0x60 ; 96
4c: b0 e0 ldi r27, 0x00 ; 0
4e: 01 c0 rjmp .+2 ; 0x52 <.do_clear_bss_start>
00000050 <.do_clear_bss_loop>:
50: 1d 92 st X+, r1
00000052 <.do_clear_bss_start>:
52: a1 36 cpi r26, 0x61 ; 97
54: b1 07 cpc r27, r17
56: e1 f7 brne .-8 ; 0x50 <.do_clear_bss_loop>
58: 21 c0 rjmp .+66 ; 0x9c <main>
0000005a <__bad_interrupt>:
5a: d2 cf rjmp .-92 ; 0x0 <__vectors>
0000005c <delayMs>:
uchar m;
///延时1Ms
void delayMs(uint t)
{
5c: ac 01 movw r20, r24
uint i=0;
5e: 20 e0 ldi r18, 0x00 ; 0
60: 30 e0 ldi r19, 0x00 ; 0
for(;i<t;i++)
62: 24 17 cp r18, r20
64: 35 07 cpc r19, r21
66: 38 f4 brcc .+14 ; 0x76 <delayMs+0x1a>
milliseconds can be achieved.
*/
void
_delay_loop_2(uint16_t __count)
{
68: 88 ee ldi r24, 0xE8 ; 232
6a: 93 e0 ldi r25, 0x03 ; 3
__asm__ volatile (
6c: 01 97 sbiw r24, 0x01 ; 1
6e: f1 f7 brne .-4 ; 0x6c <delayMs+0x10>
70: 2f 5f subi r18, 0xFF ; 255
72: 3f 4f sbci r19, 0xFF ; 255
74: f6 cf rjmp .-20 ; 0x62 <delayMs+0x6>
76: 08 95 ret
00000078 <time1_PWM_init>:
_delay_loop_2(250*4);
}
/////T1的PWM
void time1_PWM_init(void)
{ ///8M/2*1024*TOP=4Hz
OCR1AH=0x03; ///定时TOP值 时间约为5秒 频率为0.2Hz
78: 83 e0 ldi r24, 0x03 ; 3
7a: 8b bd out 0x2b, r24 ; 43
OCR1AL=0xff; ///8000000/(1024*0.2)=19531 39061
7c: 9f ef ldi r25, 0xFF ; 255
7e: 9a bd out 0x2a, r25 ; 42
OCR1BH=0x01; ///设定0C1B的PWM值 时间约为2秒 占空比40%
80: 81 e0 ldi r24, 0x01 ; 1
82: 89 bd out 0x29, r24 ; 41
OCR1BL=0xff; ///8000000/(1024*0.5)=7812.5 15624
84: 98 bd out 0x28, r25 ; 40
TCCR1B|=_BV(CS12)|_BV(CS11)|_BV(CS10); ///1024分频
86: 8e b5 in r24, 0x2e ; 46
88: 87 60 ori r24, 0x07 ; 7
8a: 8e bd out 0x2e, r24 ; 46
TCCR1A|=_BV(WGM10)|_BV(COM1B0); ///PWM模式9 OCB1输出PWM
8c: 8f b5 in r24, 0x2f ; 47
8e: 81 61 ori r24, 0x11 ; 17
90: 8f bd out 0x2f, r24 ; 47
TCCR1B=_BV(WGM13)/*|_BV(WGM12)*/; ///OCA1为普通I/O口
92: 80 e1 ldi r24, 0x10 ; 16
94: 8e bd out 0x2e, r24 ; 46
TCNT1H=0;
96: 1d bc out 0x2d, r1 ; 45
TCNT1L=0;
98: 1c bc out 0x2c, r1 ; 44
9a: 08 95 ret
0000009c <main>:
}
int main(void)
{
9c: cf e5 ldi r28, 0x5F ; 95
9e: d4 e0 ldi r29, 0x04 ; 4
a0: de bf out 0x3e, r29 ; 62
a2: cd bf out 0x3d, r28 ; 61
DDRD=0xff;
a4: 8f ef ldi r24, 0xFF ; 255
a6: 81 bb out 0x11, r24 ; 17
DDRB|=_BV(PB2);
a8: ba 9a sbi 0x17, 2 ; 23
PORTB&=~_BV(PB2); //设置0CB1为输出
aa: c2 98 cbi 0x18, 2 ; 24
time1_PWM_init();
ac: e5 df rcall .-54 ; 0x78 <time1_PWM_init>
ae: 8f e0 ldi r24, 0x0F ; 15
while(1)
{
PORTD=0x0F;
b0: 82 bb out 0x12, r24 ; 18
b2: fe cf rjmp .-4 ; 0xb0 <main+0x14>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -