📄 main.lss
字号:
main.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .data 00000008 00800100 0000015a 000001ce 2**0
CONTENTS, ALLOC, LOAD, DATA
1 .text 0000015a 00000000 00000000 00000074 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
2 .debug_aranges 00000020 00000000 00000000 000001d6 2**0
CONTENTS, READONLY, DEBUGGING
3 .debug_pubnames 00000033 00000000 00000000 000001f6 2**0
CONTENTS, READONLY, DEBUGGING
4 .debug_info 000001be 00000000 00000000 00000229 2**0
CONTENTS, READONLY, DEBUGGING
5 .debug_abbrev 00000163 00000000 00000000 000003e7 2**0
CONTENTS, READONLY, DEBUGGING
6 .debug_line 000001f3 00000000 00000000 0000054a 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_frame 00000040 00000000 00000000 00000740 2**2
CONTENTS, READONLY, DEBUGGING
8 .debug_str 000000e5 00000000 00000000 00000780 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_loc 00000050 00000000 00000000 00000865 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_ranges 00000048 00000000 00000000 000008b5 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 46 00 jmp 0x8c ; 0x8c <__ctors_end>
4: 0c 94 66 00 jmp 0xcc ; 0xcc <__bad_interrupt>
8: 0c 94 66 00 jmp 0xcc ; 0xcc <__bad_interrupt>
c: 0c 94 66 00 jmp 0xcc ; 0xcc <__bad_interrupt>
10: 0c 94 66 00 jmp 0xcc ; 0xcc <__bad_interrupt>
14: 0c 94 66 00 jmp 0xcc ; 0xcc <__bad_interrupt>
18: 0c 94 66 00 jmp 0xcc ; 0xcc <__bad_interrupt>
1c: 0c 94 66 00 jmp 0xcc ; 0xcc <__bad_interrupt>
20: 0c 94 66 00 jmp 0xcc ; 0xcc <__bad_interrupt>
24: 0c 94 66 00 jmp 0xcc ; 0xcc <__bad_interrupt>
28: 0c 94 66 00 jmp 0xcc ; 0xcc <__bad_interrupt>
2c: 0c 94 66 00 jmp 0xcc ; 0xcc <__bad_interrupt>
30: 0c 94 66 00 jmp 0xcc ; 0xcc <__bad_interrupt>
34: 0c 94 66 00 jmp 0xcc ; 0xcc <__bad_interrupt>
38: 0c 94 66 00 jmp 0xcc ; 0xcc <__bad_interrupt>
3c: 0c 94 66 00 jmp 0xcc ; 0xcc <__bad_interrupt>
40: 0c 94 66 00 jmp 0xcc ; 0xcc <__bad_interrupt>
44: 0c 94 66 00 jmp 0xcc ; 0xcc <__bad_interrupt>
48: 0c 94 66 00 jmp 0xcc ; 0xcc <__bad_interrupt>
4c: 0c 94 66 00 jmp 0xcc ; 0xcc <__bad_interrupt>
50: 0c 94 66 00 jmp 0xcc ; 0xcc <__bad_interrupt>
54: 0c 94 66 00 jmp 0xcc ; 0xcc <__bad_interrupt>
58: 0c 94 66 00 jmp 0xcc ; 0xcc <__bad_interrupt>
5c: 0c 94 66 00 jmp 0xcc ; 0xcc <__bad_interrupt>
60: 0c 94 66 00 jmp 0xcc ; 0xcc <__bad_interrupt>
64: 0c 94 66 00 jmp 0xcc ; 0xcc <__bad_interrupt>
68: 0c 94 66 00 jmp 0xcc ; 0xcc <__bad_interrupt>
6c: 0c 94 66 00 jmp 0xcc ; 0xcc <__bad_interrupt>
70: 0c 94 66 00 jmp 0xcc ; 0xcc <__bad_interrupt>
74: 0c 94 66 00 jmp 0xcc ; 0xcc <__bad_interrupt>
78: 0c 94 66 00 jmp 0xcc ; 0xcc <__bad_interrupt>
7c: 0c 94 66 00 jmp 0xcc ; 0xcc <__bad_interrupt>
80: 0c 94 66 00 jmp 0xcc ; 0xcc <__bad_interrupt>
84: 0c 94 66 00 jmp 0xcc ; 0xcc <__bad_interrupt>
88: 0c 94 66 00 jmp 0xcc ; 0xcc <__bad_interrupt>
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: ea e5 ldi r30, 0x5A ; 90
a0: f1 e0 ldi r31, 0x01 ; 1
a2: 00 e0 ldi r16, 0x00 ; 0
a4: 0b bf out 0x3b, r16 ; 59
a6: 02 c0 rjmp .+4 ; 0xac <__do_copy_data+0x14>
a8: 07 90 elpm r0, Z+
aa: 0d 92 st X+, r0
ac: a8 30 cpi r26, 0x08 ; 8
ae: b1 07 cpc r27, r17
b0: d9 f7 brne .-10 ; 0xa8 <__do_copy_data+0x10>
b2: 1b be out 0x3b, r1 ; 59
000000b4 <__do_clear_bss>:
b4: 11 e0 ldi r17, 0x01 ; 1
b6: a8 e0 ldi r26, 0x08 ; 8
b8: b1 e0 ldi r27, 0x01 ; 1
ba: 01 c0 rjmp .+2 ; 0xbe <.do_clear_bss_start>
000000bc <.do_clear_bss_loop>:
bc: 1d 92 st X+, r1
000000be <.do_clear_bss_start>:
be: a8 30 cpi r26, 0x08 ; 8
c0: b1 07 cpc r27, r17
c2: e1 f7 brne .-8 ; 0xbc <.do_clear_bss_loop>
c4: 0e 94 76 00 call 0xec ; 0xec <main>
c8: 0c 94 ab 00 jmp 0x156 ; 0x156 <_exit>
000000cc <__bad_interrupt>:
cc: 0c 94 00 00 jmp 0 ; 0x0 <__vectors>
000000d0 <spi_init>:
#include<util/delay.h>
void spi_init(void)
{
//PORTB |= (1<<PB4); //按照spi协议的握手方式手动操作ss(低):在开始传输前将其拉低,传输结束后再将其抬高。
PORTB |= (1<<PB0);
d0: c0 9a sbi 0x18, 0 ; 24
//DDRB |= (1<<DDB4) | (1<<DDB5) | (1<<DDB7);//ss(低)、sck、mosi 输出方式
DDRB |= (1<<DDB0) | (1<<DDB1) | (1<<DDB2);
d2: 87 b3 in r24, 0x17 ; 23
d4: 87 60 ori r24, 0x07 ; 7
d6: 87 bb out 0x17, r24 ; 23
SPCR = 0x70; //使能spi、主机模式、低位在先、模式0、fosc/2
d8: 80 e7 ldi r24, 0x70 ; 112
da: 8d b9 out 0x0d, r24 ; 13
}
dc: 08 95 ret
000000de <spi_mt>:
void spi_mt(char cData)
{
//PORTB &=~ (1<<PB4); //开始传输前拉低ss
PORTB &=~ (1<<PB0);
de: c0 98 cbi 0x18, 0 ; 24
SPCR |= (1<<MSTR); //设主机模式
e0: 6c 9a sbi 0x0d, 4 ; 13
SPDR = cData;
e2: 8f b9 out 0x0f, r24 ; 15
while(!(SPSR & (1<<SPIF)))//等待传送完毕
e4: 77 9b sbis 0x0e, 7 ; 14
e6: fe cf rjmp .-4 ; 0xe4 <spi_mt+0x6>
;
//PORTB |= (1<<PB4);//传输结束后太高ss
PORTB |= (1<<PB0);
e8: c0 9a sbi 0x18, 0 ; 24
}
ea: 08 95 ret
000000ec <main>:
_delay_loop_2(50000);// 50ms
}
}
*/
int main(void)
{
ec: df 93 push r29
ee: cf 93 push r28
f0: cd b7 in r28, 0x3d ; 61
f2: de b7 in r29, 0x3e ; 62
f4: 28 97 sbiw r28, 0x08 ; 8
f6: 0f b6 in r0, 0x3f ; 63
f8: f8 94 cli
fa: de bf out 0x3e, r29 ; 62
fc: 0f be out 0x3f, r0 ; 63
fe: cd bf out 0x3d, r28 ; 61
// unsigned char shuma[10] = {0x81,0xf3,0x49,0x61,0x33,0x25,0x05,0xf1,0x01,0x21};
unsigned char shuma[8] = {0X01,0X02,0X04,0X08,0X10,0X20,0X40,0X80};
100: de 01 movw r26, r28
102: 11 96 adiw r26, 0x01 ; 1
104: e0 e0 ldi r30, 0x00 ; 0
106: f1 e0 ldi r31, 0x01 ; 1
108: 88 e0 ldi r24, 0x08 ; 8
10a: 01 90 ld r0, Z+
10c: 0d 92 st X+, r0
10e: 81 50 subi r24, 0x01 ; 1
110: e1 f7 brne .-8 ; 0x10a <main+0x1e>
#include<util/delay.h>
void spi_init(void)
{
//PORTB |= (1<<PB4); //按照spi协议的握手方式手动操作ss(低):在开始传输前将其拉低,传输结束后再将其抬高。
PORTB |= (1<<PB0);
112: c0 9a sbi 0x18, 0 ; 24
//DDRB |= (1<<DDB4) | (1<<DDB5) | (1<<DDB7);//ss(低)、sck、mosi 输出方式
DDRB |= (1<<DDB0) | (1<<DDB1) | (1<<DDB2);
114: 87 b3 in r24, 0x17 ; 23
116: 87 60 ori r24, 0x07 ; 7
118: 87 bb out 0x17, r24 ; 23
SPCR = 0x70; //使能spi、主机模式、低位在先、模式0、fosc/2
11a: 80 e7 ldi r24, 0x70 ; 112
11c: 8d b9 out 0x0d, r24 ; 13
11e: 20 e0 ldi r18, 0x00 ; 0
while(1)
{
//for(tmp=0;tmp<10;tmp++)
for(tmp=0;tmp<8;tmp++)
{
spi_mt(shuma[tmp]);
120: be 01 movw r22, r28
122: 6f 5f subi r22, 0xFF ; 255
124: 7f 4f sbci r23, 0xFF ; 255
milliseconds can be achieved.
*/
void
_delay_loop_2(uint16_t __count)
{
__asm__ volatile (
126: 40 e9 ldi r20, 0x90 ; 144
128: 51 e0 ldi r21, 0x01 ; 1
12a: fb 01 movw r30, r22
12c: e2 0f add r30, r18
12e: f1 1d adc r31, r1
130: 80 81 ld r24, Z
}
void spi_mt(char cData)
{
//PORTB &=~ (1<<PB4); //开始传输前拉低ss
PORTB &=~ (1<<PB0);
132: c0 98 cbi 0x18, 0 ; 24
SPCR |= (1<<MSTR); //设主机模式
134: 6c 9a sbi 0x0d, 4 ; 13
SPDR = cData;
136: 8f b9 out 0x0f, r24 ; 15
while(!(SPSR & (1<<SPIF)))//等待传送完毕
138: 77 9b sbis 0x0e, 7 ; 14
13a: fe cf rjmp .-4 ; 0x138 <main+0x4c>
;
//PORTB |= (1<<PB4);//传输结束后太高ss
PORTB |= (1<<PB0);
13c: c0 9a sbi 0x18, 0 ; 24
13e: 80 e1 ldi r24, 0x10 ; 16
140: 97 e2 ldi r25, 0x27 ; 39
142: fa 01 movw r30, r20
144: 31 97 sbiw r30, 0x01 ; 1
146: f1 f7 brne .-4 ; 0x144 <main+0x58>
__ticks = (uint16_t) (__ms * 10.0);
while(__ticks)
{
// wait 1/10 ms
_delay_loop_2(((F_CPU) / 4e3) / 10);
__ticks --;
148: 01 97 sbiw r24, 0x01 ; 1
__ticks = 1;
else if (__tmp > 65535)
{
// __ticks = requested delay in 1/10 ms
__ticks = (uint16_t) (__ms * 10.0);
while(__ticks)
14a: d9 f7 brne .-10 ; 0x142 <main+0x56>
spi_init();
unsigned char tmp;
while(1)
{
//for(tmp=0;tmp<10;tmp++)
for(tmp=0;tmp<8;tmp++)
14c: 2f 5f subi r18, 0xFF ; 255
14e: 28 30 cpi r18, 0x08 ; 8
150: 60 f3 brcs .-40 ; 0x12a <main+0x3e>
152: 20 e0 ldi r18, 0x00 ; 0
154: ea cf rjmp .-44 ; 0x12a <main+0x3e>
00000156 <_exit>:
156: f8 94 cli
00000158 <__stop_program>:
158: ff cf rjmp .-2 ; 0x158 <__stop_program>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -