Autor Tema: Duda sobre otro ejemplo simple en C  (Leído 1759 veces)

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

Desconectado ramirez

  • PIC16
  • ***
  • Mensajes: 195
Duda sobre otro ejemplo simple en C
« en: 20 de Mayo de 2009, 18:41:58 »
Hola de nuevo a todos, continuo con mi interés en aprender C, y vuelvo a atrancarme en el siguiente  ejemplo:

///Compara el dato del puerto de entrada PORTA con un "Numero". Tres posibilidades:
//   - Si (PORTA) = Numero se encienden todos los LEDs de salida.
//   - Si (PORTA) > Numero se activan los LEDs pares de salida.
//   - Si (PORTA) < Numero se encienden los LEDs del nibble alto y se apagan los del bajo.

#include <16F84A.h>
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES XT                       //Crystal osc <= 4mhz for PCM/PCH , 3mhz to 10 mhz for PCD
#FUSES PUT                      //Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading

#use delay(clock=4000000)

#byte PORTA=0x05           // Dirección del PortA  NO FUNCINA SI QUITO ESTO
#byte PORTB=0x06           // Dirección del PortB

#use fast_io(B)
#use fast_io(A)

//DECLARACIÓN DE VARIABLES

int variable=12;



///PROGRAMA

void main (void)
{
set_tris_a(0xFF);            //porta como entrada
set_tris_b(0x00);            //portb como salida
do{                        //Bucle.........

if(PORTA=variable){
   
   PORTB=(0xFF);
   }else
   {
   
   if(PORTA>variable){
   PORTB=(0b01010101);}
   else
   {PORTB=(0b11110000);}}
}while(true);              //......Infinito
}

¿Cual es el error que estoy cometiendo?

De nuevo gracias por vuestra colaboración y por la comprensión a preguntas tan simples.

Desconectado QIQE

  • PIC18
  • ****
  • Mensajes: 335
Re: Duda sobre otro ejemplo simple en C
« Respuesta #1 en: 20 de Mayo de 2009, 18:46:41 »
muy importante en el if si pones =  estas metiendo el valor de variable en porta para realizar la comparación debes poner == prueba a ver si adelantas algo
Muchas gracias por vuestro tiempo.

Saludos desde valencia!!!

Desconectado ramirez

  • PIC16
  • ***
  • Mensajes: 195
Re: Duda sobre otro ejemplo simple en C
« Respuesta #2 en: 20 de Mayo de 2009, 18:51:19 »
Muchas gracias QIQE, ahora si funciona correctamente.

Desconectado QIQE

  • PIC18
  • ****
  • Mensajes: 335
Re: Duda sobre otro ejemplo simple en C
« Respuesta #3 en: 20 de Mayo de 2009, 18:55:27 »
otra cosa para el futuro cuando programes trate de escribir ordenado para que tu programa sea mas legible fijate en tu ejemplo un poco mas ordenado, sintacticamente es igual

Código: C
  1. [code]///Compara el dato del puerto de entrada PORTA con un "Numero". Tres posibilidades:
  2. //   - Si (PORTA) = Numero se encienden todos los LEDs de salida.
  3. //   - Si (PORTA) > Numero se activan los LEDs pares de salida.
  4. //   - Si (PORTA) < Numero se encienden los LEDs del nibble alto y se apagan los del bajo.
  5.  
  6. #include <16F84A.h>
  7. #FUSES NOWDT                    //No Watch Dog Timer
  8. #FUSES XT                       //Crystal osc <= 4mhz for PCM/PCH , 3mhz to 10 mhz for PCD
  9. #FUSES PUT                      //Power Up Timer
  10. #FUSES NOPROTECT                //Code not protected from reading
  11.  
  12. #use delay(clock=4000000)
  13.  
  14. #byte PORTA=0x05           // Dirección del PortA  NO FUNCINA SI QUITO ESTO
  15. #byte PORTB=0x06           // Dirección del PortB
  16.  
  17. #use fast_io(B)
  18. #use fast_io(A)
  19.  
  20. //DECLARACIÓN DE VARIABLES
  21.  
  22. int variable=12;
  23.  
  24.  
  25.  
  26. ///PROGRAMA
  27.  
  28. void main (void)
  29. {
  30. set_tris_a(0xFF);            //porta como entrada
  31. set_tris_b(0x00);            //portb como salida
  32. do{                        //Bucle.........
  33.  
  34. if(PORTA==variable)
  35.  
  36.    {
  37.    PORTB=(0xFF);
  38.    }
  39. else
  40.    {
  41.    
  42.    if(PORTA>variable)
  43.       {
  44.       PORTB=(0b01010101);
  45.       }
  46.    else
  47.       {
  48.       PORTB=(0b11110000);
  49.       }
  50.    }
  51.    
  52. }while(true);              //......Infinito
  53. }
[/code]
Muchas gracias por vuestro tiempo.

Saludos desde valencia!!!