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

📄 main.lss

📁 AVR写的433M无线通信原代码.
💻 LSS
📖 第 1 页 / 共 5 页
字号:

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 + -