Sunteți pe pagina 1din 29

DTO.

INGENIERIA
ELECTRICA-ELECTRNICA

TEMA

Compilador C para PIC


CCS C

Compilador C para PIC


CCS PIC COMPILER
Un

compilador convierte un lenguaje de alto nivel a


instrucciones en cdigo mquina.
Varios compiladores C tienen como procesador objetos los
PICmicro tal es el caso de MicroChip y CCS.

Los programas son editados y compilados a instrucciones


mquina en el PC.

El cdigo es ejecutado en el PIC y puede ser depurado.


2

CCS PIC COMPILER


Los elementos
programa en C

bsicos

de

un

Directivas de preprocesado
Indican al compilador cmo debe
generar el cdigo mquina.
Programas
Bloques de programa.

Siempre debe incluirse


llamada main().

una

Sentencias
Instrucciones que definen lo que
hace el programa y la secuencia de
ejecucin del mismo.
Comentarios

Imprescindibles
como
documentacin del cdigo fuente.

VARIABLES
Una variable es un nombre asignado a una o varias posiciones de
memoria RAM.

En C es necesario declarar todas las variables antes de poder


utilizarlas, indicando el nombre asignado y el tipo de datos que en ella
se van a almacenar (opcionalmente tambin el valor inicial asignado).

tipo nombre_variable [=valor]; p.e.:int i;

Los tipos de datos aceptados en C estndar son cinco:


char (carcter)
int (entero)
float (coma flotante en 32 bits) double (coma flotante en 64b)
void (sin valor)

Las variables pueden ser locales o globales. Las variables locales slo
pueden ser usadas en la funcin en que se declaran, mientras que las
variables globales son compartidas por todas las funciones del programa
(deben declararse fuera de cualquier funcin y antes de ser utilizadas).
4

VARIABLES
El compilador de CCS acepta los siguiente tipos de variable.
Especificacin Significado
Tamao
Rango
char
carcter 8 bits 0 a 255 (sin signo)
int
entero
8 bits 0 a 255 (sin signo)
float
coma flotante
32 bits
6 bits de precisin
void
sin valor nulo ninguno
int1
entero de 1 bit
1 bit
0a1
int8
entero de 8 bits
8 bits
0 a 255 (sin signo)
int16
entero de 16 bits 16 bits
0 a 65535 (sin signo)
int32
entero de 32 bits 32 bits
0 a (232-1)
short
entero de 1 bit
1 bit
0a1
long
entero de 16 bits 16 bits
0 a 65535 (sin signo)

Los tipos de variable short y long pueden tener detrs la palabra int
sin efecto alguno.

VARIABLES
Todos los tipos de datos son por defecto sin signo (unsigned) salvo
los de tipo float.
Para almacenar datos con signo, hay que introducir el modificador
signed delante del tipo. El efecto que se consigue es el recogido en
la siguiente tabla.
Especificacin Significado
Tamao
Rango
signed char
carcter con signo
8 bits
-128 a 127
signed int16 entero con signo
16 bits
-16384 a 16383
signed long
coma flotante
16 bits
-32768 a 32767

Los nmeros negativos se codifican en complemento a 2.


Cuando se opera con distintos grupos de datos en una misma
expresin, se aplican una serie de reglas para resolver las
diferencias.
6

FUNCIONES
Las funciones son los bloques constructivos fundamentales en C.
Todas las sentencias deben encontrarse dentro de funciones.
Las funciones deben ser definidas antes de ser utilizadas.
Formato general de definicin de una funcin:

tipo_dato_return nombre_func (tipo param1 , tipo param2 ,


)
{
cuerpo de la funcin (sentencias);
}

Las funciones pueden devolver un valor a la sentencia que las llama.


El tipo de dato devuelto se indica mediante tipo_dato (char, int16,
long). Si no se indica nada, se entiende que devuelve un entero. Si no
devuelve nada, debe incluirse una especificacin tipo void.
7

FUNCIONES
La manera que tiene una funcin para devolver un valor es
mediante la sentencia return.
return (expresin);

return expresin;

La expresin debe proporcionar el mismo tipo de dato que el


especificado en la funcin. Si no debe devolver nada, se finaliza con
return;

Cuando una funcin se encuentra con una sentencia return se


vuelve a la rutina de llamada inmediatamente y las sentencias
posteriores a return no se ejecutan.

Adems con la sentencia return, las funciones terminan su ejecucin


y vuelven al lugar desde donde se les llam cuando alcanzan la llave
de cierre de funcin } tras ejecutar la ltima sentencia de la misma.
8

FUNCIONES
Adems de devolver valores, una funcin tambin puede recibir
parmetros (denominados argumentos) segn se indic en su definicin.
int suma (int a , int b)
Parmetros formales
{
return (a+b);
}
main()
{
int c;
c = suma (10 , 23);
Argumentos de llamada
}

Los argumentos se pueden pasar a las funciones por valor o por


referencia.
La llamada por valor copia el argumento de llamada en el parmetro
formal de la funcin (No modifica su valor en la funcin de partida).
La llamada por referencia usa la direccin de la variable que se pasa
a la funcin (se consigue usando punteros o arrays).
9

OPERADORES
El lenguaje C define numerosos operadores mediante los cuales se
construyen las expresiones (combinacin de operadores y operandos).

De asignacin

Aritmticos
10

OPERADORES
Relacionales

Lgicos

De bits
11

OPERADORES
In/decremento

Desplazamiento bit

Direccin/indireccin
En lenguaje C profesional es muy frecuente usar abreviaturas.
As, por ejemplo, es ms habitual ver a += b; que a = a + b;
12

OPERADORES

13

DECLARACIONES

14

Sentencias de control de programa


Sentencia if

Se ejecuta una sentencia o bloque de cdigo si la expresin que acompaa


al if tiene un valor distinto a cero (verdadero). Si es cero (falso) contina sin
ejecutar la sentencia o bloque de sentencias.

if (expresin)
sentencia {
sentencia 1;
sentencia 2;
...
}

Sentencia if-else
Se evala una expresin y, si es cierta, se ejecuta el primer bloque de cdigo
(o sentencia 1). Si es falsa, se ejecuta el segundo.}
if (expresin)
sentencia 1;
Else
sentencia 2;

(expresin) ? (sentencia 1) : (sentencia);

15

Sentencias de control de programa


Sentencia if-if/else
If (P1 !=0)
c=20;
else c=0;
If (a>b)
{
If (a>d)
c = 15;
else c=0;
}
If (a>b)
{
If (a>d) c = 15;
}
else c=0;

16

Sentencias de control de programa


Sentencia switch
Substituye a if-else cuando se realiza una seleccin mltiple que
compara una expresin con una lista de constantes enteras o
caracteres. Cuando se da una coincidencia, el cuerpo de
sentencias asociadas a esa constante se ejecuta hasta que
aparezca break.
switch (expresin)
{
case constante 1:
grupo 1 de sentencias;
break;
case constante 2:
grupo 2 de sentencias;
break;
...
default:
grupo n de sentencias;
}

break es opcional. Si no
aparece se sigue con el case
siguiente.
No puede haber constantes
iguales en dos case de la
misma sentencia switch.
default es opcional y el bloque
asociado se ejecuta slo si no
hay ninguna coincidencia con
las constantes especificadas.
17

Sentencias de control de programa


Sentencia switch
Switch (k)
{
case 0: x=1;
break;
case 2: c=6;
b=15;
break;
case 3: x=12;
break;
default: break;
}

18

Sentencias de control de programa


Sentencia de bucle for
Se emplea para repetir una sentencia o bloque de
sentencias.
for (inicializacin ; condicin ; incremento)
{
sentencia(s);
}

En la inicializacin se le asigna un valor inicial a una variable


que se emplea para el control de la repeticin del bucle.

La condicin se evala antes de ejecutar la sentencia. Si es


cierta, se ejecuta el bucle. Si no, se sale del mismo.

El incremento establece cmo cambia la variable de control


cada vez que se repite el bucle.

Es posible anidar bucles for para modificar dos o ms variables


de control.

19

Sentencias de control de programa


Sentencia de bucle for
For (i=1;i<=100;i++)
{
delay_ms(33);
px=px+3;
}

For (y=1;y<=99;y=y+3)
{
delay_ms(33);
px=y;
}
20

Sentencias de control de programa


Sentencia de bucle while

La repeticin se lleva a cabo mientras sea cierta una


expresin.

while (expresin)
{
sentencia(s);
}

La expresin se evala antes de cualquier iteracin. Si es


falsa, ya no se ejecuta la sentencia o bloque de sentencias.

Sentencia de bucle do-while


do

{
sentencia(s);
}
while (expresin)

Las sentencias se ejecutan antes de que se evale la


expresin, por lo que el bucle se ejecuta siempre al menos una
vez.

21

Sentencias de control de programa


Sentencia de bucle do-while/while
while (x>0 && y<5)
{
a=1;
b=45;
x=p1;
}
do {
a=1;
b=45;
x=p1;
} while (x>0 && y>5);

22

Comentarios
Los comentarios se incluyen en el cdigo fuente para explicar el
sentido y la intencin del cdigo al que acompaan. Son
ignorados por el compilador y no afectan a la longitud ni rapidez
de ejecucin del cdigo final.
Un comentario se puede colocan en cualquier lugar del programa
y pueden tener la longitud y el nmero de lneas que se quiera.
Hay dos formatos posibles para los comentarios.
Formato 1. Empiezan por // y finalizan con el final de la
lnea.
// Esto es un comentario.
Formato 2. Empiezan por /* y finalizan por */. No es posible
anidar comentarios con este formato.
/* Esto tambin es
un comentario */
/* Pero esto que /* parece un comentario vlido*/ no lo es */

23

C especfico para los PIC


Las principales diferencias entre compiladores residen en las
directivas (pre-processor commands) y en las funciones
integradas (built-in functions).
Al final de esta seccin se incluyen listas con las directivas y
las funciones integradas correspondientes al compilador de
CCS.
Directivas de preprocesado ms habituales:
#ASM

Las lneas entre estas dos directivas deben ser

instrucciones
#ENDASM
ensamblador que se insertan tal y como aparecen.
#BIT id=x.y Se crea una variable tipo bit correspondiente al bit y
del byte
x en memoria.
24
#BYTE id=x Se crea una variable y se sita en el byte x en
memoria.
Si ya exista esa variable, se coloca fsicamente en la

C especfico para los PIC


#DEFINE id texto
adjunto.

El identificador se sustituye por el texto

#DEVICE chip
cdigo.

Define el micro para el que se escribe el

#FUSES options
grabacin
del

Define la palabra de configuracin para la


microcontrolador.

#INCLUDE <fichero> Se incluye el texto del fichero especificado


en el
#INCLUDE fichero
directorio o fuera de l.
#INLINE
La funcin que sigue a esta directiva se copia en
memoria de programa cada vez que se le llame. Puede servir
para mejorar la velocidad.
#SEPARATE
La funcin que sigue a esta directiva se25
implementa de manera separada (no INLINE). De esta manera
se ahorra ROM

C especfico para los PIC


#ORG start
Sita el cdigo a partir de una determinada
posicin de la memoria de programa
#INT_xxxx
programa de

Indica que la funcin que sigue es un

tratamiento de la interrupcin xxxx.


#INT_GLOBAL Indica que la funcin que sigue es un programa
genrico de tratamiento de
interrupcin. No se incluye cdigo de salvaguarda de registros
ni de recuperacin como cuando se usa #INT_xxxx.
#PRIORITY ints Establece un orden de prioridad en las
interrupciones.
#USE DELAY (clock = frecuencia en Hz)
Define la frecuencia del oscilador que se va a utilizar, que se
emplea para realizar los clculos para funciones integradas de
26
retardo.

Compilador C para PIC


pre-processor commands

27

Compilador C para PIC


built-in functions

28

Compilador C para PIC


built-in functions

29

S-ar putea să vă placă și