前言
单片机如何与pc机进行通讯呢?可以用串口和网线嘛!
今天我们来讲讲怎么用串口点灯的小程序。
先做程序前,我们先受洗一下串口的使用。
在cc2530的单片机上串口有UART模式和SPI模式。我们今天的主角就是UART。
因此我们要选择UART
USART0控制和状态寄存器U0CSR
/*选择UART的方式*/
U0CSR|=0x80;
接下来我们需要设置UART的模式,比如说是奇校验还是偶校验等等。这时候我们需要设置控制寄存器
控制寄存器U0UCR
/*使能奇偶校验*/
U0UCR|=0x08;
接着我们需要设置波特率,因此需要用到波特率的控制U0BAUD和通用控制U0GCR
/*波特率baud_e的选择*/
U0GCR|=10;
/*波特率设置为57600*/
U0BAUD|=216;
好了,我们设置完后只需要判断串口发送数据是否发送完就可以了
while(U0CSR&0x02==0);
最后我们来完成串口发送点灯的实验
void UARTinit()
{
PERCFG=0x00;//使用串口备用位置1 P0口
P0SEL=0x3c;//P0口作为串口
P2DIR&=~0xc0;//选择串口0优先作为串口
U0CSR|=0x80;//UART方式
U0GCR|=10;//波特率baud_e的选择
U0BAUD|=216;//波特率设置为57600
}
void UartTX_Send_String(char *Data)
{
int j;
for(j=0;j<sizeof(Data),j++)
{
U0DBUF =*Data++;
while(U0CSR&0x02==0);
}
}
void main()
{
LEDinit();//LED1初始化。
CLOCKinit();//系统时钟初始化
UARTinit();//串口初始化
char sendData[]="Hello UART";
while(1)
{
UartTX_Send_String(sendData);
LED1=~LED1;
}
}
关于LED初始化可以查看我的博客《通用IO中断》,系统时钟初始化可以查看我的博客《外设IO的概述》。
上面发送是用查询发送的,那么怎么用中断方式,和串口接收数据呢?我们下期见。