主函数
#include <ioCC2530.h>
#include "LCD_12864_Driver.h"
#include <string.h>
#define LED1 P1_0
#define LED2 P1_1
#define ON 1
#define OFF 0
#define uint unsigned int
#define uchar unsigned char
#define UART0_RX 1
#define UART0_TX 2
#define SIZE 51
#define slave_node
enum SYSCLK_SRC{XOSC_32MHz,RC_16MHz};
#define UART0_RX 1
#define UART0_TX 2
#define SIZE 51
char RxBuf;
char UartState;
uchar count;
char RxData[SIZE];
void Delay(uint n)
{
uint t;
for(t = 0;t<n;t++);
for(t = 0;t<n;t++);
for(t = 0;t<n;t++);
for(t = 0;t<n;t++);
for(t = 0;t<n;t++);
}
void InitLed(void)
{
P1SEL &= ~0x03;
P1DIR |= 0x03;
LED1 = OFF;
LED2 = OFF;
}
void initUART0(void)
{
PERCFG &= ~0x01;
P0SEL |= 0x3c;
P2DIR &= ~0XC0;
U0CSR |= 0x80;
U0CSR |= 0x40;
U0GCR |= 10;
U0BAUD |= 59;
UTX0IF = 0;
IEN0 |= 0x84;
}
void UartSendString(char *Data,int len)
{
int j;
for(j=0;j<len;j++)
{
U0DBUF = *Data++;
while(UTX0IF == 0);
UTX0IF = 0;
}
}
void BlinkLeds(uchar LEDx)
{
if(LEDx == 1)
{
LED1 = !LED1;
Delay(20000);
}
else if(LEDx == 2)
{
LED2 = !LED2;
Delay(20000);
}
}
void SystemClockSourceSelect(enum SYSCLK_SRC source)
{
unsigned char osc32k_bm = CLKCONCMD & 0x80;
unsigned char __clkconcmd,__clkconsta;
if(source == RC_16MHz)
CLKCONCMD = ((osc32k_bm) | \
(0x01 << 6)| \
(0x01 << 3)| \
(0x01 << 0));
else if(source == XOSC_32MHz)
{
CLKCONCMD = (osc32k_bm);
}
__clkconcmd = CLKCONCMD;
do
{
__clkconsta = CLKCONSTA;
}while(__clkconsta != __clkconcmd);
}
void main(void)
{
SystemClockSourceSelect(XOSC_32MHz);
char str1 = '\n';
initUART0();
UartState = UART0_RX;
memset(RxData, 0, SIZE);
InitLed();
vLcdInit();
while(1)
{
if(UartState == UART0_RX)
{
if(RxBuf != 0)
{
if((RxBuf != '#')&&(count < 50))
RxData[count++] = RxBuf;
else
{
if(count >= 50)
{
count = 0;
memset(RxData, 0, SIZE);
}
else
UartState = UART0_TX;
}
RxBuf = 0;
}
}
if(UartState == UART0_TX)
{
vLcdInit();
vLcdTextWrite(1,1,RxData);
vLcdRefresh();
strcat(RxData, &str1);
U0CSR &= ~0x40;
UartSendString(RxData, count+1);
U0CSR |= 0x40;
UartState = UART0_RX;
count = 0;
memset(RxData, 0, SIZE);
}
}
}
#pragma vector=URX0_VECTOR
__interrupt void UART0_ISR(void)
{
URX0IF = 0;
RxBuf=U0DBUF;
}
完整代码下载