这个51单片机串口通讯程序为什么接受不了数据?

#include<reg52.h>unsignedchartemp;voidUartConfiguration();voidmain(){UartConfiguratio... #include<reg52.h>
unsigned char temp;
void UartConfiguration();

void main()
{
UartConfiguration();
while(1)
{
;
}
}

void UartConfiguration()
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
PCON=0x00;//波特率倍增位,不加倍。0x80为加倍
SM0=0;
SM1=1;
REN=1;
EA=1;
ES=1;
TR1=1;
}

void SER() interrupt 4
{
temp=SBUF;
RI=0;
SBUF=temp;
while(!TI);
TI=0;
}
展开
 我来答
lycdl
高粉答主

推荐于2016-06-29 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2万
采纳率:94%
帮助的人:4937万
展开全部

首先,你的程序没有问题,不能接收数据,从以下几个原因找:

1、这是在实验板上做测试吗,那看一下实验板上单片机的晶振频率是不是11.0592MHz,必须是这个频率,否则就无法接收数据。

2、实验板的单片机要接收数据,你是怎么向单片机发数据的,是用电脑发的吗,在电脑是用串口助手发的吗。你这程序是必须先由对方发送数据,单片机才能接收,接收后才返回数据的。

3、你的程序,用仿真图测试的,是对的,见下图,可以接收并返回数据的。

更多追问追答
追问
谢谢你认真的回答
单片机的晶振频率是11.0592hz,keil的配置中写的是12hz
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式