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

📄 main._c

📁 主要是通过AMEGAL88 来控制cc1100
💻 _C
字号:
/*******************************************************************************************************
 * Compiler:                   WINAVR                                                             
 * Target platform:          Atmega88 and Chipcon CC1100                                               
 * Author:                       陈思                                                                      
 *******************************************************************************************************
 *  2007-12-26 13:19:41                                                              
 ******************************************************************************************************/

#include "protocol.h"

#define FOSC  1000000
#define BAUDRATE  4800
#define BAUDREG   FOSC/16/BAUDRATE-1 
#define MAXSIZE 255

//#pragma interrupt_handler USART_INT:iv_USART0_RX
//#pragma interrupt_handler REC_PKT:iv_INT0

 // 表示串口状态的全局变量
USART_FLAG fUART;
ChipState fCC1100;
BYTE RecData[MAXSIZE];
BYTE RecLen = 0;

 // USART 接收到一个字节完成中断
void USART_INT(void)
 
 
 {
    BYTE recByte;
	USART_RECINT_DISABLE();
	 
 	recByte = UDR0;
 	
 	if(recByte == 0xAA)
	{
 		if(fUART == USART_IDLE)
		  fUART = USART_RECIEVE;
	}
	else if(recByte == 0x55)
	{
	    if(fUART == USART_RECIEVE)
		  fUART = USART_RECIEVE_FINISH;
	}
	else
	{
	    if(fUART == USART_RECIEVE)
		{
		  RecData[RecLen+1] = recByte;
		  RecLen ++;
		}  
	}
	
	USART_RECINT_ENABLE();			
 } 

// 检测到数据包的到来,用INT0通知MCU
void REC_PKT(void)
{
  INT0_DISABLE();   // 关中断
  
 // if(fCC1100 == SLEEP)
    spiReceivePacket(RecData,MAXSIZE);
  
  EIFR |= (1<<INTF0); // 清中断标志位,并开中断
  INT0_ENABLE();
}
 		
void main()
{
  // 系统初始化部分
  CLI();
  WDTCSR = 0x00;
  fUART = USART_IDLE;
  
  SpiInit();
  cc1100Init();
  //GDO2Int();
  //GDO2_INT0();
  //serialInit(12);
  NOP();
  SEI();
  
  memset(RecData,0,MAXSIZE);
  
  setPktType(DEFINED_LENGTH);
  setAddress(0x00);
  setPktLen(0xFF);
  setSendType(NO_ADDRESS);
  
  spiWriteReg(CC1100_IOCFG0,0x06);
  
  //initWorMode();
  
 /*
  while(1)
  {
    if(fUART == USART_RECIEVE_FINISH)	
	{
	 CLI();
	 RecData[0] = RecLen;
	 spiSendPacket(RecData,RecLen+1);
	 fUART = USART_IDLE;
	 
	 memset(RecData,0,RecLen+1);
	 RecLen = 0;
	 
	 SEI();
	}
   }  
  
 */
  while(1)
  {
    if(spiReceivePacket(RecData,MAXSIZE))
	   break;
  }
 

  
  while(1);
 
}

⌨️ 快捷键说明

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