📄 iotxd.lss
字号:
iotxd.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .data 00000000 00800100 0000027e 00000312 2**0
CONTENTS, ALLOC, LOAD, DATA
1 .text 0000027e 00000000 00000000 00000094 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
2 .bss 00000000 00800100 0000027e 00000312 2**0
ALLOC
3 .noinit 00000000 00800100 00800100 00000312 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 00000312 2**0
CONTENTS
5 .stab 000005c4 00000000 00000000 00000314 2**2
CONTENTS, READONLY, DEBUGGING
6 .stabstr 000005f1 00000000 00000000 000008d8 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 46 00 jmp 0x8c
4: 0c 94 63 00 jmp 0xc6
8: 0c 94 63 00 jmp 0xc6
c: 0c 94 63 00 jmp 0xc6
10: 0c 94 63 00 jmp 0xc6
14: 0c 94 63 00 jmp 0xc6
18: 0c 94 63 00 jmp 0xc6
1c: 0c 94 63 00 jmp 0xc6
20: 0c 94 63 00 jmp 0xc6
24: 0c 94 63 00 jmp 0xc6
28: 0c 94 63 00 jmp 0xc6
2c: 0c 94 63 00 jmp 0xc6
30: 0c 94 63 00 jmp 0xc6
34: 0c 94 63 00 jmp 0xc6
38: 0c 94 63 00 jmp 0xc6
3c: 0c 94 63 00 jmp 0xc6
40: 0c 94 63 00 jmp 0xc6
44: 0c 94 63 00 jmp 0xc6
48: 0c 94 63 00 jmp 0xc6
4c: 0c 94 63 00 jmp 0xc6
50: 0c 94 63 00 jmp 0xc6
54: 0c 94 63 00 jmp 0xc6
58: 0c 94 63 00 jmp 0xc6
5c: 0c 94 63 00 jmp 0xc6
60: 0c 94 63 00 jmp 0xc6
64: 0c 94 63 00 jmp 0xc6
68: 0c 94 63 00 jmp 0xc6
6c: 0c 94 63 00 jmp 0xc6
70: 0c 94 63 00 jmp 0xc6
74: 0c 94 63 00 jmp 0xc6
78: 0c 94 63 00 jmp 0xc6
7c: 0c 94 63 00 jmp 0xc6
80: 0c 94 63 00 jmp 0xc6
84: 0c 94 63 00 jmp 0xc6
88: 0c 94 63 00 jmp 0xc6
0000008c <__ctors_end>:
8c: 11 24 eor r1, r1
8e: 1f be out 0x3f, r1 ; 63
90: cf ef ldi r28, 0xFF ; 255
92: d0 e1 ldi r29, 0x10 ; 16
94: de bf out 0x3e, r29 ; 62
96: cd bf out 0x3d, r28 ; 61
00000098 <__do_copy_data>:
98: 11 e0 ldi r17, 0x01 ; 1
9a: a0 e0 ldi r26, 0x00 ; 0
9c: b1 e0 ldi r27, 0x01 ; 1
9e: ee e7 ldi r30, 0x7E ; 126
a0: f2 e0 ldi r31, 0x02 ; 2
a2: 00 e0 ldi r16, 0x00 ; 0
a4: 0b bf out 0x3b, r16 ; 59
a6: 02 c0 rjmp .+4 ; 0xac
000000a8 <.__do_copy_data_loop>:
a8: 07 90 elpm r0, Z+
aa: 0d 92 st X+, r0
000000ac <.__do_copy_data_start>:
ac: a0 30 cpi r26, 0x00 ; 0
ae: b1 07 cpc r27, r17
b0: d9 f7 brne .-10 ; 0xa8
000000b2 <__do_clear_bss>:
b2: 11 e0 ldi r17, 0x01 ; 1
b4: a0 e0 ldi r26, 0x00 ; 0
b6: b1 e0 ldi r27, 0x01 ; 1
b8: 01 c0 rjmp .+2 ; 0xbc
000000ba <.do_clear_bss_loop>:
ba: 1d 92 st X+, r1
000000bc <.do_clear_bss_start>:
bc: a0 30 cpi r26, 0x00 ; 0
be: b1 07 cpc r27, r17
c0: e1 f7 brne .-8 ; 0xba
c2: 0c 94 d6 00 jmp 0x1ac
000000c6 <__bad_interrupt>:
c6: 0c 94 00 00 jmp 0x0
000000ca <delay_ms>:
#define TXD_H sbi(PORTE,6)
#define TXD_L cbi(PORTE,6)
#define TXD sbi(DDRE,6)
void delay_ms(uint16_t ms)
{
ca: cf 93 push r28
cc: df 93 push r29
ce: cd b7 in r28, 0x3d ; 61
d0: de b7 in r29, 0x3e ; 62
d2: 24 97 sbiw r28, 0x04 ; 4
d4: 0f b6 in r0, 0x3f ; 63
d6: f8 94 cli
d8: de bf out 0x3e, r29 ; 62
da: 0f be out 0x3f, r0 ; 63
dc: cd bf out 0x3d, r28 ; 61
de: 89 83 std Y+1, r24 ; 0x01
e0: 9a 83 std Y+2, r25 ; 0x02
uint16_t i;
for(i=0;i<ms;i++ )
e2: 1b 82 std Y+3, r1 ; 0x03
e4: 1c 82 std Y+4, r1 ; 0x04
e6: 2b 81 ldd r18, Y+3 ; 0x03
e8: 3c 81 ldd r19, Y+4 ; 0x04
ea: 89 81 ldd r24, Y+1 ; 0x01
ec: 9a 81 ldd r25, Y+2 ; 0x02
ee: 28 17 cp r18, r24
f0: 39 07 cpc r19, r25
f2: 08 f0 brcs .+2 ; 0xf6
f4: 0a c0 rjmp .+20 ; 0x10a
{
_delay_loop_2((uint16_t)(250*14.7456)); //16-bit count, 4 cycles/loop
f6: 86 e6 ldi r24, 0x66 ; 102
f8: 9e e0 ldi r25, 0x0E ; 14
fa: 0e 94 24 01 call 0x248
fe: 8b 81 ldd r24, Y+3 ; 0x03
100: 9c 81 ldd r25, Y+4 ; 0x04
102: 01 96 adiw r24, 0x01 ; 1
104: 8b 83 std Y+3, r24 ; 0x03
106: 9c 83 std Y+4, r25 ; 0x04
108: ee cf rjmp .-36 ; 0xe6
} //8MHz/8000=1ms 8000/4=2000=1ms
}
10a: 24 96 adiw r28, 0x04 ; 4
10c: 0f b6 in r0, 0x3f ; 63
10e: f8 94 cli
110: de bf out 0x3e, r29 ; 62
112: 0f be out 0x3f, r0 ; 63
114: cd bf out 0x3d, r28 ; 61
116: df 91 pop r29
118: cf 91 pop r28
11a: 08 95 ret
0000011c <io_uart_TXD>:
void io_uart_TXD(uint8_t data)
{
11c: cf 93 push r28
11e: df 93 push r29
120: cd b7 in r28, 0x3d ; 61
122: de b7 in r29, 0x3e ; 62
124: 22 97 sbiw r28, 0x02 ; 2
126: 0f b6 in r0, 0x3f ; 63
128: f8 94 cli
12a: de bf out 0x3e, r29 ; 62
12c: 0f be out 0x3f, r0 ; 63
12e: cd bf out 0x3d, r28 ; 61
130: 89 83 std Y+1, r24 ; 0x01
uint8_t i=0;
132: 1a 82 std Y+2, r1 ; 0x02
//TXD;
TXD_L;
134: 80 91 23 00 lds r24, 0x0023
138: 8f 7b andi r24, 0xBF ; 191
13a: 80 93 23 00 sts 0x0023, r24
_delay_loop_2(371);
13e: 83 e7 ldi r24, 0x73 ; 115
140: 91 e0 ldi r25, 0x01 ; 1
142: 0e 94 24 01 call 0x248
for(i=0;i<8;i++)
146: 1a 82 std Y+2, r1 ; 0x02
148: 8a 81 ldd r24, Y+2 ; 0x02
14a: 88 30 cpi r24, 0x08 ; 8
14c: 08 f0 brcs .+2 ; 0x150
14e: 1c c0 rjmp .+56 ; 0x188
{
if(data&0x01)
150: 89 81 ldd r24, Y+1 ; 0x01
152: 99 27 eor r25, r25
154: 81 70 andi r24, 0x01 ; 1
156: 90 70 andi r25, 0x00 ; 0
158: 00 97 sbiw r24, 0x00 ; 0
15a: 31 f0 breq .+12 ; 0x168
TXD_H;
15c: 80 91 23 00 lds r24, 0x0023
160: 80 64 ori r24, 0x40 ; 64
162: 80 93 23 00 sts 0x0023, r24
166: 05 c0 rjmp .+10 ; 0x172
else
TXD_L;
168: 80 91 23 00 lds r24, 0x0023
16c: 8f 7b andi r24, 0xBF ; 191
16e: 80 93 23 00 sts 0x0023, r24
_delay_loop_2(371);
172: 83 e7 ldi r24, 0x73 ; 115
174: 91 e0 ldi r25, 0x01 ; 1
176: 0e 94 24 01 call 0x248
data=data>>1;
17a: 89 81 ldd r24, Y+1 ; 0x01
17c: 86 95 lsr r24
17e: 89 83 std Y+1, r24 ; 0x01
180: 8a 81 ldd r24, Y+2 ; 0x02
182: 8f 5f subi r24, 0xFF ; 255
184: 8a 83 std Y+2, r24 ; 0x02
186: e0 cf rjmp .-64 ; 0x148
}
TXD_H;
188: 80 91 23 00 lds r24, 0x0023
18c: 80 64 ori r24, 0x40 ; 64
18e: 80 93 23 00 sts 0x0023, r24
_delay_loop_2(371);
192: 83 e7 ldi r24, 0x73 ; 115
194: 91 e0 ldi r25, 0x01 ; 1
196: 0e 94 24 01 call 0x248
}
19a: 22 96 adiw r28, 0x02 ; 2
19c: 0f b6 in r0, 0x3f ; 63
19e: f8 94 cli
1a0: de bf out 0x3e, r29 ; 62
1a2: 0f be out 0x3f, r0 ; 63
1a4: cd bf out 0x3d, r28 ; 61
1a6: df 91 pop r29
1a8: cf 91 pop r28
1aa: 08 95 ret
000001ac <main>:
int main(void)
{
1ac: ca ef ldi r28, 0xFA ; 250
1ae: d0 e1 ldi r29, 0x10 ; 16
1b0: de bf out 0x3e, r29 ; 62
1b2: cd bf out 0x3d, r28 ; 61
uint8_t i;
uint16_t TIME_COUNT;
uint8_t time_high,time_low;
TXD;
1b4: 80 91 22 00 lds r24, 0x0022
1b8: 80 64 ori r24, 0x40 ; 64
1ba: 80 93 22 00 sts 0x0022, r24
TXD_H;
1be: 80 91 23 00 lds r24, 0x0023
1c2: 80 64 ori r24, 0x40 ; 64
1c4: 80 93 23 00 sts 0x0023, r24
/*delay_ms(3000);
//变量定义
//选择快速PWM模式
TCCR1B|=(1<<WGM12)|(1<<WGM13);
TCCR1A|=3<<WGM10;
//预分频1
TCCR1B&=0xF8;//11111 000
TCCR1B|=0x01;//00000 011
OCR1A=0xfff0;
//OCR1A=0x2880;
_delay_loop_2(371);
//将预分频置0,终止定时器
TCCR1B&=0xF8;//1111 1000
TIME_COUNT=TCNT1;
time_high=TIME_COUNT/256;
time_low=TIME_COUNT%256;
//while(1);
delay_ms(1000);
io_uart_TXD(0x53);
delay_ms(1000);
io_uart_TXD(0x54);
delay_ms(1000);
io_uart_TXD(0x55);
delay_ms(1000);
io_uart_TXD(time_high);
delay_ms(1000);
io_uart_TXD(time_low);
delay_ms(1000);*/
io_uart_TXD(0x51);
1c8: 81 e5 ldi r24, 0x51 ; 81
1ca: 0e 94 8e 00 call 0x11c
io_uart_TXD(0x52);
1ce: 82 e5 ldi r24, 0x52 ; 82
1d0: 0e 94 8e 00 call 0x11c
io_uart_TXD(0x33);
1d4: 83 e3 ldi r24, 0x33 ; 51
1d6: 0e 94 8e 00 call 0x11c
io_uart_TXD(0x54);
1da: 84 e5 ldi r24, 0x54 ; 84
1dc: 0e 94 8e 00 call 0x11c
io_uart_TXD(0x55);
1e0: 85 e5 ldi r24, 0x55 ; 85
1e2: 0e 94 8e 00 call 0x11c
io_uart_TXD(0x34);
1e6: 84 e3 ldi r24, 0x34 ; 52
1e8: 0e 94 8e 00 call 0x11c
io_uart_TXD(0x35);
1ec: 85 e3 ldi r24, 0x35 ; 53
1ee: 0e 94 8e 00 call 0x11c
io_uart_TXD(0x56);
1f2: 86 e5 ldi r24, 0x56 ; 86
1f4: 0e 94 8e 00 call 0x11c
io_uart_TXD(0x37);
1f8: 87 e3 ldi r24, 0x37 ; 55
1fa: 0e 94 8e 00 call 0x11c
for(i=0;;i++)
1fe: 19 82 std Y+1, r1 ; 0x01
{
io_uart_TXD(i);
200: 89 81 ldd r24, Y+1 ; 0x01
202: 0e 94 8e 00 call 0x11c
if(i==0xff)
206: 89 81 ldd r24, Y+1 ; 0x01
208: 8f 3f cpi r24, 0xFF ; 255
20a: 09 f4 brne .+2 ; 0x20e
break;
20c: 04 c0 rjmp .+8 ; 0x216
20e: 89 81 ldd r24, Y+1 ; 0x01
210: 8f 5f subi r24, 0xFF ; 255
212: 89 83 std Y+1, r24 ; 0x01
214: f5 cf rjmp .-22 ; 0x200
//delay_ms(1000);
}
for(i=0;;i++)
216: 19 82 std Y+1, r1 ; 0x01
{
io_uart_TXD(i);
218: 89 81 ldd r24, Y+1 ; 0x01
21a: 0e 94 8e 00 call 0x11c
if(i==0xff)
21e: 89 81 ldd r24, Y+1 ; 0x01
220: 8f 3f cpi r24, 0xFF ; 255
222: 09 f4 brne .+2 ; 0x226
break;
224: 04 c0 rjmp .+8 ; 0x22e
226: 89 81 ldd r24, Y+1 ; 0x01
228: 8f 5f subi r24, 0xFF ; 255
22a: 89 83 std Y+1, r24 ; 0x01
22c: f5 cf rjmp .-22 ; 0x218
//delay_ms(1000);
}
for(i=0;;i++)
22e: 19 82 std Y+1, r1 ; 0x01
{
io_uart_TXD(i);
230: 89 81 ldd r24, Y+1 ; 0x01
232: 0e 94 8e 00 call 0x11c
if(i==0xff)
236: 89 81 ldd r24, Y+1 ; 0x01
238: 8f 3f cpi r24, 0xFF ; 255
23a: 09 f4 brne .+2 ; 0x23e
break;
23c: 04 c0 rjmp .+8 ; 0x246
23e: 89 81 ldd r24, Y+1 ; 0x01
240: 8f 5f subi r24, 0xFF ; 255
242: 89 83 std Y+1, r24 ; 0x01
244: f5 cf rjmp .-22 ; 0x230
//delay_ms(1000);
}
while(1);
246: ff cf rjmp .-2 ; 0x246
00000248 <_delay_loop_2>:
/* 16-bit count, 4 cycles/loop */
static __inline__ void
_delay_loop_2(uint16_t __count)
{
248: cf 93 push r28
24a: df 93 push r29
24c: cd b7 in r28, 0x3d ; 61
24e: de b7 in r29, 0x3e ; 62
250: 22 97 sbiw r28, 0x02 ; 2
252: 0f b6 in r0, 0x3f ; 63
254: f8 94 cli
256: de bf out 0x3e, r29 ; 62
258: 0f be out 0x3f, r0 ; 63
25a: cd bf out 0x3d, r28 ; 61
25c: 89 83 std Y+1, r24 ; 0x01
25e: 9a 83 std Y+2, r25 ; 0x02
asm volatile (
260: 89 81 ldd r24, Y+1 ; 0x01
262: 9a 81 ldd r25, Y+2 ; 0x02
264: 01 97 sbiw r24, 0x01 ; 1
266: f1 f7 brne .-4 ; 0x264
268: 89 83 std Y+1, r24 ; 0x01
26a: 9a 83 std Y+2, r25 ; 0x02
"1: sbiw %0,1" "\n\t"
"brne 1b"
: "=w" (__count)
: "0" (__count)
);
}
26c: 22 96 adiw r28, 0x02 ; 2
26e: 0f b6 in r0, 0x3f ; 63
270: f8 94 cli
272: de bf out 0x3e, r29 ; 62
274: 0f be out 0x3f, r0 ; 63
276: cd bf out 0x3d, r28 ; 61
278: df 91 pop r29
27a: cf 91 pop r28
27c: 08 95 ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -