gin果果 发表于 2022-8-31 15:39

新唐N76E003串口出现问题,请教

本帖最后由 gin果果 于 2022-8-31 15:43 编辑

按照官方的例程取配置的uart0 通讯收发,为什么会出现这样子的现象
红色的是电脑发给单片机的数据
蓝色的是单片机发给电脑的数据
我没有用回显,为什么会出现这种现象?
下面贴上我的代码,请各位大佬指点出错误
#include "public.h"
#include "MS.h"
/*****************************************





* @description
* @param:void
* @retval:void
****************************************/
void MS_Config_init(void)
{
      InitialUART0_Timer1(9600);
      INT_Uart_Init();
}
/*****************************************
* @description
* @param:void
* @retval:void
****************************************/
void InitialUART0_Timer1(uint32_t u32Baudrate)    //T1M = 1, SMOD = 1
{
      P06_Quasi_Mode;
      P07_Quasi_Mode;

      SCON = 0x52;   //UART0 Mode1,REN=1,TI=1
      TMOD |= 0x20;    //Timer1 Mode1
      
      set_SMOD;      //UART0 Double Rate Enable
      set_T1M;
      clr_BRCK;      //Serial port 0 baud rate clock source = Timer1

#ifdef FOSC_160000
      TH1 = 256 - (1000000/u32Baudrate+1);               /*16 MHz */
#endif            
#ifdef FOSC_221184
      TH1 = 256 - (1382400/u32Baudrate);            /*22.1184 MHz */
#endif
      set_TR1;
      set_TI;                                                //For printf function must setting TI = 1
}
/*****************************************
* @description
* @param:void
* @retval:void
****************************************/
void INT_Uart_Init(void)
{
      set_P06;
      set_P07;
      set_ES;                                 //enable UART interrupt
      set_EA;
}
/*****************************************
* @description
* @param:void
* @retval:void
****************************************/
//uint8_t Sum_I = 0;
void SerialPort0_ISR(void) interrupt 4
{
   if(RI==1)
    {         
                        clr_RI;                                 
                        MS_Data.RBuf0 = SBUF;
            
                        if(MS_Data.RBuf0_index < RBUF_SIZE_MAX)
                        {
                        MS_Data.RBuf0_index++;
                        }
                        else
                        {
                              MS_Data.RBuf0_index = 0x00;
                  }      
    }
    if(TI==1)
    {
                        if(MS_Data.Sindex < MS_Data.SindexLen)
                        {
                              SBUF=MS_Data.Sbuf0;      
                              MS_Data.Sindex++;
                        }
                        
      clr_TI;
    }      
}




   

gin果果 发表于 2022-8-31 15:39

本帖最后由 gin果果 于 2022-8-31 15:38 编辑

这是我的源码
页: [1]
查看完整版本: 新唐N76E003串口出现问题,请教