📄 main._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 + -