DEFINE OSC 4
'DEFINE OSC 8
DEFINE HSER_TXSTA 20h
DEFINE HSER_RCSTA 90h
DEFINE HSER_BAUD 2400
'DEFINE HSER_BAUD 4800
'DEFINE HSER_BAUD 9600
DEFINE HSER_SPBRG 25
DEFINE HSER_CLROERR 1
i var byte
TRISB=%00000000
PORTB=%00000000
TRISD=%00001111
PORTD=%00000000
FIRSTCHECK:
HIGH PORTB.7
PAUSE 500
HIGH PORTB.6
PAUSE 500
HIGH PORTB.5
PAUSE 500
HIGH PORTB.4
PAUSE 500
PORTB=%00000000
GSM_CHECK:
HSEROUT ["AT",13] 'Enviar AT al módem seguido por un retorno de carro
HSERIN
5000, GSM_CHECK
, [WAIT("OK")]'Comprobar respuesta OK, espere 5 segundos max.HIGH PORTB.7
PAUSE 1000
HSEROUT ["AT+GMM",13] 'Pregunte el nombre del modelo
HSERIN
5000, GSM_CHECK
, [WAIT("T610 series")] 'Comprobar nombre del modeloHIGH PORTB.6
PAUSE 1000
HSEROUT ["AT+IPR=2400",13] 'Establece la velocidad de transferencia
HSERIN
5000, GSM_CHECK
, [WAIT("OK")]'Comprobar respuesta OK, espere 5 segundos maxHIGH PORTB.5
PAUSE 1000
HSEROUT ["AT+CMGF=1",13] ''envía AT al módem seguido por un retorno de carro y salto de línea
HSERIN
5000, GSM_CHECK
, [WAIT("OK")]''Comprobar respuesta OK, espere 5 segundos max.HIGH PORTB.4
PAUSE 1000
PORTB=%00000000
BEGIN:
IF PORTB.5=1 THEN ERROR_CALL
IF PORTB.6=1 THEN ERROR_SMS
HIGH PORTB.7
pause 1000
LOW PORTB.7
IF PORTD.2 = 0 THEN SEND_SMS
IF PORTD.3 = 0 THEN CALL_PHONE
PAUSE 1000
GOTO BEGIN
SEND_SMS:
HIGH PORTB.6
HSEROUT ["at+cmgs=",34,"xxxxxxxxx",34,13]
PAUSE 1000
HSEROUT ["este es un mensaje de prueba",26] 'ENVIAR MENSAJE
HSERIN
10000, BEGIN
, [WAIT("OK")]''Comprobar respuesta OK, espere 5 segundos max.LOW PORTB.6
GOTO BEGIN
CALL_PHONE:
HIGH PORTB.5
HSEROUT ["atd[0xxxxxxxxx];",13]
HSERIN
5000, BEGIN
, [WAIT("OK")]'Comprobar respuesta OK, espere 5 segundos max.PAUSE 2000
LOW PORTB.5
GOTO BEGIN
ERROR_CALL:
FOR i = 1 TO 5
HIGH PORTB.4
PAUSE 500
LOW PORTB.4
PAUSE 500
NEXT i
PORTB=%00000000
GOTO BEGIN
ERROR_SMS:
FOR i = 1 TO 5
HIGH PORTB.4
PAUSE 500
LOW PORTB.4
PAUSE 500
NEXT i
PORTB=%00000000
GOTO BEGIN