读书人

串口传送数据传了3个字节只显示一个

发布时间: 2012-02-06 15:52:44 作者: rapoo

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

读书人网 >单片机

热点推荐