main.lss

来自「以NRF905芯片为核心的PTR8000模块的AVR驱动.驱动芯片为AVR me」· LSS 代码 · 共 1,032 行 · 第 1/3 页

LSS
1,032
字号

main.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         00000352  00000000  00000000  00000074  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         00000010  00800060  00000352  000003c6  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          00000042  00800070  00000362  000003d6  2**0
                  ALLOC
  3 .debug_aranges 00000060  00000000  00000000  000003d6  2**0
                  CONTENTS, READONLY, DEBUGGING
  4 .debug_pubnames 0000018d  00000000  00000000  00000436  2**0
                  CONTENTS, READONLY, DEBUGGING
  5 .debug_info   00000a84  00000000  00000000  000005c3  2**0
                  CONTENTS, READONLY, DEBUGGING
  6 .debug_abbrev 000002cf  00000000  00000000  00001047  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_line   00000822  00000000  00000000  00001316  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_frame  00000120  00000000  00000000  00001b38  2**2
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_str    0000022c  00000000  00000000  00001c58  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_loc    000001dc  00000000  00000000  00001e84  2**0
                  CONTENTS, READONLY, DEBUGGING
 11 .debug_ranges 00000018  00000000  00000000  00002060  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00000000 <__vectors>:
   0:	0c 94 2a 00 	jmp	0x54	; 0x54 <__ctors_end>
   4:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
   8:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
   c:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  10:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  14:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  18:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  1c:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  20:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  24:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  28:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  2c:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  30:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  34:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  38:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  3c:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  40:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  44:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  48:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  4c:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  50:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>

00000054 <__ctors_end>:
  54:	11 24       	eor	r1, r1
  56:	1f be       	out	0x3f, r1	; 63
  58:	cf e5       	ldi	r28, 0x5F	; 95
  5a:	d4 e0       	ldi	r29, 0x04	; 4
  5c:	de bf       	out	0x3e, r29	; 62
  5e:	cd bf       	out	0x3d, r28	; 61

00000060 <__do_copy_data>:
  60:	10 e0       	ldi	r17, 0x00	; 0
  62:	a0 e6       	ldi	r26, 0x60	; 96
  64:	b0 e0       	ldi	r27, 0x00	; 0
  66:	e2 e5       	ldi	r30, 0x52	; 82
  68:	f3 e0       	ldi	r31, 0x03	; 3
  6a:	02 c0       	rjmp	.+4      	; 0x70 <.do_copy_data_start>

0000006c <.do_copy_data_loop>:
  6c:	05 90       	lpm	r0, Z+
  6e:	0d 92       	st	X+, r0

00000070 <.do_copy_data_start>:
  70:	a0 37       	cpi	r26, 0x70	; 112
  72:	b1 07       	cpc	r27, r17
  74:	d9 f7       	brne	.-10     	; 0x6c <.do_copy_data_loop>

00000076 <__do_clear_bss>:
  76:	10 e0       	ldi	r17, 0x00	; 0
  78:	a0 e7       	ldi	r26, 0x70	; 112
  7a:	b0 e0       	ldi	r27, 0x00	; 0
  7c:	01 c0       	rjmp	.+2      	; 0x80 <.do_clear_bss_start>

0000007e <.do_clear_bss_loop>:
  7e:	1d 92       	st	X+, r1

00000080 <.do_clear_bss_start>:
  80:	a2 3b       	cpi	r26, 0xB2	; 178
  82:	b1 07       	cpc	r27, r17
  84:	e1 f7       	brne	.-8      	; 0x7e <.do_clear_bss_loop>
  86:	0e 94 49 00 	call	0x92	; 0x92 <main>
  8a:	0c 94 a7 01 	jmp	0x34e	; 0x34e <_exit>

0000008e <__bad_interrupt>:
  8e:	0c 94 00 00 	jmp	0	; 0x0 <__vectors>

00000092 <main>:
#define FOSC	11059200UL
#define BAUD	19200UL

/* 接收端代码 */ 
int main(void)
{
  92:	83 e2       	ldi	r24, 0x23	; 35
  94:	90 e0       	ldi	r25, 0x00	; 0
  96:	0e 94 68 00 	call	0xd0	; 0xd0 <usart_init>

	//unsigned char i = 2;
	usart_init( FOSC/(16*BAUD) - 1 );
	SPI_Init();
  9a:	0e 94 81 00 	call	0x102	; 0x102 <SPI_Init>
	nRF905_Init(RX_ADDRESS);
  9e:	60 e0       	ldi	r22, 0x00	; 0
  a0:	70 e0       	ldi	r23, 0x00	; 0
  a2:	80 e0       	ldi	r24, 0x00	; 0
  a4:	90 e0       	ldi	r25, 0x00	; 0
  a6:	0e 94 fe 00 	call	0x1fc	; 0x1fc <nRF905_Init>

	usart_transmit('g');
  aa:	87 e6       	ldi	r24, 0x67	; 103
  ac:	0e 94 6f 00 	call	0xde	; 0xde <usart_transmit>

	while(1){
		if( PIN_NRF905 & (1<<DR) )
  b0:	cd 9b       	sbis	0x19, 5	; 25
  b2:	fe cf       	rjmp	.-4      	; 0xb0 <main+0x1e>
		{
			nRF905_ReceivePacket();
  b4:	0e 94 1e 01 	call	0x23c	; 0x23c <nRF905_ReceivePacket>
			//for(i=0; i<32; i++)usart_transmit(ReceiveBuffer[i]);
			if(ReceiveBuffer[31]==31)
  b8:	80 91 b1 00 	lds	r24, 0x00B1
  bc:	8f 31       	cpi	r24, 0x1F	; 31
  be:	c1 f7       	brne	.-16     	; 0xb0 <main+0x1e>
			{
				fasong("小玲,我爱你!\r\n",16);
  c0:	60 e1       	ldi	r22, 0x10	; 16
  c2:	80 e6       	ldi	r24, 0x60	; 96
  c4:	90 e0       	ldi	r25, 0x00	; 0
  c6:	0e 94 73 00 	call	0xe6	; 0xe6 <fasong>
				ReceiveBuffer[31]=0;
  ca:	10 92 b1 00 	sts	0x00B1, r1
  ce:	f0 cf       	rjmp	.-32     	; 0xb0 <main+0x1e>

000000d0 <usart_init>:
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>

void usart_init(unsigned int baud)
{
  d0:	90 bd       	out	0x20, r25	; 32
	UBRRH = (unsigned char)(baud>>8);
	UBRRL = (unsigned char)baud;
  d2:	89 b9       	out	0x09, r24	; 9

	/* 接收器与发送器使能,接收中断使能*/
	UCSRB = (1<<RXCIE)|(1<<TXCIE)|(1<<RXEN)|(1<<TXEN);
  d4:	88 ed       	ldi	r24, 0xD8	; 216
  d6:	8a b9       	out	0x0a, r24	; 10
	/* 设置帧格式: 8 个数据位, 2 个停止位*/
	UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);
  d8:	8e e8       	ldi	r24, 0x8E	; 142
  da:	80 bd       	out	0x20, r24	; 32
}
  dc:	08 95       	ret

000000de <usart_transmit>:

void usart_transmit(unsigned char data)
{
  de:	5d 9b       	sbis	0x0b, 5	; 11
  e0:	fe cf       	rjmp	.-4      	; 0xde <usart_transmit>
	/* 等待发送缓冲器为空 */
	while( !(UCSRA & (1<<UDRE) ) )
		;
	/* 将数据放入发送缓冲器,发送数据 */
	UDR = data;
  e2:	8c b9       	out	0x0c, r24	; 12
}
  e4:	08 95       	ret

000000e6 <fasong>:

void fasong(unsigned char *p,unsigned char j)
{
  e6:	fc 01       	movw	r30, r24
  e8:	06 c0       	rjmp	.+12     	; 0xf6 <fasong+0x10>
	while(j--)usart_transmit(*p++);
  ea:	80 81       	ld	r24, Z
}

void usart_transmit(unsigned char data)
{
	/* 等待发送缓冲器为空 */
	while( !(UCSRA & (1<<UDRE) ) )
  ec:	5d 9b       	sbis	0x0b, 5	; 11
  ee:	fe cf       	rjmp	.-4      	; 0xec <fasong+0x6>
	UDR = data;
}

void fasong(unsigned char *p,unsigned char j)
{
	while(j--)usart_transmit(*p++);
  f0:	31 96       	adiw	r30, 0x01	; 1
{
	/* 等待发送缓冲器为空 */
	while( !(UCSRA & (1<<UDRE) ) )
		;
	/* 将数据放入发送缓冲器,发送数据 */
	UDR = data;
  f2:	8c b9       	out	0x0c, r24	; 12
  f4:	61 50       	subi	r22, 0x01	; 1
}

void fasong(unsigned char *p,unsigned char j)
{
	while(j--)usart_transmit(*p++);
  f6:	66 23       	and	r22, r22
  f8:	c1 f7       	brne	.-16     	; 0xea <fasong+0x4>
}
  fa:	08 95       	ret

000000fc <usart_receive>:

unsigned char usart_receive(void)
{
  fc:	8b b1       	in	r24, 0x0b	; 11
	/* 等待接收数据 */
	while( !UCSRA & (1<<RXC) )
		;
	/* 从缓冲区中获取并返回数据 */
	return UDR;
  fe:	8c b1       	in	r24, 0x0c	; 12
}
 100:	08 95       	ret

00000102 <SPI_Init>:
unsigned char SendBuffer[BUF_SIZE];			// RF发送缓冲区
unsigned char ReceiveCount;				// RF接收缓冲区接收个数
unsigned char SendCount;				// RF发送缓冲区发送个数

void SPI_Init(void)
{
 102:	88 b3       	in	r24, 0x18	; 24
 104:	80 6f       	ori	r24, 0xF0	; 240
 106:	88 bb       	out	0x18, r24	; 24
	PORT_SPI |= (1<<MOSI)|(1<<MISO)|(1<<SCK)|(1<<SS);  // 设置MOSI和SCK、SS为输出,其他为输入
	DDR_SPI  |= (1<<MOSI)|(1<<SCK)|(1<<SS);
 108:	87 b3       	in	r24, 0x17	; 23
 10a:	80 6b       	ori	r24, 0xB0	; 176
 10c:	87 bb       	out	0x17, r24	; 23
	SPCR   = (1<<SPE)|(1<<MSTR)|(0<<CPOL)|(0<<SPR0);   // 主机模式,fck/16, SPI方式0
 10e:	80 e5       	ldi	r24, 0x50	; 80
 110:	8d b9       	out	0x0d, r24	; 13
}
 112:	08 95       	ret

00000114 <SPI_ReadWrite>:

unsigned char SPI_ReadWrite(unsigned char cData)
{
 114:	8f b9       	out	0x0f, r24	; 15
	SPDR = cData;
	while(!(SPSR & (1<<SPIF) ))			// 等待SPI发送完毕
 116:	77 9b       	sbis	0x0e, 7	; 14
 118:	fe cf       	rjmp	.-4      	; 0x116 <SPI_ReadWrite+0x2>
		;
	return SPDR;
 11a:	8f b1       	in	r24, 0x0f	; 15
}
 11c:	08 95       	ret

0000011e <nRF905_ReadStatus>:
		ReceiveBuffer[i] = 0;
	}
}

unsigned char nRF905_ReadStatus(void)
{
 11e:	c4 98       	cbi	0x18, 4	; 24
	SPCR   = (1<<SPE)|(1<<MSTR)|(0<<CPOL)|(0<<SPR0);   // 主机模式,fck/16, SPI方式0
}

unsigned char SPI_ReadWrite(unsigned char cData)
{
	SPDR = cData;
 120:	80 e1       	ldi	r24, 0x10	; 16
 122:	8f b9       	out	0x0f, r24	; 15
	while(!(SPSR & (1<<SPIF) ))			// 等待SPI发送完毕
 124:	77 9b       	sbis	0x0e, 7	; 14
 126:	fe cf       	rjmp	.-4      	; 0x124 <nRF905_ReadStatus+0x6>
		;
	return SPDR;
 128:	8f b1       	in	r24, 0x0f	; 15
{
	unsigned char val;

	CLR_SS();					// 打开SPI
	val = SPI_ReadWrite(RC);			// 读状态
	SET_SS();					// 关闭SPI
 12a:	c4 9a       	sbi	0x18, 4	; 24

	return val;
}
 12c:	08 95       	ret

0000012e <nRF905_SetSendMode>:

void nRF905_SetSendMode(void)
{
 12e:	8c ec       	ldi	r24, 0xCC	; 204
 130:	9a e0       	ldi	r25, 0x0A	; 10
 132:	fc 01       	movw	r30, r24
 134:	31 97       	sbiw	r30, 0x01	; 1
 136:	f1 f7       	brne	.-4      	; 0x134 <nRF905_SetSendMode+0x6>
	_delay_ms(1);
	SET_TX_EN();					// 设置为发送模式
 138:	d8 9a       	sbi	0x1b, 0	; 27
    milliseconds can be achieved.
 */
void
_delay_loop_2(uint16_t __count)
{
	__asm__ volatile (
 13a:	fc 01       	movw	r30, r24
 13c:	31 97       	sbiw	r30, 0x01	; 1
 13e:	f1 f7       	brne	.-4      	; 0x13c <nRF905_SetSendMode+0xe>
	asm("nop");
	asm("nop");
	asm("nop");
	asm("nop");*/
	_delay_ms(1);
	CLR_TRX_CE();					// 待机PORTD &= ~(1<<TRX_CE);
 140:	d9 98       	cbi	0x1b, 1	; 27
 142:	01 97       	sbiw	r24, 0x01	; 1
 144:	f1 f7       	brne	.-4      	; 0x142 <nRF905_SetSendMode+0x14>
	_delay_ms(1);
}
 146:	08 95       	ret

00000148 <nRF905_SetReceiveMode>:

⌨️ 快捷键说明

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