📄 main.lss
字号:
main.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 00000b22 00000000 00000000 00000094 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 000000fc 00800060 00000b22 00000bb6 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 00000400 0080015c 0080015c 00000cb2 2**0
ALLOC
3 .noinit 00000000 0080055c 0080055c 00000cb2 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 00000cb2 2**0
CONTENTS
5 .stab 0000036c 00000000 00000000 00000cb4 2**2
CONTENTS, READONLY, DEBUGGING
6 .stabstr 00000084 00000000 00000000 00001020 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_aranges 0000003c 00000000 00000000 000010a4 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_pubnames 000002dd 00000000 00000000 000010e0 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_info 00000f8b 00000000 00000000 000013bd 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_abbrev 000003f0 00000000 00000000 00002348 2**0
CONTENTS, READONLY, DEBUGGING
11 .debug_line 00000b41 00000000 00000000 00002738 2**0
CONTENTS, READONLY, DEBUGGING
12 .debug_str 000004c0 00000000 00000000 00003279 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 12 c0 rjmp .+36 ; 0x26 <__ctors_end>
2: 2b c0 rjmp .+86 ; 0x5a <__bad_interrupt>
4: fd c1 rjmp .+1018 ; 0x400 <__vector_2>
6: 29 c0 rjmp .+82 ; 0x5a <__bad_interrupt>
8: 28 c0 rjmp .+80 ; 0x5a <__bad_interrupt>
a: 27 c0 rjmp .+78 ; 0x5a <__bad_interrupt>
c: 26 c0 rjmp .+76 ; 0x5a <__bad_interrupt>
e: 25 c0 rjmp .+74 ; 0x5a <__bad_interrupt>
10: 24 c0 rjmp .+72 ; 0x5a <__bad_interrupt>
12: 23 c0 rjmp .+70 ; 0x5a <__bad_interrupt>
14: 22 c0 rjmp .+68 ; 0x5a <__bad_interrupt>
16: 3b c5 rjmp .+2678 ; 0xa8e <__vector_11>
18: 20 c0 rjmp .+64 ; 0x5a <__bad_interrupt>
1a: 1f c0 rjmp .+62 ; 0x5a <__bad_interrupt>
1c: 1e c0 rjmp .+60 ; 0x5a <__bad_interrupt>
1e: 1d c0 rjmp .+58 ; 0x5a <__bad_interrupt>
20: 1c c0 rjmp .+56 ; 0x5a <__bad_interrupt>
22: 1b c0 rjmp .+54 ; 0x5a <__bad_interrupt>
24: 1a c0 rjmp .+52 ; 0x5a <__bad_interrupt>
00000026 <__ctors_end>:
26: 11 24 eor r1, r1
28: 1f be out 0x3f, r1 ; 63
2a: cf e5 ldi r28, 0x5F ; 95
2c: d4 e0 ldi r29, 0x04 ; 4
2e: de bf out 0x3e, r29 ; 62
30: cd bf out 0x3d, r28 ; 61
00000032 <__do_copy_data>:
32: 11 e0 ldi r17, 0x01 ; 1
34: a0 e6 ldi r26, 0x60 ; 96
36: b0 e0 ldi r27, 0x00 ; 0
38: e2 e2 ldi r30, 0x22 ; 34
3a: fb e0 ldi r31, 0x0B ; 11
3c: 02 c0 rjmp .+4 ; 0x42 <.do_copy_data_start>
0000003e <.do_copy_data_loop>:
3e: 05 90 lpm r0, Z+
40: 0d 92 st X+, r0
00000042 <.do_copy_data_start>:
42: ac 35 cpi r26, 0x5C ; 92
44: b1 07 cpc r27, r17
46: d9 f7 brne .-10 ; 0x3e <.do_copy_data_loop>
00000048 <__do_clear_bss>:
48: 15 e0 ldi r17, 0x05 ; 5
4a: ac e5 ldi r26, 0x5C ; 92
4c: b1 e0 ldi r27, 0x01 ; 1
4e: 01 c0 rjmp .+2 ; 0x52 <.do_clear_bss_start>
00000050 <.do_clear_bss_loop>:
50: 1d 92 st X+, r1
00000052 <.do_clear_bss_start>:
52: ac 35 cpi r26, 0x5C ; 92
54: b1 07 cpc r27, r17
56: e1 f7 brne .-8 ; 0x50 <.do_clear_bss_loop>
58: 9b c0 rjmp .+310 ; 0x190 <main>
0000005a <__bad_interrupt>:
5a: d2 cf rjmp .-92 ; 0x0 <__vectors>
0000005c <write>:
}ucUART_FIFO;
void write(unsigned char *str)
{
5c: fc 01 movw r30, r24
while (*str != 0)
{
UART0_WAIT_AND_SEND(*str++);
5e: 80 81 ld r24, Z
60: 88 23 and r24, r24
62: 31 f0 breq .+12 ; 0x70 <write+0x14>
64: 5d 9b sbis 0x0b, 5 ; 11
66: fe cf rjmp .-4 ; 0x64 <write+0x8>
68: 5d 98 cbi 0x0b, 5 ; 11
6a: 81 91 ld r24, Z+
6c: 8c b9 out 0x0c, r24 ; 12
6e: f7 cf rjmp .-18 ; 0x5e <write+0x2>
70: 08 95 ret
00000072 <writeln>:
}
}
void writeln(unsigned char *str)
{
write(str);
72: f4 df rcall .-24 ; 0x5c <write>
write("\n\r");
74: 84 e9 ldi r24, 0x94 ; 148
76: 90 e0 ldi r25, 0x00 ; 0
78: f1 df rcall .-30 ; 0x5c <write>
7a: 08 95 ret
0000007c <sysInit>:
}
#define ENABLE_RX halSpiStrobe(CCxxx0_SRX)
void sysInit(void);
UINT8 length;
UINT32 packetsReceived = 0;
int main(void)
{
UINT32 i;
UINT32 packetsSent = 0;
unsigned char k;
//UINT32 packetsReceived = 0;
//UINT8 length;
for (i=0;i<100;i++) halWait(200);
//系统初始化
sysInit();
ucSCI_newFlag = 0; //flag for having data on comm port
UartReadPos = 0;
UartWritePos = 0;
ucAckFlag = 0;
ucSleepFlag = 0;
//一些提示信息
writeln(strTime);
writeln("Welcome to Vitalwell Electronics, Web: www.vital-well.com");
#ifdef _DEV_TX_
writeln("This is a Simple Demo TX for CCxx00...");
#endif
#ifdef _DEV_RX_
writeln("This is a Simple Demo RX for CCxx00...");
#endif
// Reset CCxx00 and write rf setting to config registers
// CC1100芯片上电复位
POWER_UP_RESET_CCxxx0();
//寄存器设置
halRfWriteRfSettings(&rfSettings);
//发射功率设定
halSpiWriteBurstReg(CCxxx0_PATABLE, paTable, sizeof(paTable));
//提示信息
writeln("Now Enjoying the show!!!");
#ifdef _DEV_RX_
halSpiStrobe(CCxxx0_SRX); // waiting for rec
halSpiStrobe(CCxxx0_SIDLE ); //low w
length = sizeof(rxBuffer);
// _WOR_3S_
#warning "WOR_3S defined!!!"
// halSpiWriteReg(CCxxx0_WORCTRL, 0x79); // WOR_RES=1
for (i=0;i<100;i++)
halWait(200);
//end
#endif
//WOR
// 发送部分
#ifdef _DEV_TX_
ENABLE_UART0_RX_INT(); // Enable Receive interrupt
DISABLE_PATTERN_INT();
#endif
ENABLE_GLOBAL_INT(); // Enable all interrupts
ucSCI_Cnt = 0;
ucAckFlag = 0;
while(1)
{
// 发送部分
#ifdef _DEV_TX_
if(ucSCI_newFlag)
{
//开始
write("Sent start: ");
ucCheckUart();
if(ucSCI_Cnt) // need to send, else local comand
{
//for(i=0;i<ucSCI_Cnt;i++)
txBuffer[0] = ucSCI_Cnt; //length
for(i=1;i<ucSCI_Cnt+1;i++)
{
txBuffer[i] = ucUART_FIFO.val[i-1];
}
txBuffer[i] =0; //terminal char
//writeln(txBuffer);
DISABLE_PATTERN_INT(); //diable rec int
ucAckFlag = 0;
// wake up slave
for(i=0;(i<200L) && (!ucAckFlag);i++)
{
//ucSynAsk will be changed for difrent term
halRfSendPacket(ucSynAsk, sizeof(ucSynAsk)); //wake up water meter
//halRfSendPacket(txBuffer, sizeof(txBuffer));
ENABLE_RX;
for (k=0;k<4;k++)
halWait(200);
ENABLE_PATTERN_INT();
//wait for about 20ms; wait ack msg
for (k=0;k<100;k++)
halWait(200);
DISABLE_PATTERN_INT();
}
//if ok, 发送数据包
if(ucAckFlag)
{
// wait a while for slave echo back;
for (k=0;k<20;k++)
halWait(200);
halRfSendPacket(txBuffer, sizeof(txBuffer));//sizeof(txBuffer));
//显示发送次数
intToAscii(++packetsSent);
write("Sent: ");
write(asciiString);
//发送完毕
writeln(" - End sending! ");
ucAckFlag = 0;
}
ucSCI_Cnt = 0;
}
ucSCI_newFlag = 0;
}
//等待一下,准备下一次发送
// for (i=0;i<2000L;i++) halWait(200);
#endif
//接收部分
#ifdef _DEV_RX_
wor_ctr();
//初始化接收的数据包长度
//length = sizeof(rxBuffer);
//若收到, 显示接收结果
#if 0
if (halRfReceivePacket(rxBuffer, length)) {
SET_LED_RDY();
intToAscii(++packetsReceived);
write("Received: ");
write(asciiString);
write(" - ");
writeln(rxBuffer);
CLR_LED_RDY();
}
#endif
#endif
}//while(1)
}
void sysInit(void)
{
7c: cf 93 push r28
unsigned char i;
//口初始化
PORT_INIT();
7e: 8c e2 ldi r24, 0x2C ; 44
80: 87 bb out 0x17, r24 ; 23
82: 8f e3 ldi r24, 0x3F ; 63
84: 88 bb out 0x18, r24 ; 24
86: 14 ba out 0x14, r1 ; 20
88: 85 bb out 0x15, r24 ; 21
8a: 82 e8 ldi r24, 0x82 ; 130
8c: 81 bb out 0x11, r24 ; 17
8e: 83 e7 ldi r24, 0x73 ; 115
90: 82 bb out 0x12, r24 ; 18
//SPI 初始化
SPI_INIT ();
92: 80 e5 ldi r24, 0x50 ; 80
94: 8d b9 out 0x0d, r24 ; 13
96: c4 e0 ldi r28, 0x04 ; 4
//等待一下,晶振稳定
for (i=0;i<5;i++) halWait(200);
98: 88 ec ldi r24, 0xC8 ; 200
9a: 63 d3 rcall .+1734 ; 0x762 <halWait>
9c: c1 50 subi r28, 0x01 ; 1
9e: c7 ff sbrs r28, 7
a0: fb cf rjmp .-10 ; 0x98 <sysInit+0x1c>
//初始化串口为: 9600,8N1
INIT_UART0 ( UART_BAUDRATE_9K6, (
a2: 10 bc out 0x20, r1 ; 32
a4: 8f e2 ldi r24, 0x2F ; 47
a6: 89 b9 out 0x09, r24 ; 9
a8: 86 e8 ldi r24, 0x86 ; 134
aa: 80 bd out 0x20, r24 ; 32
UART_OPT_8_BITS_PER_CHAR |
UART_OPT_NO_PARITY |
UART_OPT_ONE_STOP_BIT ) );
//串口开
ENABLE_UART0();
ac: 8a b1 in r24, 0x0a ; 10
ae: 88 61 ori r24, 0x18 ; 24
b0: 8a b9 out 0x0a, r24 ; 10
DISABLE_UART0_INT();
b2: 8a b1 in r24, 0x0a ; 10
b4: 8f 75 andi r24, 0x5F ; 95
b6: 8a b9 out 0x0a, r24 ; 10
PATTERN_INT_INIT();
b8: 85 b7 in r24, 0x35 ; 53
ba: 83 7f andi r24, 0xF3 ; 243
bc: 85 bf out 0x35, r24 ; 53
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -