main.lss

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

LSS
947
字号

main.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         0000033a  00000000  00000000  00000074  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .bss          00000042  00800060  0000033a  000003ae  2**0
                  ALLOC
  2 .debug_aranges 00000060  00000000  00000000  000003ae  2**0
                  CONTENTS, READONLY, DEBUGGING
  3 .debug_pubnames 00000182  00000000  00000000  0000040e  2**0
                  CONTENTS, READONLY, DEBUGGING
  4 .debug_info   00000aa3  00000000  00000000  00000590  2**0
                  CONTENTS, READONLY, DEBUGGING
  5 .debug_abbrev 000002b0  00000000  00000000  00001033  2**0
                  CONTENTS, READONLY, DEBUGGING
  6 .debug_line   00000873  00000000  00000000  000012e3  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_frame  00000110  00000000  00000000  00001b58  2**2
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_str    00000225  00000000  00000000  00001c68  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_loc    00000204  00000000  00000000  00001e8d  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_ranges 00000048  00000000  00000000  00002091  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:	d8 e0       	ldi	r29, 0x08	; 8
  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:	ea e3       	ldi	r30, 0x3A	; 58
  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 36       	cpi	r26, 0x60	; 96
  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 e6       	ldi	r26, 0x60	; 96
  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 3a       	cpi	r26, 0xA2	; 162
  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 9b 01 	jmp	0x336	; 0x336 <_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:	cf 93       	push	r28
  94:	df 93       	push	r29
	//unsigned char i = 0;		
	usart_init( FOSC/(16*BAUD) - 1 );
  96:	83 e2       	ldi	r24, 0x23	; 35
  98:	90 e0       	ldi	r25, 0x00	; 0
  9a:	0e 94 67 00 	call	0xce	; 0xce <usart_init>
	SPI_Init();
  9e:	0e 94 75 00 	call	0xea	; 0xea <SPI_Init>
	nRF905_Init(TX_ADDRESS);
  a2:	68 e7       	ldi	r22, 0x78	; 120
  a4:	76 e5       	ldi	r23, 0x56	; 86
  a6:	84 e3       	ldi	r24, 0x34	; 52
  a8:	92 e1       	ldi	r25, 0x12	; 18
  aa:	0e 94 f2 00 	call	0x1e4	; 0x1e4 <nRF905_Init>
    milliseconds can be achieved.
 */
void
_delay_loop_2(uint16_t __count)
{
	__asm__ volatile (
  ae:	c4 e1       	ldi	r28, 0x14	; 20
  b0:	d1 e0       	ldi	r29, 0x01	; 1
			{
				flag = 1;
				ReceiveBuffer[0] = 0;
			}
		}*/
		nRF905_SendPacket(RX_ADDRESS);
  b2:	60 e0       	ldi	r22, 0x00	; 0
  b4:	70 e0       	ldi	r23, 0x00	; 0
  b6:	80 e0       	ldi	r24, 0x00	; 0
  b8:	90 e0       	ldi	r25, 0x00	; 0
  ba:	0e 94 38 01 	call	0x270	; 0x270 <nRF905_SendPacket>
  be:	80 e1       	ldi	r24, 0x10	; 16
  c0:	97 e2       	ldi	r25, 0x27	; 39
  c2:	fe 01       	movw	r30, r28
  c4:	31 97       	sbiw	r30, 0x01	; 1
  c6:	f1 f7       	brne	.-4      	; 0xc4 <main+0x32>
		__ticks = (uint16_t) (__ms * 10.0);
		while(__ticks)
		{
			// wait 1/10 ms
			_delay_loop_2(((F_CPU) / 4e3) / 10);
			__ticks --;
  c8:	01 97       	sbiw	r24, 0x01	; 1
		__ticks = 1;
	else if (__tmp > 65535)
	{
		//	__ticks = requested delay in 1/10 ms
		__ticks = (uint16_t) (__ms * 10.0);
		while(__ticks)
  ca:	d9 f7       	brne	.-10     	; 0xc2 <main+0x30>
  cc:	f2 cf       	rjmp	.-28     	; 0xb2 <main+0x20>

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

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

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

000000dc <usart_transmit>:

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

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

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

void SPI_Init(void)
{
  ea:	88 b3       	in	r24, 0x18	; 24
  ec:	80 6f       	ori	r24, 0xF0	; 240
  ee:	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);
  f0:	87 b3       	in	r24, 0x17	; 23
  f2:	80 6b       	ori	r24, 0xB0	; 176
  f4:	87 bb       	out	0x17, r24	; 23
	SPCR   = (1<<SPE)|(1<<MSTR)|(0<<CPOL)|(0<<SPR0);   // 主机模式,fck/16, SPI方式0
  f6:	80 e5       	ldi	r24, 0x50	; 80
  f8:	8d b9       	out	0x0d, r24	; 13
}
  fa:	08 95       	ret

000000fc <SPI_ReadWrite>:

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

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

unsigned char nRF905_ReadStatus(void)
{
 106:	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;
 108:	80 e1       	ldi	r24, 0x10	; 16
 10a:	8f b9       	out	0x0f, r24	; 15
	while(!(SPSR & (1<<SPIF) ));		// 等待SPI发送完毕
 10c:	77 9b       	sbis	0x0e, 7	; 14
 10e:	fe cf       	rjmp	.-4      	; 0x10c <nRF905_ReadStatus+0x6>
	return SPDR;
 110:	8f b1       	in	r24, 0x0f	; 15
{
	unsigned char val;

	CLR_SS();					// 打开SPI
	val = SPI_ReadWrite(RC);	// 读状态
	SET_SS();					// 关闭SPI
 112:	c4 9a       	sbi	0x18, 4	; 24
	return val;
}
 114:	08 95       	ret

00000116 <nRF905_SetSendMode>:

void nRF905_SetSendMode(void)
{
 116:	8c ec       	ldi	r24, 0xCC	; 204
 118:	9a e0       	ldi	r25, 0x0A	; 10
 11a:	fc 01       	movw	r30, r24
 11c:	31 97       	sbiw	r30, 0x01	; 1
 11e:	f1 f7       	brne	.-4      	; 0x11c <nRF905_SetSendMode+0x6>
	_delay_ms(1);
	SET_TX_EN();		// 设置为发送模式
 120:	d8 9a       	sbi	0x1b, 0	; 27
 122:	fc 01       	movw	r30, r24
 124:	31 97       	sbiw	r30, 0x01	; 1
 126:	f1 f7       	brne	.-4      	; 0x124 <nRF905_SetSendMode+0xe>
	_delay_ms(1);
	CLR_TRX_CE();		// 待机PORTD &= ~(1<<TRX_CE);
 128:	d9 98       	cbi	0x1b, 1	; 27
 12a:	01 97       	sbiw	r24, 0x01	; 1
 12c:	f1 f7       	brne	.-4      	; 0x12a <nRF905_SetSendMode+0x14>
	_delay_ms(1);
}
 12e:	08 95       	ret

00000130 <nRF905_SetReceiveMode>:

void nRF905_SetReceiveMode(void)
{
 130:	d8 98       	cbi	0x1b, 0	; 27
 132:	8c ec       	ldi	r24, 0xCC	; 204
 134:	9a e0       	ldi	r25, 0x0A	; 10
 136:	fc 01       	movw	r30, r24
 138:	31 97       	sbiw	r30, 0x01	; 1
 13a:	f1 f7       	brne	.-4      	; 0x138 <nRF905_SetReceiveMode+0x8>
	CLR_TX_EN();		// 设置为接收模式
	_delay_ms(1);
	SET_TRX_CE();		// 使能接收
 13c:	d9 9a       	sbi	0x1b, 1	; 27
 13e:	01 97       	sbiw	r24, 0x01	; 1
 140:	f1 f7       	brne	.-4      	; 0x13e <nRF905_SetReceiveMode+0xe>

⌨️ 快捷键说明

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