📄 tc1_6.lss
字号:
TC1_6.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 00000248 00000000 00000000 00000094 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000082 00800060 00000248 000002dc 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 00000006 008000e2 008000e2 0000035e 2**0
ALLOC
3 .noinit 00000000 008000e8 008000e8 0000035e 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 0000035e 2**0
CONTENTS
5 .debug_aranges 00000014 00000000 00000000 0000035e 2**0
CONTENTS, READONLY, DEBUGGING
6 .debug_pubnames 0000008d 00000000 00000000 00000372 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_info 0000026e 00000000 00000000 000003ff 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_abbrev 00000079 00000000 00000000 0000066d 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_line 0000016f 00000000 00000000 000006e6 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_str 00000036 00000000 00000000 00000855 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 68 00 jmp 0xd0
1c: 0c 94 b5 00 jmp 0x16a
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: e8 e4 ldi r30, 0x48 ; 72
68: f2 e0 ldi r31, 0x02 ; 2
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: a2 3e cpi r26, 0xE2 ; 226
72: b1 07 cpc r27, r17
74: d9 f7 brne .-10 ; 0x6c
00000076 <__do_clear_bss>:
76: 10 e0 ldi r17, 0x00 ; 0
78: a2 ee ldi r26, 0xE2 ; 226
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: a8 3e cpi r26, 0xE8 ; 232
82: b1 07 cpc r27, r17
84: e1 f7 brne .-8 ; 0x7e
86: 0c 94 02 01 jmp 0x204
0000008a <__bad_interrupt>:
8a: 0c 94 00 00 jmp 0x0
0000008e <init>:
//unsigned char sin_table[128] ;
//初始化计数器
void init(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|=(1<<COM1A1)|(1<<COM1B1)|(1<<WGM11);//升序记数时比较匹配将清零OC1A/OC1B,降序记数时比较匹配将置位OC1A/OC1B
96: 80 91 4f 00 lds r24, 0x004F
9a: 82 6a ori r24, 0xA2 ; 162
9c: 80 93 4f 00 sts 0x004F, r24
TCCR1B|=(1<<WGM13)|(1<<CS10); //10模式,相位修正的PWM模式,TOP值由ICR1决定,时钟不分频
a0: 80 91 4e 00 lds r24, 0x004E
a4: 81 61 ori r24, 0x11 ; 17
a6: 80 93 4e 00 sts 0x004E, r24
ICR1=250; //置TOP值
aa: 8a ef ldi r24, 0xFA ; 250
ac: 90 e0 ldi r25, 0x00 ; 0
ae: 90 93 47 00 sts 0x0047, r25
b2: 80 93 46 00 sts 0x0046, r24
DDRD|=(1<<PD5)|(1<<PD4); //PD4、PD5设为输出
b6: 80 91 31 00 lds r24, 0x0031
ba: 80 63 ori r24, 0x30 ; 48
bc: 80 93 31 00 sts 0x0031, r24
TIMSK|=(1<<OCIE1A)|(1<<OCIE1B); //允许计数器比较匹配A、B中断
c0: 80 91 59 00 lds r24, 0x0059
c4: 88 61 ori r24, 0x18 ; 24
c6: 80 93 59 00 sts 0x0059, r24
ca: df 91 pop r29
cc: cf 91 pop r28
ce: 08 95 ret
000000d0 <__vector_6>:
}
//输出比较A中断服务程序
SIGNAL(SIG_OUTPUT_COMPARE1A)
{
d0: 1f 92 push r1
d2: 0f 92 push r0
d4: 0f b6 in r0, 0x3f ; 63
d6: 0f 92 push r0
d8: 11 24 eor r1, r1
da: 2f 93 push r18
dc: 3f 93 push r19
de: 4f 93 push r20
e0: 5f 93 push r21
e2: 6f 93 push r22
e4: 7f 93 push r23
e6: 8f 93 push r24
e8: 9f 93 push r25
ea: af 93 push r26
ec: bf 93 push r27
ee: ef 93 push r30
f0: ff 93 push r31
f2: cf 93 push r28
f4: df 93 push r29
f6: cd b7 in r28, 0x3d ; 61
f8: de b7 in r29, 0x3e ; 62
i_a+=I_A; //每隔8个取一个数,新样点指针
fa: 90 91 e2 00 lds r25, 0x00E2
fe: 80 91 60 00 lds r24, 0x0060
102: 89 0f add r24, r25
104: 80 93 e2 00 sts 0x00E2, r24
if (i_a>127)i_a-=128; //样点指针调整
108: 80 91 e2 00 lds r24, 0x00E2
10c: 88 23 and r24, r24
10e: 3c f4 brge .+14 ; 0x11e
110: 80 e8 ldi r24, 0x80 ; 128
112: 90 91 e2 00 lds r25, 0x00E2
116: 98 1b sub r25, r24
118: 89 2f mov r24, r25
11a: 80 93 e2 00 sts 0x00E2, r24
memcpy (ocr_rega,auc_SinParam+i_a,1); //从EEPROM中取出正弦数据
11e: 80 91 e2 00 lds r24, 0x00E2
122: 99 27 eor r25, r25
124: 8e 59 subi r24, 0x9E ; 158
126: 9f 4f sbci r25, 0xFF ; 255
128: 41 e0 ldi r20, 0x01 ; 1
12a: 50 e0 ldi r21, 0x00 ; 0
12c: bc 01 movw r22, r24
12e: 84 ee ldi r24, 0xE4 ; 228
130: 90 e0 ldi r25, 0x00 ; 0
132: 0e 94 1b 01 call 0x236
OCRA=ocr_rega[0]; //更新OCR1A
136: 80 91 e4 00 lds r24, 0x00E4
13a: 99 27 eor r25, r25
13c: 90 93 4b 00 sts 0x004B, r25
140: 80 93 4a 00 sts 0x004A, r24
144: df 91 pop r29
146: cf 91 pop r28
148: ff 91 pop r31
14a: ef 91 pop r30
14c: bf 91 pop r27
14e: af 91 pop r26
150: 9f 91 pop r25
152: 8f 91 pop r24
154: 7f 91 pop r23
156: 6f 91 pop r22
158: 5f 91 pop r21
15a: 4f 91 pop r20
15c: 3f 91 pop r19
15e: 2f 91 pop r18
160: 0f 90 pop r0
162: 0f be out 0x3f, r0 ; 63
164: 0f 90 pop r0
166: 1f 90 pop r1
168: 18 95 reti
0000016a <__vector_7>:
}
//输出比较B中断服务程序
SIGNAL(SIG_OUTPUT_COMPARE1B)
{
16a: 1f 92 push r1
16c: 0f 92 push r0
16e: 0f b6 in r0, 0x3f ; 63
170: 0f 92 push r0
172: 11 24 eor r1, r1
174: 2f 93 push r18
176: 3f 93 push r19
178: 4f 93 push r20
17a: 5f 93 push r21
17c: 6f 93 push r22
17e: 7f 93 push r23
180: 8f 93 push r24
182: 9f 93 push r25
184: af 93 push r26
186: bf 93 push r27
188: ef 93 push r30
18a: ff 93 push r31
18c: cf 93 push r28
18e: df 93 push r29
190: cd b7 in r28, 0x3d ; 61
192: de b7 in r29, 0x3e ; 62
i_b+=I_B; //每隔8个取一个数,新样点指针
194: 90 91 e3 00 lds r25, 0x00E3
198: 80 91 61 00 lds r24, 0x0061
19c: 89 0f add r24, r25
19e: 80 93 e3 00 sts 0x00E3, r24
if (i_b>127)i_b-=128; //样点指针调整
1a2: 80 91 e3 00 lds r24, 0x00E3
1a6: 88 23 and r24, r24
1a8: 3c f4 brge .+14 ; 0x1b8
1aa: 80 e8 ldi r24, 0x80 ; 128
1ac: 90 91 e3 00 lds r25, 0x00E3
1b0: 98 1b sub r25, r24
1b2: 89 2f mov r24, r25
1b4: 80 93 e3 00 sts 0x00E3, r24
memcpy(ocr_regb,auc_SinParam+i_b,1); //从EEPROM中取出正弦数据
1b8: 80 91 e3 00 lds r24, 0x00E3
1bc: 99 27 eor r25, r25
1be: 8e 59 subi r24, 0x9E ; 158
1c0: 9f 4f sbci r25, 0xFF ; 255
1c2: 41 e0 ldi r20, 0x01 ; 1
1c4: 50 e0 ldi r21, 0x00 ; 0
1c6: bc 01 movw r22, r24
1c8: 86 ee ldi r24, 0xE6 ; 230
1ca: 90 e0 ldi r25, 0x00 ; 0
1cc: 0e 94 1b 01 call 0x236
OCRB=ocr_regb[0]; //更新OCR1B
1d0: 80 91 e6 00 lds r24, 0x00E6
1d4: 99 27 eor r25, r25
1d6: 90 93 49 00 sts 0x0049, r25
1da: 80 93 48 00 sts 0x0048, r24
1de: df 91 pop r29
1e0: cf 91 pop r28
1e2: ff 91 pop r31
1e4: ef 91 pop r30
1e6: bf 91 pop r27
1e8: af 91 pop r26
1ea: 9f 91 pop r25
1ec: 8f 91 pop r24
1ee: 7f 91 pop r23
1f0: 6f 91 pop r22
1f2: 5f 91 pop r21
1f4: 4f 91 pop r20
1f6: 3f 91 pop r19
1f8: 2f 91 pop r18
1fa: 0f 90 pop r0
1fc: 0f be out 0x3f, r0 ; 63
1fe: 0f 90 pop r0
200: 1f 90 pop r1
202: 18 95 reti
00000204 <main>:
}
//主程序,主要是初始化和进入休眠模式。因为利用AVR的PWM输出实现波形产生,不占用CPU的计算资源,CPU
//可以工作于休眠模式,有助于实现低功耗的设计
int main(void)
{
204: cf e5 ldi r28, 0x5F ; 95
206: d4 e0 ldi r29, 0x04 ; 4
208: de bf out 0x3e, r29 ; 62
20a: cd bf out 0x3d, r28 ; 61
//eeprom_read_block(buf, sin_table, 128); //
init(); //调用初始化
20c: 0e 94 47 00 call 0x8e
sei(); //开总中断
210: 78 94 sei
set_sleep_mode(SLEEP_MODE_IDLE); //设置休眠模式为空闲模式
212: 8f e4 ldi r24, 0x4F ; 79
214: 90 91 55 00 lds r25, 0x0055
218: 89 23 and r24, r25
21a: 80 93 55 00 sts 0x0055, r24
while(1)
{
sleep_mode(); //进入休眠状态
21e: 80 91 55 00 lds r24, 0x0055
222: 80 64 ori r24, 0x40 ; 64
224: 80 93 55 00 sts 0x0055, r24
228: 88 95 sleep
22a: 80 91 55 00 lds r24, 0x0055
22e: 8f 7b andi r24, 0xBF ; 191
230: 80 93 55 00 sts 0x0055, r24
234: f4 cf rjmp .-24 ; 0x21e
00000236 <memcpy>:
236: fb 01 movw r30, r22
238: dc 01 movw r26, r24
23a: 02 c0 rjmp .+4 ; 0x240
0000023c <.memcpy_loop>:
23c: 01 90 ld r0, Z+
23e: 0d 92 st X+, r0
00000240 <.memcpy_start>:
240: 41 50 subi r20, 0x01 ; 1
242: 50 40 sbci r21, 0x00 ; 0
244: d8 f7 brcc .-10 ; 0x23c
246: 08 95 ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -