单片机串口发射与接收问题

来源:百度知道 编辑:UC知道 时间:2024/06/29 21:06:03
TMOD=0x20;
SCON=0x50;
TH1=0xfd;
TL1=0xfd;
TR1=1;

void ckfs(unsigned char i)
{
SBUF=i;
while(1)
{
if(TI==1)
{
TI=0;
break;
}
}
} //这是发射程序
void ckjs(void) interrupt 4
{

if(RI)
{
wz=SBUF;
RI=0;

}

}//这是接收程序
可为什么在主程序里,接收到的数据总是0x00呢?

我用你的发射程序试了下,传给串口调试工具,在波特率相同的情况下串口调试工具接收到的数据是正确的,不会是0x00。没试验你的接受程序,不过看起来也没什么问题,可能不见得是程序的问题,找找其他原因吧

应该和你的波特率有关系,你如果是6M或者12M的肯定错了。
因为你这样的设置,波特率误差太大了。

换种写法。
发射:
void fashe()
{
SBUF=i;
while(!TI);
TI=0;
}
接收:
void jieshou()
{
while(!RI);
RI=0;
b=SBUF;

}

SBUF=i; // i没有赋值

i的数值默认应该是0,才会总是发送00,收到的也是00