main.lss

来自「ARP协议,含ARP」· LSS 代码 · 共 2,272 行 · 第 1/5 页

LSS
2,272
字号

main.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .data         00000014  00800100  00001fe2  00002056  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  1 .text         00001fe2  00000000  00000000  00000074  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  2 .bss          000008ae  00800114  00001ff6  0000206a  2**0
                  ALLOC
  3 .debug_aranges 00000020  00000000  00000000  0000206a  2**0
                  CONTENTS, READONLY, DEBUGGING
  4 .debug_pubnames 000009a0  00000000  00000000  0000208a  2**0
                  CONTENTS, READONLY, DEBUGGING
  5 .debug_info   00002e1f  00000000  00000000  00002a2a  2**0
                  CONTENTS, READONLY, DEBUGGING
  6 .debug_abbrev 000003d0  00000000  00000000  00005849  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_line   000028a2  00000000  00000000  00005c19  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_frame  00000820  00000000  00000000  000084bc  2**2
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_str    000008f7  00000000  00000000  00008cdc  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_loc    000012fb  00000000  00000000  000095d3  2**0
                  CONTENTS, READONLY, DEBUGGING
 11 .debug_ranges 000002f0  00000000  00000000  0000a8ce  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00000000 <__vectors>:
       0:	0c 94 46 00 	jmp	0x8c	; 0x8c <__ctors_end>
       4:	0c 94 42 04 	jmp	0x884	; 0x884 <__vector_1>
       8:	0c 94 70 04 	jmp	0x8e0	; 0x8e0 <__vector_2>
       c:	0c 94 72 04 	jmp	0x8e4	; 0x8e4 <__vector_3>
      10:	0c 94 74 04 	jmp	0x8e8	; 0x8e8 <__vector_4>
      14:	0c 94 76 04 	jmp	0x8ec	; 0x8ec <__vector_5>
      18:	0c 94 78 04 	jmp	0x8f0	; 0x8f0 <__vector_6>
      1c:	0c 94 7a 04 	jmp	0x8f4	; 0x8f4 <__vector_7>
      20:	0c 94 7c 04 	jmp	0x8f8	; 0x8f8 <__vector_8>
      24:	0c 94 7e 04 	jmp	0x8fc	; 0x8fc <__vector_9>
      28:	0c 94 80 04 	jmp	0x900	; 0x900 <__vector_10>
      2c:	0c 94 82 04 	jmp	0x904	; 0x904 <__vector_11>
      30:	0c 94 84 04 	jmp	0x908	; 0x908 <__vector_12>
      34:	0c 94 86 04 	jmp	0x90c	; 0x90c <__vector_13>
      38:	0c 94 88 04 	jmp	0x910	; 0x910 <__vector_14>
      3c:	0c 94 8a 04 	jmp	0x914	; 0x914 <__vector_15>
      40:	0c 94 9b 04 	jmp	0x936	; 0x936 <__vector_16>
      44:	0c 94 9d 04 	jmp	0x93a	; 0x93a <__vector_17>
      48:	0c 94 9f 04 	jmp	0x93e	; 0x93e <__vector_18>
      4c:	0c 94 a1 04 	jmp	0x942	; 0x942 <__vector_19>
      50:	0c 94 a3 04 	jmp	0x946	; 0x946 <__vector_20>
      54:	0c 94 a5 04 	jmp	0x94a	; 0x94a <__vector_21>
      58:	0c 94 a7 04 	jmp	0x94e	; 0x94e <__vector_22>
      5c:	0c 94 a9 04 	jmp	0x952	; 0x952 <__vector_23>
      60:	0c 94 ab 04 	jmp	0x956	; 0x956 <__vector_24>
      64:	0c 94 ad 04 	jmp	0x95a	; 0x95a <__vector_25>
      68:	0c 94 af 04 	jmp	0x95e	; 0x95e <__vector_26>
      6c:	0c 94 b1 04 	jmp	0x962	; 0x962 <__vector_27>
      70:	0c 94 b3 04 	jmp	0x966	; 0x966 <__vector_28>
      74:	0c 94 b5 04 	jmp	0x96a	; 0x96a <__vector_29>
      78:	0c 94 b7 04 	jmp	0x96e	; 0x96e <__vector_30>
      7c:	0c 94 cc 04 	jmp	0x998	; 0x998 <__vector_31>
      80:	0c 94 ce 04 	jmp	0x99c	; 0x99c <__vector_32>
      84:	0c 94 d0 04 	jmp	0x9a0	; 0x9a0 <__vector_33>
      88:	0c 94 d2 04 	jmp	0x9a4	; 0x9a4 <__vector_34>

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:	e2 ee       	ldi	r30, 0xE2	; 226
      a0:	ff e1       	ldi	r31, 0x1F	; 31
      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:	a4 31       	cpi	r26, 0x14	; 20
      ae:	b1 07       	cpc	r27, r17
      b0:	d9 f7       	brne	.-10     	; 0xa8 <__do_copy_data+0x10>

000000b2 <__do_clear_bss>:
      b2:	19 e0       	ldi	r17, 0x09	; 9
      b4:	a4 e1       	ldi	r26, 0x14	; 20
      b6:	b1 e0       	ldi	r27, 0x01	; 1
      b8:	01 c0       	rjmp	.+2      	; 0xbc <.do_clear_bss_start>

000000ba <.do_clear_bss_loop>:
      ba:	1d 92       	st	X+, r1

000000bc <.do_clear_bss_start>:
      bc:	a2 3c       	cpi	r26, 0xC2	; 194
      be:	b1 07       	cpc	r27, r17
      c0:	e1 f7       	brne	.-8      	; 0xba <.do_clear_bss_loop>
      c2:	0e 94 42 0f 	call	0x1e84	; 0x1e84 <main>
      c6:	0c 94 ef 0f 	jmp	0x1fde	; 0x1fde <_exit>

000000ca <__bad_interrupt>:
      ca:	0c 94 00 00 	jmp	0	; 0x0 <__vectors>

000000ce <delay_1ms>:

/*
 *  延时函数,单位:ms
 *  如果使用优化编译,此函数需要修改
 */
void delay_1ms (us n) {
      ce:	08 95       	ret

000000d0 <init_timer0>:
 * 输入:无
 * 输出:无
 * 返回值:无
 * 说明:无
 */
void init_timer0 (void) {
      d0:	8e e0       	ldi	r24, 0x0E	; 14
      d2:	83 bf       	out	0x33, r24	; 51
    //在1Mhz下,256分频,计次39

    TCCR0 = 0x0e;
 
    OCR0 = 39;
      d4:	87 e2       	ldi	r24, 0x27	; 39
      d6:	81 bf       	out	0x31, r24	; 49

    //只保留比较匹配中断
    TIMSK = 0x02;
      d8:	82 e0       	ldi	r24, 0x02	; 2
      da:	87 bf       	out	0x37, r24	; 55
}
      dc:	08 95       	ret

000000de <init_tick_timer>:
void init_tick_timer (void) {
      de:	8e e0       	ldi	r24, 0x0E	; 14
      e0:	83 bf       	out	0x33, r24	; 51
    //在1Mhz下,256分频,计次39

    TCCR0 = 0x0e;
 
    OCR0 = 39;
      e2:	87 e2       	ldi	r24, 0x27	; 39
      e4:	81 bf       	out	0x31, r24	; 49
}
      e6:	08 95       	ret

000000e8 <init_stop_watch>:

//一个更精确的停表
void init_stop_watch (void) {
      e8:	1f bc       	out	0x2f, r1	; 47
    TCCR1A = 0x00;
    TCCR1B = 0x05;
      ea:	85 e0       	ldi	r24, 0x05	; 5
      ec:	8e bd       	out	0x2e, r24	; 46
    TCCR1C = 0x00;
      ee:	10 92 7a 00 	sts	0x007A, r1
}
      f2:	08 95       	ret

000000f4 <start_stop_watch>:

void start_stop_watch (void) {
      f4:	1d bc       	out	0x2d, r1	; 45
    //16位写,低字节写生效
    TCNT1H = 0x00;
    TCNT1L = 0x00;
      f6:	1c bc       	out	0x2c, r1	; 44

    TCCR1B = 0x05; //启动计数CLK
      f8:	85 e0       	ldi	r24, 0x05	; 5
      fa:	8e bd       	out	0x2e, r24	; 46
}
      fc:	08 95       	ret

000000fe <stop_stop_watch>:

us stop_stop_watch (void) {
      fe:	1e bc       	out	0x2e, r1	; 46
    } t;

    TCCR1B = 0x00; //停止计数CLK

    //16位读,低字节读生效
    cli ();
     100:	f8 94       	cli
    t.c[0] = TCNT1L;
     102:	8c b5       	in	r24, 0x2c	; 44
    t.c[1] = TCNT1H;
     104:	9d b5       	in	r25, 0x2d	; 45
    sei ();
     106:	78 94       	sei

    return t.s;
     108:	08 95       	ret

0000010a <put_char>:

char *hex_char = "0123456789ABCDEF";
extern volatile uc rx1_char;

void put_char(uc c)
{ 
     10a:	98 2f       	mov	r25, r24
 
    while (!(UCSR1A & (1<<UDRE1)));  /* 等待发送缓冲器为空*/
     10c:	80 91 9b 00 	lds	r24, 0x009B
     110:	85 ff       	sbrs	r24, 5
     112:	fc cf       	rjmp	.-8      	; 0x10c <put_char+0x2>
 	UDR1 = c;    /* 发送数据*/
     114:	90 93 9c 00 	sts	0x009C, r25

}
     118:	08 95       	ret

0000011a <put_Word>:
 * 输出:无
 * 返回值:无
 * 说明:无
 */
void put_Word(us c)
{ 
     11a:	28 2f       	mov	r18, r24
extern volatile uc rx1_char;

void put_char(uc c)
{ 
 
    while (!(UCSR1A & (1<<UDRE1)));  /* 等待发送缓冲器为空*/
     11c:	80 91 9b 00 	lds	r24, 0x009B
     120:	85 ff       	sbrs	r24, 5
     122:	fc cf       	rjmp	.-8      	; 0x11c <put_Word+0x2>
 	UDR1 = c;    /* 发送数据*/
     124:	20 93 9c 00 	sts	0x009C, r18
extern volatile uc rx1_char;

void put_char(uc c)
{ 
 
    while (!(UCSR1A & (1<<UDRE1)));  /* 等待发送缓冲器为空*/
     128:	80 91 9b 00 	lds	r24, 0x009B
     12c:	85 ff       	sbrs	r24, 5
     12e:	fc cf       	rjmp	.-8      	; 0x128 <put_Word+0xe>
 	UDR1 = c;    /* 发送数据*/
     130:	90 93 9c 00 	sts	0x009C, r25
 */
void put_Word(us c)
{ 
  put_char(c);
  put_char(c>>8);
} 
     134:	08 95       	ret

00000136 <put_str>:
 * 输出:无
 * 返回值:无
 * 说明:无
 */
void put_str(uc *p)
{//发送字符串函数,发送数组
     136:	fc 01       	movw	r30, r24
     138:	07 c0       	rjmp	.+14     	; 0x148 <put_str+0x12>
extern volatile uc rx1_char;

void put_char(uc c)
{ 
 
    while (!(UCSR1A & (1<<UDRE1)));  /* 等待发送缓冲器为空*/
     13a:	80 91 9b 00 	lds	r24, 0x009B
     13e:	85 ff       	sbrs	r24, 5
     140:	fc cf       	rjmp	.-8      	; 0x13a <put_str+0x4>
 	UDR1 = c;    /* 发送数据*/
     142:	90 93 9c 00 	sts	0x009C, r25
{//发送字符串函数,发送数组
	
	while(0!=*p)
	{
		put_char(*p);
		p++;		
     146:	31 96       	adiw	r30, 0x01	; 1
 * 说明:无
 */
void put_str(uc *p)
{//发送字符串函数,发送数组
	
	while(0!=*p)
     148:	90 81       	ld	r25, Z
     14a:	99 23       	and	r25, r25
     14c:	b1 f7       	brne	.-20     	; 0x13a <put_str+0x4>
	{
		put_char(*p);
		p++;		
	}
	
}
     14e:	08 95       	ret

00000150 <init_uart1>:
 * 输出:无
 * 返回值:无
 * 说明:无
 */
void init_uart1 (void) 
{
     150:	8b 9a       	sbi	0x11, 3	; 17

    sbi(DDRD,3);
    cbi(PORTD,3);
     152:	93 98       	cbi	0x12, 3	; 18

    rx1_char = 0;
     154:	10 92 be 09 	sts	0x09BE, r1

    //在1Mhz的主频下,9600波特率设置
    UBRR1H = 0;
     158:	10 92 98 00 	sts	0x0098, r1
    UBRR1L = 12;
     15c:	8c e0       	ldi	r24, 0x0C	; 12
     15e:	80 93 99 00 	sts	0x0099, r24

    //倍速:是;多机模式:否
    UCSR1A = 0x02;
     162:	82 e0       	ldi	r24, 0x02	; 2
     164:	80 93 9b 00 	sts	0x009B, r24

    //使能UART的TX,RX
    //使能接收中断
    //使能发送结束中断;禁止发送缓冲区空中断
    UCSR1B = 0x98;
     168:	88 e9       	ldi	r24, 0x98	; 152
     16a:	80 93 9a 00 	sts	0x009A, r24

    //模式设置:异步,8位数据,1位停止位,无校验
    UCSR1C = 0x06;
     16e:	86 e0       	ldi	r24, 0x06	; 6
     170:	80 93 9d 00 	sts	0x009D, r24
   // UBRR1H=0x00;
    //UBRR1L=0x06;
}
     174:	08 95       	ret

00000176 <put_hex>:


void put_hex (uc ch) {
     176:	98 2f       	mov	r25, r24
    uc idx;
    idx = (ch >> 4);
    put_char (hex_char[idx]);
     178:	a0 91 11 01 	lds	r26, 0x0111
     17c:	b0 91 12 01 	lds	r27, 0x0112
     180:	82 95       	swap	r24
     182:	8f 70       	andi	r24, 0x0F	; 15
     184:	fd 01       	movw	r30, r26
     186:	e8 0f       	add	r30, r24
     188:	f1 1d       	adc	r31, r1
     18a:	e0 81       	ld	r30, Z
extern volatile uc rx1_char;

void put_char(uc c)
{ 
 
    while (!(UCSR1A & (1<<UDRE1)));  /* 等待发送缓冲器为空*/
     18c:	80 91 9b 00 	lds	r24, 0x009B
     190:	85 ff       	sbrs	r24, 5
     192:	fc cf       	rjmp	.-8      	; 0x18c <put_hex+0x16>
 	UDR1 = c;    /* 发送数据*/
     194:	e0 93 9c 00 	sts	0x009C, r30
void put_hex (uc ch) {
    uc idx;
    idx = (ch >> 4);
    put_char (hex_char[idx]);
    idx = (ch & 0x0f);
    put_char (hex_char[idx]);
     198:	9f 70       	andi	r25, 0x0F	; 15
     19a:	a9 0f       	add	r26, r25
     19c:	b1 1d       	adc	r27, r1
     19e:	9c 91       	ld	r25, X
extern volatile uc rx1_char;

void put_char(uc c)
{ 
 
    while (!(UCSR1A & (1<<UDRE1)));  /* 等待发送缓冲器为空*/
     1a0:	80 91 9b 00 	lds	r24, 0x009B
     1a4:	85 ff       	sbrs	r24, 5
     1a6:	fc cf       	rjmp	.-8      	; 0x1a0 <put_hex+0x2a>
 	UDR1 = c;    /* 发送数据*/
     1a8:	90 93 9c 00 	sts	0x009C, r25
    uc idx;
    idx = (ch >> 4);
    put_char (hex_char[idx]);
    idx = (ch & 0x0f);
    put_char (hex_char[idx]);
}
     1ac:	08 95       	ret

000001ae <put_str_hex>:

void put_str_hex(uc *p)
{//发送字符串函数,发送数组
     1ae:	dc 01       	movw	r26, r24


void put_hex (uc ch) {
    uc idx;
    idx = (ch >> 4);
    put_char (hex_char[idx]);
     1b0:	20 91 11 01 	lds	r18, 0x0111
     1b4:	30 91 12 01 	lds	r19, 0x0112
     1b8:	19 c0       	rjmp	.+50     	; 0x1ec <put_str_hex+0x3e>
}

void put_str_hex(uc *p)
{//发送字符串函数,发送数组
	
	while(0!=*p)
     1ba:	89 2f       	mov	r24, r25
     1bc:	82 95       	swap	r24
     1be:	8f 70       	andi	r24, 0x0F	; 15
     1c0:	f9 01       	movw	r30, r18
     1c2:	e8 0f       	add	r30, r24
     1c4:	f1 1d       	adc	r31, r1
     1c6:	e0 81       	ld	r30, Z
extern volatile uc rx1_char;

void put_char(uc c)
{ 
 
    while (!(UCSR1A & (1<<UDRE1)));  /* 等待发送缓冲器为空*/
     1c8:	80 91 9b 00 	lds	r24, 0x009B
     1cc:	85 ff       	sbrs	r24, 5
     1ce:	fc cf       	rjmp	.-8      	; 0x1c8 <put_str_hex+0x1a>
 	UDR1 = c;    /* 发送数据*/
     1d0:	e0 93 9c 00 	sts	0x009C, r30
void put_hex (uc ch) {
    uc idx;
    idx = (ch >> 4);
    put_char (hex_char[idx]);
    idx = (ch & 0x0f);
    put_char (hex_char[idx]);
     1d4:	9f 70       	andi	r25, 0x0F	; 15
     1d6:	f9 01       	movw	r30, r18
     1d8:	e9 0f       	add	r30, r25

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?