这个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;
} 展开
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;
} 展开
1个回答
展开全部
首先,你的程序没有问题,不能接收数据,从以下几个原因找:
1、这是在实验板上做测试吗,那看一下实验板上单片机的晶振频率是不是11.0592MHz,必须是这个频率,否则就无法接收数据。
2、实验板的单片机要接收数据,你是怎么向单片机发数据的,是用电脑发的吗,在电脑是用串口助手发的吗。你这程序是必须先由对方发送数据,单片机才能接收,接收后才返回数据的。
3、你的程序,用仿真图测试的,是对的,见下图,可以接收并返回数据的。
更多追问追答
追问
谢谢你认真的回答
单片机的晶振频率是11.0592hz,keil的配置中写的是12hz
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询