Autor Tema: Como controlar varios puertos con pulsadores con el pic 16f877a ? pic c compiler  (Leído 13011 veces)

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

Desconectado EDJMM9

  • PIC10
  • *
  • Mensajes: 8
 buenas soy  nuevo  en  el  foro  y en esto de  los  pics tengo algunas dudas hasta  los momentos se que si escribo
 el codigo:

//teniendo conectado un pulsador en el (pin_A1) Y UN led en el (pin_b2) // puedo encender el led pulsando el boton y apagarlo pulsandolo de nuevo. lo probe en proteus y funciona .

   while(true){
    if(input(pin_A1)==0){
    delay_ms(30);
    if(input(pin_A1)==0)
    output_toggle(pin_b2);
    while(input(pin_A1)==0);

//ahora me pregunto como haría para hacer esto con varios pulsadores y varios leds . trabajando independientemente . osea poner un 5 pulsadores en (pin_a0) (pin_a1) (pin_a2) (pin_a3) (pin_a4) y que cada uno controle los leds conectados en los puertos  b0 b1 b2 b3 b4

algo asi como:
(pin_a0) enciende y apaga el led qe esta en (pin_b0) //controla on/off el led amarillo//
(pin_a1) enciende y apaga el led qe esta en (pin_b1) //controla on/off el led  rojo//
(pin_a2) enciende y apaga el led qe esta en (pin_b2) //controla on/off el led verde//        (todos independientemente)
(pin_a3) enciende y apaga el led qe esta en (pin_b3) //controla on/off el led  blanco//
(pin_a4) enciende y apaga el led qe esta en (pin_b4) //controla on/off el led azul//

yo ignorantemente pense claro hago el mismo programa de arriba asi

programa en pic c compiler

   while(true){
    if(input(pin_A0)==0){
    delay_ms(30);
    if(input(pin_A0)==0)
    output_toggle(pin_b0);  // led amarillo//
    while(input(pin_A0)==0);
 
}   
    if(input(pin_A1)==0)
    delay_ms(30);
    if(input(pin_A1)==0)
    output_toggle(pin_b1);  // led rojo//
    while(input(pin_A1)==0);

if(input(pin_A1)==0)
    delay_ms(30);
    if(input(pin_A1)==0)
    output_toggle(pin_b1);  // led verde//
    while(input(pin_A1)==0);
}
y asi con los demas
 
solo que  no  funciona como yo quiero solo controla el primer led y los demas no  :? se que estoy haciendo algo mal en la programacion pero  soy nuevo en este idioma mi imagino q es algun problema con las interrupciones .  o bueno si hay  alguien que me pueda ayudar  le agradeceria en el alma :D

Desconectado miglo

  • PIC10
  • *
  • Mensajes: 2
Re: Como controlar varios puertos con pulsadores con el pic 16f877a ? pic c compiler
« Respuesta #1 en: 29 de Octubre de 2012, 20:08:23 »
Hola: EDJMM9
Yo aun soy mas principiante que tu en C,
hazlo asi que si no me equiboco te tirara bien,
el problema lo tenias en que te dejabas las sentencias abiertas.
Comparalo con el tuyo y mira donde esta la diferencia.
Un saludo.


void main()
{
  while(true){
      if(input(pin_A0)==0){
      delay_ms(30);
      if(input(pin_A0)==0)
      output_toggle(pin_B0);       // led amarillo//
      while(input(pin_A0)==0);}
 
   
      if(input(pin_A1)==0){
      delay_ms(30);
      if(input(pin_A1)==0)
      output_toggle(pin_B1);       // led rojo//
      while(input(pin_A1)==0);}

      if(input(pin_A2)==0){
      delay_ms(30);
      if(input(pin_A2)==0)
      output_toggle(pin_B2);       // led verde//
      while(input(pin_A2)==0);}
}
   
}

Desconectado josefe

  • PIC12
  • **
  • Mensajes: 68
    • mi blog http://freespacejd.blogspot.com
Re: Como controlar varios puertos con pulsadores con el pic 16f877a ? pic c compiler
« Respuesta #2 en: 02 de Diciembre de 2012, 14:49:41 »
buenas soy  nuevo  en  el  foro  y en esto de  los  pics tengo algunas dudas hasta  los momentos se que si escribo
 el codigo:

//teniendo conectado un pulsador en el (pin_A1) Y UN led en el (pin_b2) // puedo encender el led pulsando el boton y apagarlo pulsandolo de nuevo. lo probe en proteus y funciona .

   while(true){
    if(input(pin_A1)==0){
    delay_ms(30);
    if(input(pin_A1)==0)
    output_toggle(pin_b2);
    while(input(pin_A1)==0);

//ahora me pregunto como haría para hacer esto con varios pulsadores y varios leds . trabajando independientemente . osea poner un 5 pulsadores en (pin_a0) (pin_a1) (pin_a2) (pin_a3) (pin_a4) y que cada uno controle los leds conectados en los puertos  b0 b1 b2 b3 b4

algo asi como:
(pin_a0) enciende y apaga el led qe esta en (pin_b0) //controla on/off el led amarillo//
(pin_a1) enciende y apaga el led qe esta en (pin_b1) //controla on/off el led  rojo//
(pin_a2) enciende y apaga el led qe esta en (pin_b2) //controla on/off el led verde//        (todos independientemente)
(pin_a3) enciende y apaga el led qe esta en (pin_b3) //controla on/off el led  blanco//
(pin_a4) enciende y apaga el led qe esta en (pin_b4) //controla on/off el led azul//

yo ignorantemente pense claro hago el mismo programa de arriba asi

programa en pic c compiler

   while(true){
    if(input(pin_A0)==0){
    delay_ms(30);
    if(input(pin_A0)==0)
    output_toggle(pin_b0);  // led amarillo//
    while(input(pin_A0)==0);
 
}    
    if(input(pin_A1)==0)
    delay_ms(30);
    if(input(pin_A1)==0)
    output_toggle(pin_b1);  // led rojo//
    while(input(pin_A1)==0);

if(input(pin_A1)==0)
    delay_ms(30);
    if(input(pin_A1)==0)
    output_toggle(pin_b1);  // led verde//
    while(input(pin_A1)==0);
}
y asi con los demas




Me parece que hay muchos condicionales imnecesarios, es mi apreciación, creo que se podria hacer mas sencillo. No te dejo codigo porq utilizo mikroc y las sentencias no son iguales creo.
« Última modificación: 02 de Diciembre de 2012, 14:53:16 por josefe »


 

anything