7/15/2019 Clase 1 Compilador CCS C
http://slidepdf.com/reader/full/clase-1-compilador-ccs-c 1/31
Compilador
CCS C
7/15/2019 Clase 1 Compilador CCS C
http://slidepdf.com/reader/full/clase-1-compilador-ccs-c 2/31
¿Qué es un compilador?Un compilador convierte el lenguaje de altonivel a instrucciones en código maquina; uncross-compiler es un compilador que funcionaen un procesador(normalmente una PC)
diferente al procesador objeto. El compiladorCCS C es un cross-compiler.
7/15/2019 Clase 1 Compilador CCS C
http://slidepdf.com/reader/full/clase-1-compilador-ccs-c 3/31
Estructura de un programa
Para escribir un programa en C con CCS C se debe tener encuenta una serie de elementos básicos de su estructura
• DIRECTIVAS DE PREPROCESADO: Controlan la conversióndel programa a código maquina por parte del compilador.
• PROGRAMAS o FUNCIONES: Conjunto de instrucciones.Pueden haber uno o varios, el cualquier caso siempre debehaber uno definido como principal mediante la inclusiónllamada main().
•
INSTRUCCIONES: Indican como debe comportarse el PIC entodo momento.
• COMENTARIOS: Permiten describir lo que significa cadalínea del programa.
7/15/2019 Clase 1 Compilador CCS C
http://slidepdf.com/reader/full/clase-1-compilador-ccs-c 4/31
Directivas
Función
Función Principal
Comentarios
Instrucciones
7/15/2019 Clase 1 Compilador CCS C
http://slidepdf.com/reader/full/clase-1-compilador-ccs-c 5/31
Tipos de DatosTipo Tamaño Rango Descripción
Int1
Short
1 bit 0 a 1 Entero de 1 bit
Int
Int8
8 bits 0 a 255 Entero
Int16
Long
16 bits 0 a 65 535 Entero de 16 bits
Int32 32 bit 0 a 4 294 967 295 Entero de 32 bits
Float 32 bit ±1 175x10^(-38 ) a
±3 402x10^(+38)
Coma flotante
Char 8 bit 0 a 255 CarácterVoid -- -- Sin valor
Signed Int8 8 bit -128 a +127 Entero con signo
Signed Int16 16 bit -32768 a +32767 Entero largo con signo
Signed Int32 32 bit -2^31 a +(2^31 – 1 ) Entero 32 bit con signo
7/15/2019 Clase 1 Compilador CCS C
http://slidepdf.com/reader/full/clase-1-compilador-ccs-c 6/31
Las Constantes
123 Decimal
0123 Octal (0)
0x123 Hexadecimal (0x)
0b010010 Binario (0b)
‘x’ Carácter
‘\010’ Carácter octal
‘\xA5’ Carácter hexadecimal
Int8 127U
Long 80UL
Signed INT16 80L
Float 3.14F
Char Con comillas simples ‘C’
Definición de constantes con un sufijo
\n Cambio de línea
\r Retorno de carro
\t Tabulación
\b Backspace
Definición de caracteres especiales
7/15/2019 Clase 1 Compilador CCS C
http://slidepdf.com/reader/full/clase-1-compilador-ccs-c 7/31
Las Variables
Se utilizan para nombrar posiciones de memoriaRAM; se deben declarar obligatoriamente antesde utilizarlas, para ello se debe indicar el nombrey el tipo de dato que se manejara.
TIPO NOMBRE_VARIABLE [=VALOR INICIAL]
float temp_limit = 500.0 ;int valor1 = 100 ;
char Espacio= ‘ \ x20’ ;
7/15/2019 Clase 1 Compilador CCS C
http://slidepdf.com/reader/full/clase-1-compilador-ccs-c 8/31
Las variables definidas en un programa pueden ser de tipo LOCALo GLOBAL. Las variables locales solo se utilizan en la funcióndonde se encuentran declaradas. Las variables globales se puedenutilizar en todas las funciones del programa.
#include <16f877a.h>#use DELAY (clock=20000000)
int16 counter; // Variable global
Void FUNCION(void){
char K, kant =‘0’ ; // Variable local }
void main( ){
int8 temp ; // Variable local
}
Las Variables
7/15/2019 Clase 1 Compilador CCS C
http://slidepdf.com/reader/full/clase-1-compilador-ccs-c 9/31
Las variables pueden ser definidas con:
• AUTO: (Usada por defecto, no hace falta indicar) dondela variable existe mientras la función esta activa. Estasvariables no se inicializan a cero. Su valor se pierde
cuando se sale de la función.
• STATIC: Una variable local se activa como global, seinicializa en cero y mantiene su valor al entrar y salir de
la función.
• EXTERN: Permite el uso de variables en compilacionesmúltiples.
Las Variables
7/15/2019 Clase 1 Compilador CCS C
http://slidepdf.com/reader/full/clase-1-compilador-ccs-c 10/31
Los Operadores
+= Asignación de suma (x+=y es lo mismo que x=x+y)
-= Asignación de resta (x-=y es lo mismo que x=x-y)
*= Asignación de multiplicación (x*=y es lo mismo que x=x*y)
/= Asignación de división (x/=y es lo mismo que x=x/y)
%= Asignación de resto de división (x%=y es lo mismo que x=x%y)
<<= Asignación de desplazamiento a la izquierda (x<<=y es lo mismo que x=x<<y)
>>= Asignación de desplazamiento a la derecha (x>>=y es lo mismo que x=x>>y)
&= Asignación AND de bits (x&=y es lo mismo que x=x&)
|= Asignación OR de bits (x|=y es lo mismo que x=x|y)
^= Asignación OR EXCLUSIVA de bits (x^=y es lo mismo que x=x^y)
7/15/2019 Clase 1 Compilador CCS C
http://slidepdf.com/reader/full/clase-1-compilador-ccs-c 11/31
Los Operadores
+ Suma- Resta
* Multiplicación
/ División
% Módulo, resto de una división entera
-- Decremento
++ Incremento
sizeof Determina el tamaño en bytes de un operando
En las operaciones de decremento e incremento, en función de la posición del
operador, se consigue un pre-incremento (++A) o un post-incremento (A++)
a=3;
b=4*a++; // b=12 y a=4
a=3;
b=4*++a; // b=16 y a=4
7/15/2019 Clase 1 Compilador CCS C
http://slidepdf.com/reader/full/clase-1-compilador-ccs-c 12/31
Los Operadores
< Menor que
> Mayor que
>= Mayor o igual que
<= Menor o igual que
== Igual
!= Distinto
?: Expresión Condicional
! NOT
&& AND
|| OR
~ Complemento a 1
& AND
^ OR EXCLUSIVA
| OR
>> Desplazamiento a derechas
<< Desplazamiento a izquierdas
& Dirección
* Indirección
-> Puntero a estructura
Relacionales
De bits
Lógicos
Punteros
7/15/2019 Clase 1 Compilador CCS C
http://slidepdf.com/reader/full/clase-1-compilador-ccs-c 13/31
FuncionesSon bloques de sentencias; al igual que las variables, las funcionesdeben definirse antes de utilizarse.
Tipo_Dato Nombre_Funcion (tipo param1, param2, …)
{
(Sentencias);
}
int suma (int a, int b)
{
int c;
c = a + b;
return c;
}
void main ( )
{
temporal_0 = suma(3,4);
temporal_1 = suma(100,150);
}
7/15/2019 Clase 1 Compilador CCS C
http://slidepdf.com/reader/full/clase-1-compilador-ccs-c 14/31
Declaraciones de Control
El compilador CCS C admite las siguientes:
If-Else.
While.
Do-While.
For.
Switch-Case.
Return.
Break, Continue y Goto.
7/15/2019 Clase 1 Compilador CCS C
http://slidepdf.com/reader/full/clase-1-compilador-ccs-c 15/31
IF-ELSE
if (expresión)
sentencia_1;
[else
sentencia_2;]
Declaraciones de Control
if (expresión_1)
sentencia_1;[else if (expresión_2)
sentencia_2;]
[else
sentencia_3;]
if (expresión_1)
{
sentencia_1;
sentencia_2;}
[else
{
sentencia_1;sentencia_2;
sentencia_3;
}]
7/15/2019 Clase 1 Compilador CCS C
http://slidepdf.com/reader/full/clase-1-compilador-ccs-c 16/31
IF (RB0==0) B=10; <>
ELSE C=5;
IF (RB0!=1) B=10;
ELSE C=5
Declaraciones de Control
¿RB0=0?B=10 C=5
7/15/2019 Clase 1 Compilador CCS C
http://slidepdf.com/reader/full/clase-1-compilador-ccs-c 17/31
SWITCH-CASEswitch (expresión)
{
case constante 1:
sentencias;break;
case constante 2:
sentencias;
break;
… [default:
sentencias;]
}
Evalúa la expresión y enorden a la CONSTANTEadecuada realiza lassentencias asociadas. Sininguno de los CASE
corresponde a laCONSTANTE se ejecutaDEFAULT (este comandoes opcional)
El comando BREAKprovoca la salida delSWITCH, de lo contariose ejecuta el siguienteCASE.
Declaraciones de Control
7/15/2019 Clase 1 Compilador CCS C
http://slidepdf.com/reader/full/clase-1-compilador-ccs-c 18/31
Switch (A) {
case 0:
B=1;
break;
case 2:B=2;
break;
case 3:
B=3;break;
default: break;
}
Declaraciones de Control
¿A=0? B=1
¿A=2? B=2
¿A=3? B=3
NO
SI
NO
SI
SI
NO
7/15/2019 Clase 1 Compilador CCS C
http://slidepdf.com/reader/full/clase-1-compilador-ccs-c 19/31
FOR for (inicialización ; condición de finalización ; incremento)
{
sentencias;
}
Declaraciones de Control
N=1
N<=10
Imprimir N
N=N+1
SI NO
for (N=1; N<=10; N++)
{
Printf (“%u”,N );
}
7/15/2019 Clase 1 Compilador CCS C
http://slidepdf.com/reader/full/clase-1-compilador-ccs-c 20/31
WHILEwhile (expresión)
{
sentencias
}
DO-WHILE Do
{
sentencias;
}while (expresión);
Declaraciones de Control
DO-WHILE se diferencia del WHILE y del FOR en lacondición de finalización la cual se evalúa al final debucle, por lo que las sentencias se ejecutan al menosuna vez.
7/15/2019 Clase 1 Compilador CCS C
http://slidepdf.com/reader/full/clase-1-compilador-ccs-c 21/31
Declaraciones de Control
N=5
Y
M<10
A=1B=2
N=5
Y
M<10
A=1
B=2
While (N>5 && M<10)
{
A=1;
B=2;
}
Do
{ A=1;
B=2;
}
While (N>5 && M<10);
7/15/2019 Clase 1 Compilador CCS C
http://slidepdf.com/reader/full/clase-1-compilador-ccs-c 22/31
Otros:
• Return: Se emplea para devolver datos en
funciones
• Break: Permite salir de un bucle, se utiliza
para While, For, Do y Switch.
• Goto: Provoca un salto incondicional
Declaraciones de Control
7/15/2019 Clase 1 Compilador CCS C
http://slidepdf.com/reader/full/clase-1-compilador-ccs-c 23/31
Comentarios
// Comentario que terminara al final de esta línea
/* Este comentario no finaliza al final de la línea,
sino finaliza cuando se cierre el comentario */
7/15/2019 Clase 1 Compilador CCS C
http://slidepdf.com/reader/full/clase-1-compilador-ccs-c 24/31
Directivas
7/15/2019 Clase 1 Compilador CCS C
http://slidepdf.com/reader/full/clase-1-compilador-ccs-c 25/31
Funciones
7/15/2019 Clase 1 Compilador CCS C
http://slidepdf.com/reader/full/clase-1-compilador-ccs-c 26/31
Funciones
7/15/2019 Clase 1 Compilador CCS C
http://slidepdf.com/reader/full/clase-1-compilador-ccs-c 27/31
Funciones
7/15/2019 Clase 1 Compilador CCS C
http://slidepdf.com/reader/full/clase-1-compilador-ccs-c 28/31
Funciones
7/15/2019 Clase 1 Compilador CCS C
http://slidepdf.com/reader/full/clase-1-compilador-ccs-c 29/31
Funciones
7/15/2019 Clase 1 Compilador CCS C
http://slidepdf.com/reader/full/clase-1-compilador-ccs-c 30/31
Funciones
7/15/2019 Clase 1 Compilador CCS C
http://slidepdf.com/reader/full/clase-1-compilador-ccs-c 31/31
Por: Mishell Sanchez Guevara