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 + -
显示快捷键?