TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: ramirez en 17 de Mayo de 2009, 18:53:01

Título: Invertir las entradas
Publicado por: ramirez en 17 de Mayo de 2009, 18:53:01
Hola a todos de nuevo, sigo intentando aprender C, y esta vez me he atrancado en un simple ejemplo. Deseo obtener por el puerto B las entradas invertidas del puerto A, pero estoy cometiendo  algún error y no se cual es. El programa que utilizo es el siguiente:

///Por el Puerto B se obtiene el dato del Puerto A invertidos los unos y ceros. Por ejemplo,
///si por el Puerto A se introduce "---11001", por el Puerto B aparecerá "xxx00110" (no
///importa el estado de los tres bits superiores del Puerto B).


#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)

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

int inversa;

///PROGRAMA

void main (void)

{

do {
set_tris_a(0xFF);
set_tris_b(0x00);



output_b(!input_a()); 
}
while(true);
}

¿Qué hago mal?, de nuevo os doy a todos las gracias de antemano.
Título: Re: Invertir las entradas
Publicado por: AKENAFAB en 17 de Mayo de 2009, 19:03:35


output_b(~input_a());

~
 One's complement operator


Prueba con eso
 
Título: Re: Invertir las entradas
Publicado por: ramirez en 17 de Mayo de 2009, 19:16:22
Muchas gracias, funciona correctamente
Título: Re: Invertir las entradas
Publicado por: darck_khronos en 17 de Mayo de 2009, 19:25:52
la otra seria que usaras una mascara para que se negaran