急急急!!!!单片机串口通讯问题,返回发送数据,但是返回数据和发送的数据不一样。
#include"reg51.h"unsignedcharm,n;voidmain(void){EA=1;//开总开关ES=1;//开串口中断TMOD=0x22;//定义...
#include"reg51.h"
unsigned char m,n;
void main(void)
{
EA=1;//开总开关
ES=1;//开串口中断
TMOD=0x22;//定义TM0D为00100010,为8位方式
SCON=0x50;//01010000
TH1=0xFD;//定义波特率为9600
TL1=0xFD;
TR1=1;//开定时器中断
while(1)//无限循环
{
if(m==1)//如果收到串口数据执行
{
m=0;//
ES=0;//暂时关闭串口中断
//n>>=1;
SBUF=n;//将缓冲中的数据写为n
while(!TI);//正在写入数据中
TI=0;//写入完毕后置TI为0
ES=1;//重新打开串口中断
}
}
}
void chuan(void) interrupt 4
{
while(!RI);
RI=0;
m=1;
n=SBUF;
}
我用STC89C54RD+(40针)返回的数据和发送的数据是一致的,然后把这个程序又写到STC12C2052AD(20针)中,返回的数据就不是发送的数据了,这个是怎么回事?请大家给我详细讲解一下,谢谢。 展开
unsigned char m,n;
void main(void)
{
EA=1;//开总开关
ES=1;//开串口中断
TMOD=0x22;//定义TM0D为00100010,为8位方式
SCON=0x50;//01010000
TH1=0xFD;//定义波特率为9600
TL1=0xFD;
TR1=1;//开定时器中断
while(1)//无限循环
{
if(m==1)//如果收到串口数据执行
{
m=0;//
ES=0;//暂时关闭串口中断
//n>>=1;
SBUF=n;//将缓冲中的数据写为n
while(!TI);//正在写入数据中
TI=0;//写入完毕后置TI为0
ES=1;//重新打开串口中断
}
}
}
void chuan(void) interrupt 4
{
while(!RI);
RI=0;
m=1;
n=SBUF;
}
我用STC89C54RD+(40针)返回的数据和发送的数据是一致的,然后把这个程序又写到STC12C2052AD(20针)中,返回的数据就不是发送的数据了,这个是怎么回事?请大家给我详细讲解一下,谢谢。 展开
4个回答
展开全部
一般都是波特率不一致造成的,你需要查看一下你的硬件环境比如晶振等。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果下位机没有问题建议你换个串口调试软件,我之前用下载软件自带的串口调试功能也是常出问题,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
波特率设置的问题吧!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询