# include & ltreg52.h & gt
#定義uchar無符號字符
#定義uint無符號整數
void GSM _ UART();
無符號整數uart_delay(無符號整數z);
void GSM _ init();
void GSM _ CMGF();
void GSM _ ATC MGS();
void TELNUM();
void GSM _ TEXT();
void GSM _ test();
void BUTTON();
無符號整數d;
無符號字符代碼at enter【】= { 0x 41,0x54,0x0d };
無符號字符代碼ATCMGFEnter【】= { 0x41,0x54,0x2b,0x43,0x4d,0x47,0x 46,0x3d,0x31,0x0d };
無符號字符代碼at cmgs【】= { 0x 41,0x54,0x2b,0x43,0x4d,0x47,0x53,0x3d };
無符號字符代碼TEL _ NUM【】= { 0x 30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x 39 };
無符號字符代碼文本【】={0x4b,0x4f };
無符號字符代碼Enter【】= { 0x0d };
無符號字符代碼oneA【】= { 0x 31,0x 41 };
無符號字符idata buf【20】;
int標誌;
int buf num = 0;
uchar str 1【】= {“AT“};
uchar str 2【】= {“ATD“};
uchar str 3【】= {“ATH“};
uchar str 5【】= {“AT+CMGS =“};
sbit bell=p1^6;
sbit betton1_1=p3^3;
sbit betton1=p3^4;
void gsm_uart()
{ EA = 1;
ES = 1;
SCON = 0x 50;//UART模式1:8位UART;REN=1:允許接收。
PCON = 0x 00;//SMOD=0:波特率不加倍。
TMOD = 0x 20;//t 1模式2,用於UART波特率。
th 1 = 0x FD;
TL 1 = 0x FD;//UART波特率設置:9600
TI = 0;
RI = 0;
EA = 1;
tr 1 = 1;
}
無符號整數uart_delay(無符號整數z)
{無符號整數a,b;
for(a = z;a & gt0;答-)
{ for(b = 1000;b & gt0;B-);}
返回z;
}
使用3使ddd()中斷4無效
{
if(RI)//處理接收中斷。
{ buf【buf num】= SBUF;//接收串行數據
RI = 0;
buf num++;//清除中斷標誌位
}
}
void GSM_init()
{
uint I;
uchar代碼測試【】= {0x41,0x54,0x0d };
ES = 0;
for(I = 0;我& lt3;i++)
{
SBUF = test【I】;
while(TI = = 0);
TI = 0;
}
ES = 1;
}
void GSM_CMGF()
{
uchar code sel【10】= { 0x41,0x54,0x2B,0x43,0x4D,0x47,0x 46,0x3D,0x31,0x0d };//AT+CMGF=1回車
uint I;
for(I = 0;我& lt10;i++)
{
SBUF = sel【I】;
while(TI = = 0);
TI = 0;
}
}
void GSM_ATCMGS()
{ uint I;
uchar代碼tel【20】= { 0x 41,0x54,0x2B,0x43,0x4D,0x47,0x53,0x3D,0x31,0x33,0x38,0x33,
0x36,0x30,0x32,0x33,0x33,0x37,0x39,0x0d };
for(I = 0;我& lt20;i++)
{
SBUF = tel【I】;
while(TI = = 0);
TI = 0;
}
}
void GSM_TEXT()
{
uchar code ne irong【10】= { 0x 48,0x69,0x21,0x6E,0x69,0x68,0x61,0x6F,0x2E,0x 1a };//嗨!倪好。
uint I;
ES = 0;
for(I = 0;我& lt10;i++)
{
SBUF = nei Rong【I】;
while(TI = = 0);
TI = 0;
}
ES = 1;
}
void發送()
{
SBUF = oneA【0】;while(TI = = 0);TI = 0;
SBUF = oneA【1】;while(TI = = 0);TI = 0;
}
void GSM_test()
{
GSM _ UART();
UART _ delay(400);
GSM _ init();
UART _ delay(1000);
ES = 0;
buf num = 0;
if(buf【5】= =‘O‘& amp;& ampbuf【6】= =‘K‘。
{
P0 = 0xfeUART _ delay(1000);P0 = 0xff
}
其他
{
P0 = 0x00UART _ delay(4000);P0 = 0xff
}
}
void按鈕()
{ betton 1 = 1;
betton 1 _ 1 = 0;
if(betton 1 = = 0)
{
GSM _ test();
UART _ delay(1200);
GSM _ CMGF();
UART _ delay(1200);
GSM _ ATC MGS();
UART _ delay(1200);
GSM _ TEXT();
UART _ delay(800);
UART _ delay(500);
betton 1 = 1;
}
}
主()
{
BUTTON();
UART _ delay(10);
}