User: alciro   
 

Microcontroladores 8051

6.3. Estructuras de campos de bits

Se pueden definir los elementos de una estructura en campos de bits actuando como variables miembro de estructura, con un número determinado de bits entre 1 y 8, (el rango de las estructuras de bits depende de la arquitectura del microprocesador y del compilador que se esté utilizando, el rango puede ser de 1 a 8, 1 a 16, 1 a 32 o 1 a 64).

Declaración del tipo de dato estructura de bits

// Declaración de una estructura de bits
struct Puertos{
	unsigned Ch0: 1;	// Rango 0,1
	unsigned Ch1: 2;	// Rango 0 a 3
	unsigned Ch2: 3;	// Rango 0 a 7	
	unsigned Ch3: 1;	// Rango 0,1
};

Declaración de variables

void main(void){
	data struct Puertos PU_1;    // Declaración de una variable PU_1 del tipo Puertos
	
	PU_1.Ch0 = 0;    // Asignación de datos a los elementos
	PU_1.Ch1 = 3;
	PU_1.Ch2 = 5;
	PU_1.Ch3 = 1;
	...

Contenido de memoria

Contenido en memoria de la estructura de campos de bits

6.4. Uniones

Declaración de tipo de dato

union Datos{
	unsigned int i;		// Número entero
	unsigned char c[2];	// Array de dos caracteres
}

Declaración de variables

void main(void){
	data union Datos d_1;	// Declaración de una variable d_1 del tipo Datos
	d_1.i = 0x0405;		// Asignación de un número al tipo entero
	ch1 = d_1.c[0];		// Asignación a ch1 el contenido del 1 byte de la unión ( ch1=5 )
	ch2 = d_1.c[1];		// Asignación a ch1 el contenido del 1 byte de la unión ( ch2=4 )

Contenido en memoria

 

Contenido en memoria de la unión

6.5. Definición de símbolos

Definición de símbolos

#define principio 	{
#define fin		}
#define entero		int
#define numero		10
#define limite		numero*5
#define suma		x+y
#define mensaje		"Demasido grande \n"
main()
principio
	entero x,y,z;
	x = 5;
	y = limite;
	z = suma;
	if(z>y)
		printf(mensaje);
	...
fin

 

 

Loading
copyright © 2007-2012  alciro.org  All rights reserved.         
Share |