資源簡介
利用51單片機控制MC35實現發送短信。在這個過程中,單片機判定MC35對AT命令的響應,判定命令是否成功。不成功再發送,直到成功。最終確保短信的發送成功。
代碼片段和文件信息
#include?“Includes.h“
uchar?Size?=?MC35;?//請根據您的模塊型號設置型號 MC35i/MC35/TC35i/TC35四種可選
uchar?code??TEL_temp[20]={‘1‘‘8‘‘9‘‘5‘‘8‘‘1‘‘7‘‘3‘‘9‘‘2‘‘8‘0x0d‘2‘‘5‘};???
//存對方號碼0x0d后面的是代碼長度,25為5個漢字長度,每加一個漢字+2
uchar F=0;
uint m;
uint? n;
uchar???????chinit;
uchar???????chping;
uchar?data? int_case; //中斷標志
uchar? uart_buff[MAX_TM];?//通信程序中的緩沖???/////
uchar?idata?send_countreceive_count;
data?uchar? AT_Command_Type; //當前發送的命令類型
data?uchar? AT_Command_Status; //命令發出以后的返回參數
uchar?idata?para_temp[MAX_T];?????//多用臨時用
uchar?data? read_tmp;?????????????///讀電話本號參數
uchar?data? num_tmp1; ///讀短信號碼參數
uchar?data? TMP_BUF;?????????//?萬用?值
uchar?data? sms_tmp; ///參數代碼
uchar?data? system_server?;????//系統狀態
//定時用****************
uint??data? timercount; //50MS定時器
uchar?data? timer_1S_cnt;
uchar?data? timer_10S_cnt;
uchar?data? timer_S_cnt;
uchar?data? timer_tmp;
//位變量****************
bit? TC35_bit??;
bit? txd_rxd_bit;????//接收正確的指令中斷
bit? at_send_bit;????//發送允許
/*********************************************************************
?*????????????????????????延時1MS的函數??????????????????????????????*
?*********************************************************************/
void?delay1ms(uint?x){ ???
for(m=0;m ??? for(n=0;n<120;n++);?
}
/*********************************************************************
?*??????????????????C51中字符串函數的擴充????????????????????????????*
?*********************************************************************/
uchar?strsearch(uchar?*ptr2){//查字符串*ptr2在*ptr1中的位置
//本函數是用來檢查字符串*ptr2是否完全包含在*ptr1中
//返回:??0??沒有找到
//???????1-255?從第N個字符開始相同
uchar?abc;
?? if(ptr2[0]==0)?return(0);
for(a=0b=0;a if(uart_buff[a]==ptr2[b]){//第一個字符相同
for(c=a;c if(ptr2[b]==0)//比較正確
return(a+1);???????????????//返回值是整數,不含0
if(uart_buff[c]!=ptr2[b])?break;
}
b=0;
}
}
return(0);
}
/*********************************************************************
?*????????????????????????AT指令發送程序?????????????????????????????*
?*********************************************************************/
uchar??Send_AT_Command(?uchar?type){??????//發送AT指令
//撥號時號碼放在phone.number
//其他用para_temp
AT_Command_Type=type;
send_count=0;
switch(type){
case?RESET_TC35: //復位TC35
strcpy(uart_buff“AT+CFUN=11“);
break;
case?CHECK_PIN: //檢查當前是否要輸入PIN碼
strcpy(uart_buff“AT+CPIN?“);
break;
????case?TC35_INIT: //TC35初始化命令
strcpy(uart_buff“ATE0V0“);
break;
case?SIM_ID:
strcpy(uart_buff“ATE0V0+CMGF=1+CNMI=21“);
break;
case?AT_IPR:
strcpy(uart_buff“AT+IPR=9600“);?
break;
case?SMSS_ID:
strcpy(uart_buff“ATE0V0^SSMSS=1+CNMI=21“);
break;
case?SMS_CMGF: //SMS?接收方式
strcpy(uart_buff“ATE0V0+CMGF=0“);
break;
case?PHONE_WRITE:?? //存電話號碼
strcpy(uart_buff“AT+CPBW=“);
strcat(uart_buffpara_temp);
break;
case?PHONE_READ:?? //讀電話本
strcpy(uart_buff“AT+CPBR=“);
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1577??2010-03-14?22:58??GSM發送程序\main.LST
?????文件???????7891??2010-03-14?22:58??GSM發送程序\GSMdemo.hex
?????文件???????5136??2010-03-14?22:58??GSM發送程序\GSMdemo.M51
?????文件????????689??2010-03-14?22:51??GSM發送程序\GSMdemo.plg
?????文件????????590??2010-03-14?22:57??GSM發送程序\main.c
?????文件????????400??2010-03-14?16:26??GSM發送程序\GSMcs.LST
?????文件??????13375??2010-03-14?22:58??GSM發送程序\GSM.c
?????文件???????2064??2010-03-14?22:26??GSM發送程序\GSMdemo.Uv2
?????文件????????510??2010-03-14?22:58??GSM發送程序\main.OBJ
?????文件??????26429??2010-03-14?22:58??GSM發送程序\GSM.LST
?????文件???????7567??2010-03-14?22:58??GSM發送程序\GSM.OBJ
?????文件???????1741??2010-03-14?22:51??GSM發送程序\GSMdemo.Opt
?????文件???????2068??2008-08-22?19:09??GSM發送程序\GSMdemo_Uv2.Bak
?????文件???????1749??2010-03-14?22:51??GSM發送程序\GSMdemo_Opt.Bak
?????文件???????3673??2010-03-14?22:58??GSM發送程序\GSMdemo
?????文件???????4102??2010-03-14?22:59??GSM發送程序\Includes.h
?????目錄??????????0??2010-03-14?22:59??GSM發送程序
-----------?---------??----------?-----??----
????????????????79561????????????????????17
- 上一篇:jcrop v0.9.12
- 下一篇:google earth 高程點坐標提取軟件
評論
共有 條評論