# include & ltintrins.h & gt
# include & ltstdio.h & gt
# include & ltmath.h & gt
# include & ltstdlib.h & gt
# include & ltstring.h & gt
#定義uint無符號整數
#定義uchar無符號字符
#定義uint無符號整數
//void init(void);
//char j = ' \ 0 ';
char RS buf[40];
char code AT_SK[]= " >;
char Code AT _ Code[]= " OK ";
位標誌= 0;
uchar RS point = 0;
sbit led1=p2^3;
sbit led2=p2^2;
sbit led3=p2^1;
sbit led4=p2^0;
無效延遲(單位z)
{
uint x,y;
for(x = z;x & gt0;x -)
for(y = 125;y & gt0;y-);
}
/***************************************8
***************************************/
void ClrRsBuf(char *p,int tt)
{
int I;
而(tt -)
{
* p = ' \ 0
p++;
}
}
//////////////////////////////////////
void Send_AT(void)
{ uchar代碼模式[]= " AT ";
烏恰爾壹世;
無符號char * p;
while(1)
{
ClrRsBuf(RsBuf,sizeof(RS buf));
for(I = 0;我& lt2;i++)
{
SBUF =模式[I];//將表[i]發送到發送緩沖區。
而(!TI);//等待傳輸完成
TI = 0;
}
SBUF = ' \ r
而(!TI);//等待傳輸完成
TI = 0;
ES = 1;//
延遲(500);
p=strstr(RsBuf,AT _ Code);
如果(p!= NULL)break;
}
}
/***********************************************************
:CMGF
:TXET?:?:?
***********************************************************/
void Send_CMGF
{ uchar I;
uchar代碼模式[]= " AT+CMGF = 1 ";
無符號char * p;
while(1)
{
ClrRsBuf(RsBuf,sizeof(RS buf));
for(I = 0;我& lt9;i++)
{
SBUF =模式[I];//將表[i]發送到發送緩沖區。
而(!TI);//等待傳輸完成
TI = 0;
}
SBUF = ' \ r
而(!TI);//等待傳輸完成
TI = 0;
ES = 1;//
延遲(500);
p=strstr(RsBuf,AT _ Code);
如果(p!= NULL)break;
}
}
/* * * * * * * * * * * * CSCS * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 8
********************************************/
無效CSCS(無效)
{
烏恰爾壹世;
uchar碼模式[]= " AT+CSCS = \ " GSM \ " ";
for(I = 0;我& lt14;i++)
//while()
{
SBUF =模式[I];//將表[i]發送到發送緩沖區。
而(!TI);//等待傳輸完成
TI = 0;
}
SBUF = ' \ r
而(!TI);
TI = 0;
SBUF = ' \ n
而(!TI);//等待傳輸完成
TI = 0;
}
/***********************************************************
:CMGS
:SIM:?:?
***********************************************************/
void Send_CMGS
{
烏恰爾壹世;
uchar碼電話[]= " AT+CMGS = \ " 13474305153 \ " ";
無符號char * p;
while(1)
{
ClrRsBuf(RsBuf,sizeof(RS buf));
for(I = 0;我& lt21;i++){
SBUF = phone[I];//將表[i]發送到發送緩沖區。
而(!TI);//等待傳輸完成
TI = 0;
}
SBUF = ' \ r
而(!TI);//等待傳輸完成
TI = 0;
ES = 1;//
延遲(500);
p=strstr(RsBuf,AT _ SK);
如果(p!= NULL)break;
}
}
void發送(void)
{
uchar I = 0;
uchar碼sms[]= "高帥8553069 \ x 1a ";//短信?,\x01a?Ctrl+Z
while(短信[i]!='\0')
{
SBUF = SMS[I];//將表[i]發送到發送緩沖區。
而(!TI);//等待傳輸完成
TI = 0;
i++;
}
//SBUF = ' \ n ';
// while(!TI);//等待傳輸完成
//TI = 0;
}
void init(){
TMOD = 0x 20;
th 1 = 0x FD;//bit=9600
TL 1 = 0x FD;
tr 1 = 1;
任= 1;//允許接受
SM0 = 0;
sm 1 = 1;
EA = 1;
ES = 1;//打開串行端口中斷
}
///////////////////////////////
/*void SendMsgStart(void)
{
無符號char *p,I = 10;
ES = 1;
當(我-)
{
延時(100);//Get " >
p=strstr(RsBuf,SK);//" >
如果(p!=空)
{
ClrRsBuf(RsBuf,sizeof(RS buf));
延時(150);//Get " >
led 4 = 1;
打破;
}
}
}
*/
////////////////////////////
void main(){
init();
flag = 0;
led 1 = 0;
led 2 = 0;
led 3 = 0;
led 4 = 0;
延遲(50);
ES = 0;
延遲(2000年);
send _ AT();
led 1 = 1;
延時(1000);
發送_ CMGF();
led 2 = 1;
//Delay(1000);
//CSCS();
延時(1000);
發送_ CMGS();//
led 3 = 1;
延時(1000);
SEND();
led 4 = 1;
//SendMsgStart();
while(1);
}
無效ser()中斷4
{
if(RI==1)
{
RI = 0;
RS buf[RS point++]= SBUF;
if(RS point & gt;=sizeof(RsBuf))
{
RS point = 0;//flag RS485 = 0;
} //
}
}
我親自試過,沒有任何問題。