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