⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test.lss

📁 这是一个UCOS的AVR移植程序
💻 LSS
📖 第 1 页 / 共 5 页
字号:

test.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .data         00000136  00800100  00001838  000018cc  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  1 .text         00001838  00000000  00000000  00000094  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  2 .bss          0000060b  00800236  00800236  00001a02  2**0
                  ALLOC
  3 .noinit       00000000  00800841  00800841  00001a02  2**0
                  CONTENTS
  4 .eeprom       00000000  00810000  00810000  00001a02  2**0
                  CONTENTS
  5 .stab         00000390  00000000  00000000  00001a04  2**2
                  CONTENTS, READONLY, DEBUGGING
  6 .stabstr      00000037  00000000  00000000  00001d94  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_aranges 00000050  00000000  00000000  00001dcb  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_pubnames 00000685  00000000  00000000  00001e1b  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_info   00001b25  00000000  00000000  000024a0  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_abbrev 000005ba  00000000  00000000  00003fc5  2**0
                  CONTENTS, READONLY, DEBUGGING
 11 .debug_line   000014c7  00000000  00000000  0000457f  2**0
                  CONTENTS, READONLY, DEBUGGING
 12 .debug_str    00000795  00000000  00000000  00005a46  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00000000 <__vectors>:
       0:	0c 94 46 00 	jmp	0x8c
       4:	0c 94 61 00 	jmp	0xc2
       8:	0c 94 61 00 	jmp	0xc2
       c:	0c 94 61 00 	jmp	0xc2
      10:	0c 94 61 00 	jmp	0xc2
      14:	0c 94 61 00 	jmp	0xc2
      18:	0c 94 61 00 	jmp	0xc2
      1c:	0c 94 61 00 	jmp	0xc2
      20:	0c 94 61 00 	jmp	0xc2
      24:	0c 94 61 00 	jmp	0xc2
      28:	0c 94 43 02 	jmp	0x486
      2c:	0c 94 61 00 	jmp	0xc2
      30:	0c 94 61 00 	jmp	0xc2
      34:	0c 94 61 00 	jmp	0xc2
      38:	0c 94 74 0b 	jmp	0x16e8
      3c:	0c 94 61 00 	jmp	0xc2
      40:	0c 94 61 00 	jmp	0xc2
      44:	0c 94 61 00 	jmp	0xc2
      48:	0c 94 61 00 	jmp	0xc2
      4c:	0c 94 61 00 	jmp	0xc2
      50:	0c 94 61 00 	jmp	0xc2
      54:	0c 94 61 00 	jmp	0xc2
      58:	0c 94 61 00 	jmp	0xc2
      5c:	0c 94 61 00 	jmp	0xc2
      60:	0c 94 61 00 	jmp	0xc2
      64:	0c 94 61 00 	jmp	0xc2
      68:	0c 94 61 00 	jmp	0xc2
      6c:	0c 94 61 00 	jmp	0xc2
      70:	0c 94 61 00 	jmp	0xc2
      74:	0c 94 61 00 	jmp	0xc2
      78:	0c 94 da 01 	jmp	0x3b4
      7c:	0c 94 61 00 	jmp	0xc2
      80:	0c 94 61 00 	jmp	0xc2
      84:	0c 94 61 00 	jmp	0xc2
      88:	0c 94 61 00 	jmp	0xc2

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:	12 e0       	ldi	r17, 0x02	; 2
      9a:	a0 e0       	ldi	r26, 0x00	; 0
      9c:	b1 e0       	ldi	r27, 0x01	; 1
      9e:	e8 e3       	ldi	r30, 0x38	; 56
      a0:	f8 e1       	ldi	r31, 0x18	; 24
      a2:	02 c0       	rjmp	.+4      	; 0xa8

000000a4 <.do_copy_data_loop>:
      a4:	05 90       	lpm	r0, Z+
      a6:	0d 92       	st	X+, r0

000000a8 <.do_copy_data_start>:
      a8:	a6 33       	cpi	r26, 0x36	; 54
      aa:	b1 07       	cpc	r27, r17
      ac:	d9 f7       	brne	.-10     	; 0xa4

000000ae <__do_clear_bss>:
      ae:	18 e0       	ldi	r17, 0x08	; 8
      b0:	a6 e3       	ldi	r26, 0x36	; 54
      b2:	b2 e0       	ldi	r27, 0x02	; 2
      b4:	01 c0       	rjmp	.+2      	; 0xb8

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

000000b8 <.do_clear_bss_start>:
      b8:	a1 34       	cpi	r26, 0x41	; 65
      ba:	b1 07       	cpc	r27, r17
      bc:	e1 f7       	brne	.-8      	; 0xb6
      be:	0c 94 a9 01 	jmp	0x352

000000c2 <__bad_interrupt>:
      c2:	0c 94 00 00 	jmp	0x0

000000c6 <stringCopy>:


//拷贝接收缓存数据
INT8U stringCopy( INT8U tempstr[])
{
      c6:	ac 01       	movw	r20, r24
	INT8U i,temp;
	for (i=0,temp=0;(UartRxBuf[i+1] != 0 || UartRxBuf[i+2] != 0);i++)
      c8:	30 e0       	ldi	r19, 0x00	; 0
      ca:	23 2f       	mov	r18, r19
      cc:	80 91 3f 02 	lds	r24, 0x023F
      d0:	88 23       	and	r24, r24
      d2:	21 f4       	brne	.+8      	; 0xdc
      d4:	80 91 40 02 	lds	r24, 0x0240
      d8:	88 23       	and	r24, r24
      da:	81 f0       	breq	.+32     	; 0xfc
	{
		temp ^= UartRxBuf[i];			
      dc:	e2 2f       	mov	r30, r18
      de:	ff 27       	eor	r31, r31
      e0:	e2 5c       	subi	r30, 0xC2	; 194
      e2:	fd 4f       	sbci	r31, 0xFD	; 253
      e4:	80 81       	ld	r24, Z
      e6:	38 27       	eor	r19, r24
      e8:	2f 5f       	subi	r18, 0xFF	; 255
      ea:	e2 2f       	mov	r30, r18
      ec:	ff 27       	eor	r31, r31
      ee:	e2 5c       	subi	r30, 0xC2	; 194
      f0:	fd 4f       	sbci	r31, 0xFD	; 253
      f2:	81 81       	ldd	r24, Z+1	; 0x01
      f4:	88 23       	and	r24, r24
      f6:	91 f7       	brne	.-28     	; 0xdc
      f8:	82 81       	ldd	r24, Z+2	; 0x02
      fa:	ee cf       	rjmp	.-36     	; 0xd8
	}
	if(temp == UartRxBuf[i])//传输校验正确
      fc:	e2 2f       	mov	r30, r18
      fe:	ff 27       	eor	r31, r31
     100:	e2 5c       	subi	r30, 0xC2	; 194
     102:	fd 4f       	sbci	r31, 0xFD	; 253
     104:	80 81       	ld	r24, Z
     106:	38 17       	cp	r19, r24
     108:	41 f4       	brne	.+16     	; 0x11a
	{
		strcpy(tempstr,UartRxBuf);
     10a:	6e e3       	ldi	r22, 0x3E	; 62
     10c:	72 e0       	ldi	r23, 0x02	; 2
     10e:	ca 01       	movw	r24, r20
     110:	0e 94 d3 0b 	call	0x17a6
		return 1;
     114:	81 e0       	ldi	r24, 0x01	; 1
     116:	90 e0       	ldi	r25, 0x00	; 0
     118:	08 95       	ret
	}
	else 
	{
		return 0;
     11a:	80 e0       	ldi	r24, 0x00	; 0
     11c:	90 e0       	ldi	r25, 0x00	; 0
	}
}
     11e:	08 95       	ret
     120:	08 95       	ret

00000122 <sendChar1>:



//*************************************************/
//名称:sendChar1
//功能:字符输出函数
//说明:只适合单个字节的发送
//输入:data
//输出:无
//调用:无
//*************************************************/

void sendChar1(INT8U data)
{
     122:	98 2f       	mov	r25, r24
	OS_ENTER_CRITICAL();
     124:	f8 94       	cli
	SERIAL_SEND;
     126:	c6 9a       	sbi	0x18, 6	; 24
	while ( ! (UCSR1A & (1 << UDRE1) ) );
     128:	80 91 9b 00 	lds	r24, 0x009B
     12c:	85 ff       	sbrs	r24, 5
     12e:	fc cf       	rjmp	.-8      	; 0x128
	UCSR1A |= (1 << TXC1);
     130:	80 91 9b 00 	lds	r24, 0x009B
     134:	80 64       	ori	r24, 0x40	; 64
     136:	80 93 9b 00 	sts	0x009B, r24
	UDR1 = data;
     13a:	90 93 9c 00 	sts	0x009C, r25
	while ( ! (UCSR1A & (1 << TXC1 ) ) );
     13e:	80 91 9b 00 	lds	r24, 0x009B
     142:	86 ff       	sbrs	r24, 6
     144:	fc cf       	rjmp	.-8      	; 0x13e
	SERIAL_RECEIVE;
     146:	c6 98       	cbi	0x18, 6	; 24
	OS_EXIT_CRITICAL();
     148:	78 94       	sei
     14a:	08 95       	ret

0000014c <clearBuf>:
}

//*************************************************/
//名称:clearBuf
//功能:清空接收缓存
//说明:
//输入:无
//输出:无
//调用:无
//*************************************************/

void clearBuf(void)
{
	INT8U i;
	for (i=0;i<UartRxCounter;i++)
     14c:	40 e0       	ldi	r20, 0x00	; 0
     14e:	20 91 36 02 	lds	r18, 0x0236
     152:	30 91 37 02 	lds	r19, 0x0237
     156:	21 15       	cp	r18, r1
     158:	31 05       	cpc	r19, r1
     15a:	59 f0       	breq	.+22     	; 0x172
	{
		UartRxBuf[i] = 0;
     15c:	e4 2f       	mov	r30, r20
     15e:	ff 27       	eor	r31, r31
     160:	e2 5c       	subi	r30, 0xC2	; 194
     162:	fd 4f       	sbci	r31, 0xFD	; 253
     164:	10 82       	st	Z, r1
     166:	4f 5f       	subi	r20, 0xFF	; 255
     168:	84 2f       	mov	r24, r20
     16a:	99 27       	eor	r25, r25
     16c:	82 17       	cp	r24, r18
     16e:	93 07       	cpc	r25, r19
     170:	a8 f3       	brcs	.-22     	; 0x15c
	}
	UartRxCounter = 0;
     172:	10 92 37 02 	sts	0x0237, r1
     176:	10 92 36 02 	sts	0x0236, r1
     17a:	08 95       	ret

0000017c <Printf>:
}

//*************************************************/
//名称:Printf
//功能:字符串输出函数
//说明:只适合发送字符串数据
//输入:pointer
//输出:无
//调用:sendChar1
//*************************************************/

void Printf(INT8U *pointer)
{
     17c:	cf 93       	push	r28
     17e:	df 93       	push	r29
     180:	ec 01       	movw	r28, r24
	while(*pointer || *(pointer+1))
	{	
		sendChar1(*pointer++);
     182:	88 81       	ld	r24, Y
     184:	88 23       	and	r24, r24
     186:	19 f4       	brne	.+6      	; 0x18e
     188:	89 81       	ldd	r24, Y+1	; 0x01
     18a:	88 23       	and	r24, r24
     18c:	49 f0       	breq	.+18     	; 0x1a0
     18e:	89 91       	ld	r24, Y+
     190:	0e 94 91 00 	call	0x122
     194:	88 81       	ld	r24, Y
     196:	88 23       	and	r24, r24
     198:	d1 f7       	brne	.-12     	; 0x18e
     19a:	89 81       	ldd	r24, Y+1	; 0x01
     19c:	88 23       	and	r24, r24
     19e:	b9 f7       	brne	.-18     	; 0x18e
     1a0:	df 91       	pop	r29
     1a2:	cf 91       	pop	r28
     1a4:	08 95       	ret

000001a6 <HexToAscii>:
	}
}

//*************************************************/
//名称:HexToAscii
//功能:将十六进制数转为ASCII码
//说明:无
//输入:data
//输出:无
//调用:无
//*************************************************/

INT8U HexToAscii(INT8U data)
{
	if (data > 9)
     1a6:	8a 30       	cpi	r24, 0x0A	; 10
     1a8:	18 f0       	brcs	.+6      	; 0x1b0
		return (data + 0x37);
     1aa:	89 5c       	subi	r24, 0xC9	; 201
     1ac:	99 27       	eor	r25, r25
     1ae:	08 95       	ret
	else 
		return (data + 0x30);
     1b0:	80 5d       	subi	r24, 0xD0	; 208
     1b2:	99 27       	eor	r25, r25
}
     1b4:	08 95       	ret
     1b6:	08 95       	ret

000001b8 <sendChar0>:
	


#ifdef DEBUG

void sendChar0(INT8U data)
{
	while ( ! (UCSR0A & (1 << UDRE0) ) );
     1b8:	5d 9b       	sbis	0x0b, 5	; 11
     1ba:	fe cf       	rjmp	.-4      	; 0x1b8
	UCSR0A |= (1 << TXC0);
     1bc:	5e 9a       	sbi	0x0b, 6	; 11
	UDR0 = data;
     1be:	8c b9       	out	0x0c, r24	; 12
	while ( ! (UCSR0A & (1 << TXC0 ) ) );
     1c0:	5e 9b       	sbis	0x0b, 6	; 11
     1c2:	fe cf       	rjmp	.-4      	; 0x1c0
     1c4:	08 95       	ret

000001c6 <Put_Byte>:
}

void  Put_Byte(INT8U data)
{
     1c6:	1f 93       	push	r17
     1c8:	18 2f       	mov	r17, r24
	sendChar0(HexToAscii( (data >> 4) & 0x0F) );
     1ca:	82 95       	swap	r24
     1cc:	8f 70       	andi	r24, 0x0F	; 15
     1ce:	0e 94 d3 00 	call	0x1a6
     1d2:	0e 94 dc 00 	call	0x1b8
	sendChar0(HexToAscii( (data & 0x0F) ) );
     1d6:	81 2f       	mov	r24, r17
     1d8:	8f 70       	andi	r24, 0x0F	; 15
     1da:	0e 94 d3 00 	call	0x1a6
     1de:	0e 94 dc 00 	call	0x1b8
     1e2:	1f 91       	pop	r17
     1e4:	08 95       	ret

000001e6 <Print>:
}


//串口0发送字符串
void Print(INT8U *pointer)
{
     1e6:	cf 93       	push	r28
     1e8:	df 93       	push	r29
     1ea:	ec 01       	movw	r28, r24
	while (*pointer)
	{
		sendChar0(*pointer++);
     1ec:	88 81       	ld	r24, Y
     1ee:	88 23       	and	r24, r24
     1f0:	31 f0       	breq	.+12     	; 0x1fe
     1f2:	89 91       	ld	r24, Y+
     1f4:	0e 94 dc 00 	call	0x1b8
     1f8:	88 81       	ld	r24, Y
     1fa:	88 23       	and	r24, r24
     1fc:	d1 f7       	brne	.-12     	; 0x1f2
     1fe:	df 91       	pop	r29
     200:	cf 91       	pop	r28
     202:	08 95       	ret

00000204 <Task1>:
	}
}

⌨️ 快捷键说明

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