📄 gsm.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 + -