Una pregunta sobre el microcontrolador 430 y las declaraciones del programa, por favor ilumíneme.
1. La diferencia básica entre |= y =
2. ¿Cuáles son los diferentes cambios? >
Déjame mostrarte esta respuesta, puede que sea más fácil de entender
1 La diferencia básica entre |= y =
Es igual a borrar El valor original de. Se obtiene UCSCTL4 y se le asigna un nuevo valor, lo que significa que no tiene nada que ver con el valor original.
Pero ¿qué pasa con |=? Está directamente relacionado con el valor original, excepto que el valor del bit correspondiente después del signo igual se promueve a 1. El valor del bit después del signo igual que originalmente era 0 sigue siendo 0 y el valor del bit que originalmente era 1 sigue siendo 1, por ejemplo
UCSCTL4 = 0x1F // (0b1000 1111)
UCSCTL4 = 0x11;
Después de ejecutar la oración anterior, no tiene nada que ver con el valor inicial de 0x1F, y el valor final es 0x11;
UCSCTL4 = 0x8F;
UCSCTL4 = 0x11; //(0b0001 0001)
Después de ejecutar esta oración, está relacionada con el valor inicial 0x1F. En realidad, está realizando operaciones de bits
0b1000 1111
0b0001 0001, llamando al último bit y al quinto y octavo bit desde abajo
- --- -------------
0b1001 1111
El valor final es 0x1F, los dígitos 8.º, 3.º y 2.º originales desde abajo. Los bits en sí son 1 porque trabajan juntos con 0, por lo que aún terminan siendo 1;
2. Lo que sucede con UCSCTL4 en las dos formas anteriores es diferente. Ahora probablemente puedas ver que si (SELA__XT1CLK + SELS__XT1CLK + SELM__XT1CL. ) se considera como 0x11 en nuestro ejemplo anterior, entonces el valor final es 0x11, luego los resultados finales de estas dos operaciones, uno está relacionado con el valor original y el otro no está relacionado con el valor original.