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

📄 nangle.lss

📁 南格(AVR)操作系统 for keil
💻 LSS
📖 第 1 页 / 共 3 页
字号:

Nangle.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .data         00000000  00800100  00000738  000007cc  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  1 .text         00000738  00000000  00000000  00000094  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  2 .bss          0000018b  00800100  00800100  000007cc  2**2
                  ALLOC
  3 .noinit       00000000  0080028b  0080028b  000007cc  2**0
                  CONTENTS
  4 .eeprom       00000000  00810000  00810000  000007cc  2**0
                  CONTENTS
  5 .stab         00001d40  00000000  00000000  000007cc  2**2
                  CONTENTS, READONLY, DEBUGGING
  6 .stabstr      00000398  00000000  00000000  0000250c  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_aranges 00000028  00000000  00000000  000028a4  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_pubnames 000001b6  00000000  00000000  000028cc  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_info   00000538  00000000  00000000  00002a82  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_abbrev 000001b3  00000000  00000000  00002fba  2**0
                  CONTENTS, READONLY, DEBUGGING
 11 .debug_line   0000039e  00000000  00000000  0000316d  2**0
                  CONTENTS, READONLY, DEBUGGING
 12 .debug_str    00000239  00000000  00000000  0000350b  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00000000 <__vectors>:
   0:	0c 94 4d 00 	jmp	0x9a <__init>
   4:	0c 94 68 00 	jmp	0xd0 <__bad_interrupt>
   8:	0c 94 68 00 	jmp	0xd0 <__bad_interrupt>
   c:	0c 94 68 00 	jmp	0xd0 <__bad_interrupt>
  10:	0c 94 68 00 	jmp	0xd0 <__bad_interrupt>
  14:	0c 94 68 00 	jmp	0xd0 <__bad_interrupt>
  18:	0c 94 68 00 	jmp	0xd0 <__bad_interrupt>
  1c:	0c 94 68 00 	jmp	0xd0 <__bad_interrupt>
  20:	0c 94 68 00 	jmp	0xd0 <__bad_interrupt>
  24:	0c 94 4b 01 	jmp	0x296 <__vector_9>
  28:	0c 94 68 00 	jmp	0xd0 <__bad_interrupt>
  2c:	0c 94 68 00 	jmp	0xd0 <__bad_interrupt>
  30:	0c 94 68 00 	jmp	0xd0 <__bad_interrupt>
  34:	0c 94 68 00 	jmp	0xd0 <__bad_interrupt>
  38:	0c 94 68 00 	jmp	0xd0 <__bad_interrupt>
  3c:	0c 94 45 01 	jmp	0x28a <__vector_15>
  40:	0c 94 68 00 	jmp	0xd0 <__bad_interrupt>
  44:	0c 94 68 00 	jmp	0xd0 <__bad_interrupt>
  48:	0c 94 68 00 	jmp	0xd0 <__bad_interrupt>
  4c:	0c 94 68 00 	jmp	0xd0 <__bad_interrupt>
  50:	0c 94 68 00 	jmp	0xd0 <__bad_interrupt>
  54:	0c 94 68 00 	jmp	0xd0 <__bad_interrupt>
  58:	0c 94 68 00 	jmp	0xd0 <__bad_interrupt>
  5c:	0c 94 68 00 	jmp	0xd0 <__bad_interrupt>
  60:	0c 94 68 00 	jmp	0xd0 <__bad_interrupt>
  64:	0c 94 68 00 	jmp	0xd0 <__bad_interrupt>
  68:	0c 94 68 00 	jmp	0xd0 <__bad_interrupt>
  6c:	0c 94 68 00 	jmp	0xd0 <__bad_interrupt>
  70:	0c 94 68 00 	jmp	0xd0 <__bad_interrupt>
  74:	0c 94 68 00 	jmp	0xd0 <__bad_interrupt>
  78:	0c 94 78 00 	jmp	0xf0 <__vector_30>
  7c:	0c 94 68 00 	jmp	0xd0 <__bad_interrupt>
  80:	0c 94 93 00 	jmp	0x126 <__vector_32>
  84:	0c 94 68 00 	jmp	0xd0 <__bad_interrupt>
  88:	0c 94 68 00 	jmp	0xd0 <__bad_interrupt>

0000008c <UartTaskTcb>:
  8c:	6b 02 75 01 d0 01 01                                k.u....

00000093 <MainTaskTcb>:
  93:	20 02 4f 01 72 02 00                                 .O.r..

0000009a <__init>:
  9a:	11 24       	eor	r1, r1
  9c:	1f be       	out	0x3f, r1	; 63
  9e:	cf ef       	ldi	r28, 0xFF	; 255
  a0:	d0 e1       	ldi	r29, 0x10	; 16
  a2:	de bf       	out	0x3e, r29	; 62
  a4:	cd bf       	out	0x3d, r28	; 61

000000a6 <__do_copy_data>:
  a6:	11 e0       	ldi	r17, 0x01	; 1
  a8:	a0 e0       	ldi	r26, 0x00	; 0
  aa:	b1 e0       	ldi	r27, 0x01	; 1
  ac:	e8 e3       	ldi	r30, 0x38	; 56
  ae:	f7 e0       	ldi	r31, 0x07	; 7
  b0:	02 c0       	rjmp	.+4      	; 0xb6 <.do_copy_data_start>

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

000000b6 <.do_copy_data_start>:
  b6:	a0 30       	cpi	r26, 0x00	; 0
  b8:	b1 07       	cpc	r27, r17
  ba:	d9 f7       	brne	.-10     	; 0xb2 <.do_copy_data_loop>

000000bc <__do_clear_bss>:
  bc:	12 e0       	ldi	r17, 0x02	; 2
  be:	a0 e0       	ldi	r26, 0x00	; 0
  c0:	b1 e0       	ldi	r27, 0x01	; 1
  c2:	01 c0       	rjmp	.+2      	; 0xc6 <.do_clear_bss_start>

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

000000c6 <.do_clear_bss_start>:
  c6:	ab 38       	cpi	r26, 0x8B	; 139
  c8:	b1 07       	cpc	r27, r17
  ca:	e1 f7       	brne	.-8      	; 0xc4 <.do_clear_bss_loop>
  cc:	0c 94 94 01 	jmp	0x328 <main>

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

000000d4 <InitUart>:
    //USART Receiver: On
    //USART Transmitter: On
    //USART Mode: Asynchronous
    //USART Baud rate: 38400    
    UCSR1A = 0x00;
  d4:	10 92 9b 00 	sts	0x009B, r1
    UCSR1B = 0xD8;
  d8:	88 ed       	ldi	r24, 0xD8	; 216
  da:	80 93 9a 00 	sts	0x009A, r24
    UCSR1C = 0x06;
  de:	86 e0       	ldi	r24, 0x06	; 6
  e0:	80 93 9d 00 	sts	0x009D, r24
    UBRR1H = 0x00;
  e4:	10 92 98 00 	sts	0x0098, r1
    UBRR1L = 0x0C;	
  e8:	8c e0       	ldi	r24, 0x0C	; 12
  ea:	80 93 99 00 	sts	0x0099, r24
  ee:	08 95       	ret

000000f0 <__vector_30>:
}
/***************************************************************************
*Function Name	
*Description        :
*Input parameters   :
*Return Values:   	:
*Global Variables 	:
*Calling Modules  	:
***
*Create By	      	:ChenWeiGuo
*Create Tate	 	:2007-4-27
***
*Modified By	  	:
*Modified Date    	:
*Note		      	:
****************************************************************************/
#pragma optimize=z 4
AVRX_SIGINT(SIG_UART1_RECV)//串口接收中断函数
{                
    /*接收到数据*/    
    IntProlog();                //切换到系统堆栈   
  f0:	0e 94 a7 01 	call	0x34e <IntProlog>
	Rx1Buffer[Rx1Tail] = UDR1;  	
  f4:	20 91 02 01 	lds	r18, 0x0102
  f8:	30 91 03 01 	lds	r19, 0x0103
  fc:	f9 01       	movw	r30, r18
  fe:	e4 59       	subi	r30, 0x94	; 148
 100:	fe 4f       	sbci	r31, 0xFE	; 254
 102:	80 91 9c 00 	lds	r24, 0x009C
 106:	80 83       	st	Z, r24
	IncRxPtr(Rx1Tail);			//调整尾巴 	
 108:	c9 01       	movw	r24, r18
 10a:	01 96       	adiw	r24, 0x01	; 1
 10c:	90 93 03 01 	sts	0x0103, r25
 110:	80 93 02 01 	sts	0x0102, r24
 114:	84 36       	cpi	r24, 0x64	; 100
 116:	91 05       	cpc	r25, r1
 118:	20 f0       	brcs	.+8      	; 0x122 <__vector_30+0x32>
 11a:	10 92 03 01 	sts	0x0103, r1
 11e:	10 92 02 01 	sts	0x0102, r1
	Epilog();                   //返回任务堆栈 
 122:	0e 94 f3 01 	call	0x3e6 <Epilog>

00000126 <__vector_32>:
} 
/***************************************************************************
*Function Name	
*Description        :
*Input parameters   :
*Return Values:   	:
*Global Variables 	:
*Calling Modules  	:
***
*Create By	      	:ChenWeiGuo
*Create Tate	 	:2007-4-27
***
*Modified By	  	:
*Modified Date    	:
*Note		      	:
****************************************************************************/
#pragma optimize=z 4
AVRX_SIGINT(SIG_UART1_TRANS)    //串口发送中断函数
{
    //发送完数据
	IntProlog();                //切换到系统堆栈	
 126:	0e 94 a7 01 	call	0x34e <IntProlog>
	if(Tx1Tail != Tx1Head)
 12a:	80 91 00 01 	lds	r24, 0x0100
 12e:	90 91 01 01 	lds	r25, 0x0101
 132:	20 91 04 01 	lds	r18, 0x0104
 136:	30 91 05 01 	lds	r19, 0x0105
 13a:	82 17       	cp	r24, r18
 13c:	93 07       	cpc	r25, r19
 13e:	99 f0       	breq	.+38     	; 0x166 <__vector_32+0x40>
	{         	 
		UDR1 = Tx1Buffer[Tx1Head];	
 140:	f9 01       	movw	r30, r18
 142:	e8 5f       	subi	r30, 0xF8	; 248
 144:	fe 4f       	sbci	r31, 0xFE	; 254
 146:	80 81       	ld	r24, Z
 148:	80 93 9c 00 	sts	0x009C, r24
		IncTxPtr(Tx1Head);		//调整为下一次的头指针			
 14c:	c9 01       	movw	r24, r18
 14e:	01 96       	adiw	r24, 0x01	; 1
 150:	90 93 05 01 	sts	0x0105, r25
 154:	80 93 04 01 	sts	0x0104, r24
 158:	84 36       	cpi	r24, 0x64	; 100
 15a:	91 05       	cpc	r25, r1
 15c:	20 f0       	brcs	.+8      	; 0x166 <__vector_32+0x40>
 15e:	10 92 05 01 	sts	0x0105, r1
 162:	10 92 04 01 	sts	0x0104, r1
	}     
	Epilog();                   //返回任务堆栈 
 166:	0e 94 f3 01 	call	0x3e6 <Epilog>

0000016a <GetUart1Data>:
}
/***************************************************************************
*Function Name	  :GetUart1Data
*Description      :
*Input parameters :
*Return Values:   :
*Global Variables :
*Calling Modules  :
***
*Create By	      :ChenWeiGuo
*Create Tate	  :2006-9-24
***
*Modified By	  :
*Modified Date    :
*Note		      :
****************************************************************************/
uint8 GetUart1Data(uint8 *pbyData)
{
 16a:	dc 01       	movw	r26, r24
	//读取串口接收缓存区一字节数据	    	
    if(Rx1Tail != Rx1Head)
 16c:	80 91 02 01 	lds	r24, 0x0102
 170:	90 91 03 01 	lds	r25, 0x0103
 174:	e0 91 06 01 	lds	r30, 0x0106
 178:	f0 91 07 01 	lds	r31, 0x0107
 17c:	8e 17       	cp	r24, r30
 17e:	9f 07       	cpc	r25, r31
 180:	b9 f0       	breq	.+46     	; 0x1b0 <GetUart1Data+0x46>
    {	/*缓冲区中有数据*/      	
        *pbyData = Rx1Buffer[Rx1Head];	//取出第一个数据	        
 182:	e4 59       	subi	r30, 0x94	; 148
 184:	fe 4f       	sbci	r31, 0xFE	; 254
 186:	80 81       	ld	r24, Z
 188:	8c 93       	st	X, r24
        IncRxPtr(Rx1Head);	            //调整为下一次的头指针                                                    
 18a:	80 91 06 01 	lds	r24, 0x0106
 18e:	90 91 07 01 	lds	r25, 0x0107
 192:	01 96       	adiw	r24, 0x01	; 1
 194:	90 93 07 01 	sts	0x0107, r25
 198:	80 93 06 01 	sts	0x0106, r24
 19c:	84 36       	cpi	r24, 0x64	; 100
 19e:	91 05       	cpc	r25, r1
 1a0:	20 f0       	brcs	.+8      	; 0x1aa <GetUart1Data+0x40>
 1a2:	10 92 07 01 	sts	0x0107, r1
 1a6:	10 92 06 01 	sts	0x0106, r1
        return(OK);
 1aa:	81 e0       	ldi	r24, 0x01	; 1
 1ac:	90 e0       	ldi	r25, 0x00	; 0
 1ae:	08 95       	ret
    }
    else
    {      		        
     	return(ERROR);
 1b0:	80 e0       	ldi	r24, 0x00	; 0
 1b2:	90 e0       	ldi	r25, 0x00	; 0
    }
} 
 1b4:	08 95       	ret

000001b6 <PutUart1Data>:
/***************************************************************************
*Function Name	  :PutUart1Data
*Description      :
*Input parameters :
*Return Values:   :
*Global Variables :
*Calling Modules  :
***
*Create By	      :ChenWeiGuo
*Create Tate	  :2006-9-24
***
*Modified By	  :
*Modified Date    :
*Note		      :
****************************************************************************/
uint8 PutUart1Data(uint8 byData)
{		    
    Tx1Buffer[Tx1Tail] = byData;    //数据入缓冲区	
 1b6:	20 91 00 01 	lds	r18, 0x0100
 1ba:	30 91 01 01 	lds	r19, 0x0101
 1be:	f9 01       	movw	r30, r18
 1c0:	e8 5f       	subi	r30, 0xF8	; 248
 1c2:	fe 4f       	sbci	r31, 0xFE	; 254
 1c4:	80 83       	st	Z, r24
    IncTxPtr(Tx1Tail);			    //调整为下一次的头指针
 1c6:	c9 01       	movw	r24, r18
 1c8:	01 96       	adiw	r24, 0x01	; 1
 1ca:	90 93 01 01 	sts	0x0101, r25
 1ce:	80 93 00 01 	sts	0x0100, r24
 1d2:	84 36       	cpi	r24, 0x64	; 100
 1d4:	91 05       	cpc	r25, r1
 1d6:	20 f0       	brcs	.+8      	; 0x1e0 <PutUart1Data+0x2a>
 1d8:	10 92 01 01 	sts	0x0101, r1
 1dc:	10 92 00 01 	sts	0x0100, r1
    if(Tx1Tail != Tx1Head)          //缓冲区没有满
 1e0:	20 91 00 01 	lds	r18, 0x0100
 1e4:	30 91 01 01 	lds	r19, 0x0101
 1e8:	80 91 04 01 	lds	r24, 0x0104
 1ec:	90 91 05 01 	lds	r25, 0x0105
 1f0:	28 17       	cp	r18, r24
 1f2:	39 07       	cpc	r19, r25
 1f4:	19 f0       	breq	.+6      	; 0x1fc <PutUart1Data+0x46>
    {             
        return(OK);
 1f6:	81 e0       	ldi	r24, 0x01	; 1
 1f8:	90 e0       	ldi	r25, 0x00	; 0
 1fa:	08 95       	ret
    }
    else
    {             
	 	return(ERROR);
 1fc:	80 e0       	ldi	r24, 0x00	; 0
 1fe:	90 e0       	ldi	r25, 0x00	; 0
    }	
} 
 200:	08 95       	ret

00000202 <StartUart1Send>:
/***************************************************************************
*Function Name	  :StartUart1Send
*Description      :
*Input parameters :
*Return Values:   :
*Global Variables :
*Calling Modules  :
***
*Create By	      :ChenWeiGuo
*Create Tate	  :2007-4-27
***
*Modified By	  :
*Modified Date    :
*Note		      :
****************************************************************************/
void StartUart1Send(void)
{	
    while(!(UCSR1A & (1 << UDRE1)));	//等待发送缓冲区空          
 202:	80 91 9b 00 	lds	r24, 0x009B
 206:	85 ff       	sbrs	r24, 5
 208:	fc cf       	rjmp	.-8      	; 0x202 <StartUart1Send>
    UDR1 = Tx1Buffer[Tx1Head]; 
 20a:	20 91 04 01 	lds	r18, 0x0104
 20e:	30 91 05 01 	lds	r19, 0x0105
 212:	f9 01       	movw	r30, r18
 214:	e8 5f       	subi	r30, 0xF8	; 248
 216:	fe 4f       	sbci	r31, 0xFE	; 254
 218:	80 81       	ld	r24, Z
 21a:	80 93 9c 00 	sts	0x009C, r24
	IncTxPtr(Tx1Head);					//调整为下一次的头指针		
 21e:	c9 01       	movw	r24, r18
 220:	01 96       	adiw	r24, 0x01	; 1
 222:	90 93 05 01 	sts	0x0105, r25
 226:	80 93 04 01 	sts	0x0104, r24
 22a:	84 36       	cpi	r24, 0x64	; 100
 22c:	91 05       	cpc	r25, r1
 22e:	20 f0       	brcs	.+8      	; 0x238 <StartUart1Send+0x36>
 230:	10 92 05 01 	sts	0x0105, r1
 234:	10 92 04 01 	sts	0x0104, r1
 238:	08 95       	ret

0000023a <SendUart1String>:
		
	return;
}
/***************************************************************************
*Function Name	  :SendUart1String
*Description      :
*Input parameters :
*Return Values:   :
*Global Variables :
*Calling Modules  :
***
*Create By	      :ChenWeiGuo
*Create Tate	  :2006-9-24
***
*Modified By	  :
*Modified Date    :
*Note		      :
****************************************************************************/
uint8 SendUart1String(uint8 *pbyData, uint16 uiLen) // 发送一数据帧包;
{
 23a:	0f 93       	push	r16
 23c:	1f 93       	push	r17
 23e:	cf 93       	push	r28
 240:	df 93       	push	r29
 242:	8c 01       	movw	r16, r24
 244:	eb 01       	movw	r28, r22
	if(uiLen == 0)              //数据长度错误
 246:	61 15       	cp	r22, r1
 248:	71 05       	cpc	r23, r1
 24a:	21 f4       	brne	.+8      	; 0x254 <SendUart1String+0x1a>
	{
	    return(ERROR);
 24c:	18 c0       	rjmp	.+48     	; 0x27e <SendUart1String+0x44>
	}
	while(uiLen-- != 0)
	{
	    if(PutUart1Data(*pbyData++) == ERROR)
	    {   //发送数据帧超过缓冲区大小
	        return(ERROR);
 24e:	60 e0       	ldi	r22, 0x00	; 0
 250:	70 e0       	ldi	r23, 0x00	; 0
 252:	15 c0       	rjmp	.+42     	; 0x27e <SendUart1String+0x44>
 254:	21 97       	sbiw	r28, 0x01	; 1
 256:	8f ef       	ldi	r24, 0xFF	; 255
 258:	cf 3f       	cpi	r28, 0xFF	; 255
 25a:	d8 07       	cpc	r29, r24
 25c:	61 f0       	breq	.+24     	; 0x276 <SendUart1String+0x3c>
 25e:	f8 01       	movw	r30, r16
 260:	81 91       	ld	r24, Z+
 262:	8f 01       	movw	r16, r30

⌨️ 快捷键说明

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