U0GCR |= 11;
U0BAUD |= 216; //波特率设为115200
UTX0IF = 1; //UART0 TX中断标志初始置位1
U0CSR |= 0X40; //允许接收
IEN0 |= 0x84; //开总中断,接收中断
}
/****************************************************************
主函数
****************************************************************/
void main(void)
{
LED_Init();
initUART0();
while(1)
{
if(RXTXflag == 1) //接收状态
{
if(temp!=0)
{
LED2=!LED2;
UartTX_Send_String(Recdata,10);
UartTX_Send_String(“\n”,1);
RXTXflag = 3; //进入发送状态
}
temp = 0;
}
if(RXTXflag == 3) //发送状态
{
U0CSR &= ~0x40; //不能收数
U0CSR |= 0x40; //允许接收
RXTXflag = 1; //恢复到接收状态
}
}
}
/****************************************************************
串口接收一个字符:一旦有数据从串口传至CC2530,则进入中断,将接收到的数据赋值给变量temp.
****************************************************************/
#pragma vector = URX0_VECTOR
__interrupt void UART0_ISR(void)
{
URX0IF = 0; //清中断标志
temp = U0DBUF;
}
#include <iocc2530.h>
#include <string.h>
#define uint unsigned int
#define uchar unsigned char
//定义控制灯的端口
#define LED1 P1_0
#define LED2 P2_0
void LED_Init();
void initUART0(void);
void InitialAD(void);
void UartTX_Send_String(uchar *Data,int len);
void delay(void);
uchar Recdata1[10]=“Hello\n”;
uchar Recdata[10]=“Welcome\n”;
uchar RXTXflag = 1;
uchar temp=0;
uint datanumber = 0;
uint stringlen;
int counter=0;
/****************************************************************
串口发送字符串函数
****************************************************************/
void UartTX_Send_String(uchar *Data,int len)
{
int j;
for(j=0;j<len;j++)
{
U0DBUF = *Data++;
while(UTX0IF == 0);
UTX0IF = 0;
}
}
void TIM1_Init()
{
CLKCONCMD&=~0X7f; //晶振设置为32MHz
while(CLKCONSTA & 0x40); //等待晶振稳定
EA=1; //开总中断
T1IE=1; //开T1溢出中断
T1CTL=0x09; //0000 1001启动设32分频,设自由模式
}
void LED_Init()
{
P0SEL &=~0X01;
P0DIR |=0X01;
P2SEL &=~0X01;
P2DIR |=0X01;
LED1=1;
LED2=1;
}
void delay(void)
{
int i = 0,j = 0;
for(i = 0;i < 1000;i++)
for(j = 0;j < 500;j++);
}
/****************************************************************
初始化串口0函数
****************************************************************/
void initUART0(void)
{
CLKCONCMD &= ~0x40; //设置系统时钟源为32MHZ晶振
while(CLKCONSTA & 0x40); //等待晶振稳定
CLKCONCMD &= ~0x47; //设置系统主时钟频率为32MHZ
PERCFG = 0x00; //位置1 P0口
P0SEL = 0x3c; //P0用作串口
P2DIR &= ~0XC0; //P0优先作为UART0
U0CSR |= 0x80; //串口设置为UART方式
U0GCR |= 11;
U0BAUD |= 216; //波特率设为115200
UTX0IF = 1; //UART0 TX中断标志初始置位1
U0CSR |= 0X40; //允许接收
IEN0 |= 0x84; //开总中断,接收中断
}
/****************************************************************
主函数
****************************************************************/
void main(void)
{
LED_Init();
initUART0();
TIM1_Init();
while(1)
{
}
}
/****************************************************************
串口接收一个字符:一旦有数据从串口传至CC2530,则进入中断,将接收到的数据赋值给变量temp.
****************************************************************/
#pragma vector = URX0_VECTOR
__interrupt void UART0_ISR(void)
{
URX0IF = 0; //清中断标志
temp = U0DBUF;
}
#pragma vecto