国赛CC2530练习【点对点按键控制呼吸灯】
1|0A板子
#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);
}
}
2|0B板子
#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);
}
}
__EOF__

本文作者:~内个臣呐~
本文链接:https://www.cnblogs.com/Xin-chen/p/16776561.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/Xin-chen/p/16776561.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了