单片机串口与电脑通信问题

我这么写有什么问题吗 为什么我的串口能接受的到电脑发的数据 却不能发数据给电脑啊


#include <STC32G.H>
#include "UART2.h"
#define BRT (65536-(MAIN_FOSC/115200+2)/4)
bit busy;//忙碌标志位 忙碌为1 空闲为0
char wptr;//接受到的数据格式
char rptr;
char buffer[16];
void Usart2_Init(void)
{
    P_SW2=0x80;
    P_SW2 |=0x01;//将串口2的引脚切换到p46
    S2CFG=0x01;
    S2CON=0x50;
    T2L=BRT;
    T2H=BRT>>8;
    T2x12=1;
    T2R=1;
    wptr=0x00;
    rptr=0x00;
    busy=0; 
}
void Uart2Isr() interrupt 8
{
    if(S2TI)
    {
        S2TI=0;
        busy=0;
    }
    if(S2RI)
    {
        S2RI=0;
        buffer[wptr++]=S2BUF;
        wptr &= 0x0f;
    }
}
    void Uart2Send(char dat)
    {
        while(busy);
        busy=1;
        S2BUF=dat;
    }
    void Uart2SendStr(char*p)
    {
        while(*p)
        {
            Uart2Send(*p++);
        }
            
    }
    Uart2SendStr("Uart Test!\r\n");
    while(1)
    {
    
        if(rptr!=wptr)
        {
            Uart2Send(buffer[rptr++]);
            rptr &= 0x0f;
        }
            
        
    }
}

【相关推荐】




如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

在线调试下代码,估计是代码停到send函数的while循环中了