新手问大神 关于串行口
时间:10-02
整理:3721RD
点击:
意图:在上位机上用串口调试助手发送一个字符X,单片机收到后返回给上位机“I get X”,串行口波特率9600bps
实际得到 XI get X 求问为什么多了X 代码如下 串口调试助手界面见附图
#include<reg52.h>
#define uchar unsigned char
uchar table[]="I get ";
void init();
uchar flag,i,a;
void main()
{
init();
while(1)
{
if(flag==1)
{
ES=0;
for(i=0;i<6;i++)
{
SBUF=table[i];
while(!TI);
TI=0;
}
SBUF=a;
while(!TI);
TI=0;
ES=1;
flag=0;
}
}
}
void init ()
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
}
void S ()interrupt 4
{
RI=0;
a=SBUF;
flag=1;
}
实际得到 XI get X 求问为什么多了X 代码如下 串口调试助手界面见附图
#include<reg52.h>
#define uchar unsigned char
uchar table[]="I get ";
void init();
uchar flag,i,a;
void main()
{
init();
while(1)
{
if(flag==1)
{
ES=0;
for(i=0;i<6;i++)
{
SBUF=table[i];
while(!TI);
TI=0;
}
SBUF=a;
while(!TI);
TI=0;
ES=1;
flag=0;
}
}
}
void init ()
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
}
void S ()interrupt 4
{
RI=0;
a=SBUF;
flag=1;
}
把串口助手里的显示发送选项取消,这个应该是串口助手的发送回显功能,发送的数据,会在接收窗口同时显示
原来如此 我还在码上找信息 感谢
程序没有问题,可能是串口助手设置问题。