📄 tc1_4.lss
字号:
TC1_4.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 00000162 00000000 00000000 00000094 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000000 00800060 00000162 000001f6 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 00000000 00800060 00000162 000001f6 2**0
ALLOC
3 .noinit 00000000 00800060 00800060 000001f6 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 000001f6 2**0
CONTENTS
5 .debug_aranges 00000014 00000000 00000000 000001f6 2**0
CONTENTS, READONLY, DEBUGGING
6 .debug_pubnames 0000003a 00000000 00000000 0000020a 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_info 00000146 00000000 00000000 00000244 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_abbrev 0000004b 00000000 00000000 0000038a 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_line 0000013f 00000000 00000000 000003d5 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 64 00 jmp 0xc8
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: e2 e6 ldi r30, 0x62 ; 98
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: a0 36 cpi r26, 0x60 ; 96
72: b1 07 cpc r27, r17
74: d9 f7 brne .-10 ; 0x6c
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
0000007e <.do_clear_bss_loop>:
7e: 1d 92 st X+, r1
00000080 <.do_clear_bss_start>:
80: a0 36 cpi r26, 0x60 ; 96
82: b1 07 cpc r27, r17
84: e1 f7 brne .-8 ; 0x7e
86: 0c 94 a4 00 jmp 0x148
0000008a <__bad_interrupt>:
8a: 0c 94 00 00 jmp 0x0
0000008e <init_timer1>:
//TC1比较匹配A中断初始化
void init_timer1(void)
{
8e: cf 93 push r28
90: df 93 push r29
92: cd b7 in r28, 0x3d ; 61
94: de b7 in r29, 0x3e ; 62
TCCR1A=0XC0; //达到匹配值时,OC1A变高
96: 80 ec ldi r24, 0xC0 ; 192
98: 80 93 4f 00 sts 0x004F, r24
TCCR1B=0X0C; //采用CTC模式,WGM13 WGM12 WGM11 WGM10=0 1 0 0 ;具体见手册,对主频256分频
9c: 8c e0 ldi r24, 0x0C ; 12
9e: 80 93 4e 00 sts 0x004E, r24
TCNT1=0X0000; //置TCNT1初值为0
a2: 10 92 4d 00 sts 0x004D, r1
a6: 10 92 4c 00 sts 0x004C, r1
OCR1A=0X0138; //OCR1A置312,即匹配值为312,
aa: 88 e3 ldi r24, 0x38 ; 56
ac: 91 e0 ldi r25, 0x01 ; 1
ae: 90 93 4b 00 sts 0x004B, r25
b2: 80 93 4a 00 sts 0x004A, r24
TIMSK=0X10; //允许TC1比较匹配A中断
b6: 80 e1 ldi r24, 0x10 ; 16
b8: 80 93 59 00 sts 0x0059, r24
TIFR=0XFF; //写1清中断标志位
bc: 8f ef ldi r24, 0xFF ; 255
be: 80 93 58 00 sts 0x0058, r24
c2: df 91 pop r29
c4: cf 91 pop r28
c6: 08 95 ret
000000c8 <__vector_6>:
}
SIGNAL(SIG_OUTPUT_COMPARE1A)
{
c8: 1f 92 push r1
ca: 0f 92 push r0
cc: 0f b6 in r0, 0x3f ; 63
ce: 0f 92 push r0
d0: 11 24 eor r1, r1
d2: 2f 93 push r18
d4: 3f 93 push r19
d6: 8f 93 push r24
d8: 9f 93 push r25
da: cf 93 push r28
dc: df 93 push r29
de: cd b7 in r28, 0x3d ; 61
e0: de b7 in r29, 0x3e ; 62
if((TCCR1A&(1<<COM1A0))==0)
e2: 80 91 4f 00 lds r24, 0x004F
e6: 99 27 eor r25, r25
e8: 9c 01 movw r18, r24
ea: 00 24 eor r0, r0
ec: 22 0f add r18, r18
ee: 33 1f adc r19, r19
f0: 00 1c adc r0, r0
f2: 22 0f add r18, r18
f4: 33 1f adc r19, r19
f6: 00 1c adc r0, r0
f8: 23 2f mov r18, r19
fa: 30 2d mov r19, r0
fc: 81 e0 ldi r24, 0x01 ; 1
fe: 90 e0 ldi r25, 0x00 ; 0
100: 82 27 eor r24, r18
102: 93 27 eor r25, r19
104: 81 70 andi r24, 0x01 ; 1
106: 90 70 andi r25, 0x00 ; 0
108: 00 97 sbiw r24, 0x00 ; 0
10a: 51 f0 breq .+20 ; 0x120
{TCCR1A=0XC0; //若为0,下次达到匹配值时,OC1A变高
10c: 80 ec ldi r24, 0xC0 ; 192
10e: 80 93 4f 00 sts 0x004F, r24
OCR1A=0X0138; //送下次比较匹配值312
112: 88 e3 ldi r24, 0x38 ; 56
114: 91 e0 ldi r25, 0x01 ; 1
116: 90 93 4b 00 sts 0x004B, r25
11a: 80 93 4a 00 sts 0x004A, r24
11e: 09 c0 rjmp .+18 ; 0x132
}
else
{OCR1A=0X009C; //若为1,送下次比较匹配值156
120: 8c e9 ldi r24, 0x9C ; 156
122: 90 e0 ldi r25, 0x00 ; 0
124: 90 93 4b 00 sts 0x004B, r25
128: 80 93 4a 00 sts 0x004A, r24
TCCR1A=0X80; //下次达到匹配值时,OC1A变低
12c: 80 e8 ldi r24, 0x80 ; 128
12e: 80 93 4f 00 sts 0x004F, r24
132: df 91 pop r29
134: cf 91 pop r28
136: 9f 91 pop r25
138: 8f 91 pop r24
13a: 3f 91 pop r19
13c: 2f 91 pop r18
13e: 0f 90 pop r0
140: 0f be out 0x3f, r0 ; 63
142: 0f 90 pop r0
144: 1f 90 pop r1
146: 18 95 reti
00000148 <main>:
}
}
int main(void)
{
148: cf e5 ldi r28, 0x5F ; 95
14a: d4 e0 ldi r29, 0x04 ; 4
14c: de bf out 0x3e, r29 ; 62
14e: cd bf out 0x3d, r28 ; 61
DDRD|=(1<<PD5); //定义PD5为输出
150: 80 91 31 00 lds r24, 0x0031
154: 80 62 ori r24, 0x20 ; 32
156: 80 93 31 00 sts 0x0031, r24
init_timer1();
15a: 0e 94 47 00 call 0x8e
sei();
15e: 78 94 sei
while(1){}
160: ff cf rjmp .-2 ; 0x160
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -