⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chengxu.c

📁 程序程序程序程序程序程序程序程序程序程序程序程序程序程序程序程序程序程序程序程序程序程序
💻 C
字号:
#include <reg52.H>
#include<STRING.H>    
#include<INTRINS.H>    
#define uchar unsigned char    
#define uint unsigned int 
//--AT 指令的定义----------//
char idata RsBuf[10];
char idata RsPoint=0;
char R1; 
char code AT_Tc35[]="AT+";
char code Bps_Tc35[]="IPR=38400";
char code Text_Tc35[]="CMGF=1";
char code Read_Tc35[]="CMGR=";
char code Erase_Tc35[]="CMGD=";
char code Send_Tc35[]="CMGS=";
char code Creg_Tc35[]="CREG?";


//---模式设置-----//
void  UART_Init(void)
{
SCON=0x50;
ES=1;
}


//---发送一个ASCII---//
void SendASC(unsigned char ASC)
{
bit es;
es=ES;
ES=0;
T1=0;
SBUF=ASC;
while(!T1);
T1=0;
ES=es;
}

//----发送命令到TC35-----//
void SendToTc35(unsigned char *p,unsigned char Long)
{
while(Long--)
 {
   SendASC(*p++);
 }
}


//---通讯中断接收程序----//

void Rs485_Do(void) interrupt 4 using 1
{
 if(RI==1)
 {  RI=0;
   RsBuf[RsPoint++]=SBUF;
   if(RsPoint>=sizeof(RsBuf))
   {
       RsPoint=0;//FlagRs485=0;
   }
 }
}

//-----发送AT连机命令----//
char code AT_Code[]="OK";
void Send_AT(void)
{
 unsigned char *p;
 while(1)
 {  ClrRsBuf(RsBuf,sizeof(RsBuf));
    SendToTc35(AT_Tc35,2);
    SendASC(OVER);
   //*************等待应答OK
     ES=1;
     Delay(50);
   //----------------
     p=strstr(RsBuf,AT_Code);
     if(p!=NULL) break;
 }
}

//--------发送bps连机命令----//
void Send_BPS(void)
{
 SendToTc35(AT_Tc35,3);
 SendToTc35(Bps_Tc35,sizeof(Bps_Tc35)-1);//"IPR=19200"
 SendASC(OVER);
 Delay(100);

//-----删除短信息----//
unsigned char EraseMsg(unsigned char index)
{
 unsigned char *p,i=20;
 SendToTc35(AT_Tc35,3);
 SendToTc35(Erase_Tc35,sizeof(Erase_Tc35)-1);//"IPR=19200"
 SendASC(index);
 SendASC(OVER);
 Delay(100);
 ES=1;
 while(i--)
 {  Delay(200);
    p=strstr(RsBuf,AT_Code);
    if(p!=NULL)  {return 1;}
 }
  return 0;
}


//-----读取短信息----//
char code Ask_No[]="+CMGR:0,,0";
char code ERROR[]="ERROR";
char code Ask_Tc35[]="/";

unsigned char ReadMsg(unsigned char index)
{  
  unsigned char *p,i;
  unsigned char Buf[40];
  SendToTc35(AT_Tc35,3);
  SendToTc35(Read_Tc35,sizeof(Read_Tc35)-1);
  SendASC(index);
  SendASC(OVER);
  ES=1;
  Delay(600);
  /*-------------
     ES=0;
     SendToTc35(RsBuf,99);
     ES=1;
   */
  //----------------
  P=strstr(RsBuf,ERROR);
  if(p!=NULL)
  {   Send_AT();return 0;
  }
  //------------
  p=strstr(RsBuf,Ask_No);//无信息
  if(p!=NULL) return 0;
  //------------
 
  p=strstr(RsBuf,Ask_Tc35);
  if(p==NULL) return 0;
  //---------
  p=p+21;
  //---------
  for(i=0;i<sizeof(Buf);i++)
  { 
       Buf[i]=*p++;
  }
  //--------------
  if(EraseMsg(index)==0) return 0;
  //-------------
  p=strcpy(RsBuf,Buf);
  return 1;
}


//------发送短信息--------//
char code SK[]=">";
void SendMsgStart(void)
{
   unsigned char *p,i=10;
   SendToTc35(AT_Tc35,3);
   SendToTc35(Send_Tc35,sizeof(Send_Tc35)-1);
   SendASC(YinHao);
   SendToTc35(Mp1.Hand,sizeof(Mp1.Hand));
   SendASC(YinHao);
   SendASC(OVER);
   ES=1;
   while(i--)
   {  
     Delay(100);
     p=strstr(RsBuf,SK);
     if(p!=NULL)
     {
        ClrRsBuf(RsBuf,sizeof(RsBuf));
        Delay(150);
        break;
     }
    }
}






















































































⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -