关于STC单片机多串口使用的问题

2019-07-15 11:23发布

无标题.jpg
最近写的一个程序遇到了一些问题,硬件示意图如图所示。
单片机将串口1收到的数据先存一个数组里备用,每个包是类似AA XX XX FF这样的。
然后从数组里提取出XX XX,计算得到一个int值a。
接着将a显示出来,同时把a封装成FE XX XX AA通过串口2发送给HC-05蓝牙模块 。

可问题来了,
手机还未连接HC-05时(蓝牙模块指示灯快闪),单片机上的数码管能正确显示a。
可是当手机连接到HC-05时(蓝牙模块指示灯慢闪),单片机上就显示0了,似乎是无法从串口1读取到数据了。
手机上收到的是FE 00 00 AA,即得到的a也是0。此时断开连接,单片机又能正常显示a。

希望大神能指点一下哪里可能出问题了。此问题已经困扰我多日了,始终无法找到问题所在。谢谢了!

涉及代码:
#define Data_Size 21      //数组长度
int Buffer[Data_Size];
int Pointer=0;
int temp;
unsigned char al, ah;           //保存待发送数据
bit busy=0;

void SendtoBluetooth(char low,char high)
{
        while(busy);
        S2BUF=0xFE;
        busy=1;
        while(busy);
        S2BUF=high;
        busy=1;
        while(busy);
        S2BUF=low;
        busy=1;       
        while(busy);
        S2BUF=0xAA;
        busy=1;
}
void Uart1() interrupt 4                   //串口1
{
        if(RI)
                RI=0;                           
        if(ti)
                TI=0;                                                          
}
void Uart2() interrupt 8                   //串口2
{
        if(S2CON & 0x01)
                S2CON &= 0xFE;                           
        if(S2CON & 0x02)
                S2CON &= 0xFD;                                                       
        busy=0;
}
void main()
{
         //省略了初始化、设置串口1波特率2400、串口2波特率9600、以及显示部分的代码
         while (1)
        {
                if(RI==1)
                {
                        Buffer[Pointer]=SBUF;
                        Pointer+=1;
                        if (Pointer>20)
                        {
                                Pointer=0;
                                ES=0;
                                for(i=0;i<13;i++)
                                {
                                        if(Buffer==0xAA)
                                        {
                                                        if  (Buffer[i+1]<0x75)
                                                        {       
                                                                temp=Buffer[i+1]*256+Buffer[i+2];
                                                                temp=temp*2.5/1024;                                                                       
                                                        }
                                                        break;                                               
                                        }
                                }
                                show();                               
                                al=temp%256;
                                ah=temp/256;
                                SendtoBluetooth(al,ah);                            
                                ES=1;
                        }
                }
        }
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。