|
此程序为何发送显示正常,接收是乱码呢?求助各位!
[复制链接]
#include
#include
unsigned char r[]="",n=0;
void delay(unsigned int z)//延时
{
unsigned int x,y;
for(x=0;x
for(y=0;y<110;y++);
}
void s_init()//初始化串口
{
SCON=0X50;
TMOD=0X20;
PCON=0X80;
TH1=0XFA;
TL1=0XFA;
// ES=0;
EA=1;
TR1=1;
}
void main()
{
unsigned char p1[]="at+clip=0\x0d\x0a", //向tc35发送复位命令
p2[]="at+csq\x0d\x0a",//网络质量返回
p3[]="at^snfs=2\x0d\x0a",
i;
s_init();
while(!(r[n-2]=='K')) //判断串口返回的字符串倒数第三位是不是'K'
{
n=0;
memset(r,0,sizeof(r));//字符数组清零
for(i=0;i<11;i++)//循环发送AT+CFUN=1,1
{
ES=0;
SBUF=p1;
while(!TI);//判断发送否
TI=0;//置位TI
}
ES=1;//开串口中断开始接收
delay(100);
}
n=0;
memset(r,0,sizeof(r));
while(!(r[n-2]=='K'))
{
n=0;
memset(r,0,sizeof(r));
for(i=0;i<8;i++)
{
ES=0;
SBUF=p2;
while(!TI);
TI=0;
}
ES=1;
delay(100);
}
n=0;
memset(r,0,sizeof(r));
while(!(r[n-2]=='K'))
{
n=0;
memset(r,0,sizeof(r));
for(i=0;i<11;i++)
{
ES=0;
SBUF=p3;
while(!TI);
TI=0;
}
ES=1;
delay(100);
}
memset(r,0,sizeof(r));
n=0;
}
void chuankou() interrupt 4
{
unsigned char tmp;
tmp=SBUF;
r[n]=tmp;
RI=0;
n++;
}
串口调试助手显示发送的字符是正常的,可就是接收下来乱码!
|
|