国赛CC2530练习【点对点按键控制呼吸灯】

T1

A板子

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



#define LED1 P1_3
#define LED2 P1_4
#define LED3 P1_0
#define LED4 P1_1
#define SW   P1_2

unsigned char Send[2] = {0};
unsigned char Read[2] = {0};



/*A*/
/*****点对点通讯地址设置******/


#define RF_CHANNEL                20         // 频道 11~26
#define PAN_ID                    0x1010     //网络id 
#define MY_ADDR                   0xA     //本机模块地址
#define SEND_ADDR                 0xB     //发送地址

/**************************************************/
static basicRfCfg_t basicRfConfig;
// 无线RF初始化
void ConfigRf_Init(void)
{
  
    basicRfConfig.panId       =   PAN_ID;
    basicRfConfig.channel     =   RF_CHANNEL;
    basicRfConfig.myAddr      =   MY_ADDR;
    basicRfConfig.ackRequest  =   TRUE;
    while(basicRfInit(&basicRfConfig) == FAILED);
    basicRfReceiveOn();
 
}


void init(){

  P1SEL &= ~0x1F;
  P1DIR |=  0x1B;
  
  P1 = 0;
  
}


void init_time(){

  T1CC0L = 0xD4;
  T1CC0H = 0x30;
  
  T1CCTL0 |= 0x04;
  
  T1CTL |= 0x0E;
  
  EA = 1;
  T1IE = 1;
  
  
}



void delay(unsigned int time){

  unsigned int i;
  unsigned char j;
  
  for(i = 0;i < time ;i++){
  
    for(j = 0;j < 240;j++){
    
      
    }
  }
    
}



void LS(){

  LED1 = 0;
  LED4 = 1;
  delay(1000);
  LED4 = 0;
  LED3 = 1;
  delay(1000);
  LED3 = 0;
  LED2 = 1;
  delay(1000);
  LED2 = 0;
  LED1 = 1;
  delay(1000);
  
  
  
}











/********************MAIN************************/
void main(void)
{
    halBoardInit();//选手不得在此函数内添加代码
    ConfigRf_Init();//选手不得在此函数内添加代码
   
    init();
    init_time();    
    
    while(1)
    {
    /* user code start */
      
      while(SW == 0){
      
        Send[0] = 1;
        basicRfSendPacket(SEND_ADDR,Send,2);
        
      }
      if(Send[0] == 1){
        Send[0] = 2;
      
        basicRfSendPacket(SEND_ADDR,Send,2);
      }
      
      if(Read[0] == 1){
      
        LS();
      }
      
      
      

    /* user code end */
    }
}

#pragma vector = T1_VECTOR
__interrupt void T1(){
  T1STAT &= ~0x01;
  
  if(basicRfPacketIsReady()){
  
     basicRfReceive(Read,2,NULL);
    
    
  }
  
  
  
}

B板子

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



#define LED1 P1_3
#define LED2 P1_4
#define LED3 P1_0
#define LED4 P1_1
#define SW   P1_2

unsigned char Send[2] = {0};
unsigned char Read[2] = {0};



/*B*/
/*****点对点通讯地址设置******/


#define RF_CHANNEL                20         // 频道 11~26
#define PAN_ID                    0x1010     //网络id 
#define MY_ADDR                   0xB     //本机模块地址
#define SEND_ADDR                 0xA     //发送地址

/**************************************************/
static basicRfCfg_t basicRfConfig;
// 无线RF初始化
void ConfigRf_Init(void)
{
  
    basicRfConfig.panId       =   PAN_ID;
    basicRfConfig.channel     =   RF_CHANNEL;
    basicRfConfig.myAddr      =   MY_ADDR;
    basicRfConfig.ackRequest  =   TRUE;
    while(basicRfInit(&basicRfConfig) == FAILED);
    basicRfReceiveOn();
 
}

void touch();

void init(){

  P1SEL &= ~0x1F;
  P1DIR |=  0x1B;
  
  P1 = 0;
  
}


void init_time(){

  T1CC0L = 0xD4;
  T1CC0H = 0x30;
  
  T1CCTL0 |= 0x04;
  
  T1CTL |= 0x0E;
  
  EA = 1;
  T1IE = 1;
  
  
}



void delay(unsigned int time){

  unsigned int i;
  unsigned char j;
  
  for(i = 0;i < time ;i++){
  
    for(j = 0;j < 240;j++){
    
      
    }
  }
    
}



void LS(){

  LED1 = 0;
  LED4 = 1;
  delay(300);
  LED4 = 0;
  LED3 = 1;
  delay(300);
  LED3 = 0;
  LED2 = 1;
  delay(300);
  LED2 = 0;
  LED1 = 1;
  delay(300);
  
  
  
}



void HX(){

  unsigned int i,j;
  
  for(i = 0;i < 1000;i++){
  
    do{
    for(j = 0;j < i ;j++){
      LED4  = 1;
      
      touch();
    }
    for(j = 0;j <1000 - i ;j++){
      LED4  = 0;
      
      touch();
    }
    }while(Read[0] > 1);
  
  }
  
  
    for(i = 0;i < 1000;i++){
  
      do{
    for(j = 0;j < i ;j++){
      LED4  = 0;
      
      touch();
    }
    for(j = 0;j <1000 - i ;j++){
      LED4  = 1;
      
      touch();
      
    }
  
      }while(Read[0] > 1);
    }
  
  
  
}
void touch(){
      if(SW == 0){
      
        while(SW == 0);
        halMcuWaitMs(150);
        if(SW == 0){
        Send[0] = 1;
        basicRfSendPacket(SEND_ADDR,Send,2);
        }
      }
}








/********************MAIN************************/
void main(void)
{
    halBoardInit();//选手不得在此函数内添加代码
    ConfigRf_Init();//选手不得在此函数内添加代码
   
    init();
    init_time();    
    
    while(1)
    {
    /* user code start */
      

      touch();

      if(Read[0] >= 1){
      
        HX();
      }
      
            
      
      

    /* user code end */
    }
}

#pragma vector = T1_VECTOR
__interrupt void T1(){
  T1STAT &= ~0x01;
  
  if(basicRfPacketIsReady()){
  
     basicRfReceive(Read,2,NULL);
    
    
  }
  
  
  
}
posted @ 2022-10-10 17:35  ~内个臣呐~  阅读(387)  评论(0)    收藏  举报