Está en la página 1de 12

C:\Users\vmmartinez\Desktop\Control de cargas\CELULAR.

c
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:

#include <16f877.h>
#byte PORTA =0x05 #byte PORTB =0x06 #byte PORTC =0x07 #byte PORTD =0X08 #byte PORTE =0x09
#byte PIR1=0x0C
#byte RCREG=0x1A
#byte TXREG=0x19
#byte RCSTA=0x18
#byte TXSTA=0x98
#byte SPBRG=0x99
#byte INCONT=0x0B
#FUSES NOWDT, HS,PUT,NOPROTECT,BROWNOUT,NOLVP,NOCPD,NOWRT,NODEBUG
#use delay(clock=20000000)
#use standard_io(c)
#use rs232(baud=9600, parity=N, xmit=pin_c6, rcv=pin_c7, bits=8)
#include <lcd4x20.c>
#define ALL_OUT 0X00
#define ALL_INPUT 0XFF
#define buffer_full 89
setup_adc_ports(NO_ANALOG);
int1
int8
char
char
char

Modem_Ini,Err,Ok,Delet_SMS,Input_SMS,Read_Input_SMS,Send_Msj,Send_OK,Conmutar,Err_Msj,Flag_Falla1,Cont_Falla1,Flag_Falla2,Cont_Falla2,Flag_Falla3,Cont_Falla3,
i,j,size_buffer,Position,Cont_Rx,Cont_Tx,Indice_SMS,Valor;
Carga,Tipo,Opcion;
Datos_Recibidos[90];
Voice_Number[14];

//***********************************************************//
//-----------------------------Declaracion de Funciones---------------------------//
//***********************************************************//
void
void
void
void
void
void
void
void
void
void
void
void
void
void
void
void
void
void
void

Inicializacion();
Test_Ok_and_Error();
clear_buffer();
Delete_SMS();
Test_Input_SMS();
Read_SMS();
Send_SMS();
Send_SMS_Activa_Carga1();
Send_SMS_No_Activa_Carga1();
Send_SMS_Activa_Carga2();
Send_SMS_No_Activa_Carga2();
Send_SMS_Activa_Carga3();
Send_SMS_No_Activa_Carga3();
Send_SMS_Activa_Carga4();
Send_SMS_No_Activa_Carga4();
Send_SMS_Falla1();
Send_SMS_Falla2();
Send_SMS_Falla3();
Send_SMS_Falla4();

//
//
//
//
//
//
//

Function inicializacion del MODEM


Function que verifica la recepcion del Eaton OK y ERROR
Funcion que limpia el buffer
Funcion para borrar SMS
Funcion para verificar la llegada de un SMS
Funcion para leer un MSM
Funcion para enviar un MSM

//*************************************************************//
//----------Vector de Interrupcion Recepcion de Comunicacion Serial----------//
//************************************************************//
#int_RDA
RDA_isr()
{
if(kbhit())
{
Datos_Recibidos[Cont_Rx]=getc();
Cont_Rx+=1;
}
if(bit_test(RCSTA,1))
{
bit_clear(RCSTA,4);
bit_set(RCSTA,4);
1

C:\Users\vmmartinez\Desktop\Control de cargas\CELULAR.c
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:

}return 0;
}
/////////////////////////// PROGRAMA PRINCIPAL /////////////////////////////////
void main(void){
set_tris_a(ALL_OUT);
set_tris_b(ALL_OUT);
set_tris_c(0b10001100);
set_tris_d(0b00000011);
set_tris_e(ALL_OUT);
setup_adc(ADC_OFF);
TXSTA= 0b00100100;
RCSTA = 0b10010000;
SPBRG=129;
TXREG=0X00;
RCREG=0X00;
setup_timer_0( RTCC_8_BIT|RTCC_DIV_16);
set_timer0(135);
setup_timer_2(T2_DIV_BY_16,255,1);
setup_ccp1(CCP_PWM);
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);

//
//
//
//

Se
Se
Se
Se

//
//
//
//
//
//
//

se coloca inactivo el conversor analogico digital del pic


Activacion del BIT de transmicion y configuracion en modo asincrono a alta velocidad
Activacion del puerto serial de recepcion continua
Baud rates para alta velocidad (9600 baudios)
Se limpia el registro TXREG
Se limpia el registro RCREG
Se configuration el TIMER 0

//
//
//
//

configura el puerto A como salida


configuration el puerto B como salida
configuran los pines RCO:RC6 como salida y RC7 como entrada
configura el puerto D como salida

Se
Se
se
se

configura el timer2
configura el PMW1
habilita la interrupcion por serial
habilitan todas las interrupciones

////////////////////////// INICIALIZACION DE VARIABLES /////////////////////////

i=0;
j=0;
Ok=0;
Err=0;
Err_Msj=0;
Modem_Ini=0;
Delet_SMS=0;
Input_SMS=0;
Read_Input_SMS=0;
Send_Msj=0;
Send_OK=0;
Cont_RX=0;
Cont_TX=0;
Indice_SMS=0;
Conmutar=0;
Position=0;
size_buffer=0;
Valor=0;
Flag_Falla1=0;
Cont_Falla1=0;
Flag_Falla2=0;
Cont_Falla2=0;
Flag_Falla3=0;
Cont_Falla3=0;
Flag_Falla4=0;
Cont_Falla4=0;
Voice_Number[0]='"';
Voice_Number[1]=0X30;
Voice_Number[2]=0X00;
Voice_Number[3]=0X00;
Voice_Number[4]=0X00;
Voice_Number[5]=0X00;
Voice_Number[6]=0X00;
Voice_Number[7]=0X00;
Voice_Number[8]=0X00;
Voice_Number[9]=0X00;
Voice_Number[10]=0X00;
Voice_Number[11]=0X00;
Voice_Number[12]="";
Voice_Number[13]='\r';
2

C:\Users\vmmartinez\Desktop\Control de cargas\CELULAR.c
137:
138:
//////////////////////////// PROGRAMA PRINCIPAL ////////////////////////////////
pag 67
139:
140:
output_low(pin_c5);
141:
output_low(pin_c4);
142:
output_low(pin_c3);
143:
output_low(pin_c2);
144:
145:
lcd_init();
// Inicia la lcd
146:
lcd_putc("\f");
// limpia pantalla lcd
147:
lcd_putc("SISTEMA DE CONTROL");
// Imprime en lcd
148:
lcd_putc("\n");
// salto de linea
149:
lcd_putc("DE POTENCIA");
150:
delay_ms(3000);
151:
lcd_putc("\f");
152:
lcd_putc("INICIANDO");
// Imprime en lcd
153:
lcd_putc("\n");
154:
lcd_putc("ESPERE POR FAVOR");
155:
156:
Inicializacion();
// Inicializacion del modem
157:
Delete_SMS();
// Rutina borrado de sms
158:
159:
160:
while (true){
161:
lcd_putc("\f");
162:
lcd_putc("SISTEMA AVTIVO");
163:
Test_input_SMS();
// Se llama la rutina de recepcion de mensajes
164:
lcd_putc("\f");
165:
lcd_putc("SMS RECIVIDO");
166:
167:
Read_SMS();
168:
lcd_putc("\f");
169:
lcd_putc("PROCESANDO....");
170:
Delete_SMS();
171:
delay_ms(3000);
172:
173:
174: ///////////////////// RUTINA DE ACCION DE CONTROL DE CARGA /////////////////////
175:
176:
177:
if((Carga=='C') && (Tipo=='1') && (Opcion=='1')){
178:
lcd_putc("\f");
179:
lcd_putc("CARGA 1 ACTIVA");
180:
output_high(pin_c5);
181:
Send_SMS_Activa_Carga1();
182:
}
183:
184:
if((Carga=='C') && (Tipo=='1') && (Opcion=='2')){
185:
lcd_putc("\f");
186:
lcd_putc("CARGA 1");
187:
lcd_putc("\n");
188:
lcd_putc("NO ACTIVA");
189:
output_low(pin_c5);
190:
Send_SMS_No_Activa_Carga1();
191:
}
192:
193: ////////////////////////////////////////////////////////////////////////////////
194:
195:
if((Carga=='C') && (Tipo=='2') && (Opcion=='1')){
196:
lcd_putc("\f");
197:
lcd_putc("CARGA 2 ACTIVA");
198:
output_high(pin_c4);
199:
Send_SMS_Activa_Carga2();
200:
}
201:
202:
if((Carga=='C') && (Tipo=='2') && (Opcion=='2')){
203:
lcd_putc("\f");
204:
lcd_putc("CARGA 2");
3

C:\Users\vmmartinez\Desktop\Control de cargas\CELULAR.c
205:
lcd_putc("\n");
206:
lcd_putc("NO ACTIVA");
207:
output_low(pin_c4);
208:
Send_SMS_No_Activa_Carga2();
209:
}
210:
211: ////////////////////////////////////////////////////////////////////////////////
212:
213:
if((Carga=='C') && (Tipo=='3') && (Opcion=='1')){
214:
lcd_putc("\f");
215:
lcd_putc("CARGA 3 ACTIVA");
216:
output_high(pin_d3);
217:
Send_SMS_Activa_Carga3();
218:
}
219:
220:
if((Carga=='C') && (Tipo=='3') && (Opcion=='2')){
221:
lcd_putc("\f");
222:
lcd_putc("CARGA 3");
223:
lcd_putc("\n");
224:
lcd_putc("NO ACTIVA");
225:
output_low(pin_d3);
226:
Send_SMS_No_Activa_Carga3();
227:
}
228:
229: ////////////////////////////////////////////////////////////////////////////////
230:
231:
232:
if((Carga=='C') && (Tipo=='4') && (Opcion=='1')){
233:
lcd_putc("\f");
234:
lcd_putc("CARGA 4 ACTIVA");
235:
output_high(pin_d2);
236:
Send_SMS_Activa_Carga4();
237:
}
238:
239:
if((Carga=='C') && (Tipo=='4') && (Opcion=='2')){
240:
lcd_putc("\f");
241:
lcd_putc("CARGA 4");
242:
lcd_putc("\n");
243:
lcd_putc("NO ACTIVA");
244:
output_low(pin_d2);
245:
Send_SMS_No_Activa_Carga4();
246:
}
247:
}
248:
}
249:
250: /////////////////////RUTINA INICIALIZACION DEL MODEM ///////////////////////////
251:
252:
void Inicializacion()
253:
{
254:
while(Modem_Ini==0)
// Hacer Mientras Modem_Ini==0
255:
{
256:
printf("AT\r");
// Se transmite al comando AT al Modem
257:
delay_ms(500);
258:
Test_Ok_and_Error();
// Se valida la respuesta del Modem
259:
Cont_RX=0;
// Se limpia el contador
260:
if(Err==1)
// Si existe un Error buelve a intentarlo
261:
{
262:
Err=0;
// Se limpia la Bandera Err
263:
delay_ms(5000);
264:
}
265:
if(Ok==1)
// Si no existe un Error se valida el Ok
266:
{
267:
Ok=0;
// Se limpia bandera del Ok
268:
Modem_Ini=1;
// Se iguala a 1 para salir del ciclo while
269:
}
270:
}
271:
Modem_Ini=0;
// Se buelve a iniciar la bandera
272:
}
4

C:\Users\vmmartinez\Desktop\Control de cargas\CELULAR.c
273:
274:
275: //////////////////// RUTINA DE BORRADO DE SMS DE LA SIM CARD ///////////////////
276:
277:
278:
void Delete_SMS()
279:
{
280:
while(Delet_SMS==0)
281:
{
282:
printf("AT+CMGD=5,4\r");
// Se transmoite comando al Modem
283:
delay_ms(10000);
// Retardo de 10s
284:
Test_Ok_And_Error();
// Se procede a validar la respuesta de Modem
285:
Cont_Rx=0;
// Se limpia el contador
286:
if(Err==1)
// Si exixte un Error se Buelve a enviar el comando
287:
{
288:
Err=0;
// Se limpia bandera Err
289:
delay_ms(5000);
// Retardo de 5s
290:
}
291:
if(Ok==1)
// Si no exixte un Error se valida el Ok
292:
{
293:
Ok=0;
// Se limpa la bandera
294:
Delet_SMS=1;
// Se iguala a 1 el delet para salir del ciclo while
295:
}
296:
}
297:
Delet_SMS=0;
298:
}
299:
300: ////////////////////// Rutina Verificacion de Ok y Error ///////////////////////
301:
302:
void Test_Ok_and_Error()
303:
{
304:
wait_data:
305:
Position=0;
// Se iguala a cero el contador
306:
wait_ok:
307:
if(Datos_Recibidos[Position=='O'])
// Si el dato recibido es Ok se procede a llamar a la funcion clear_buffer para limpiarlo
308:
{
309:
Position+=1;
310:
if(Datos_Recibidos[Position=='K'])
311:
{
312:
Ok=1;
313:
clear_buffer();
314:
}
315:
}
316:
else
// Sie l dato recibido es Error
317:
{
318:
if(Datos_Recibidos[Position=='E'])
319:
{
320:
Position+=1;
321:
if(Datos_Recibidos[Position=='R'])
322:
{
323:
Position+=1;
324:
if(Datos_Recibidos[Position=='R'])
325:
{
326:
Position+=1;
327:
if(Datos_Recibidos[Position=='O'])
328:
{
329:
Position+=1;
330:
if(Datos_Recibidos[Position=='R'])
331:
{
332:
Err=1;
333:
clear_buffer();
334:
}
335:
}
336:
}
337:
}
338:
}
339:
if((Position==buffer_full) && (Err==0) && (Ok==0))
// SI no se ah recibido ningun dato se sigue esperando
340:
{
5

C:\Users\vmmartinez\Desktop\Control de cargas\CELULAR.c
341:
Position=0;
342:
goto wait_data;
343:
}
344:
if(Err==0)
// Si elmensaje recibido no es ERROR, se verifica que sea Ok
345:
{
346:
Position+=1;
347:
goto wait_ok;
348:
}
349:
}
350:
}
351:
352: ///////////////////// RUTINA BORRADODEL BUFFER DE ENTRADA //////////////////////
353:
354:
void clear_buffer()
355:
{
356:
for(size_buffer=0; size_buffer <= buffer_full; size_buffer++)
// Se limpia el buffer
357:
{
358:
Datos_Recibidos[size_buffer]=0x00;
359:
}
360:
}
361:
362: ////////////////////// RUTINA PARA DETECTAR SMS ENTRANTE ///////////////////////
363:
364:
void Test_Input_SMS()
365:
366:
{
367:
while (Input_SMS==0)
// Hacer mientras Input_SMS=0
368:
{
369:
if((Datos_Recibidos[2]=='+') && (Datos_Recibidos[3]=='C') && (Datos_Recibidos[4]=='M') && (Datos_Recibidos[5]=='T') && (Datos_Recibidos[6]=='I')) // Verifica que se h
370:
{
371:
delay_ms(1000);
// Retardo de 1s
372:
Cont_Rx=0;
// Se limpia el contador
373:
clear_buffer();
// Se limpia el buffer
374:
Input_SMS=1;
// Se iguala a 1 Imput_SMS para salir del ciclo while
375:
}
376:
377:
if(input(pin_d1)){
378:
Flag_Falla1=1;
379:
output_low(pin_c5);
380:
if(Cont_Falla1==0){
381:
if(Flag_Falla1==1){
382:
lcd_putc("\f");
383:
lcd_putc("FALLA CARGA 1");
384:
delay_ms(3000);
385:
Send_SMS_Falla1();
386:
Flag_Falla1=0;
387:
Cont_Falla1+=1;
388:
}
389:
}
390:
}
391:
else
392:
{
393:
Cont_Falla1=0;
394:
}
395:
if(input(pin_d0)){
396:
Flag_Falla2=1;
397:
output_low(pin_c4);
398:
if(Cont_Falla2==0){
399:
if(Flag_Falla2==1){
400:
lcd_putc("\f");
401:
lcd_putc("FALLA CARGA 2");
402:
delay_ms(3000);
403:
Send_SMS_Falla2();
404:
Flag_Falla2=0;
405:
Cont_Falla2+=1;
406:
}
407:
}
408:
}else{
6

C:\Users\vmmartinez\Desktop\Control de cargas\CELULAR.c
409:
Cont_Falla2=0;
410:
}
411:
412:
if(input(pin_c3)){
413:
Flag_Falla3=1;
414:
output_low(pin_d3);
415:
if(Cont_Falla3==0){
416:
if(Flag_Falla3==1){
417:
lcd_putc("\f");
418:
lcd_putc("FALLA CARGA 3");
419:
delay_ms(3000);
420:
Send_SMS_Falla3();
421:
Flag_Falla3=0;
422:
Cont_Falla3+=1;
423:
}
424:
}
425:
}else{
426:
Cont_Falla3=0;
427:
}
428:
429:
if(input(pin_c2)){
430:
Flag_Falla4=1;
431:
output_low(pin_d2);
432:
if(Cont_Falla4==0){
433:
if(Flag_Falla4==1){
434:
lcd_putc("\f");
435:
lcd_putc("FALLA CARGA 4");
436:
delay_ms(3000);
437:
Send_SMS_Falla4();
438:
Flag_Falla4=0;
439:
Cont_Falla4+=1;
440:
}
441:
}
442:
}else{
443:
Cont_Falla4=0;
444:
}
445:
}
446:
Input_SMS=0;
// Vuelve a iniciar la bandera Input_SMS
447:
}
448:
449: ////////////////////// RUTINA PARA DETECTAR SMS ENTRANTE ///////////////////////
450:
451:
void Read_SMS()
452:
{
453:
while(Read_Input_SMS==0)
454:
{
455:
printf("AT+CMGR=1\r");
// Se transmite comando al modem
456:
delay_ms(2500);
// Retardo 2.5s
457:
458:
if((Datos_Recibidos[12]=='+') && (Datos_Recibidos[13]=='C') && (Datos_Recibidos[14]=='M') && (Datos_Recibidos[15]=='G') && (Datos_Recibidos[16]=='R')) // Verifica que
459:
{
460:
if((Datos_Recibidos[34]=='5') && (Datos_Recibidos[35]=='8'))
// Se verifica que haya recibido el codigo 58
461:
{
462:
Voice_Number[0]='"';
// Se procede a grabar el numero de voz que pertenece a la SIM Card que envo el sms
463:
delay_ms(1000);
464:
Voice_Number[1]=0x030;
465:
delay_ms(1000);
466:
Voice_Number[2]=Datos_Recibidos[36];
467:
delay_ms(1000);
468:
Voice_Number[3]=Datos_Recibidos[37];
469:
delay_ms(1000);
470:
Voice_Number[4]=Datos_Recibidos[38];
471:
delay_ms(1000);
472:
Voice_Number[5]=Datos_Recibidos[39];
473:
delay_ms(1000);
474:
Voice_Number[6]=Datos_Recibidos[40];
475:
delay_ms(1000);
476:
Voice_Number[7]=Datos_Recibidos[41];
7

C:\Users\vmmartinez\Desktop\Control de cargas\CELULAR.c
477:
delay_ms(1000);
478:
Voice_Number[8]=Datos_Recibidos[42];
479:
delay_ms(1000);
480:
Voice_Number[9]=Datos_Recibidos[43];
481:
delay_ms(1000);
482:
Voice_Number[10]=Datos_Recibidos[44];
483:
delay_ms(1000);
484:
Voice_Number[11]=Datos_Recibidos[45];
485:
delay_ms(1000);
486:
Voice_Number[12]='"';
487:
delay_ms(1000);
488:
Voice_Number[13]='\r';
489:
delay_ms(1000);
490:
}
491:
if(Datos_Recibidos[72]==0x0A)
// Se verifica si se ah recibido el salto de linea en la posicion 72
492:
{
493:
Carga=Datos_Recibidos[73];
// Se graba el comando recibido de la targerta
494:
Tipo=Datos_Recibidos[74];
495:
Opcion=Datos_Recibidos[75];
496:
Test_Ok_and_Error();
// Se procede a validar la respuesta de modem
497:
Cont_Rx=0;
// Se limpia el contador
498:
}
499:
}
500:
if(Err==1)
// Si existe algun error se vuelve a enviar el comando
501:
{
502:
Err=0;
// Se limpia la bandera Err
503:
}
504:
if(Ok==1)
505:
{
506:
Ok=0;
// Se limpia la badera Ok
507:
Read_Input_SMS=1;
// Se iguala a 1 para salir del ciclo while
508:
}
509:
}
510:
Read_Input_SMS=0;
// Se vuelve a iniciar la bandera
511:
}
512:
513: //////////////////////////// RUTINA PARA ENVIAR UN SMS ////////////////////////////
514:
515:
void Send_SMS()
516:
{
517:
Position=0;
// Se limpia el contador
518:
while (Send_Msj==0)
// Hacer Mientras Send_Msj=0
519:
{
520:
printf("AT+CMGS=");
// Se envia comando al modem
521:
Voice_Number[0]='"';
522:
for(j=0; j<=13; j++)
523:
{
524:
printf("%c",Voice_Number[j]);
525:
delay_ms(500);
526:
}
527:
delay_ms(500);
528:
wait_send_msj:
529:
if((Datos_Recibidos[24]=='>' && Datos_Recibidos[25]==0x20 ))
// Al recibir los caracteres '>' y ''
530:
{
531:
Send_Msj=1;
// Se coloca un 1 para salir del ciclo while
532:
}
533:
else
// De lo contrario se espera a recibir dichos caracteres
534:
{
535:
goto wait_send_msj;
536:
}
537:
}
538:
Send_Msj=0;
// Se vuelve a iniciar la bandera
539:
}
540:
541: /////////// FUNCION PARA ENVIAR MSJ AL ADMINISTRADOR CARGA 1 ACTIVADA //////////
542:
543:
544:
void Send_SMS_Activa_Carga1()
8

C:\Users\vmmartinez\Desktop\Control de cargas\CELULAR.c
545:
{
546:
while (Send_OK==0)
// Hacer mientras Send_Ok=0
547:
{
548:
Send_SMS();
// Se llama la funcion Send_sms
549:
Cont_Rx=0;
// Se limpia el contador
550:
printf("CARGA 1 ACTIVADA");
// Se envia por serial
551:
printf("%c",0x1A);
// Se envia el limitador de caracteres
552:
delay_ms(5000);
// Retardo por 5s
553:
Test_Ok_and_Error();
// Se procede a validar la respuesta del Modem
554:
Cont_Rx=0;
// Se limpia el contador
555:
if(Ok==1)
556:
{
557:
Ok=0;
// Se limpiala bandera_Ok
558:
Send_OK=1;
// Se iguala a 1 para salir del ciclo
559:
}
560:
}
561:
Send_OK=0;
// Se vuelve a inicalizar la bandera
562:
}
563:
564: //////////FUNCION PARA ENVIAR MSJ AL ADMINISTRADOR CARGA 1 NO ACTIVA ///////////
565:
566:
void Send_SMS_No_Activa_Carga1()
567:
{
568:
while(Send_OK==0)
569:
{
570:
Send_SMS();
571:
Cont_Rx=0;
572:
printf("CARGA 1 DESACTIVADA");
// Se envia por serial
573:
printf("%c",0x1A);
// Se envia el limitador de caracteres
574:
delay_ms(5000);
// Retardo por 5s
575:
Test_Ok_and_Error();
// Se procede a validar la respuesta del Modem
576:
Cont_Rx=0;
// Se limpia el contador
577:
if(Ok==1)
578:
{
579:
Ok=0;
// Se limpiala bandera_Ok
580:
Send_OK=1;
// Se iguala a 1 para salir del ciclo
581:
}
582:
}
583:
Send_OK=0;
// Se vuelve a inicalizar la bandera
584:
}
585:
586: /////////// FUNCION PARA ENVIAR MSJ AL ADMINISTRADOR CARGA 2 ACTIVADA //////////
587:
588:
void Send_SMS_Activa_Carga2()
589:
{
590:
while (Send_OK==0)
// Hacer mientras Send_Ok=0
591:
{
592:
Send_SMS();
// Se llama la funcion Send_sms
593:
Cont_Rx=0;
// Se limpia el contador
594:
printf("CARGA 2 ACTIVADA");
// Se envia por serial
595:
printf("%c",0x1A);
// Se envia el limitador de caracteres
596:
delay_ms(5000);
// Retardo por 5s
597:
Test_Ok_and_Error();
// Se procede a validar la respuesta del Modem
598:
Cont_Rx=0;
// Se limpia el contador
599:
if(Ok==1)
600:
{
601:
Ok=0;
// Se limpiala bandera_Ok
602:
Send_OK=1;
// Se iguala a 1 para salir del ciclo
603:
}
604:
}
605:
Send_OK=0;
// Se vuelve a inicalizar la bandera
606:
}
607:
608: //////////FUNCION PARA ENVIAR MSJ AL ADMINISTRADOR CARGA 2 NO ACTIVA ///////////
609:
610:
void Send_SMS_No_Activa_Carga2()
611:
{
612:
while(Send_OK==0)
9

C:\Users\vmmartinez\Desktop\Control de cargas\CELULAR.c
613:
{
614:
Send_SMS();
615:
Cont_Rx=0;
616:
printf("CARGA 2 DESACTIVADA");
// Se envia por serial
617:
printf("%c",0x1A);
// Se envia el limitador de caracteres
618:
delay_ms(5000);
// Retardo por 5s
619:
Test_Ok_and_Error();
// Se procede a validar la respuesta del Modem
620:
Cont_Rx=0;
// Se limpia el contador
621:
if(Ok==1)
622:
{
623:
Ok=0;
// Se limpiala bandera_Ok
624:
Send_OK=1;
// Se iguala a 1 para salir del ciclo
625:
}
626:
}
627:
Send_OK=0;
// Se vuelve a inicalizar la bandera
628:
}
629:
630: /////////// FUNCION PARA ENVIAR MSJ AL ADMINISTRADOR CARGA 3 ACTIVADA //////////
631:
632:
633:
void Send_SMS_Activa_Carga3()
634:
{
635:
while (Send_OK==0)
// Hacer mientras Send_Ok=0
636:
{
637:
Send_SMS();
// Se llama la funcion Send_sms
638:
Cont_Rx=0;
// Se limpia el contador
639:
printf("CARGA 3 ACTIVADA");
// Se envia por serial
640:
printf("%c",0x1A);
// Se envia el limitador de caracteres
641:
delay_ms(5000);
// Retardo por 5s
642:
Test_Ok_and_Error();
// Se procede a validar la respuesta del Modem
643:
Cont_Rx=0;
// Se limpia el contador
644:
if(Ok==1)
645:
{
646:
Ok=0;
// Se limpiala bandera_Ok
647:
Send_OK=1;
// Se iguala a 1 para salir del ciclo
648:
}
649:
}
650:
Send_OK=0;
// Se vuelve a inicalizar la bandera
651:
}
652:
653: //////////FUNCION PARA ENVIAR MSJ AL ADMINISTRADOR CARGA 3 NO ACTIVA ///////////
654:
655:
void Send_SMS_No_Activa_Carga3()
656:
{
657:
while(Send_OK==0)
658:
{
659:
Send_SMS();
660:
Cont_Rx=0;
661:
printf("CARGA 3 DESACTIVADA");
// Se envia por serial
662:
printf("%c",0x1A);
// Se envia el limitador de caracteres
663:
delay_ms(5000);
// Retardo por 5s
664:
Test_Ok_and_Error();
// Se procede a validar la respuesta del Modem
665:
Cont_Rx=0;
// Se limpia el contador
666:
if(Ok==1)
667:
{
668:
Ok=0;
// Se limpiala bandera_Ok
669:
Send_OK=1;
// Se iguala a 1 para salir del ciclo
670:
}
671:
}
672:
Send_OK=0;
// Se vuelve a inicalizar la bandera
673:
}
674:
675: /////////// FUNCION PARA ENVIAR MSJ AL ADMINISTRADOR CARGA 4 ACTIVADA //////////
676:
677:
678:
void Send_SMS_Activa_Carga4()
679:
{
680:
while (Send_OK==0)
// Hacer mientras Send_Ok=0
10

C:\Users\vmmartinez\Desktop\Control de cargas\CELULAR.c
681:
{
682:
Send_SMS();
// Se llama la funcion Send_sms
683:
Cont_Rx=0;
// Se limpia el contador
684:
printf("CARGA 4 ACTIVADA");
// Se envia por serial
685:
printf("%c",0x1A);
// Se envia el limitador de caracteres
686:
delay_ms(5000);
// Retardo por 5s
687:
Test_Ok_and_Error();
// Se procede a validar la respuesta del Modem
688:
Cont_Rx=0;
// Se limpia el contador
689:
if(Ok==1)
690:
{
691:
Ok=0;
// Se limpiala bandera_Ok
692:
Send_OK=1;
// Se iguala a 1 para salir del ciclo
693:
}
694:
}
695:
Send_OK=0;
// Se vuelve a inicalizar la bandera
696:
}
697:
698: //////////FUNCION PARA ENVIAR MSJ AL ADMINISTRADOR CARGA 4 NO ACTIVA ///////////
699:
700:
void Send_SMS_No_Activa_Carga4()
701:
{
702:
while(Send_OK==0)
// Hacer mientras Send_Ok=0
703:
{
704:
Send_SMS();
// Se llama la funcion Send_sms
705:
Cont_Rx=0;
// Se limpia el contador
706:
printf("CARGA 4 DESACTIVADA");
// Se envia por serial
707:
printf("%c",0x1A);
// Se envia el limitador de caracteres
708:
delay_ms(5000);
// Retardo por 5s
709:
Test_Ok_and_Error();
// Se procede a validar la respuesta del Modem
710:
Cont_Rx=0;
// Se limpia el contador
711:
if(Ok==1)
712:
{
713:
Ok=0;
// Se limpiala bandera_Ok
714:
Send_OK=1;
// Se iguala a 1 para salir del ciclo
715:
}
716:
}
717:
Send_OK=0;
// Se vuelve a inicalizar la bandera
718:
}
719:
720: // FUNCION PARA ENVIAR MSJ AL ADMINISTRADOR POR FALLA DETECTADA EN LA CARGA 1 //
721:
722:
void Send_SMS_Falla1()
723:
{
724:
while(Send_OK==0)
725:
{
726:
Send_SMS();
727:
Cont_Rx=0;
728:
printf("FALLA CARGA 1");
// Se envia por serial
729:
printf("%c",0x1A);
// Se envia el limitador de caracteres
730:
delay_ms(5000);
// Retardo por 5s
731:
Test_Ok_and_Error();
// Se procede a validar la respuesta del Modem
732:
Cont_Rx=0;
// Se limpia el contador
733:
if(Ok==1)
734:
{
735:
Ok=0;
// Se limpiala bandera_Ok
736:
Send_OK=1;
// Se iguala a 1 para salir del ciclo
737:
}
738:
}
739:
Send_OK=0;
// Se vuelve a inicalizar la bandera
740:
}
741:
742: // FUNCION PARA ENVIAR MSJ AL ADMINISTRADOR POR FALLA DETECTADA EN LA CARGA 2 //
743:
744:
void Send_SMS_Falla2()
745:
{
746:
while(Send_OK==0)
747:
{
748:
Send_SMS();
11

C:\Users\vmmartinez\Desktop\Control de cargas\CELULAR.c
749:
Cont_Rx=0;
750:
printf("FALLA CARGA 2");
// Se envia por serial
751:
printf("%c",0x1A);
// Se envia el limitador de caracteres
752:
delay_ms(5000);
// Retardo por 5s
753:
Test_Ok_and_Error();
// Se procede a validar la respuesta del Modem
754:
Cont_Rx=0;
// Se limpia el contador
755:
if(Ok==1)
756:
{
757:
Ok=0;
// Se limpiala bandera_Ok
758:
Send_OK=1;
// Se iguala a 1 para salir del ciclo
759:
}
760:
}
761:
Send_OK=0;
// Se vuelve a inicalizar la bandera
762:
}
763:
764: // FUNCION PARA ENVIAR MSJ AL ADMINISTRADOR POR FALLA DETECTADA EN LA CARGA 3 //
765:
766:
void Send_SMS_Falla3()
767:
{
768:
while(Send_OK==0)
769:
{
770:
Send_SMS();
771:
Cont_Rx=0;
772:
printf("FALLA CARGA 3");
// Se envia por serial
773:
printf("%c",0x1A);
// Se envia el limitador de caracteres
774:
delay_ms(5000);
// Retardo por 5s
775:
Test_Ok_and_Error();
// Se procede a validar la respuesta del Modem
776:
Cont_Rx=0;
// Se limpia el contador
777:
if(Ok==1)
778:
{
779:
Ok=0;
// Se limpiala bandera_Ok
780:
Send_OK=1;
// Se iguala a 1 para salir del ciclo
781:
}
782:
}
783:
Send_OK=0;
// Se vuelve a inicalizar la bandera
784:
}
785:
786: // FUNCION PARA ENVIAR MSJ AL ADMINISTRADOR POR FALLA DETECTADA EN LA CARGA 4 //
787:
788:
void Send_SMS_Falla4()
789:
{
790:
while(Send_OK==0)
791:
{
792:
Send_SMS();
793:
Cont_Rx=0;
794:
printf("FALLA CARGA 4");
// Se envia por serial
795:
printf("%c",0x1A);
// Se envia el limitador de caracteres
796:
delay_ms(5000);
// Retardo por 5s
797:
Test_Ok_and_Error();
// Se procede a validar la respuesta del Modem
798:
Cont_Rx=0;
// Se limpia el contador
799:
if(Ok==1)
800:
{
801:
Ok=0;
// Se limpiala bandera_Ok
802:
Send_OK=1;
// Se iguala a 1 para salir del ciclo
803:
}
804:
}
805:
Send_OK=0;
// Se vuelve a inicalizar la bandera
806:
}
807:
808: ////////////////////////////////////////////////////////////////////////////////

12