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

📄 gsm.h

📁 虚拟示波器
💻 H
字号:
#define   GM450RL       (*(volatile unsigned char *)0x08c00000)#define   GM450RH       (*(volatile unsigned char *)0x08c00001)#define   LCR            (*(volatile unsigned char *)0x08c00003)#define   LSR            (*(volatile unsigned char *)0x08c00005)/****清除状态*********/void ClearStatu(void){  char ch;  ch=LSR;  ch=GM450RL;} /************初始化*****************/ void Init_GM160(void){    char temp;    LCR = 0x80;    // DLAB=1       	GM450RL=0x0c;		GM450RH=0x0;			LCR = 0x03;	// 8bit data , 1 stop bit	GM450RH=0x0;   //no use the interrupt;		temp=LSR;			temp=GM450RL;	}/************发送字符*****************/void sendch(char ch){  while ((LSR&0x20)==0);  //maybe have problem  GM450RL=ch;}/***********接收字符*****************/void recestatu(char *receive){  char ch;  int i,time=300000;  //time=600000;     for (i=0;i<128;i++)  {     while ((LSR&0x01)==0 && (time--)!=0); //判断是否为空以及时间是否到   if (time>0)     {      *receive++=GM450RL;      time=300000;      }    else break;   //ClearStatu();  }    *receive='\0'; }/*******************AT指令**************/void ATCMD(void){  sendch('A');  sendch('T');  sendch(0x0d);  }  /******************ATE指令****************/void ATECMD(void){  sendch('A');  sendch('T');   sendch('E');  sendch('0');  sendch(0x0d);   }  /****************CGMI指令****************/void CGMICMD(void){   sendch('A');   sendch('T');   sendch('+');   sendch('C');   sendch('G');   sendch('M');   sendch('I');   sendch(0x0d);}/***************CMGF指令*****************/void CMGFCMD0(void){   sendch('A');   sendch('T');   sendch('+');   sendch('C');   sendch('M');   sendch('G');   sendch('F');   sendch('=');   sendch('0');   sendch(0x0d);}void CMGFCMD1(void){   sendch('A');   sendch('T');   sendch('+');   sendch('C');   sendch('M');   sendch('G');   sendch('F');   sendch('=');   sendch('1');   sendch(0x0d);}void CMGL(void){   sendch('A');   sendch('T');   sendch('+');   sendch('C');   sendch('M');   sendch('G');   sendch('L');   sendch('=');   sendch('"');   sendch('R');   sendch('E');   sendch('C');   sendch(' ');   sendch('U');   sendch('N');   sendch('R');   sendch('E');   sendch('A');   sendch('D');   sendch('"');   sendch(0x0d);}/**********read message************/void CMGR(void){   sendch('A');   sendch('T');   sendch('+');   sendch('C');   sendch('M');   sendch('G');   sendch('R');   sendch('=');   sendch('2');   sendch(0x0d);}/***************CMGS指令*****************/void CMGS(char *phonenum){   int i;   sendch('A');   sendch('T');   sendch('+');   sendch('C');   sendch('M');   sendch('G');   sendch('S');   sendch('=');   sendch('"');   for(i=0;i<11;i++)   {sendch(phonenum[i]);   phonenum[i] +=1;   }   sendch('"');   sendch(0x0d);   }/****************send data*******************/ void SendData(char *content) {   char len=0, i;   while ((content[len])!='\0')     {len++;}                //统计数组字符数   for (i=0;i<len;i++)   {sendch(content[i]);  //发送单个字符     content[i] +=1;   }   sendch(26);  }/*****************GSM send short message **********************/void SendShortMessage(char *phonenum,char *data){	   int i,j,n=0,m=0;   char readback[128],tmp[128];                              Init_GM160();    //初始化GM160   for (i=0;i<128;i++)   readback[i]=0;   ClearStatu();               CMGFCMD1();   for(i=0;i<300000;i++);   CMGS(phonenum);   for(i=0;i<600000;i++);   SendData(data);   } /***************receive short message***************/void RecShortMessage(char *readback,char *data){	   int i,j,n=0,m=0;   char tmp[128];                              Init_GM160();    //初始化GM160   ClearStatu();   for(i=0;i<127;i++)   readback[i]=0;   readback[i]='\0';               CMGFCMD1();   for(i=0;i<3000;i++);   recestatu(readback);   CMGR();   for(i=0;i<20000;i++);   recestatu(readback);    i=0;   while(readback[i++]!='"');   for(j=0;i<128;i++,j++)   tmp[j]=readback[i];   tmp[j] = '\0';   for(i=0;i<128;i++)   {       if((tmp[i]==0x0D) && (tmp[i+1]==0x0A))      {        j=i+2;        while(tmp[j]!=0x0D)         {  data[m] = tmp[j];            m++;            j++;         }          data[m]='\0';       }        for(j=0;j<64;j++)        {         if((data[j]=='O') && (data[j+1]=='K'))         { data[j]='\0';           break;         }        }                     }   }   

⌨️ 快捷键说明

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