User: alciro    User
 

Microcontroladores 8051

Share |

6. Programación en C

6.1. Tipos de datos

Declaración de los tipos de memoria

En la declaración de la variable se puede indicar en que tipo de memoria se almacenará.
La siguiente tabla muestra el tipo de memoria que se puede especificar.

  • code Memoria de programa (64 KBytes). Con acceso mediante la instrucción MOVC @A+DPTR.
  • data Direccionamiento directo a la memoria de datos interna. Para un acceso rápido a las variables (128 bytes).
  • idata Direccionamiento indirecto a la memoria de datos interna. Con acceso a toda la memoria interna (256 bytes).
  • bdata Memoria de datos interna con direccionamiento bit a bit. Permite el acceso a la zona de bits con direccionamiento por bit y por byte (16 bytes).
  • xdata Memoria de datos externa (64 KBytes). Acceso mediante la instrucción MOVX @DPTR.
  • pdata Paginado (256 bytes) memoria de datos externa. Acceso mediante la instrucción MOVX @Rn.

Normalmente al trabaja en C, no es necesario especificar el tipo de memoria en la que se almacenará el contenido de las variables, se asume que ésta es la RAM de trabajo. Pero en este tipo de microcontroladores al disponer de variadas zonas de memoria con comportamiento distinto, es necesario especificar si la variable se ha de asignar una u otra memoria según la necesidad. Por defecto, si no se indica nada la variable se asigna a la memoria data.

Ejemplos:

char data Var1;
char code text[] = "Entrar temperatura:";
unsigned long xdata MiArray[100];
float idata x,y,z;
unsigned int pdata Dimension;
unsigned char xdata vector[10][4][4];
char bdata Indicador;

Tipos de datos

Un tipo de dato define el rango de valores que puede tener una variable a lo largo de la ejecución del programa así como el número de bytes de memoria asignados para contener la información.

Tipo de datoBitsBytes
Rango
bit*10 a 1
signed char81-128 a +127
unsigned char810 a 255
enum8 / 161 or 2-128 a +127 o -32768 a +32767
signed short162-32768 a +32767
unsigned short1620 a 65535
signed int162-32768 a +32767
unsigned int1620 a 65535
signed long324-2147483648 a 2147483647
unsigned long3240 a 4294967295
float324±1.175494E-38 a ±3.402823E+38
sbit*10 a 1
sfr*810 a 255
sfr16*1620 a 65535

Loading

copyright © 2007-2024  www.alciro.org  All rights reserved.         
Share |