guia de c18
GUÍA DEL ESTUDIANTE
Manual del compilador Microchip C18
1. Tipos de datos
Tipos enteros
El compilador C18 soporta los tipos de datos enteros del estándar ANSI. Los
rangos de cada tipo se muestran a continuación:
Tipo
char
Signed char
Unsigned char
int
Unsigned int
short
Unsigned short
Short long
Unsigned short long
long
Unsigned long
tamaño8 bits
8 bits
8 bits
16 bits
16 bits
16 bits
16 bits
24 bits
24 bits
32 bits
32 bits
Rango
-128
-128
0
-32,768
0
-32,768
0
-8,388,608
0
-2,147,483,648
0
127
127
255
32,767
65,535
32,767
65,535
8,388,607
16,777,215
2,147,483,647
4,294,967,295
Tipos en punto flotante
Se admiten formatos de punto flotante double o float, basados en el estándar
IEEE-754. Acontinuación se muestran los rangos de ambos tipos:
Tipo
Bits
Exp.
Rango
float
32 bits -126 128 2–126 ≈ 1.17549435e - 38
double 32 bits -126 128 2–126 ≈ 1.17549435e - 38
2128 * (2-2–15) ≈ 6.80564693e + 38
2128 * (2-2–15) ≈ 6.80564693e +38
Almacenamiento de los datos “endianness”
El ordenamiento de los datos en una variable multi-byte se realiza en little-endian. El
byte menossignificativo ocupa la posición más baja.
#pragma idata test=0x0200
long l=0xAABBCCDD;
Da como resultado:
Dirección
0x0200
0x0201
0x0202
0x0203
Contenido
0xDD
0xCC
0xBB
0xAA
Laboratorio de Sistemas Basados en Microprocesador y Sistemas Electrónicos Digitales
2
Manual del compilador Microchip C18
2. Clases de almacenamiento
Se soportan los siguientes tiposde almacenamiento definido en el estándar ANSI: auto,
extern, register, static y typedef.
Almacenamiento overlay
Además se introduce el almacenamiento overlay, que se aplica a variables locales sólo
no se aplica a parámetros de funciones, definición de funciones o variables globales. El
linker MPLINK intentará superponer variables locales tipo overlay sobre las mismas
posiciones dememoria para funciones que no pueden activarse a la vez. Por ejemplo:
int f (void)
{
overlay int x = 1;
return x;
}
int g (void)
{
overlay int y = 2;
return y;
}
Si f y g nunca se activan juntas x e y pueden compartir la mismas posiciones de
memoria. La ventaja de usar ovelays es que estas variables se sitúan estáticamente lo
que significa que es necesario menos instrucciones para accedera ellas, mientras que la
cantidad de memoria requerida es menor que en el caso de haberlas definido
directamente como static, al estar superpuestas.
Una función recursiva no puede contener variables de tipo overlays.
El formato por defecto para las variables locales es auto. Esto puede ser modificado
explícitamente mediante los prefijos static u overlay.
Argumentos para funciones
Losparámetros para las funciones pueden ser almacenados como auto o static. Un
parámetro auto se almacena en la pila software que implementa el compilador. Uno
static se considera global y habilita el acceso directo generando menos código. Los
parámetros static son posibles sólo si el compilador esta en modo no-extendido. Los
parámetros por defecto se definen como auto.
3. Calificadores delalmacenamiento
Además de los calificadores ANSI (const, volatile) el MPLAB introduce los siguientes
tipos nuevos: far, near, rom y ram. A continuación se muestra la posición donde se
almacena la variable asociada en función del calificador.
rom
far
ram
Cualquier posición de memoria de
Cualquier posición de memoria de
Laboratorio de Sistemas Basados en Microprocesador y SistemasElectrónicos Digitales
3
Manual del compilador Microchip C18
programa
near
datos (es el valor por defecto)
Cualquier posición de memoria de
programa menor de 64 KB
En las 0x5f posiciones más bajas de
memoria RAM. Se permite acceso en
modo banco.
Las variables tipo RAM residen en la memoria de datos y dependiendo del calificador
far/near, se supondrá que están en cualquier...
Regístrate para leer el documento completo.