单片机串口通信中断模式中SBUF返回的值与输入进去的不一样

51单片机中,做串口通信练习,想通过串口输入一个值,在通过串口发送回来,采用中断模式,但是输入的值与返回的值不同,如输入08返回的却是88,输入10返回的却是B0,这是怎... 51单片机中,做串口通信练习,想通过串口输入一个值,在通过串口发送回来,采用中断模式,但是输入的值与返回的值不同,如输入08返回的却是88,输入10返回的却是B0,这是怎么回事啊?求大神指点

程序代码如下:

#include<reg52.h>
unsigned char num;

void main()
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;

SM0=0;
SM1=1;
REN=1;
EA=1;
ES=1;

}

void ses() interrupt 4
{
RI=0;
num=SBUF;
SBUF=num;
while(!TI);
TI=0;

}
展开
 我来答
774051719a
2014-10-11 · TA获得超过1231个赞
知道小有建树答主
回答量:113
采纳率:100%
帮助的人:149万
展开全部
没有初始化串口,串口配置寄存器SCON并没有配置,中断函数中最好这样写
void ses() interrupt 4
{
if(RI)
{
RI=0;
num=SBUF;
SBUF=num;
while(!TI);
TI=0;
}
}

另外在主函数中最后应该加入一句while(1);使主程序无限循环等待。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式