Autor Tema: Nuevo en el mundo de CCS C con mi pic16F877A lleno de problemas  (Leído 2876 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado judio

  • PIC10
  • *
  • Mensajes: 7
    • MI SITIO EN YOUTUBE
Nuevo en el mundo de CCS C con mi pic16F877A lleno de problemas
« en: 24 de Enero de 2013, 02:26:31 »
Hola espero esten bien, soy de Mexico D,F. y estoy perdido en el lenguaje C.

Lo que pasa es que no se bien la estrucctura basica de un programa, como programar los botones que yo necesite y cada una de sus salidas?

Tengo este codigo que encontre de internet pero a la hora de adaptarlo para agregar un pulsador mas con su respectivo led todo compila sin problemas pero a la hora de probar en la protoboard solo funciona el primer pulsador con u led pero el codigo que agrego para el segundo pulsador con su led no funciona.

Código: [Seleccionar]
#include <16f877a.h>
#fuses xt,nowdt
#use delay(clock=4000000)

//Declaracion de variables globales
#define LED pin_b0//Nombra a pin_b0 como Led
#define LED1 pin_b1
//#define Retardo delay_ms(500)//Nombra a delay_ms() como Retardo

void main(void)
{
set_tris_a(0b11111111);
set_tris_b(0b00000000);
//////////////////////////////////////////


while(true)
   {
   if(input(pin_A1)==1)
   {
      delay_ms(30);
   if(input(pin_A1)==1)
   {
      output_toggle(LED);
while(input(pin_A1)==1);
//////////////////////////////////////////

   if (input(pin_A2)==1)
   {
      delay_ms(30);
   if (input(pin_A2)==1)
   {
      output_toggle(LED1);
while(input(pin_A2)==1);
//////////////////////////////////////////
}
}
}

}
}
}


Epero me puedan ayudar con un buen libro que me recomienden o algun manual que sea para un verdadero novato.

Dejo un video de cuando probe todo con un solo pulsador y en vez de led meti un moc3011 y un BT137.


salu2
« Última modificación: 24 de Enero de 2013, 02:46:19 por judio »
SI TU DICES QUE YO LO DIJE SIEMPRE LO VOY A NEGAR

Desconectado RALF2

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2060
Re: Nuevo en el mundo de CCS C con mi pic16F877A lleno de problemas
« Respuesta #1 en: 24 de Enero de 2013, 03:02:41 »
Bienvenido judio  :mrgreen:
Mira en el foro hay mucha informacion sobre la programacion en ccs, ademas aqui podras encontrar cientos de video tutoriales de C y ccs   :mrgreen:

Te voy a recomendar este libro que esta bien para iniciarse! ademas en internet hay mucho material.

Saludos

Desconectado samshiel_pic

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 777
    • Electrónica·Ingenia
Re: Nuevo en el mundo de CCS C con mi pic16F877A lleno de problemas
« Respuesta #2 en: 24 de Enero de 2013, 09:36:28 »
Hola y bienvenido al foro!!! he modificado tu codigo para que funcione de la manera correcta.

Código: C
  1. #include <16f877a.h>
  2. #fuses xt,nowdt
  3. #use delay(clock=4000000)
  4.  
  5. //Declaracion de variables globales
  6. #define LED pin_b0//Nombra a pin_b0 como Led
  7. #define LED1 pin_b1
  8. #DEFINE retardo 250    // Retardo de 250ms
  9.  
  10. void main(void)
  11. {
  12. set_tris_a(0b11111111);
  13. set_tris_b(0b00000000);
  14. //////////////////////////////////////////
  15.  
  16.  
  17. while(true)
  18.    {
  19.     if(input(PIN_A1) == 1){     // Es RA1 es igual a "1"????
  20.         delay_ms(retardo);      // Antirrebote
  21.         output_toggle(LED);  // SI: toggle RB0
  22.         }
  23.  
  24.     if(input(PIN_A2) == 1){     // Es RA2 es igual a "1"????
  25.         delay_ms(retardo);      // Antirrebote
  26.         output_toggle(LED1);  // SI: toggle RB1
  27.         }
  28.    }
  29. }

y aqui te dejo un video que he grabado para que veas que funciona.... (Lo he probado con otro pic pero en el 16f877a va igual ;)) si de verdad te gusta este mundo aprende, lee y cuando tengas una duda pregunta. Habrá mucha gente que te quiera ayudar pero tienes que tener interes en ello. Lo que yo he hecho hoy contigo es raro que se vea en el foro con neofitos como tu, pero espero que este empujoncito te ayude a seguir con los PIC con ilusión. Un saludo!!!  :mrgreen:

www.youtube.com/watch?v=dYAWKQNvrug
Canal SamshielDesigns.
« Última modificación: 24 de Enero de 2013, 10:21:00 por samshiel_pic »

Desconectado judio

  • PIC10
  • *
  • Mensajes: 7
    • MI SITIO EN YOUTUBE
Re: Nuevo en el mundo de CCS C con mi pic16F877A lleno de problemas
« Respuesta #3 en: 24 de Enero de 2013, 17:49:17 »
Bienvenido judio  :mrgreen:
Mira en el foro hay mucha informacion sobre la programacion en ccs, ademas aqui podras encontrar cientos de video tutoriales de C y ccs   :mrgreen:

Te voy a recomendar este libro que esta bien para iniciarse! ademas en internet hay mucho material.

Saludos

Gracias RALF2, me voy a leer ese libro se ve interesante y tambien vere algunos video tutoriales. salu2

Hola y bienvenido al foro!!! he modificado tu codigo para que funcione de la manera correcta.



y aqui te dejo un video que he grabado para que veas que funciona.... (Lo he probado con otro pic pero en el 16f877a va igual ;)) si de verdad te gusta este mundo aprende, lee y cuando tengas una duda pregunta. Habrá mucha gente que te quiera ayudar pero tienes que tener interes en ello. Lo que yo he hecho hoy contigo es raro que se vea en el foro con neofitos como tu, pero espero que este empujoncito te ayude a seguir con los PIC con ilusión. Un saludo!!!  :mrgreen:


Gracias samshiel_pic, ya programe el pic y jala como yo queria te quedo muy bien.

Sobre los pic´s vengo trabajando con ellos pero con puro asm nunca fui un maestro pero me defendia y este cambio a C no me esta resultando facil.

Decidi meterme a C ya que con el pic32MX tengo entendido que es con puro C y es ese pic con el que deseo desarrolar mi proyecto asi que no me queda mucho tiempo.

Pero antes a empezar con mi  pic16f877a.

salu2 y gracias por tu ayuda me fue muy util.
SI TU DICES QUE YO LO DIJE SIEMPRE LO VOY A NEGAR

Desconectado judio

  • PIC10
  • *
  • Mensajes: 7
    • MI SITIO EN YOUTUBE
Re: Nuevo en el mundo de CCS C con mi pic16F877A lleno de problemas
« Respuesta #4 en: 13 de Febrero de 2013, 23:34:25 »
Por que mi codigo no jala como deberia?

Segun yo esta heco a la perfeccion, proteus no estara fallando?

La parte de codigo a la que me refiero es la que esta dentro de los comentarios y se supone deberia hacer lo mismo que la parte donde dice BLOQUE PARA CISTERNA

Ayuda por favor  8)


Código: [Seleccionar]
#include <16f877a.h>
#fuses xt,nowdt
#use delay(clock=4000000)

 
//Declaracion de variables globales
#DEFINE retardo 250    // Retardo de 250ms
 
void main(void)
{
set_tris_a(0b00001110);
set_tris_b(0b11111110);

///////////////////////////////////////////////////////////////////////////////////////////////////
 
 
while(true)
   {
///////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////// BLOQUE PARA CISTERNA /////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////

    if(((input(PIN_A1) == 0) && (input(PIN_A2)==0)) && (input(PIN_A3)==1))       // ES A1 = A2?
           output_high(pin_b0);                          // ENCIENDE BOMBA PORQE LA CISTERNA ESTA LLENA 3/3
    else if(((input(PIN_A1) == 1) && (input(PIN_A2) ==0)) && (input(PIN_A3)==1))
            output_high(pin_b0);                         // ENCIENDE BOMBA PORQE LA CISTERNA TIENE 2/3
    else if(((input(PIN_A1) == 1) && (input(PIN_A2) ==1)) && (input(PIN_A3)==1))
            output_high(pin_b0);                         // ENCIENDE BOMBA PORQE LA CISTERNA TIENE 2/3 AUNQUE A NADA DE LLEGAR A 1/3
    else if(((input(PIN_A1) == 1) && (input(PIN_A2) ==1)) && (input(PIN_A3)==0))
            output_low(pin_b0);                         // APAGA BOMBA PORQUE LA CISTERNA LLEGO A 1/3 DE NIVEL DE AGUA
         
         //
         // SE SUPONE QUE ESTE CODIGO QUE ESTA EN LOS COMENTARIOS DE ABAJO DEBERIA HACER LO MISMO QUE EL CODIGO DE ARRIBA   
         //   if ((input(PIN_A1)==1) && (input(PIN_A2)==1) && (input(PIN_A3)==0))
         //   output_low(pin_b0);
         //   else
         //   output_high(pin_b0);
           
///////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////// BLOQUE PARA TINACO ///////////////////////////////////////////////           
///////////////////////////////////////////////////////////////////////////////////////////////////

    if(((input(PIN_E0) == 0) && (input(PIN_E1)==0)) && (input(PIN_E2)==1))     
           output_high(pin_b1);                       
    else if(((input(PIN_E0) == 1) && (input(PIN_E1) ==0)) && (input(PIN_E2)==1))
            output_high(pin_b1);                         
    else if(((input(PIN_E0) == 1) && (input(PIN_E1) ==1)) && (input(PIN_E2)==1))
            output_high(pin_b1);                       
    else if(((input(PIN_E0) == 1) && (input(PIN_E1) ==1)) && (input(PIN_E2)==0))
            output_low(pin_b1);
///////////////////////////////////////////////////////////////////////////////////////////////////           
   }
}
SI TU DICES QUE YO LO DIJE SIEMPRE LO VOY A NEGAR