当前位置: 代码迷 >> 单片机 >> 串口传送数据传了3个字节,只显示一个字节,该怎么解决
  详细解决方案

串口传送数据传了3个字节,只显示一个字节,该怎么解决

热度:211   发布时间:2016-04-28 16:29:49.0
串口传送数据传了3个字节,只显示一个字节
uchar buffer[]={0xaa,0xbb,0x64};

void init_serial(); //串品初始化
void senddata(uchar *buffer,uchar length);//发送数据

void senddata(uchar *buffer,uchar length)
{
  uchar i;
  for(i=0;i<length;i++)
  {
  SBUF=buffer[i];
  while (TI==1);
  TI=0;
   
  }  
  

}

//初始化串口
void init_serial()
{

  SCON=0x50; //串口方式1
  ES=1; //开串口中断
  PCON=0x80; //波特率倍增 19.2k
  TMOD=0x20;
  TH1=0xfd; //初值
  //TL1=0xfd;
  TR1=1;
  EA=1;



}



void senddata(uchar *buffer,uchar length)
{
  uchar i;
  for(i=0;i<length;i++)
  {
  SBUF=buffer[i];
  while (TI==1);
  TI=0;
   
  }  
  

}

void main()
{
  uchar key;
  ledk=0;
  key=0;
  displaybufpoint=0;
  init_serial();
  senddata(buffer,3);
  while(1);
}


buffer[]={0xaa,0xbb,0x64};中有三个数据
但串品调试助手只显示一个64
不知是什么回事!

------解决方案--------------------
我的意思是你在发送完毕TI被硬件置1之前,是需要等待的,也就是说要用一个while(TI==0);等待,当TI==1就直接跳出while了,然后你再次清零,进行第二个数据的发送。
  相关解决方案