poniendo a prueba los valores de 3 bits de puerto y los valores de Anding

-1

Estoy destellando un led, pero si detecto que todos los pines de 3 puertos tienen 0 en ellos, y el resultado es cero, deseo que el led deje de parpadear. Pero ¿por qué su trabajo no funciona?

if (RB3 & RB4 & RB5 == 0){ RB6 = RB6; } else RB6 = !RB6;

    
pregunta StevieB

1 respuesta

2

Esto es más una pregunta C que una pregunta EE. Considere la precedencia del operador para la comparación (==) que es 7 vs. bitwise AND (&) que es 8.

Así que tienes RB3 & RB4 & (RB5 == 0). Por lo tanto, será cierto si RB3 es 1, RB4 es 1 y RB5 es 0, probablemente no es lo que querías.

Tal vez (0 == (RB3 | RB4 | RB5)) es lo que quieres.

Tenga en cuenta que prefiero evitar poner un valor L en el lado izquierdo de una expresión de comparación. Eso es una cuestión de estilo: si se omite uno de los signos = (un error común), el compilador emitirá un mensaje de error en lugar de (en el mejor de los casos) una advertencia, ya que de lo contrario es una declaración de asignación válida.

    
respondido por el Spehro Pefhany

Lea otras preguntas en las etiquetas