/**************************************************************
* 文件名称: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 JD P2_0
#define on 1
#define off 0
#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、TX
U0BAUD = 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 == 0xfa)
{
JD=on;
LED1=on;
}
if(c==0xfb)
{
JD=off;
LED1=off;
}
}
/***************************************************************
* 函数名称:main
* 功 能:main函数入口
***************************************************************/
void main(void)
{
P1SEL &= ~0x03; // 设置LED为普通IO口
P1DIR |= 0x03 ; // 设置LED为输出
LED1 = 0; //灭 LED
LED2 = 0;
P2DIR |=0x01;
P2_0=0;
CLKCONCMD &= 0x80; //时钟速度设置为32MHz
initUART0(); // UART0初始化
while(1)
{
if(URX0IF)
{
URX0IF = 0;//清中断标志
receive_handler(); //调用接收数据后处理函数
}
}
}