串口调试助手非十六进制接收字符有误
用51开发板做串口通信,我肯定我写的程序没有错误,串口助手(串口助手V3.2)以十六进制方式发送0x0a,单片机收到后向串口发关字符串OKabc,串口调试助手以十六进制接...
用51开发板做串口通信,我肯定我写的程序没有错误,串口助手(串口助手V3.2)以十六进制方式发送0x0a,单片机收到后向串口发关字符串OKabc,串口调试助手以十六进制接收显示时没错,但不用十六进制接收时,则显示O0K0asbOcK或者OKKEaabwcb等(串口助手V3.2)高手们知道为什么吗?
我用的是11.0592MHz的晶振,波特率我选了9600,这些都是对的呀!
程序如下:
#include <reg52.h>
code unsigned char send_txt[]={"OKabc"};
void delay(unsigned int i);
main()
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
SCON=0x50;
//PCON=0x00;
TR1=1;
EA=1;
ES=1;
while(1);
}
//////////////////////////////////
void getch(void) interrupt 4
{
unsigned char a;
RI=0;
EA=0;
a=SBUF;
P1 = SBUF;
if(a==0x0a)
{
int i;
//EA=0;
for(i=0;i<sizeof(send_txt);i++)
{
SBUF=send_txt[i];
while(!TI);
TI=0;
delay(1000);
}
}
EA=1;
}
void delay(unsigned int i)
{
unsigned int j;
unsigned char k;
for(j=i;j>0;j--)
for(k=110;k>0;k--);
} 展开
我用的是11.0592MHz的晶振,波特率我选了9600,这些都是对的呀!
程序如下:
#include <reg52.h>
code unsigned char send_txt[]={"OKabc"};
void delay(unsigned int i);
main()
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
SCON=0x50;
//PCON=0x00;
TR1=1;
EA=1;
ES=1;
while(1);
}
//////////////////////////////////
void getch(void) interrupt 4
{
unsigned char a;
RI=0;
EA=0;
a=SBUF;
P1 = SBUF;
if(a==0x0a)
{
int i;
//EA=0;
for(i=0;i<sizeof(send_txt);i++)
{
SBUF=send_txt[i];
while(!TI);
TI=0;
delay(1000);
}
}
EA=1;
}
void delay(unsigned int i)
{
unsigned int j;
unsigned char k;
for(j=i;j>0;j--)
for(k=110;k>0;k--);
} 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询