hise asi y nada no iso nada ase solo lo mismo se queda en el delay y no responde a el on of
#include <16f877A.h> //el pic a utilizar es por que solo requiero de pocos recursos para la alarma
#use delay(clock=4000000) //tiempo del cristal 4 MG
#fuses xt //utiliza cristal
#fuses NOWDT //proteccion perro guardian of
#fuses PUT //proteccion para esperar que se estabilise la alimentacion del pic
#use FAST_IO(B) //utilizo el puerto B
#use FAST_IO(D) //utilizo el puerto D
#define E_ON_OF PIN_B0 //se define que E-ON-OF es el PIN_B0 y (E-ON-OF) significa Entrada Ensendido Apagad)
#define S_MOV_PAD PIN_B1 //se define que S-MOV-PAD es el PIN_B1 y (S-MOV-PAD) significa sensor de movimiento patio delantero)
#define S_MOV_PAT PIN_B2 //se define que S-MOV-PAT es el PIN_B2 y (S-MOV-PAT) significa sensor de movimiento patio trasero)
#define S_MOV_PUD PIN_B3 //se define que S-MOV-PUD es el PIN_B3 y (S-MOV-PUD) significa sensor de movimiento puerta delantera)
#define S_MOV_PUT PIN_B4 //se define que S-MOV-PUT es el PIN_B4 y (S-MOV-PUT) significa sensor de movimiento puerta trasera)
#define S_MAG_PUD PIN_B5 //se define que S-MAG-PD es el PIN_B5 y (S-MAG-PD) significa sensor magnetico puerta delantera)
#define S_MAG_PUT PIN_B5 //se define que S-MAG-PT es el PIN_B6 y (S-MAG-PT) significa sensor magnetico puerta trasera)
#define LUZ_PAD PIN_D0 //se define que LUZ-PAD es el PIN_D0 y (LUZ-PAD) significa luz patio delantero
#define LUZ_PAT PIN_D1 //se define que LUZ-PAT es el PIN_D1 y (LUZ-PAD) significa luz patio trasero
#define SIRENA PIN_D2 //se define que SIRENA es el pin_D2 y (SIRENA) es la bocina la bulla
#define LLAMAR PIN_D3 //se define que LLAMAR es el pin_D3 y (LLAMAR) es una salida para realisar una llamada a un cel
#define COLGAR PIN_D4 //se define que COLGAN es el pin_D4 y (COLGAR) es una salida para colgar la llamada
#define LED_ON_OF PIN_D5 //se define que LED-ON-OF PIN_D5 y (LED-ON-OF)significa led ensendido apagado
int cont = 0;
volatile int1 LED_ON_OF = 0; // Siempre cuando una variable se use en la interrupcion y en el main
//int1 E-OF-ON=0; //declaro la variable (E-ON-OF) a O Y Significa (Entrada Ensendido Apagado)
//int1 S_MOV_PAD=0; //declaro la variable (S-MOV-D) Y le asigno que empiece en O Y Significa (sensor de Movomiento Delantero)
//int1 S_MOV_PAT=0; //declaro la variable (S-MOV-T) Y le asigno que empiece en O Y Significa (sensor de Movomiento Trasero)
//int1 S_MOV_PUD=0; //declaro la variable (L-D) Y le asigno que empiece en 1 Y Significa (Laser Delantero)
//int1 S_MOV_PAT=0; //declaro la variable (L-T) Y le asigno que empiece en 1 Y Significa (Laser Trasero)
//int1 S_MAG_PUD=1; //declaro la variable (S-MAG-D) Y le asigno que empiece en 1 Y Significa (Sensor Magnetico Delantero)
//int1 S_MAG_PUT=1; //declaro la variable (S-MAG-T) Y le asigno que empiece en 1 Y Significa (Sensor Magnetico Tracero)
//int1 LUZ_PUD=0; //declaro la variable (L-PD) Y le asigno que empiece en O Y Significa (Luz Patio Delantero)
//int1 LUZ_PUT=0; //declaro la variable (L-PT) Y le asigno que empiece en O Y Significa (Luz Patio Trasero)
//int1 SIRENA=0; //declaro la variable (SIRENA) Y le asigno que empiece en O Y Significa (SIRENA)
//int1 LLAMAR=0; //declaro la variable (LLAMAR) Y le asigno que empiece en O Y Significa (LLAMAR)
//int1 COLGAR=0; //declaro la variable (COLGAR) Y le asigno que empiece en O Y Significa (COLGAR)
//int1 LED_ON_OF=0; //declaro la variable (LED-ON-OF) Y le asigno que empiece en O Y Significa (SIRENA)
#int_timer1
void time_1(void)
{
set_timer1(3036);
if(LED_ON_OF==1)
{
cont++;
if(cont==2)
{
output_toggle(LED_ON_OF);
cont=0;
}
}
else
{
output_low(LED_ON_OF);
}
}
void main(void)
{
set_tris_D(0b0); //<- Esto no sirve de nada si no usas FAST_IO(B) !!!
output_D(0b0);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);
set_timer1 (3036);
enable_interrupts(int_timer1);
enable_interrupts(global);
while(true)
{
void main(void){
output_low(S_MOV_PAD); //esto lo puse por al simular seme ensendian los pines
output_low(S_MOV_PUD); //esto lo puse por al simular seme ensendian los pines
output_low(LUZ_PAD); //esto lo puse por al simular seme ensendian los pines
set_tris_B(0b11111111); //asigno todo el puerto B como entradas y lo puse en binario para que lo tenga presente
set_tris_D(0b00000000); // asigno todo el puerto D como salidas
output_low(E_ON_OF); //coloco eel pin B0 a cero
while(1)
{
if(input(E_ON_OF)==1) // Pregunto si la entrada del pin B0 es igual a 0
{
delay_ms(10); // Espero 10ms por si la llave esta rebotando (variando entre 1 y 0 )
while(input(E_ON_OF)==1); // Espero que suelte el boton, observa el ; al final, es decir un while(){}
output_toggle(LED_ON_OF); // Cambio el valor del pin
}
if(input(LED_ON_OF)==1) //pregunto si (LED_ON_OF)==1 si es verdad pasa a la siguiente linea
{
if((input(S_MOV_PAD)==1) || (input(S_MOV_PUD)==1)) //pregunto si el valor del pin (S_MOV_PAD)==1) o (S_MOV_PUD)==1
{
output_high(LUZ_PAD); //ensiendo luz patio trasero
output_high(SIRENA); //enciende sirena
delay_ms(18000);
}
else
{
output_low(LUZ_PAD); //de lo contrario apaga luz patio trasero
output_low(SIRENA); //de lo contrario apaga sirena
}
}
else
{
output_low(LUZ_PAD); //apagando luz patio delantero
output_low(SIRENA); //apagando sirena
}
}
}