Autor
|
Tema: Instrucción para controlar un pin ??? (Leído 6,190 veces)
|
AjarDeNauer
Desconectado
Mensajes: 5
|
¡ Hola ! Necesito resolver una pequeña duda y he echado mano de este foro para ver si la puedo solventar. Hay alguna instrucción que me permita cambiar el estado lógico de un pin sin tener que evaluarlo? Me explico: esté como esté el pin, ya sea a uno o a cero, que se cambie al estado contrario, sin tener que evaluarlo con el posible if / else, para que así consiga hacerlo en una sola línea de código y emplear el menor tiempo posible Muchas gracias.
|
|
|
En línea
|
|
|
|
ssaammuu
|
Si extraes el valor, este será 1 o 0, si tratamos 1 como booleano verdadero y 0 como booleano falso puedes hacer estado=!estado para cambiar.
|
|
|
En línea
|
|
|
|
AjarDeNauer
Desconectado
Mensajes: 5
|
He puesto PIN_B1=!PIN_B1; pero al compilar no me pilla esa expresión
|
|
|
En línea
|
|
|
|
arisma
Desconectado
Mensajes: 21
|
Sí existe.
Creo recordar que debes usar o/y lógicos para cambiar el pin(bit?)
|
|
|
En línea
|
|
|
|
Akai
Desconectado
Mensajes: 823
|
Utiliza una XOR: cplusplus.com : XOR (Exclusive Or) This operation is performed between two bits (a and b). The result is 1 if either one of the two bits is 1, but not in the case that both are. There for, if neither or both of them are equal to 1 the result is 0. XOR (^) a b a^b 0 0 0 0 1 1 1 0 1 1 1 0 La utilidad de la XOR en este caso, es que algo XOR 1 = !algo. Por tanto: bool a=1, PIN_B1=0; PIN_B1=a^PIN_B1
cambia el estado de PIN_B1 al negado.
|
|
|
En línea
|
|
|
|
El_Java
|
No valdría en vez de usar XOR usar el complemento "~"? Por ejemplo: PIN_B1 = ~PIN_B1
Pregunto, no tengo aun claro los operador de bits xD
|
|
|
En línea
|
|
|
|
Akai
Desconectado
Mensajes: 823
|
@El_Java:
Si, de hecho esa es la respuesta que precisamente se está buscando y en la que no había caído. Me acostumbré a la XOR cuando necesito cambiar un bit en concreto para máscaras usando enteros y no pensé en el complemento.
|
|
« Última modificación: 28 Abril 2011, 19:00 pm por Akai »
|
En línea
|
|
|
|
El_Java
|
Me alegro de haber ayudado, no estaba seguro, los operador de bits me lian muchisimo.
Por cierto Akai, sino te importa echale un ojo a mi tema del foro, que se que tu entiendes bastante, a ver si pudieras ayudarme.
Un saludo.
|
|
|
En línea
|
|
|
|
AjarDeNauer
Desconectado
Mensajes: 5
|
gracias pero... no sé qué pasa, no me pilla la instrucción, me da error el compilador. No puedo asignarle nada al pin (=) pero sí evaluarlo (==). Me dice esto: expecting LVALUE such as a variable name or * expression
|
|
|
En línea
|
|
|
|
Akai
Desconectado
Mensajes: 823
|
Si pones el código que da problemas, es probable que podamos ayudarte sin recurrir a bolas de cristal adivinatorias.
|
|
|
En línea
|
|
|
|
|
|