求单片机串口通讯程序

STC12的芯片,两单片机通过蓝牙串口连接,我想要接收信息的那个单片机的代码,要求能读取发送过来的数值并用数码管显示。数码管的相关代码可以省略,主要是串口通信怎么读值并用在主函数里,下面是我写的代码,读值控制LED的,读取不了
#include <reg51.h>
unsigned char k;
void InitUART(void)
{
TMOD = 0x20;
SCON = 0x50;
TH1 = 0xF3;
TL1 = 0xF3;
PCON = 0x00;
EA = 1;
ES = 1;
TR1 = 1;
}
void delay(unsigned int i)
{
unsigned char j;
for(i; i > 0; i--)
for(j = 255; j > 0; j--);
}
void main(void)
{ k=0;
InitUART();
while (1)
{
if(k==2)

P0=0x11;

else if(k==3)
P0=0x22;

}
}
void SendOneByte(unsigned char c)
{
SBUF = c;
while(!TI);
TI = 0;
}

void UARTInterrupt(void) interrupt 4
{
if(RI)
{
RI = 0;
//add your code here!
k=SBUF;
}
else
TI = 0;
}

串行是与并行想对应的,并行通信是指数据的各位同时被传送。串行通信是将要传送的数据一位位的依次顺序发送。
串行通信实现的是两个对象之间的数据传递,对象通常是单片机。通信实际上是在两个单片机上连上线,通过线路来传递信息。

如图,调制解调器非常重要,其作用是实现数字信号和模拟信号的转换。但是注意,调制解调器是远距离传输才有用。近距离传输不需要调制解调器(零Modem方式)。因此进行单片机的实验只需要将相应接口的线路连好就行。连接示意图如图

2.STM32单片机与电脑串行通信
1.信号线的连接
单片机与电脑通信通常用的是USB接口连接电脑。那么就需要首先将串口转为USB,STM32上有相应的硬件实现该功能,我们只需要看电路图线路是否连接。
以下是正点原子miniSTM32的连线步骤:
(1)查单片机电路图,找到主板芯片上的U1_RXD与U_TXD接口。
(2)找到USB_232的RXD与TXD接口
(3)如果电路图上线路未连接,将主板芯片的U1_RXD通过跳线与USB_232上的TXD连接,主板芯片的U1_TXD通过跳线与USB_232上的UXD连接。

2.程序的编写
由于采用STM32官方固件库,因此编写串口通信程序非常简单。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-04-02
程序没有什么大问题,可能是你的波特率不一致吧,程序里面波特率为2400。追问

波特率没问题哦都是9600

蓝牙是9600单片机我就不清楚了应该是4800吧oxf3应该没错,我抄的网上例程

第2个回答  2019-04-02
这需要求助专业的编程师
第3个回答  2019-04-02
我都没看出来的时候回来的事情怎么样了呢吗呢吧台主管护师成绩出来了
第4个回答  2019-04-02
好的好的郭德纲