# como setear un bit del puerto paralelo en C



## julio cesar (Ene 29, 2006)

hola amigos, tengo un inconveniente quqe ojala pueda ser solucionado.......

resulta que estoy utilizando el bus de datos del puerto paralelo (8 bits) para dos propositos diferentes, los primeros 4 bits tienen cierta funcion y los otros cuatro tienen otra totalmente diferente, entonces para mi es indispensable manipular "individualmente" los bits de este bus, asi la instruccion outportb(puerto,dato) de dos.h no me funciona.

acaso no hay alguna funcion defininada que manipule individualmente los bits como la existente en visual basic que es 

setportbit?

muchas gracias por su colaboracion..


----------



## House (Ene 31, 2006)

Creo que en esencia lo que hace la función setportbit es utilizar una función como outporb solo que utiliza una verificacion por software que le permite rescribir nuevamente en el puerto los bits que tenia, a excepción del bit que quieres cambiar.

Realiza una función que te permita comparar el valor del puerto con el nuevo valor que quieres introducir en el y lo rescribes nuevamente cambiando solo un bit.


----------



## julio cesar (Feb 2, 2006)

amigo, gracias por tu respuesta, antes de verificar si alguien ya me habia publicado alguna respuesta ya  se me habia ocurrido hacer lo que tu dices, es solo tener en cuente el estado actual del puerto para asi setear el bit que yo quiero, en otras palabras sumarle a este dato por ejemplo 1 para setear el bit 0  .....gracias por todo.....


----------



## maunix (Feb 3, 2006)

julio cesar dijo:
			
		

> amigo, gracias por tu respuesta, antes de verificar si alguien ya me habia publicado alguna respuesta ya  se me habia ocurrido hacer lo que tu dices, es solo tener en cuente el estado actual del puerto para asi setear el bit que yo quiero, en otras palabras sumarle a este dato por ejemplo 1 para setear el bit 0  .....gracias por todo.....




Sumar 1 para setear el bit 0... no lo veo como buena opción.   Lo mejor es hacer OR y AND para setear y borrar bits.

A = A | 0x01    // Setea el bit 0 en 1.

A = A & 0xFE   // Borra el bit 0 .  

Hay funciones que te toman el complemento a 1 de un valor, entonces el 0x01 se convierte en 0xFE.  De esa forma solo almacenas en RAM el numero de bit 0x01, 0x02, 0x04, 0x08,.... y al hacer el complemento con al función AND lo borras


----------

