?? main.lss
字號:
main.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 00000f9e 00000000 00000000 00000094 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000002 00800060 00000f9e 00001032 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 00000021 00800062 00800062 00001034 2**0
ALLOC
3 .noinit 00000000 00800083 00800083 00001034 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 00001034 2**0
CONTENTS
5 .stab 0000036c 00000000 00000000 00001034 2**2
CONTENTS, READONLY, DEBUGGING
6 .stabstr 00000084 00000000 00000000 000013a0 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_aranges 00000014 00000000 00000000 00001424 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_pubnames 000002ba 00000000 00000000 00001438 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_info 00000687 00000000 00000000 000016f2 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_abbrev 0000015c 00000000 00000000 00001d79 2**0
CONTENTS, READONLY, DEBUGGING
11 .debug_line 00000754 00000000 00000000 00001ed5 2**0
CONTENTS, READONLY, DEBUGGING
12 .debug_str 0000000d 00000000 00000000 00002629 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 2a 00 jmp 0x54 <__ctors_end>
4: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
8: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
c: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
10: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
14: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
18: 0c 94 b6 02 jmp 0x56c <__vector_6>
1c: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
20: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
24: 0c 94 f3 03 jmp 0x7e6 <__vector_9>
28: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
2c: 0c 94 33 01 jmp 0x266 <__vector_11>
30: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
34: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
38: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
3c: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
40: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
44: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
48: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
4c: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
50: 0c 94 45 00 jmp 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: d8 e0 ldi r29, 0x08 ; 8
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: ee e9 ldi r30, 0x9E ; 158
68: ff e0 ldi r31, 0x0F ; 15
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: a2 36 cpi r26, 0x62 ; 98
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: a2 e6 ldi r26, 0x62 ; 98
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: a3 38 cpi r26, 0x83 ; 131
82: b1 07 cpc r27, r17
84: e1 f7 brne .-8 ; 0x7e <.do_clear_bss_loop>
86: 0c 94 22 05 jmp 0xa44 <main>
0000008a <__bad_interrupt>:
8a: 0c 94 00 00 jmp 0x0 <__vectors>
0000008e <TIMER0Init>:
//12: 傳輸截止碼低電平 96190us
void TIMER0Init(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
96: 23 97 sbiw r28, 0x03 ; 3
98: 0f b6 in r0, 0x3f ; 63
9a: f8 94 cli
9c: de bf out 0x3e, r29 ; 62
9e: 0f be out 0x3f, r0 ; 63
a0: cd bf out 0x3d, r28 ; 61
BYTE i,j,k;
SetPortIROutPut(); //遙控輸出所使用的IO口設為輸出
a2: 80 91 31 00 lds r24, 0x0031
a6: 80 62 ori r24, 0x20 ; 32
a8: 80 93 31 00 sts 0x0031, r24
SetPortIRHigh(); //設置遙控輸出口為高電平
ac: 80 91 32 00 lds r24, 0x0032
b0: 80 62 ori r24, 0x20 ; 32
b2: 80 93 32 00 sts 0x0032, r24
TCNT_IR=0;//TCNT0=0; //初始化T0計數器
b6: 10 92 52 00 sts 0x0052, r1
//*******************************************設置T0的工作時鐘頻率是主頻的幾分之一
sbi(TCCR0,CS02);
ba: 80 91 53 00 lds r24, 0x0053
be: 84 60 ori r24, 0x04 ; 4
c0: 80 93 53 00 sts 0x0053, r24
cbi(TCCR0,CS01);
c4: 80 91 53 00 lds r24, 0x0053
c8: 8d 7f andi r24, 0xFD ; 253
ca: 80 93 53 00 sts 0x0053, r24
sbi(TCCR0,CS00);
ce: 80 91 53 00 lds r24, 0x0053
d2: 81 60 ori r24, 0x01 ; 1
d4: 80 93 53 00 sts 0x0053, r24
//*******************************************設置T0的工作時鐘頻率是主頻的幾分之一
sendIRstate=0; //初始化遙控碼發送狀態
d8: 10 92 77 00 sts 0x0077, r1
//********************************************計算第一次發送數據后低電平持續的時間 31.5MS--49.5MS
j=IRCUSTOMCODEH;
dc: 80 e1 ldi r24, 0x10 ; 16
de: 8a 83 std Y+2, r24 ; 0x02
k=0;
e0: 1b 82 std Y+3, r1 ; 0x03
for(i=0;i<8;i++)
e2: 19 82 std Y+1, r1 ; 0x01
e4: 89 81 ldd r24, Y+1 ; 0x01
e6: 88 30 cpi r24, 0x08 ; 8
e8: 68 f4 brcc .+26 ; 0x104 <TIMER0Init+0x76>
{
if(j&0x80)
ea: 8a 81 ldd r24, Y+2 ; 0x02
ec: 88 23 and r24, r24
ee: 1c f4 brge .+6 ; 0xf6 <TIMER0Init+0x68>
k++;
f0: 8b 81 ldd r24, Y+3 ; 0x03
f2: 8f 5f subi r24, 0xFF ; 255
f4: 8b 83 std Y+3, r24 ; 0x03
j<<=1;
f6: 8a 81 ldd r24, Y+2 ; 0x02
f8: 88 0f add r24, r24
fa: 8a 83 std Y+2, r24 ; 0x02
fc: 89 81 ldd r24, Y+1 ; 0x01
fe: 8f 5f subi r24, 0xFF ; 255
100: 89 83 std Y+1, r24 ; 0x01
102: f0 cf rjmp .-32 ; 0xe4 <TIMER0Init+0x56>
}
j=IRCUSTOMCODEL;
104: 8f ee ldi r24, 0xEF ; 239
106: 8a 83 std Y+2, r24 ; 0x02
for(i=0;i<8;i++)
108: 19 82 std Y+1, r1 ; 0x01
10a: 89 81 ldd r24, Y+1 ; 0x01
10c: 88 30 cpi r24, 0x08 ; 8
10e: 68 f4 brcc .+26 ; 0x12a <TIMER0Init+0x9c>
{
if(j&0x80)
110: 8a 81 ldd r24, Y+2 ; 0x02
112: 88 23 and r24, r24
114: 1c f4 brge .+6 ; 0x11c <TIMER0Init+0x8e>
k++;
116: 8b 81 ldd r24, Y+3 ; 0x03
118: 8f 5f subi r24, 0xFF ; 255
11a: 8b 83 std Y+3, r24 ; 0x03
j<<=1;
11c: 8a 81 ldd r24, Y+2 ; 0x02
11e: 88 0f add r24, r24
120: 8a 83 std Y+2, r24 ; 0x02
122: 89 81 ldd r24, Y+1 ; 0x01
124: 8f 5f subi r24, 0xFF ; 255
126: 89 83 std Y+1, r24 ; 0x01
128: f0 cf rjmp .-32 ; 0x10a <TIMER0Init+0x7c>
}
sendIRintervaltimecounttemp=TIMER0_108MS-TIMER0_9MS*4-TIMER0_4500US-TIMER0_560US*32-
12a: 8b 81 ldd r24, Y+3 ; 0x03
12c: 28 2f mov r18, r24
12e: 33 27 eor r19, r19
130: c9 01 movw r24, r18
132: 28 0f add r18, r24
134: 39 1f adc r19, r25
136: 89 e5 ldi r24, 0x59 ; 89
138: 90 e0 ldi r25, 0x00 ; 0
13a: 82 1b sub r24, r18
13c: 93 0b sbc r25, r19
13e: 90 93 72 00 sts 0x0072, r25
142: 80 93 71 00 sts 0x0071, r24
146: 23 96 adiw r28, 0x03 ; 3
148: 0f b6 in r0, 0x3f ; 63
14a: f8 94 cli
14c: de bf out 0x3e, r29 ; 62
14e: 0f be out 0x3f, r0 ; 63
150: cd bf out 0x3d, r28 ; 61
152: df 91 pop r29
154: cf 91 pop r28
156: 08 95 ret
00000158 <SendIRCodeStart>:
(TIMER0_1685US-TIMER0_560US)*k;
//*********************************************計算第一次發送數據后低電平持續的時間 31.5MS--49.5MS
}
//向遙控接收口發送一個遙控碼IRdata,客戶碼高位是IRCUSTOMCODEH,客戶碼低位是IRCUSTOMCODEL
void SendIRCodeStart(BYTE IRdata)
{
158: cf 93 push r28
15a: df 93 push r29
15c: cd b7 in r28, 0x3d ; 61
15e: de b7 in r29, 0x3e ; 62
160: 21 97 sbiw r28, 0x01 ; 1
162: 0f b6 in r0, 0x3f ; 63
164: f8 94 cli
166: de bf out 0x3e, r29 ; 62
168: 0f be out 0x3f, r0 ; 63
16a: cd bf out 0x3d, r28 ; 61
16c: 89 83 std Y+1, r24 ; 0x01
sendIRdata=IRdata;
16e: 89 81 ldd r24, Y+1 ; 0x01
170: 80 93 82 00 sts 0x0082, r24
sendIRintervaltimecount=0;
174: 10 92 79 00 sts 0x0079, r1
sendIRstate=1;
178: 81 e0 ldi r24, 0x01 ; 1
17a: 80 93 77 00 sts 0x0077, r24
TCNT_IR=0;
17e: 10 92 52 00 sts 0x0052, r1
sbi(TIMSK,TOV0);//TIMSK |=0x01; //T0中斷允許
182: 80 91 59 00 lds r24, 0x0059
186: 81 60 ori r24, 0x01 ; 1
188: 80 93 59 00 sts 0x0059, r24
18c: 21 96 adiw r28, 0x01 ; 1
18e: 0f b6 in r0, 0x3f ; 63
190: f8 94 cli
192: de bf out 0x3e, r29 ; 62
194: 0f be out 0x3f, r0 ; 63
196: cd bf out 0x3d, r28 ; 61
198: df 91 pop r29
19a: cf 91 pop r28
19c: 08 95 ret
0000019e <SendIRCodeStop>:
}
//停止發送遙控碼
void SendIRCodeStop(void)
{
19e: cf 93 push r28
1a0: df 93 push r29
1a2: cd b7 in r28, 0x3d ; 61
1a4: de b7 in r29, 0x3e ; 62
sendIRstate=0;
1a6: 10 92 77 00 sts 0x0077, r1
SetPortIRHigh();
1aa: 80 91 32 00 lds r24, 0x0032
1ae: 80 62 ori r24, 0x20 ; 32
1b0: 80 93 32 00 sts 0x0032, r24
cbi(TIMSK,TOV0); //TIMSK &=0xFE; //T0中斷關閉
1b4: 80 91 59 00 lds r24, 0x0059
1b8: 8e 7f andi r24, 0xFE ; 254
1ba: 80 93 59 00 sts 0x0059, r24
1be: df 91 pop r29
1c0: cf 91 pop r28
1c2: 08 95 ret
000001c4 <SendIRByte>:
}
//向遙控接收口發送一個字節數據
void SendIRByte(BYTE data)
{
1c4: cf 93 push r28
1c6: df 93 push r29
1c8: cd b7 in r28, 0x3d ; 61
1ca: de b7 in r29, 0x3e ; 62
1cc: 21 97 sbiw r28, 0x01 ; 1
1ce: 0f b6 in r0, 0x3f ; 63
1d0: f8 94 cli
1d2: de bf out 0x3e, r29 ; 62
1d4: 0f be out 0x3f, r0 ; 63
1d6: cd bf out 0x3d, r28 ; 61
1d8: 89 83 std Y+1, r24 ; 0x01
if(sendIRbitcount==0)
1da: 80 91 73 00 lds r24, 0x0073
1de: 88 23 and r24, r24
1e0: 31 f4 brne .+12 ; 0x1ee <SendIRByte+0x2a>
{
sendIRbitcount=16;
1e2: 80 e1 ldi r24, 0x10 ; 16
1e4: 80 93 73 00 sts 0x0073, r24
sendIRdatatemp=data;
1e8: 89 81 ldd r24, Y+1 ; 0x01
1ea: 80 93 76 00 sts 0x0076, r24
}
if(sendIRbitcount&0x01)
1ee: 80 91 73 00 lds r24, 0x0073
1f2: 99 27 eor r25, r25
1f4: 81 70 andi r24, 0x01 ; 1
1f6: 90 70 andi r25, 0x00 ; 0
1f8: 00 97 sbiw r24, 0x00 ; 0
1fa: b1 f0 breq .+44 ; 0x228 <SendIRByte+0x64>
{
SetPortIRHigh();
1fc: 80 91 32 00 lds r24, 0x0032
200: 80 62 ori r24, 0x20 ; 32
202: 80 93 32 00 sts 0x0032, r24
if(sendIRdatatemp&0x80)
206: 80 91 76 00 lds r24, 0x0076
20a: 88 23 and r24, r24
20c: 24 f4 brge .+8 ; 0x216 <SendIRByte+0x52>
sendIRintervaltimecount=TIMER0_1685US;
20e: 83 e0 ldi r24, 0x03 ; 3
210: 80 93 79 00 sts 0x0079, r24
214: 03 c0 rjmp .+6 ; 0x21c <SendIRByte+0x58>
else
sendIRintervaltimecount=TIMER0_560US;
216: 81 e0 ldi r24, 0x01 ; 1
218: 80 93 79 00 sts 0x0079, r24
sendIRdatatemp<<=1;
21c: 80 91 76 00 lds r24, 0x0076
220: 88 0f add r24, r24
222: 80 93 76 00 sts 0x0076, r24
226: 08 c0 rjmp .+16 ; 0x238 <SendIRByte+0x74>
}
else
{
SetPortIRLow();
228: 80 91 32 00 lds r24, 0x0032
22c: 8f 7d andi r24, 0xDF ; 223
22e: 80 93 32 00 sts 0x0032, r24
sendIRintervaltimecount=TIMER0_560US;
232: 81 e0 ldi r24, 0x01 ; 1
234: 80 93 79 00 sts 0x0079, r24
}
sendIRbitcount--;
238: 80 91 73 00 lds r24, 0x0073
23c: 81 50 subi r24, 0x01 ; 1
23e: 80 93 73 00 sts 0x0073, r24
if(sendIRbitcount==0)
242: 80 91 73 00 lds r24, 0x0073
246: 88 23 and r24, r24
248: 29 f4 brne .+10 ; 0x254 <SendIRByte+0x90>
sendIRstate++;
24a: 80 91 77 00 lds r24, 0x0077
24e: 8f 5f subi r24, 0xFF ; 255
250: 80 93 77 00 sts 0x0077, r24
254: 21 96 adiw r28, 0x01 ; 1
256: 0f b6 in r0, 0x3f ; 63
258: f8 94 cli
25a: de bf out 0x3e, r29 ; 62
25c: 0f be out 0x3f, r0 ; 63
25e: cd bf out 0x3d, r28 ; 61
260: df 91 pop r29
262: cf 91 pop r28
264: 08 95 ret
00000266 <__vector_11>:
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -