📄 m16spi.lss
字号:
m16spi.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 0000014a 00000000 00000000 00000054 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .stab 00000378 00000000 00000000 000001a0 2**2
CONTENTS, READONLY, DEBUGGING
2 .stabstr 00000071 00000000 00000000 00000518 2**0
CONTENTS, READONLY, DEBUGGING
3 .debug_aranges 00000020 00000000 00000000 00000589 2**0
CONTENTS, READONLY, DEBUGGING
4 .debug_pubnames 0000005a 00000000 00000000 000005a9 2**0
CONTENTS, READONLY, DEBUGGING
5 .debug_info 0000010f 00000000 00000000 00000603 2**0
CONTENTS, READONLY, DEBUGGING
6 .debug_abbrev 000000a1 00000000 00000000 00000712 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_line 00000170 00000000 00000000 000007b3 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_frame 00000060 00000000 00000000 00000924 2**2
CONTENTS, READONLY, DEBUGGING
9 .debug_str 000000ae 00000000 00000000 00000984 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_loc 00000038 00000000 00000000 00000a32 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 2a 00 jmp 0x54 ; 0x54 <__ctors_end>
4: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
8: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
c: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
10: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
14: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
18: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
1c: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
20: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
24: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
28: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
2c: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
30: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
34: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
38: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
3c: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
40: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
44: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
48: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
4c: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
50: 0c 94 47 00 jmp 0x8e ; 0x8e <__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: 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: ea e4 ldi r30, 0x4A ; 74
68: f1 e0 ldi r31, 0x01 ; 1
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: a0 36 cpi r26, 0x60 ; 96
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: a0 e6 ldi r26, 0x60 ; 96
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: a0 36 cpi r26, 0x60 ; 96
82: b1 07 cpc r27, r17
84: e1 f7 brne .-8 ; 0x7e <.do_clear_bss_loop>
86: 0e 94 90 00 call 0x120 ; 0x120 <main>
8a: 0c 94 a4 00 jmp 0x148 ; 0x148 <_exit>
0000008e <__bad_interrupt>:
8e: 0c 94 00 00 jmp 0 ; 0x0 <__vectors>
00000092 <spi_init>:
#include <avr/io.h>
//SPI initialize
void spi_init(void)
{
92: 88 b3 in r24, 0x18 ; 24
94: 80 6f ori r24, 0xF0 ; 240
96: 88 bb out 0x18, r24 ; 24
PORTB |= (1<<PB4) | (1<<PB5) | (1<<PB6) | (1<<PB7); //
DDRB |= (1<<DDB5) | (1<<DDB7) | (1<<DDB4); //Set MOSI, SCK AND SS as outputs
98: 87 b3 in r24, 0x17 ; 23
9a: 80 6b ori r24, 0xB0 ; 176
9c: 87 bb out 0x17, r24 ; 23
SPCR = 0x73; //SPI使能,低位首发,主机模式,时钟模式00,上升沿采样;时钟速率Fosc/128
9e: 83 e7 ldi r24, 0x73 ; 115
a0: 8d b9 out 0x0d, r24 ; 13
SPSR = 0x00; //SPI2x=0
a2: 1e b8 out 0x0e, r1 ; 14
a4: 08 95 ret
000000a6 <init_devices>:
}
void init_devices(void)
{
a6: 0e 94 49 00 call 0x92 ; 0x92 <spi_init>
aa: 08 95 ret
000000ac <SPI_MasterTransmit>:
spi_init();
}
void SPI_MasterTransmit(char cData)
{
ac: c4 98 cbi 0x18, 4 ; 24
PORTB &=~ (1<<PB4); //强制接收方进入从模式
SPCR |= (1<<MSTR); // MSTR有时会被清零,这里强制进入主机模式
ae: 6c 9a sbi 0x0d, 4 ; 13
PORTB&=~0x10;
b0: c4 98 cbi 0x18, 4 ; 24
//asm("nop");
asm("nop");
b2: 00 00 nop
/* 启动数据传输 */
SPDR =cData;
b4: 8f b9 out 0x0f, r24 ; 15
b6: 01 c0 rjmp .+2 ; 0xba <SPI_MasterTransmit+0xe>
/* 等待传输结束 */
while(!(SPSR & (1<<SPIF)))
asm("nop");
b8: 00 00 nop
ba: 77 9b sbis 0x0e, 7 ; 14
bc: fd cf rjmp .-6 ; 0xb8 <SPI_MasterTransmit+0xc>
PORTB |= (1<<PB4);
be: c4 9a sbi 0x18, 4 ; 24
c0: 08 95 ret
000000c2 <Delay>:
}
void Delay(void) //
{
c2: cf 93 push r28
c4: df 93 push r29
c6: cd b7 in r28, 0x3d ; 61
c8: de b7 in r29, 0x3e ; 62
ca: 24 97 sbiw r28, 0x04 ; 4
cc: 0f b6 in r0, 0x3f ; 63
ce: f8 94 cli
d0: de bf out 0x3e, r29 ; 62
d2: 0f be out 0x3f, r0 ; 63
d4: cd bf out 0x3d, r28 ; 61
volatile unsigned int i,j;
for(i=500;i>0;i--)
d6: 84 ef ldi r24, 0xF4 ; 244
d8: 91 e0 ldi r25, 0x01 ; 1
da: 9c 83 std Y+4, r25 ; 0x04
dc: 8b 83 std Y+3, r24 ; 0x03
de: 28 ec ldi r18, 0xC8 ; 200
e0: 30 e0 ldi r19, 0x00 ; 0
e2: 11 c0 rjmp .+34 ; 0x106 <Delay+0x44>
{
for(j=200;j>0;j--)
e4: 3a 83 std Y+2, r19 ; 0x02
e6: 29 83 std Y+1, r18 ; 0x01
e8: 05 c0 rjmp .+10 ; 0xf4 <Delay+0x32>
ea: 89 81 ldd r24, Y+1 ; 0x01
ec: 9a 81 ldd r25, Y+2 ; 0x02
ee: 01 97 sbiw r24, 0x01 ; 1
f0: 9a 83 std Y+2, r25 ; 0x02
f2: 89 83 std Y+1, r24 ; 0x01
f4: 89 81 ldd r24, Y+1 ; 0x01
f6: 9a 81 ldd r25, Y+2 ; 0x02
f8: 89 2b or r24, r25
fa: b9 f7 brne .-18 ; 0xea <Delay+0x28>
fc: 8b 81 ldd r24, Y+3 ; 0x03
fe: 9c 81 ldd r25, Y+4 ; 0x04
100: 01 97 sbiw r24, 0x01 ; 1
102: 9c 83 std Y+4, r25 ; 0x04
104: 8b 83 std Y+3, r24 ; 0x03
106: 8b 81 ldd r24, Y+3 ; 0x03
108: 9c 81 ldd r25, Y+4 ; 0x04
10a: 89 2b or r24, r25
10c: 59 f7 brne .-42 ; 0xe4 <Delay+0x22>
10e: 24 96 adiw r28, 0x04 ; 4
110: 0f b6 in r0, 0x3f ; 63
112: f8 94 cli
114: de bf out 0x3e, r29 ; 62
116: 0f be out 0x3f, r0 ; 63
118: cd bf out 0x3d, r28 ; 61
11a: df 91 pop r29
11c: cf 91 pop r28
11e: 08 95 ret
00000120 <main>:
;
}
}
int main(void)
{
120: cf 93 push r28
122: df 93 push r29
unsigned int i=0;
init_devices();
124: 0e 94 53 00 call 0xa6 ; 0xa6 <init_devices>
128: 80 e0 ldi r24, 0x00 ; 0
12a: 90 e0 ldi r25, 0x00 ; 0
12c: ec 01 movw r28, r24
while(1)
{
for(i=0;i<255;i++)
{
SPI_MasterTransmit(i);
12e: 8c 2f mov r24, r28
130: 0e 94 56 00 call 0xac ; 0xac <SPI_MasterTransmit>
Delay();
134: 0e 94 61 00 call 0xc2 ; 0xc2 <Delay>
138: ce 01 movw r24, r28
13a: 01 96 adiw r24, 0x01 ; 1
13c: c0 e0 ldi r28, 0x00 ; 0
13e: d0 e0 ldi r29, 0x00 ; 0
140: 8f 3f cpi r24, 0xFF ; 255
142: 91 05 cpc r25, r1
144: a0 f7 brcc .-24 ; 0x12e <main+0xe>
146: f2 cf rjmp .-28 ; 0x12c <main+0xc>
00000148 <_exit>:
148: ff cf rjmp .-2 ; 0x148 <_exit>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -