admin 管理员组

文章数量: 887021

ZigBee

ZigBee-CC2530单片机 - 实现计算机串口通讯控制LED发光二极管

程序源码

/*************************************************************** 文件名称:uart2.c* 功    能:PC机控制发光二极管亮灭
*************************************************************/
#include "ioCC2530.h"
#include <string.h>
//定义led灯端口
#define LED1 P1_0     // P1_0定义为P1_0
#define LED2 P1_1     // P1_0定义为P1_1#define uint unsigned int
#define uchar unsigned char
#define DATABUFF_SIZE  3  //数据缓冲区大小uchar  buff_RxDat[DATABUFF_SIZE+1]; //数据缓冲区
uchar  uIndex = 0;  //数据缓冲区的下标
/**************************************************************** 函数名称:InitUART0* 功    能:UART0初始化* 入口参数:* 出口参数:无* 返 回 值:无
***************************************************************/
void initUART0(void)
{PERCFG = 0x00;	//位置 1 P0 口P0SEL = 0x3c;		//P0用作串口, P0.2、P0.3作为串口RX、TXU0BAUD = 216;U0GCR = 10;U0CSR |= 0x80;	// UART模式U0UCR |= 0x80;	// 进行USART清除,并设置数据格式为默认值URX0IF = 0;		// 清零UART0 RX中断标志U0CSR |= 0X40;	//允许接收EA = 1;  			//使能全局中断
}/***************************************************************
* 函数名称:receive_handler
* 功    能:接收数据后处理
* 入口参数:无
* 出口参数:无
* 返 回 值:无
***************************************************************/
void receive_handler(void)
{uchar onoff=0;  //LED灯的开关状态uchar c;c= U0DBUF;         // 读取接收到的字节if(c == '#'){buff_RxDat[0]=c;uIndex=0;}else if(buff_RxDat[0]=='#'){uIndex++;buff_RxDat[uIndex]=c;}if(uIndex>=2){onoff=buff_RxDat[2]-0x30;switch(buff_RxDat[1]){case '1':LED1=onoff;break;case '2':LED2=onoff;break;}for(int i=0;i<=DATABUFF_SIZE;i++) //清空接收到的字符串buff_RxDat[i]=(uchar)NULL;uIndex = 0;}
}
/***************************************************************
* 函数名称:main
* 功    能:main函数入口
***************************************************************/
void main(void)
{P1SEL &= ~0x03;     // 设置LED为普通IO口P1DIR |= 0x03 ;    // 设置LED为输出LED1 = 0;         //灭 LEDLED2 = 0;CLKCONCMD &= 0x80;   //时钟速度设置为32MHzinitUART0();  // UART0初始化while(1){if(URX0IF){URX0IF = 0;//清中断标志receive_handler();  //调用接收数据后处理函数}}
}

本文标签: ZigBee