Programa en C pic16f887, pushbutton y led's

#1
Hola. Quisiera saber si me ayudarían con mi programa, ya que en esto de sistemas embebidos soy demasiado novato.
Bueno, al punto, lo que debo hacer en MPLAB y PROTEUS es un programa que haga que prendan 4 leds con 4 pushbuttons pero solo al apretar el push1 se prenda el led 1 y al soltar el push se apague y así sucesivamente con los 4, obvio independientes cada uno.
Ya tengo un programa pero en C y no sé cómo se use el if.

Código:
#include <16F887.h>

#FUSES NODEBUG, NOLVP, FCMEN, NOIESO, NOBROWNOUT, NOCPD, NOPROTECT, MCLR, NOPUT, NOWDT,INTRC_IO,NOWRT

#USE DELAY (CLOCK = 8M)

#USE FAST_IO(A)
#USE FAST_IO(B)


void main (){
    
    SET_TRIS_A(0xff);
    SET_TRIS_B(0x00);

    
    while (TRUE){
        
if(input(PIN_A0)) { 
output_high(PIN_B0);

else 
{
output_low(PIN_B0);
}
}
}
Es lo que tengo y si funciona solo con el led 1 pero si lo trato de poner de nuevo el código osea un nuevo if o anidar un if en proteus se queda prendido y tildando el led ya sea el 1 2 3 o 4
Si me pueden ayudar, gracias.
 
Última edición por un moderador:
#2
funciona solo con el led 1 pero si lo trato de poner de nuevo el código osea un nuevo if o anidar un if en proteus se queda prendido y tildando el led ya sea el 1 2 3 o 4
No deberías tener problemas al ingresar más if's, solo asegúrate que los bloques estén cerrados.
Adjunto el programa junto con la simulación por si acaso tienes algo mal conectado.

Suerte.
 

Adjuntos

#3
Pues me parece que se te cuelga porque le falta una llave al final del IF, antes del ELSE, ejemplo.
Código:
if(input(PIN_A0)) 
{  
output_high(PIN_B0); 
}
else
{ 
output_low(PIN_B0); 
}
 
#4
No deberías tener problemas al ingresar más if's, solo asegúrate que los bloques estén cerrados.
Adjunto el programa junto con la simulación por si acaso tienes algo mal conectado.

Suerte.
excelente gracias pero al pasarlo al protoboard si pulso el push 1 prende el led 1 y el 2 y asi el 2 prende el 2 y el 3 y el 3 prende el 3 y 4 que podra ser o como debo conectarlo o que le conecto mas en el proto
 
#5
excelente, gracias, pero al pasarlo al protoboard si pulso el push 1 prende el led 1 y el 2 y así el 2 prende el 2 y el 3 y el 3 prende el 3 y 4 ¿qué podrá ser o cómo debo conectarlo? ¿o que le conecto más en el proto?
No sé porqué haga eso, pero sigue el esquema que adjunté o publica el que estás usando.
 
#6
ya me quedo me faltaba energizar el pic ahora otra duda como hago que digamos apriete el push 1 3 2 y guarde el estado y despues de cierto tiempo prendan los leds del push que aprete asi como si aprendiera la combinacion que yo pongo si me ayudas gracias :D
 
#7
y es necesario que utilizes el pic 16f887 por que yo hize uno igual al tuyo pero utilize el pic 16f84a y ademas llame a otra libreria no se si cuando le entregues te pidan el codigo o si no para que te pase el codigo solo tendria que llamar a tu pic en el lis p=....
 
#8
si si es necesario pero ya me quedo :) ahora lo que necesito que haga es que al apretar una secuencia de botones digamos 1 4 2 3 despues los ejecute y prendan los foquitos en ese orden si sabes como hacerlo me hechas la mano?
 
#9
hola, buenas tardes, soy estudiante de universidad de 3er semestre, mi duda es sobre programar MPLAB en lenguaje C, tengo una nocion en programacion en C y se programar en .asm, lo que pasa es que instalo en MPLAB el compilador CCS pero al checar errores me aparece una ventana que adjunto, espero alguien me ayude con este pequeño problema y de antemano gracias. el pic que estoy usando es el PIC16F819 y la version es MPLAB IDE v8.92
 

Adjuntos

Última edición:
#10
ahora lo que necesito que haga es que al apretar una secuencia de botones digamos 1 4 2 3 despues los ejecute y prendan los foquitos en ese orden si sabes como hacerlo me hechas la mano?
Sube lo que llevas hecho, me parece que quieres hacer una versión sencilla del Fabuloso Fred
[ame="http://youtu.be/u6yybmNuYG4"]Fabuloso Fred.[/ame]
lo que pasa es que instalo en MPLAB el compilador CCS pero al checar errores me aparece una ventana que adjunto, espero alguien me ayude con este pequeño problema y de antemano gracias. el pic que estoy usando es el PIC16F819 y la versión es MPLAB IDE v8.92
El mensaje de error te está indicando que no se han encontrado los archivos *.CRG
Puede ser que no tengas registrado el CCS, que se hayan borrado los archivos o que se encuentren en otra carpeta.
La misma ventana de error te dice que es lo que necesitas hacer para corregir ese error.
Buscar los archivos CRG en tu PC.
Copiarlos de una dirección especifica.
Copiarlos desde un CDROM.
Pedirlos directamente a CCS.
O llamar a CCS para obtener los archivos.

El compilador de CCS no es gratuito y necesita licencia. Eso es lo que te está indicando ese error.

Saludos.
 
#12
Mira, lo que llevo es esto.
Código:
#include <16F887.h>

#FUSES NODEBUG, NOLVP, FCMEN, NOIESO, NOBROWNOUT, NOCPD, NOPROTECT, MCLR, NOPUT, NOWDT,INTRC_IO,NOWRT

#USE DELAY (CLOCK = 8M)

void main (void)
{
   while(true)
   {
      if(input(pin_a0))
         output_high(pin_b0);
     
      else
      {
         output_low(pin_b0);
      }
      
      if(input(pin_a1))
         output_high(pin_b1);
      else
      {
         output_low(pin_b1);
      }
      
      if(input(pin_a2))
         output_high(pin_b2);
      else
      {
         output_low(pin_b2);
      }
      
      if(input(pin_a3))
         output_high(pin_b3);
      else
      {
         output_low(pin_b3);
      }
   }
}
Lo que hace, es que aprieto un push y mientras esté apretado el push se mantiene prendido el led.

Lo que necesito que haga es que me deje hacer una secuencias con los push y después los ejecute en los leds. Digamos, aprieto los push 3 2 1 4 y que haga lo mismo ya aprendido en los leds, o sea que prendan en orden 3 2 1 4 de los leds.
 
Última edición por un moderador:
Arriba