您的位置 首页 开关

51单片机操控TC35 之发送AT连机指令

一开始犯了2个错误;1:发送联机指令AT的时候,中断接受函数,RsBuf[RsPoint++]=SBUF;中的RsPoint应该置零。2:串口中断函数中if((RsPoin…

一开始犯了2个过错;

1:发送联机指令AT的时分,中止承受函数,RsBuf[RsPoint++]=SBUF;

中的RsPoint应该置零。

2:串口中止函数中 if((RsPoint

不然承受到一些其他数据。

且在中止中RI有必要清零

只发3个要害的函数

/***********************发送联机指令******************************
*功 能: 串口发送数组指令到TC35,”AT”,
*形 参:
*返 回 值:
*备 注: 测验GSM模块是否衔接正确
*****************************************************************/
void Send_AT(void)
{
uchar *p,i=ATwaits; //ATwaits=10
//lcd_disp_str(RsBuf,1);

while(i–) //测验10次,在某一次成功就退出
{
//RsBuf[0]=\0; //有下一句就不需求这句 //清空接纳缓冲区
RsPoint=0;
// 原本只要\r 我增加的\n 后来证明 能够不加的
SendString(“AT\r”);
//****************************等候应对”OK”
ES=1; //有必要中止 // 串口中止应许
delayms_100ms();//等候承受数据完结//delayms_1000ms();delayms_1000ms();

p=mystrstr(RsBuf,”OK”); //接纳到的数据存在RsBuf
if(p!=NULL) //接纳到”OK”

{
lcd_disp_str(“GSM module is OK”,1);
lcd_disp_str(“Will contimue! “,2);
delayms_1000ms();delayms_1000ms();delayms_1000ms();delayms_1000ms();
lcd_disp_str(” “,1);
lcd_disp_str(” “,2);
break;
}
lcd_disp_str(“No GSM connected”,1);delayms_1000ms();
lcd_disp_str(” “,1);
}

}

// 通讯中止接纳程序 中止函数无返回值
void uart_rx(void) interrupt 4 using 3 //放在这儿 和放在main()里边是相同的
{
EA=0;
if((RsPoint//if(RI)
{
RI=0;
RsBuf[RsPoint++]=SBUF;
//RsBuf[RsPoint]=0x00; //将下一个数据清零
//SendASC(RsBuf[RsPoint-1]);
//lcd_disp_str(RsBuf ,2);
}
EA=1;
}

/***********************字符串查找********************************
*功 能: 查找字符串
*形 参: char *s, char *t ;在s中查找t
*返 回 值: s_temp(t在s中的方位)成功 0 (失利 )
*备 注:
*****************************************************************/
char *mystrstr(char *s, char *t)
{
char *s_temp; /*the s_temp point to the s*/
char *m_temp; /*the mv_tmp used to move in the loop*/
char *t_temp; /*point to the pattern string*/

if (NULL == s || NULL == t) return NULL;

/*s_temp point to the s string*/
for (s_temp = s; *s_temp != \0; s_temp++)
{
/*the move_tmp used for pattern loop*/
m_temp = s_temp;
/*the pattern string loop from head every time*/
for (t_temp = t; *t_temp == *m_temp; t_temp++, m_temp++);
/*if at the tail of the pattern string return s_tmp*/
if (*t_temp == \0) return s_temp;

}
return NULL;
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/dianyuan/kaiguan/272961.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部