求助 51单片机串口问题
时间:10-02
整理:3721RD
点击:
51单片机串口发送数据,用查询法,如果不清空TI那么收到的是乱码,但是显示的内容还是要发送的字符串里的?、
程序:#include<reg52.h>//发送数据
#define uint unsigned int
#define uchar unsigned char
uchar code table[]="huanying! ";
void delay(uint x)
{
uint i,j;
for(i=x;i>0;i--)
for(j=114;j>0;j--);
}
void main()
{
uchar i;
TMOD=0x20;//定时器1的工作方式2
TH1=0XFD;
TL1=0XFD;//赋初值,波特率为9600
TR1=1;//启动定时器1
SM0=0;
SM1=1;//串口工作方式1
while(1)
{
for(i=0;i<10;i++)
{
SBUF=table[i];//传送数据 按位传送
while(!TI);//判断数据是否发送完
TI=0;//标志位清零
}
}
}
这样收到的是welcome!
如果去掉 while(!TI);//判断数据是否发送完
TI=0;//标志位清零
那么收到的是乱码
程序:#include<reg52.h>//发送数据
#define uint unsigned int
#define uchar unsigned char
uchar code table[]="huanying! ";
void delay(uint x)
{
uint i,j;
for(i=x;i>0;i--)
for(j=114;j>0;j--);
}
void main()
{
uchar i;
TMOD=0x20;//定时器1的工作方式2
TH1=0XFD;
TL1=0XFD;//赋初值,波特率为9600
TR1=1;//启动定时器1
SM0=0;
SM1=1;//串口工作方式1
while(1)
{
for(i=0;i<10;i++)
{
SBUF=table[i];//传送数据 按位传送
while(!TI);//判断数据是否发送完
TI=0;//标志位清零
}
}
}
这样收到的是welcome!
如果去掉 while(!TI);//判断数据是否发送完
TI=0;//标志位清零
那么收到的是乱码
不懂你想表达个什么意思
循环执行的速度快于一个字节的传输速度,一个完整的字节还没传输结束,你算一下波特率!