首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

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

2012-02-06 
串口传送数据传了3个字节,只显示一个字节uchar buffer[]{0xaa,0xbb,0x64}void init_serial()//串品初始

串口传送数据传了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了,然后你再次清零,进行第二个数据的发送。

热点排行