天天看點

基于BasicRF的四通道傳感器采集

 #include "hal_defs.h"

#include "hal_cc8051.h"

#include "hal_int.h"

#include "hal_mcu.h"

#include "hal_board.h"

#include "hal_led.h"

#include "hal_rf.h"

#include "basic_rf.h"

#include "hal_uart.h"

#include <stdio.h>

#include <string.h>

#include <stdarg.h>

uint16 count = 0;   //設定定時器溢出次數

uint8 four_value[12];

uint8 buf[8];

uint8 IN1H,IN1L,IN2H,IN2L,IN3H,IN3L,IN4H,IN4L;

#define MAX_SEND_BUF_LEN  128

#define MAX_RECV_BUF_LEN  128

static uint8 pTxData[MAX_SEND_BUF_LEN]; //定義無線發送緩沖區的大小

static uint8 pRxData[MAX_RECV_BUF_LEN]; //定義無線接收緩沖區的大小

#define MAX_UART_SEND_BUF_LEN  128

#define MAX_UART_RECV_BUF_LEN  128

uint8 uTxData[MAX_UART_SEND_BUF_LEN]; //定義序列槽發送緩沖區的大小

uint8 uRxData[MAX_UART_RECV_BUF_LEN]; //定義序列槽接收緩沖區的大小

uint16 uTxlen = 0;

uint16 uRxlen = 0;

#define RF_CHANNEL                20         // 頻道 11~26

#define PAN_ID                    0x1A5B     //網絡id

#define MY_ADDR                   0x2017     // 本機子產品位址

#define SEND_ADDR                 0x2016     //發送位址

static basicRfCfg_t basicRfConfig;

// 無線RF初始化

void ConfigRf_Init(void)

{

    basicRfConfig.panId       =   PAN_ID;        //zigbee的ID号設定

    basicRfConfig.channel     =   RF_CHANNEL;    //zigbee的頻道設定

    basicRfConfig.myAddr      =   MY_ADDR;   //設定本機位址

    basicRfConfig.ackRequest  =   TRUE;          //應答信号

    while(basicRfInit(&basicRfConfig) == FAILED); //檢測zigbee的參數是否配置成功

    basicRfReceiveOn();                // 打開RF

}

void init_T1()

{

  CLKCONCMD &=~0X40;

  while(CLKCONSTA &=0X40);

  CLKCONCMD &=0X47;

  T1CTL|=0X05;

  IEN1 |=0X02;

  EA=1;

}

#pragma vector=T1_VECTOR

__interrupt void T1_ISR()

{

  count++;

  if(count==60)

  {

    get_4channel_ad(buf);

    IN1L=buf[0];

    IN1H=buf[1];

    IN2L=buf[2];

    IN2H=buf[3];

    IN3L=buf[4];

    IN3H=buf[5];

    IN4L=buf[6];

    IN4H=buf[7];

    four_value[0]=0xfb;

    four_value[1]=0xfa;

    four_value[2]=0x0c;

    four_value[3]=0x01;

    four_value[4]=IN1L;

    four_value[5]=IN1H;

    four_value[6]=IN2L;

    four_value[7]=IN2H;

    four_value[8]=IN3L;

    four_value[9]=IN3H;

    four_value[10]=IN4L;

    four_value[11]=IN4H;

    halUartWrite(four_value,12);

    basicRfSendPacket(SEND_ADDR,four_value, 12);

    count=0;

  }

  T1IF=0;

}

void main(void)

{

    halBoardInit();  //子產品相關資源的初始化

    ConfigRf_Init(); //無線收發參數的配置初始化

    init_T1();

    while(1)

    {

    }

}