Red de conocimientos turísticos - Información de alquiler - Cómo declarar una variable direccionable por bits en lenguaje C de microcontrolador

Cómo declarar una variable direccionable por bits en lenguaje C de microcontrolador

Se ve así. Siempre que declares una variable de bit, como bit a; y esta variable sea una variable global o una variable estática dentro de la función, entonces la posición de esta variable de bit será la siguiente. será constante, pero el compilador asigna la dirección aleatoriamente, no estoy seguro, pero en ejecuciones futuras, la dirección definitivamente permanecerá sin cambios.

Si declaras una variable dinámica dentro de una función, como el bit a dentro de una función, entonces la variable de bit cambia a medida que se llama a la función y su dirección también cambia.

Entonces, siempre que declare una variable de bit global, la dirección de esta variable no debe cambiar. Por supuesto, no conocemos la dirección específica.

Si debes saber cuál es cada dirección, entonces hay dos maneras:

1 Te concentras en definir los 128 bits.

Por ejemplo, en un archivo C, se escribe así:

bit Bit00 = 0;

bit Bit01 = 0;

bit Bit02 = 0;

bit Bit03 = 0;

Defina siempre 128, ocupando todo el espacio de bits, entonces, de esta manera, podrá estar seguro de que la dirección de Bit00 es 0x20 El bit más bajo, la dirección de bit01 es el segundo bit más bajo de 0x20.

2 Utilice sbit en lugar de bit.

Por ejemplo: datos de caracteres sin firmar B_Var[16] = 0;

sbit Led_Status1 = B_Var[0]^7 ;Entonces, significa que Led_Status es el bit más alto en la dirección 20H.

sbit Led_Status2 = B_Var[6]^3; Entonces, significa que Led_Status es el tercer bit en la dirección 26H.

En realidad, esto no es una variable de bit definida, es solo un alias. Pero el efecto es el mismo, solo tenga en cuenta que si cambia B_Var[6], puede cambiar el tercer bit de la dirección de 26H. Por lo tanto, si solo usa bits, no opere el elemento de matriz B_Var[6].

De hecho, solo necesita definir una variable global. No es necesario conocer la dirección de esta variable de bit, porque no tiene ningún significado práctico.