Red de conocimientos turísticos - Conocimientos sobre calendario chino - Problemas con bdata en la programación del microcontrolador C51

Problemas con bdata en la programación del microcontrolador C51

Las variables de bits en 51 incluyen dos categorías. Una categoría son los bits direccionables por bits en el registro de función especial, como EA, TR0, etc., estos bits se declaran especialmente a través de sbit en C; Por ejemplo, sbit Beep=P1^0;; la otra es la variable de bit del modo de almacenamiento bdata.

bdata es el método de almacenamiento de variables booleanas, lo que significa que las variables de bits se almacenan en 16 bytes ubicados en la dirección de bytes de la RAM interna 0x20~0x2F del microcontrolador, cada byte tiene 8 bits y el total es 16x8 = 128 bits direccionables, direcciones de bits de 0x00~0x7F. bdata se refiere únicamente a esta área.

De hecho, en términos generales, no es necesario declarar específicamente el modo de almacenamiento de variables de bits, como el indicador bit bdata; en C51, las variables de bits ordinarias solo se pueden almacenar en bdata, por lo que solo es necesario. para definir la variable con un indicador de bits como este.

Acerca de la aplicación de variables de tipo bit:

1. Se puede pasar como parámetro: por ejemplo

uchar test(bit flag)

{

if(flag)

{//Si el valor pasado es verdadero, devuelve 3,

devuelve 3;

}

else

{//Si es falso, devuelve 2

devuelve 2;

}

}

main()

{

uchar x;

bandera de bits = 1;

x = test(falg );

}

2. Puede usarse como valor de retorno de la función

bit test1(uchar a,uchar b)

{

if(a>b)

{//Si a>b, devuelve verdadero; de lo contrario, devuelve falso

devuelve 1;

}

más

{

devuelve 0;

}

}

main()

{

indicador de bits;

indicador = prueba1(2,3);

}

3. Ocasiones que no se pueden utilizar: no hay un puntero de variable de bit en C51. Por ejemplo, la definición de bit bdata *flag1; Las variables de bits no pueden definir matrices de bits; por ejemplo, no se permite el indicador bdata de bits [8].

Además, hay dos situaciones en las que no se permiten variables de bits para el valor de retorno: una es cuando las interrupciones están prohibidas en la función y la segunda es cuando hay un cambio de banco de registros como usar x en la función. No he verificado estas dos situaciones y no tengo conocimiento de percepción, por lo que no puedo darles ejemplos. En resumen, tenga cuidado al usar funciones que devuelven variables de bits cuando use interrupciones.

La situación en la que las variables de bits se usan con mayor frecuencia: cuando ejecuta una función y solo quiere saber si la operación fue exitosa, puede usar variables de bits como valor de retorno, lo que consume menos recursos y facilita la juicio más rápido. Por supuesto, si el valor de retorno es de tipo char, la velocidad de juicio es similar a la del tipo bit, pero si es de tipo int, tomará más tiempo porque es de doble byte.