#include<ioCC2530.h>
#define INA P0_0
#define INB P0_1
#define INC P0_2
#define IND P0_3//P0_0~P0_3
#define uint unsigned int
#define uchar unsigned char
uint i;
/***************初*始*化*****/
void InitIO()
{
P0SEL &=~((1<<0)|(1<<1)|(1<<2)|(1<<3)); //设置为普通IO
P0DIR |=((1<<0)|(1<<1)|(1<<2)|(1<<3)); //设置为输出
}
/********串*口*初*始*化*函*数*******/
void InitUart()
{
CLKCONCMD &= ~0x40; // 设置系统时钟源为 32MHZ晶振
while(CLKCONSTA & 0x40); // 等待晶振稳定
CLKCONCMD &= ~0x47; // 设置系统主时钟频率为 32MHZ
PERCFG = 0x00;
//P1SEL = 0x0c; //P1_2,P1_3用作串口
//P2DIR &= ~0XC0; //P0 优先级
U0CSR |= 0x80; //UART 方式
U0GCR |= 11;
U0BAUD |= 216; // 波特率设为115200
UTX0IF = 0; //UART0 TX 中断标志初始置位1
U0CSR |= 0X40; //允许接收
IEN0 |= 0x84; // 开总中断
}
/********* 延*时*函*数*********/
void Delay(unsigned int n)
{
unsigned int i;
for(i = 0; i < n; i++)
for(i = 0; i < n; i++);
for(i = 0; i < n; i++)
for(i = 0; i < n; i++);
}
/*******run*函*数*用*于*蓝*牙*遥*控*******/
void run(void)
{
for(i=0;i<13;i++)
{
INA=1;
INB=1;
INC=1;
IND=1;
}
}
void left(void)
{
for(i=0;i<13;i++)
{
INA=0;
INB=0;
INC=1;
IND=1;
}
}
void right(void)
{
for(i=0;i<13;i++)
{
INA=1;
INB=1;
INC=0;
IND=0;
}
}
void stop()
{
INA=0;
INB=0;
INC=0;
IND=0;
}
/******接*收*蓝*牙*信*号*************/
char uart_receive_byte()
{
while(URX0IF==0);
URX0IF=0;
return U0DBUF;
}
void main()
{
InitIO();
InitUart();
while(1)
{
char tmp=uart_receive_byte();
switch(tmp)
{
case '1':
left();
break;
case '2':
run();
break;
case '3':
right();
break;
case '4':
stop();
break;
default:
stop();
}
}
}
|