# ayuda con pic16f877a on off (led) un pulsador en pic c compiler



## EDJMM9 (Ago 3, 2012)

hola les agradeceria enormemente la ayuda soy nuevo en esto de los pic´s y actualmente estoy trabajando en un sistemade control de un led  on off osea al presionar y soltar un  boton conectado al (pin_a1) el led que esta en el (pin_b0) enciende  quedando encendido y se apaga cuando  vuelva a presionar el boton me refiero a un "interruptor digital on of con un boton "

//en pic c compiler//
esto es lo que llevo hasta ahora;

void main()
{
set_tris_a(0b11111111);
set_tris_b(0b00000000);
while(true){
if(input(pin_A1)==0)
  output_low(LED);
if(input(pin_A1)==1)
  output_high(LED);
}
}  

 lo pruebo en proteus y al presionar el boton el led enciendo pero cuando lo suelto se apaga y en lealidad lo que quiero es que se quede encendido . y apagarlo presionando el boton otra vez


----------



## hamster (Ago 3, 2012)

```
while(true){

if(input(pin_A1)==0)
output_low(LED);

if(input(pin_A1)==1)
output_high(LED);
}
```

// Tu código hace: Si PINA1 = 0 _ (LED_OFF)    * SI PINA1 = 1 _ (LED_ON)
// segun lo que dices deberia de ser
// Si PINA1 = 0 _ (negar_LED y salir hasta que PINA1 sea distinto de 0) ó algo similar


----------



## electroconico (Ago 3, 2012)

EDJMM9 dijo:


> hola les agradeceria enormemente la ayuda soy nuevo en esto de los pic´s y actualmente estoy trabajando en un sistemade control de un led  on off osea al presionar y soltar un  boton conectado al (pin_a1) el led que esta en el (pin_b0) enciende  quedando encendido y se apaga cuando  vuelva a presionar el boton me refiero a un "interruptor digital on of con un boton "
> 
> //en pic c compiler//
> esto es lo que llevo hasta ahora;
> ...



Puesde usar lo siguiente:


```
if(input(pin_A1)==0)    // Si el boton cuando es presionado pasa de 1 a 0 .
   output_toggle(LED); //Cambia de estado
```

Al usar botones y lo quieras probar en fisico recuerda usar alguna rutina antirebotes.
Para hacerlo facilito agrega un retardo de minimo 20ms despues de presionar el boton.

Saludos!


----------



## EDJMM9 (Ago 4, 2012)

muchas gracias funciona al a perfeccion . lo aplique  asi 


void main()
{


   // control on off led en (pin_b2)//

while (true){ 

    if(input(pin_A1)==0){  //presionando boton//
    delay_ms(30); //retardo anti rebotes//
    if(input(pin_A1)==0)    
    output_toggle(pin_b2);
   while(input(pin_A1)==0);
   }  

}
}


----------

