Es una operación de lectura-modificación-escritura en PORTB.
El enunciado “A ^ = B” significa buscar A, XOR con B, luego poner A de nuevo donde lo encontraste.
La afirmación “1 << PINB0" requiere un poco más de explicación. PINB0 es una constante: la posición de bit del Bit 0 en el puerto PINB. Hay docenas de constantes similares definidas en el entorno de programación AVR, presumiblemente en caso de que decidan utilizar todos los Texas Instruments con un AVR futuro y definir el bit menos significativo de un puerto como el bit 7. En cualquier caso, PINB0 se define como 0, cero. Pero espere: hay tres partes en un puerto AVR, PORTx, PINx y DDRx, para el registro de salida, el registro de entrada y el registro de dirección de datos, y cada uno de ellos tiene su propio conjunto de constantes . Esta declaración, entonces, debería leer
- ¿El sistema wifi está integrado o necesitamos un sistema operativo incorporado para wifi?
- ¿Cuál es la diferencia entre firmware, sistema embebido y middleware?
- ¿Cuáles son las diferencias entre la computadora de placa única y el microcontrolador?
- ¿Ayudará a un estudiante de electrónica a entrar en el campo del automóvil haciendo un proyecto en sistemas integrados?
- ¿Cuál es la mejor manera de aprender AVR?
PORTB ^ = 1 << PORTB0
No hace ninguna diferencia en la práctica, porque todos los conjuntos tienen los mismos valores. Pero una persona lo suficientemente pedante como para escribir “PINB0” en lugar de simplemente “0” debe ser lo suficientemente pedante como para nombrar el registro correcto.
El desplazamiento ‘<<' a la izquierda es exactamente lo que parece. el '1' se desplaza hacia la izquierda por PINB0 lugares, en este caso cero lugares, ninguno en absoluto. El resultado es binario 00000001. Si en su lugar hubiéramos pedido 1 << PINB4, el resultado sería 00010000.
Entonces, la instrucción lee el valor del registro de salida PORTB, lo XOR con 1, y lo escribe de nuevo, alternando así.