#include <iocc2530.h>
#include "hal_mcu.h"
#include "hal_assert.h"
#include "hal_board.h"
#include "hal_rf.h"
#include "basic_rf.h"
#include <stdio.h>
#include"sys_init.h"
#include "uart.h"
#define D1 P1_0
#define RF_CHANNEL 25 // 2.4 GHz RF channel
#define PAN_ID 0x2007
#define SEND_ADDR 0x2530
#define RECV_ADDR 0x2520
#define NODE_TYPE 0 //0:接收节点,1:发送节点
static basicRfCfg_t basicRfConfig;
void Photoresistance_Test(void);
int getADC(void);
/* 射频模块发送数据函数 */
void rfSendData(void)
{
uint8 pTxData[] = {'H', 'e', 'l', 'l', 'o', ' ', 'c', 'c', '2', '5', '3', '0', '\r', '\n'}; //定义要发送的数据
uint8 ret;
printf("send node start up...\r\n");
// Keep Receiver off when not needed to save power
basicRfReceiveOff(); //关闭射频接收器
// Main loop
while (TRUE) {
ret = basicRfSendPacket(RECV_ADDR, pTxData, sizeof pTxData); //点对点发送数据包
if (ret == SUCCESS) {
hal_led_on(1);
halMcuWaitMs(100);
hal_led_off(1);
halMcuWaitMs(900);
} else {
hal_led_on(1);
halMcuWaitMs(1000);
hal_led_off(1);
}
}
}
/* 射频模块接收数据函数 */
void rfRecvData(void)
{
uint8 pRxData[128];
int rlen;
printf("recv node start up...\r\n");
basicRfReceiveOn(); //开启射频接收器
// Main loop
while (TRUE) {
while(!basicRfPacketIsReady());
rlen = basicRfReceive(pRxData, sizeof pRxData, NULL);
if(rlen > 0) {
pRxData[rlen] = 0;
printf((char *)pRxData);
}
}
}
void Photoresistance_Test(void)
{
char StrAdc[10];
int RValue;
RValue=getADC();
sprintf(StrAdc,"%d\r",RValue);
Uart_Send_String(StrAdc);
Uart_Send_String("Ω\r\n");
halWait(250);
D7=!D7;
halWait(250);
halWait(250);
}
int getADC(void)
{
unsigned int Rvalue;
float value;
float VOL,VOL2;
P0SEL |=0x02;
APCFG |=0x02;
ADCCON3=0xB1;
while(!(ADCCON1&0x80));
uint temp=(uint)(ADCH<<8);
temp |=(uint)ADCL;
temp >>= 3;
temp=temp &~(1<<12);
ADCCON1&=~0x80;
VOL=(temp*3.3)/4096;
VOL2=3.3-VOL;
value=10000*VOL/VOL2;
return(Rvalue);
}
void main(void)
{
halMcuInit(); //初始化mcu
hal_led_init(); //初始化LED
//(); //初始化串口
if (FAILED == halRfInit())
{ // halRfInit()为射频初始化函数
HAL_ASSERT(FALSE);
}
xtal_init();
led_init();
uart0_init(0x00,0x00);
while(1)
{
Photoresistance_Test();
}
// Config basicRF
basicRfConfig.panId = PAN_ID; //panId
basicRfConfig.channel = RF_CHANNEL; //通信信道
basicRfConfig.ackRequest = TRUE; //应答请求
#ifdef SECURITY_CCM
basicRfConfig.securityKey = key; //安全秘钥
#endif
// Initialize BasicRF
#if NODE_TYPE
basicRfConfig.myAddr = SEND_ADDR; //发送地址
#else
basicRfConfig.myAddr = RECV_ADDR; //接收地址
#endif
if(basicRfInit(&basicRfConfig)==FAILED)
{
HAL_ASSERT(FALSE);
}
#if NODE_TYPE
rfSendData(); //发送数据
#else
rfRecvData(); //接收数据
#endif
while(1)
{
pTxData = getADC();
basicRfSendPacket(RECV_ADDR, pTxData, sizeof pTxData);
}
}