自己做了个TC35的小板子,初始化时遇见问题了,发送的命令倒是出去了,就是接收不到串口的数据,请各位帮忙分析下代码。
#include<reg52.h>
#include<string.h>
unsigned char r[]="",n=0;
void delay(unsigned int z)//延时
{
unsigned int x,y;
for(x=0;x<z;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[i];
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[i];
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[i];
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++;
} |