📄 main.lss
字号:
main.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 000003b8 00000000 00000000 00000094 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 0000000e 00800060 000003b8 0000044c 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 0000002e 0080006e 0080006e 0000045a 2**0
ALLOC
3 .stab 0000036c 00000000 00000000 0000045c 2**2
CONTENTS, READONLY, DEBUGGING
4 .stabstr 00000084 00000000 00000000 000007c8 2**0
CONTENTS, READONLY, DEBUGGING
5 .debug_aranges 00000060 00000000 00000000 0000084c 2**0
CONTENTS, READONLY, DEBUGGING
6 .debug_pubnames 0000018e 00000000 00000000 000008ac 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_info 00000681 00000000 00000000 00000a3a 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_abbrev 00000316 00000000 00000000 000010bb 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_line 000005cc 00000000 00000000 000013d1 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_frame 00000140 00000000 00000000 0000199d 2**0
CONTENTS, READONLY, DEBUGGING
11 .debug_str 000002e8 00000000 00000000 00001add 2**0
CONTENTS, READONLY, DEBUGGING
12 .debug_loc 000000e5 00000000 00000000 00001dc5 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 55 c0 rjmp .+170 ; 0xac <__ctors_end>
2: 6e c0 rjmp .+220 ; 0xe0 <__bad_interrupt>
4: 6d c0 rjmp .+218 ; 0xe0 <__bad_interrupt>
6: 6c c0 rjmp .+216 ; 0xe0 <__bad_interrupt>
8: 6b c0 rjmp .+214 ; 0xe0 <__bad_interrupt>
a: 6a c0 rjmp .+212 ; 0xe0 <__bad_interrupt>
c: 69 c0 rjmp .+210 ; 0xe0 <__bad_interrupt>
e: 68 c0 rjmp .+208 ; 0xe0 <__bad_interrupt>
10: 67 c0 rjmp .+206 ; 0xe0 <__bad_interrupt>
12: ae c0 rjmp .+348 ; 0x170 <__vector_9>
14: 65 c0 rjmp .+202 ; 0xe0 <__bad_interrupt>
16: 64 c0 rjmp .+200 ; 0xe0 <__bad_interrupt>
18: 63 c0 rjmp .+198 ; 0xe0 <__bad_interrupt>
1a: 62 c0 rjmp .+196 ; 0xe0 <__bad_interrupt>
1c: 61 c0 rjmp .+194 ; 0xe0 <__bad_interrupt>
1e: 60 c0 rjmp .+192 ; 0xe0 <__bad_interrupt>
20: 5f c0 rjmp .+190 ; 0xe0 <__bad_interrupt>
22: 5e c0 rjmp .+188 ; 0xe0 <__bad_interrupt>
24: 5d c0 rjmp .+186 ; 0xe0 <__bad_interrupt>
00000026 <__c.1394>:
26: 67 65 6e 65 72 69 63 20 73 6f 66 74 75 61 72 74 generic softuart
36: 20 64 72 69 76 65 72 20 63 6f 64 65 20 62 79 20 driver code by
46: 43 6f 6c 69 6e 20 47 69 74 74 69 6e 73 0d 0a 00 Colin Gittins...
00000056 <__c.1392>:
56: 0d 0a 53 6f 66 74 75 61 72 74 20 44 65 6d 6f 2d ..Softuart Demo-
66: 41 70 70 6c 69 63 61 74 69 6f 6e 0d 0a 00 Application...
00000074 <pstring.1390>:
74: 61 64 61 70 74 65 64 20 66 6f 72 20 41 74 6d 65 adapted for Atme
84: 6c 20 41 56 52 20 61 6e 64 20 74 68 69 73 20 64 l AVR and this d
94: 65 6d 6f 20 62 79 20 4d 61 72 74 69 6e 20 54 68 emo by Martin Th
a4: 6f 6d 61 73 0d 0a 00 00 omas....
000000ac <__ctors_end>:
ac: 11 24 eor r1, r1
ae: 1f be out 0x3f, r1 ; 63
b0: cf e5 ldi r28, 0x5F ; 95
b2: d4 e0 ldi r29, 0x04 ; 4
b4: de bf out 0x3e, r29 ; 62
b6: cd bf out 0x3d, r28 ; 61
000000b8 <__do_copy_data>:
b8: 10 e0 ldi r17, 0x00 ; 0
ba: a0 e6 ldi r26, 0x60 ; 96
bc: b0 e0 ldi r27, 0x00 ; 0
be: e8 eb ldi r30, 0xB8 ; 184
c0: f3 e0 ldi r31, 0x03 ; 3
c2: 02 c0 rjmp .+4 ; 0xc8 <.do_copy_data_start>
000000c4 <.do_copy_data_loop>:
c4: 05 90 lpm r0, Z+
c6: 0d 92 st X+, r0
000000c8 <.do_copy_data_start>:
c8: ae 36 cpi r26, 0x6E ; 110
ca: b1 07 cpc r27, r17
cc: d9 f7 brne .-10 ; 0xc4 <.do_copy_data_loop>
000000ce <__do_clear_bss>:
ce: 10 e0 ldi r17, 0x00 ; 0
d0: ae e6 ldi r26, 0x6E ; 110
d2: b0 e0 ldi r27, 0x00 ; 0
d4: 01 c0 rjmp .+2 ; 0xd8 <.do_clear_bss_start>
000000d6 <.do_clear_bss_loop>:
d6: 1d 92 st X+, r1
000000d8 <.do_clear_bss_start>:
d8: ac 39 cpi r26, 0x9C ; 156
da: b1 07 cpc r27, r17
dc: e1 f7 brne .-8 ; 0xd6 <.do_clear_bss_loop>
de: 0d c0 rjmp .+26 ; 0xfa <main>
000000e0 <__bad_interrupt>:
e0: 8f cf rjmp .-226 ; 0x0 <__vectors>
000000e2 <delay_ms>:
unsigned char data_buf[8]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08};
//------------------------------------------------------------------------------
void delay_ms(unsigned int n)
{
e2: 08 c0 rjmp .+16 ; 0xf4 <delay_ms+0x12>
unsigned int zaehler;
while (n)
{
wdt_reset(); //喂狗
e4: a8 95 wdr
e6: 22 ec ldi r18, 0xC2 ; 194
e8: 35 e0 ldi r19, 0x05 ; 5
zaehler = F_CPU / 5000;
while (zaehler)
{
asm volatile ("nop");
ea: 00 00 nop
zaehler--;
ec: 21 50 subi r18, 0x01 ; 1
ee: 30 40 sbci r19, 0x00 ; 0
f0: e1 f7 brne .-8 ; 0xea <delay_ms+0x8>
}
n--;
f2: 01 97 sbiw r24, 0x01 ; 1
f4: 00 97 sbiw r24, 0x00 ; 0
f6: b1 f7 brne .-20 ; 0xe4 <delay_ms+0x2>
f8: 08 95 ret
000000fa <main>:
}
}
//------------------------------------------------------------------------------
int main(void)
{
fa: 0f 93 push r16
fc: 1f 93 push r17
fe: cf 93 push r28
100: df 93 push r29
char c,i;
static const char pstring[] PROGMEM =
"adapted for Atmel AVR and this demo by Martin Thomas\r\n";
unsigned short cnt = 0;
#if (F_CPU > 4000000UL)
#define CNTHALLO (unsigned int)(0xFFFF)
#else
#define CNTHALLO (unsigned int)(0xFFFF/3)
#endif
gpio_init();
102: 48 d1 rcall .+656 ; 0x394 <gpio_init>
softuart_init();
104: d1 d0 rcall .+418 ; 0x2a8 <softuart_init>
wdt_enable(WDTO_1S); //看门狗使能1S(范围:15MS 30MS 60MS 120MS 250MS 500MS 1S 2S)
106: 88 e1 ldi r24, 0x18 ; 24
108: 90 e0 ldi r25, 0x00 ; 0
10a: 2e e0 ldi r18, 0x0E ; 14
10c: 0f b6 in r0, 0x3f ; 63
10e: f8 94 cli
110: a8 95 wdr
112: 81 bd out 0x21, r24 ; 33
114: 0f be out 0x3f, r0 ; 63
116: 21 bd out 0x21, r18 ; 33
softuart_turn_rx_on(); /* redundant - on by default */
118: da d0 rcall .+436 ; 0x2ce <softuart_turn_rx_on>
sei();
11a: 78 94 sei
softuart_puts_P( "\r\nSoftuart Demo-Application\r\n" ); // "implicit" PSTR
11c: 86 e5 ldi r24, 0x56 ; 86
11e: 90 e0 ldi r25, 0x00 ; 0
120: 2c d1 rcall .+600 ; 0x37a <softuart_puts_p>
softuart_puts_p( PSTR("generic softuart driver code by Colin Gittins\r\n") ); // explicit PSTR
122: 86 e2 ldi r24, 0x26 ; 38
124: 90 e0 ldi r25, 0x00 ; 0
126: 29 d1 rcall .+594 ; 0x37a <softuart_puts_p>
softuart_puts_p( pstring ); // pstring defined with PROGMEM
128: 84 e7 ldi r24, 0x74 ; 116
12a: 90 e0 ldi r25, 0x00 ; 0
12c: 26 d1 rcall .+588 ; 0x37a <softuart_puts_p>
softuart_puts( "--\r\n" ); // string "from RAM"
12e: 80 e6 ldi r24, 0x60 ; 96
130: 90 e0 ldi r25, 0x00 ; 0
132: 17 d1 rcall .+558 ; 0x362 <softuart_puts>
134: 00 e0 ldi r16, 0x00 ; 0
136: 10 e0 ldi r17, 0x00 ; 0
#ifdef WITH_STDIO_DEMO
stdio_demo_func();
#endif
while(1)
{
if( softuart_kbhit())
138: e7 d0 rcall .+462 ; 0x308 <softuart_kbhit>
13a: 88 23 and r24, r24
13c: 49 f0 breq .+18 ; 0x150 <main+0x56>
13e: c5 e6 ldi r28, 0x65 ; 101
140: d0 e0 ldi r29, 0x00 ; 0
{
for(i=0;i<8;i++)
{
data_buf[i]=softuart_getchar();
142: cc d0 rcall .+408 ; 0x2dc <softuart_getchar>
144: 89 93 st Y+, r24
wdt_reset(); //喂狗
146: a8 95 wdr
148: 80 e0 ldi r24, 0x00 ; 0
14a: cd 36 cpi r28, 0x6D ; 109
14c: d8 07 cpc r29, r24
14e: c9 f7 brne .-14 ; 0x142 <main+0x48>
}
//c = softuart_getchar();
//softuart_putchar( '[' );
//softuart_putchar( c );
//softuart_putchar( ']' );
}
cnt++;
150: 0f 5f subi r16, 0xFF ; 255
152: 1f 4f sbci r17, 0xFF ; 255
if (cnt == CNTHALLO)
154: 8f ef ldi r24, 0xFF ; 255
156: 0f 3f cpi r16, 0xFF ; 255
158: 18 07 cpc r17, r24
15a: 71 f7 brne .-36 ; 0x138 <main+0x3e>
{
cnt = 0;
wdt_reset(); //喂狗
15c: a8 95 wdr
//softuart_puts_P( " Hello " );
softuart_puts(data_buf);
15e: 85 e6 ldi r24, 0x65 ; 101
160: 90 e0 ldi r25, 0x00 ; 0
162: ff d0 rcall .+510 ; 0x362 <softuart_puts>
gpio_toggle_led(LED1);
164: 82 e0 ldi r24, 0x02 ; 2
166: 24 d1 rcall .+584 ; 0x3b0 <gpio_toggle_led>
delay_ms(500);
168: 84 ef ldi r24, 0xF4 ; 244
16a: 91 e0 ldi r25, 0x01 ; 1
16c: ba df rcall .-140 ; 0xe2 <delay_ms>
16e: e2 cf rjmp .-60 ; 0x134 <main+0x3a>
00000170 <__vector_9>:
#define get_rx_pin_status() ( SOFTUART_RXPIN & ( 1<<SOFTUART_RXBIT ) )
//T/C0中断
SIGNAL(SIG_OVERFLOW0)
{
170: 1f 92 push r1
172: 0f 92 push r0
174: 0f b6 in r0, 0x3f ; 63
176: 0f 92 push r0
178: 11 24 eor r1, r1
17a: 8f 93 push r24
17c: 9f 93 push r25
17e: ef 93 push r30
180: ff 93 push r31
static unsigned char flag_rx_waiting_for_stop_bit = SU_FALSE;
static unsigned char rx_mask;
static char timer_rx_ctr;
static char bits_left_in_rx;
static unsigned char internal_rx_buffer;
char start_bit, flag_in;
char tmp;
SOFTUART_T_CNT_REG = 256-SOFTUART_TIMERTOP;
182: 81 ec ldi r24, 0xC1 ; 193
184: 82 bf out 0x32, r24 ; 50
// Transmitter Section
if ( flag_tx_ready ) {
186: 80 91 97 00 lds r24, 0x0097
18a: 88 23 and r24, r24
18c: 29 f1 breq .+74 ; 0x1d8 <__vector_9+0x68>
tmp = timer_tx_ctr;
18e: 80 91 98 00 lds r24, 0x0098
if ( --tmp <= 0 ) { // if ( --timer_tx_ctr <= 0 )
192: 81 50 subi r24, 0x01 ; 1
194: f9 f4 brne .+62 ; 0x1d4 <__vector_9+0x64>
if ( internal_tx_buffer & 0x01 ) {
196: 80 91 9a 00 lds r24, 0x009A
19a: 90 91 9b 00 lds r25, 0x009B
19e: 80 ff sbrs r24, 0
1a0: 02 c0 rjmp .+4 ; 0x1a6 <__vector_9+0x36>
set_tx_pin_high();
1a2: 97 9a sbi 0x12, 7 ; 18
1a4: 01 c0 rjmp .+2 ; 0x1a8 <__vector_9+0x38>
}
else {
set_tx_pin_low();
1a6: 97 98 cbi 0x12, 7 ; 18
}
internal_tx_buffer >>= 1;
1a8: 80 91 9a 00 lds r24, 0x009A
1ac: 90 91 9b 00 lds r25, 0x009B
1b0: 96 95 lsr r25
1b2: 87 95 ror r24
1b4: 90 93 9b 00 sts 0x009B, r25
1b8: 80 93 9a 00 sts 0x009A, r24
tmp = 3; // timer_tx_ctr = 3;
if ( --bits_left_in_tx <= 0 ) {
1bc: 80 91 99 00 lds r24, 0x0099
1c0: 81 50 subi r24, 0x01 ; 1
1c2: 80 93 99 00 sts 0x0099, r24
1c6: 80 91 99 00 lds r24, 0x0099
1ca: 88 23 and r24, r24
1cc: 11 f4 brne .+4 ; 0x1d2 <__vector_9+0x62>
flag_tx_ready = SU_FALSE;
1ce: 10 92 97 00 sts 0x0097, r1
1d2: 83 e0 ldi r24, 0x03 ; 3
}
}
timer_tx_ctr = tmp;
1d4: 80 93 98 00 sts 0x0098, r24
}
// Receiver Section
if ( flag_rx_off == SU_FALSE ) {
1d8: 80 91 95 00 lds r24, 0x0095
1dc: 88 23 and r24, r24
1de: 09 f0 breq .+2 ; 0x1e2 <__vector_9+0x72>
1e0: 5a c0 rjmp .+180 ; 0x296 <__vector_9+0x126>
if ( flag_rx_waiting_for_stop_bit ) {
1e2: 80 91 74 00 lds r24, 0x0074
1e6: 88 23 and r24, r24
1e8: 01 f1 breq .+64 ; 0x22a <__vector_9+0xba>
if ( --timer_rx_ctr <= 0 ) {
1ea: 80 91 72 00 lds r24, 0x0072
1ee: 81 50 subi r24, 0x01 ; 1
1f0: 80 93 72 00 sts 0x0072, r24
1f4: 88 23 and r24, r24
1f6: 09 f0 breq .+2 ; 0x1fa <__vector_9+0x8a>
1f8: 4e c0 rjmp .+156 ; 0x296 <__vector_9+0x126>
flag_rx_waiting_for_stop_bit = SU_FALSE;
1fa: 10 92 74 00 sts 0x0074, r1
flag_rx_ready = SU_FALSE;
1fe: 10 92 96 00 sts 0x0096, r1
inbuf[qin] = internal_rx_buffer;
202: e0 91 6e 00 lds r30, 0x006E
206: ff 27 eor r31, r31
208: 80 91 70 00 lds r24, 0x0070
20c: eb 58 subi r30, 0x8B ; 139
20e: ff 4f sbci r31, 0xFF ; 255
210: 80 83 st Z, r24
if ( ++qin >= SOFTUART_IN_BUF_SIZE ) {
212: 80 91 6e 00 lds r24, 0x006E
216: 8f 5f subi r24, 0xFF ; 255
218: 80 93 6e 00 sts 0x006E, r24
21c: 80 91 6e 00 lds r24, 0x006E
220: 80 32 cpi r24, 0x20 ; 32
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -