El módulo GSM recibe mensajes cortos.
# include & ltreg52.h & gt
#Define uchar carácter sin firmar
# Definir uint Entero sin signo
void GSM_uart();
Entero sin signo uart_delay(unsigned int z);
void GSM_init();
anular GSM_CMGF();
anular GSM_ATC MGS();
anular TELNUM();
anular GSM_ TEXT();
void GSM_test();
void BUTTON();
Entero sin signo d;
Ninguno Código de carácter firmado al ingresar [] = { 0x 41, 0x54 , 0x0d };
Código de carácter sin firmar ATCMGFEnter [] = { 0x41, 0x54, 0x2b, 0x43, 0x4d, 0x47, 0x 46, 0x3d, 0x31, 0x0d};
Carácter sin firmar código en cmgs[]= {0x 41, 0x54, 0x2b, 0x43, 0x4d, 0x47, 0x53, 0x3d};
Código de carácter sin firmar TEL_NUM【】= {0x 30, 0x31, 0x32, 0x33, 0x34 , 0x35, 0x36, 0x37, 0x38, 0x 39};
Texto de código de carácter sin firmar【】={0x4b, 0x4f };
Código de carácter sin firmar Ingrese [] = { 0x0d } ;
Código de carácter sin firmar oneA [] = { 0x 31, 0x 41 };
Idata de carácter sin firmar buf[20];
int flag; p>
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; // Modo UART 1: UART de 8 bits = 1: Permitir recepción.
PCON = 0x 00; //SMOD=0: La velocidad en baudios no se duplica.
TMOD = 0x 20; //t 1 Modo 2, utilizado para la velocidad en baudios de UART.
th 1 = 0x FD;
TL 1 = 0x FD; //configuración de velocidad en baudios UART: 9600
TI = 0;
RI = 0;
EA = 1;
tr 1 = 1;
}
Entero sin signo uart_delay (Entero sin signo) z)
{Entero sin signo a, b;
for (a = z; a>0;respuesta-)
{ for ( b = 1000; b >0 ; B-);}
Devuelve z;
}
Usa 3 para invalidar la interrupción ddd() 4
{ p>
if (RI) // Maneja la interrupción de recepción.
{ buf【buf num】= SBUF; //Recibir datos en serie
RI = 0;
buf num++; p>
}
}
void GSM_init()
{
uint I;
prueba de código uchar【】= {0x41, 0x54, 0x0d};
ES = 0;
for(I = 0;i<3;i++)
{
SBUF = prueba[I];
mientras (TI = = 0);
TI = 0;
} p>
ES = 1;
}
void GSM_CMGF()
{
uchar código sel【 10】= {0x41, 0x54, 0x2B, 0x43, 0x4D, 0x47, 0x 46, 0x3D, 0x31, 0x0d}; //AT+CMGF=1 Ingrese
uint I;
for( I = 0;i<10;i++)
{
SBUF = sel[I];
mientras (TI == 0) ;
TI = 0;
}
}
void GSM_ATCMGS()
{ uint I
uchar código 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;i<20;i++)
{
SBUF = tel[I];
mientras (TI = = 0);
TI = 0;
}
}
void GSM_TEXT()
{
uchar code ne irong【10】= { 0x 48, 0x69, 0x21, 0x6E, 0x69, 0x68, 0x61, 0x6F, 0x2E, 0x 1a }; ! Ni Hao.
uint I;
ES = 0;
for(I = 0;i<10;i++)
{ p>
SBUF = nei Rong[I];
mientras (TI = = 0);
TI = 0;
}
ES = 1;
}
void send()
{
SBUF = oneA[0]; == 0); TI = 0;
SBUF = unoA[1]; mientras (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
}
Otros
{
P0 = 0x00UART_delay (4000); P0 = 0xff
}
}
botón nulo()
{ apuesta 1 = 1;
apuesta 1 _ 1 = 0
si (apuesta 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);
apuesta 1 = 1;
}
}
main()
{
BOTÓN();
UART_delay(10);
}