我51通过232发给gsm,为啥收不到

[复制链接]
 楼主| chuandaoxy 发表于 2008-9-17 22:45 | 显示全部楼层 |阅读模式
我用的是wavecom的gsm,我想关闭猫,发送AT+CPOF
,通过pc机没问题<br /><br />而改用单片机就不行了,那里错了呢,猫已经登陆网络了<br /><br />#include&ltreg52.h&gt<br />#include&ltstdio.h&gt<br />#include&ltstring.h&gt<br /><br /><br /><br /><br />#define&nbsp;uchar&nbsp;unsigned&nbsp;char<br /><br />uchar&nbsp;&nbsp;idata&nbsp;RsPoint=0;<br /><br />uchar&nbsp;&nbsp;&nbsp;RsBuf[256];<br /><br />sbit&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buz&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;P1^0;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br /><br />char&nbsp;code&nbsp;AT_wmoi3[]=&quot;AT&quot;;&nbsp;&nbsp;&nbsp;&nbsp;//连机<br /><br />char&nbsp;code&nbsp;AT_Code[]=&quot;OK&quot;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//确认<br /><br />char&nbsp;code&nbsp;AT_M[]=&quot;AT+CPOF
/&quot;;&nbsp;&nbsp;&nbsp;&nbsp;//关机<br /><br /><br />void&nbsp;InitSerial(void)<br /><br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SCON&nbsp;=&nbsp;0x52;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;setup&nbsp;serial&nbsp;port&nbsp;control&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TMOD&nbsp;=&nbsp;0x20;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;hardware&nbsp;(9600&nbsp;BAUD&nbsp;@11.0592MHZ)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TH1&nbsp;&nbsp;=&nbsp;0xFD;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;TH1<br />&nbsp;&nbsp;&nbsp;&nbsp;TR1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Timer&nbsp;1&nbsp;on<br />}<br /><br />////////////////////////////////////////////////////<br /><br />void&nbsp;DelayMs(unsigned&nbsp;int&nbsp;count)&nbsp;&nbsp;//&nbsp;mSec&nbsp;Delay&nbsp;11.0592&nbsp;Mhz&nbsp;<br /><br />{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;i;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Keil&nbsp;v7.5a&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;while(count)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;=&nbsp;115;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(i&gt0)&nbsp;i--;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count--;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br /><br />////////////////////////////////////////////////////<br /><br />void&nbsp;SendASC(unsigned&nbsp;char&nbsp;ASC)<br /><br />{<br />&nbsp;&nbsp;&nbsp;bit&nbsp;es;<br />&nbsp;&nbsp;&nbsp;es=ES;<br />&nbsp;&nbsp;&nbsp;ES=0;&nbsp;&nbsp;//关闭中断<br />&nbsp;&nbsp;&nbsp;TI=0;<br />&nbsp;&nbsp;&nbsp;SBUF=ASC;<br />&nbsp;&nbsp;&nbsp;while(!TI);<br />&nbsp;&nbsp;&nbsp;TI=0;<br />&nbsp;&nbsp;&nbsp;ES=es;<br />}<br /><br />//////////////////////////////////////////////////////<br /><br />void&nbsp;Send_To_wmoi3(unsigned&nbsp;char*&nbsp;p,unsigned&nbsp;char&nbsp;Long)<br /><br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;while(Long--)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;SendASC(*p++);<br />&nbsp;&nbsp;}<br />}<br /><br />////////////////////////////////////////////////////////<br /><br />&nbsp;<br />void&nbsp;wmoi3_To_cpu(void)&nbsp;interrupt&nbsp;4&nbsp;using&nbsp;1<br /><br />{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;*p;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*RsBuf=0x0000;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(RI==1)<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;RI=0;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;RsBuf[RsPoint++]=SBUF;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;p=strstr(RsBuf,AT_Code);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;if(p!=NULL)&nbsp;{buz=~buz&nbsp;&nbsp;;}<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(RsPoint&gt=sizeof(RsBuf))<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RsPoint=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;}<br /><br /><br />&nbsp;/*uchar&nbsp;idata&nbsp;count_232=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;串行接收计数器<br />uchar&nbsp;xdata&nbsp;*read_232;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;串行接收数据缓冲区指针<br />uchar&nbsp;xdata&nbsp;*pr;&nbsp;*/<br /><br /><br />////////////////////////////////////////////////////<br />&nbsp;&nbsp;/*<br />void&nbsp;Send_AT(void)<br /><br />{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;*p;<br /><br />while(1)<br /><br />&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;ClrRsBuf(RsBuf,sizeof(RsBuf));<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;SendTowmoi3(AT_wmoi3,2);&nbsp;&nbsp;&nbsp;&nbsp;//&quot;AT&quot;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;SendASC(OVER);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//************等待应答“ok&quot;<br />&nbsp;&nbsp;&nbsp;&nbsp;ES=1;&nbsp;&nbsp;&nbsp;&nbsp;//必须中断<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;Delay(50);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;P=strstr(RsBuf,AT_Code);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;if(p!=NULL)&nbsp;break;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br /><br /><br /><br />&nbsp;&nbsp;main()<br /><br />&nbsp;&nbsp;{&nbsp;&nbsp;InitSerial()&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DelayMs(900000);//5s<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ES=1;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Send_To_wmoi3(AT_M,8);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(1);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;&nbsp;}<br /><br /><br /><br /><br />
chunyang 发表于 2008-9-17 23:25 | 显示全部楼层

先确认连线是否正确

再用串口调试软件比对MCU发出的指令和PC发出的有何不同。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

855

主题

1044

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部