Date post: | 20-Feb-2018 |
Category: |
Documents |
Upload: | ivan-dorado |
View: | 288 times |
Download: | 2 times |
of 26
7/24/2019 Lenguaje C Para Ambientes Embebidos
1/26
Lenguaje C para ambientes embebidos
Dignal 2014 www.dignal.com
DIIGNAL
7/24/2019 Lenguaje C Para Ambientes Embebidos
2/26
Orientado al diseo de sistemas operativos, concretamente UNIX.
Es de un nivel medio a comparacin de otros lenguajes de alto nivel, lo
que lo hace muy bueno para programacin de MCUs.
Soportado por compiladores de una amplia variedad de arquitecturas.
Puede hacer casi cualquier cosa que el lenguaje Assembler.
C es usualmente mas fcil para escribir cdigo que el lenguaje assembler
Dignal 2014 www.dignal.com DIIGNAL
Lenguaje C
7/24/2019 Lenguaje C Para Ambientes Embebidos
3/26
C no es tan portable entre arquitecturas como se cree
Las caractersticas del ANSI C sonportables
Las Libreras de un procesador NO son portables
El cdigo de un procesador especfica (peripfricos, I/O,
interrupciones, caractersticas especiales) NO son portables
C NOes eficiente como el assembler
C Necesitausar mas memoria que el Assembler
Dignal 2014 www.dignal.com DIIGNAL
Mitos
7/24/2019 Lenguaje C Para Ambientes Embebidos
4/26
Flujo de ejecucin
C Compiler
Compiler
Archivo Fuente C Archivo Header CPreprocessor
.sArchivo Fuente Assembler
.h.c
Dignal 2014 www.dignal.com DIIGNAL
7/24/2019 Lenguaje C Para Ambientes Embebidos
5/26
Lenguaje C
Variables
Constantes
Tipos de datos
Funciones Operadores
Sentencia if
Lazo fory while
Dignal 2014 www.dignal.com DIIGNAL
7/24/2019 Lenguaje C Para Ambientes Embebidos
6/26
Una variable puede ser entendida como un contenedor que puede almacenar
datos usados en un programa
intmyVariable;
myVariable =5;
5
Dignal 2014 www.dignal.com DIIGNAL
Una variable es un nombre que representa una o maslocalizaciones de memoria usadas para tener los datos.
Variables
7/24/2019 Lenguaje C Para Ambientes Embebidos
7/26
Constantes
const vs#define
Dignal 2014 www.dignal.com
1 - static const int miConstante= 5;
2 - #define miConstante = 5;
(1) tiene smbolo en depurador (2) no lo tiene
(1) se puede pasar como puntero (2) no puede(2) Puede utilizarse como dimensin de array (1) no puede
(2) Puede utilizarse para sentencias switch (1) no puede
DIIGNAL
7/24/2019 Lenguaje C Para Ambientes Embebidos
8/26
Palabras reservadas ANSI C
Dignal 2014 www.dignal.com DIIGNAL
7/24/2019 Lenguaje C Para Ambientes Embebidos
9/26
Tipos de datos fundamentales
char
int
float
double
Caracter simple
Entero
Nmero de punto flotante simple presicin
Nmero de punto flotante doble presicin
16
8
32
64
El tamao de un entero (int)varia con compilador
MPLAB-C30 intes 16-bits
MPLAB-C18 intes 16-bits
CCS PCB, PCM & PCH intes 8-bits
Hi-Tech PICC intes 16-bits
Dignal 2014 www.dignal.com DIIGNAL
7/24/2019 Lenguaje C Para Ambientes Embebidos
10/26
Funciones
Funciones son segmentos de programa autnomos diseados
para realizar una tarea especfica, bien definida.
Todos los programas en C tienen una o mas funciones
La funcin main()es necesaria
Las funciones pueden retornar valores
Las funciones ayudan a organizar un programa en segmentos logicamente
manejables
Dignal 2014 www.dignal.com DIIGNAL
7/24/2019 Lenguaje C Para Ambientes Embebidos
11/26
Dignal 2014 www.dignal.com
Tarea2(){
...Tarea3();return;
}
Tarea3(){...return;
}
Tarea1(){...
return;}
main()
{...Tarea1();...Tarea2();
...}
Funciones
DIIGNAL
7/24/2019 Lenguaje C Para Ambientes Embebidos
12/26
Dignal 2014 www.dignal.com
typeidentifier(type1arg1,,typenargn){
Tareas a realizar
retornaexpression;
}
Tipo de dato retornado
expresion
Nombre
Parametro listado
(opcional)
Retorna Evaluacin (opcional)Cabecera
Cuerpo de la funcin
Funciones
DIIGNAL
7/24/2019 Lenguaje C Para Ambientes Embebidos
13/26
Negativo-(unary)
Sustraccin-
Positivo+(unary)
Modulo%
Adicin+
OperadoresAritmticos
Multiplicacin*
Division/
Operador resultadoOperacin ejemplo
-x
x - y
+x
x % y
x + y
x * y
x / y
Valor negativo de x
Diferencia de xe y
Valor de x
Resto de xdividido por y
Suma de xe y
Producto de xe y
Relacin de xe y
Dignal 2014 www.dignal.com
int a=5,b=5,resultado;
resultado = a + b;
7/24/2019 Lenguaje C Para Ambientes Embebidos
14/26
OperadoresRelacin
Operador Resultado (FALSE= 0, TRUE 0)Operacin Ejemplo
Igual a==
No igual a!=
Mayor que>
Mayor que o
igual a>=
Menor que= y
x < y
x
7/24/2019 Lenguaje C Para Ambientes Embebidos
15/26
if(temperatura > 35)
{
encenderVentilador();
}
Dignal 2014 www.dignal.com
OperadoresRelacin
DIIGNAL
7/24/2019 Lenguaje C Para Ambientes Embebidos
16/26
OperadoresDiferencia entre =y ==
No confundir = y ==.
if(x ==5){
ejecuta si el valor de xes 5}
Dignal 2014 www.dignal.com DIIGNAL
7/24/2019 Lenguaje C Para Ambientes Embebidos
17/26
OperadoresLogicos
Logica NOT!
Logica OR||
Logica AND&&
!x
x || y
x && y
1 if x=0, sino 0
0 Si ambos x=0e y=0,
sino 1
1 Si ambos x0y y0,
sino 0
Operador Resultado (FALSE = 0, TRUE 0)Operacion Ejemplo
En expresiones condicionales, cualquier valor no zeroes
interpretado como TRUE. Un valor 0 es siempre FALSE.
Dignal 2014 www.dignal.com DIIGNAL
7/24/2019 Lenguaje C Para Ambientes Embebidos
18/26
if((temperatura > 35) && (ventiladorOn == false))
{
encenderVentilador();
}
if((temperatura > 35) || (!ventiladorOn))
{
encenderVentilador();
}
Dignal 2014 www.dignal.com
OperadoresRelacin
AND
OR
DIIGNAL
7/24/2019 Lenguaje C Para Ambientes Embebidos
19/26
OperadoresBitwise
Operator Result (for each bit position)Operation Example
Bitwise XOR^
Bitwise NOT(Complemento a uno)
~
Bitwise AND&
Bitwise OR|
x ^ y
~x
x & y
x | y
1, if 1 in xor ybut not both
0, if 0 or 1 in both xand y
1, if 0 in x
0, if 1 in x
1, if 1 in both xand y
0, if 0 in xor yor both
1, if 1 in xor yor both
0, if 0 in both xand y
La operacin se realiza en cada Bit del primer operando con cada
Bit correspondiente del segundo operando
Dignal 2014 www.dignal.com DIIGNAL
7/24/2019 Lenguaje C Para Ambientes Embebidos
20/26
Declaracin if
expresin es evaluada para declaraciones TRUE (0) o FALSE
(=0)
Si TRUE, entonces declaracines ejecutada
Dignal 2014 www.dignal.com DIIGNAL
if(expression)
{
statement1
statement2}
expression statement
START
END
7/24/2019 Lenguaje C Para Ambientes Embebidos
21/26
Declaracin if-else
expressiones evaluada por TRUE (0)
o FALSE (=0)
Si TRUE, entonces sentencia1es
ejecutada
Si FALSE, entonces sentencia2es
ejecutada
if(expression)sentencia1elsesentencia2
Dignal 2014 www.dignal.com DIIGNAL
expression statement1
START
END
statement2
7/24/2019 Lenguaje C Para Ambientes Embebidos
22/26
if((temperatura > 35) && (ventiladorOn == false))
{
encenderVentilador();
}
else
{
apagarVentilador();
}
Dignal 2014 www.dignal.com
Declaracin if-else
DIIGNAL
7/24/2019 Lenguaje C Para Ambientes Embebidos
23/26
Lazo while
Si expresion es true, sentencia puede ser ejecutada y
entonces expresionpuede ser re-evaluada determinar puede
o no ejecutarse la sentenciaotra vez
Dignal 2014 www.dignal.com
while(expresion)sentencia
DIIGNAL
7/24/2019 Lenguaje C Para Ambientes Embebidos
24/26
Lazo For
expression1inicializa una variable de cuenta del lazo en elcomienzo del lazo (e.g. i = 0)
expression2es la condicin de testeo el lazo continua
siempre que esta sea true (e.g. i
7/24/2019 Lenguaje C Para Ambientes Embebidos
25/26
Lazo For
Dignal 2014 www.dignal.com
inti;
for(i =0;i
7/24/2019 Lenguaje C Para Ambientes Embebidos
26/26
Escape Sequences
Dignal 2014 www.dignal.com
Escape Sequence Character ASCII Value
\a
\b
\t
\n\v
\f
\r
\"\'
\?
\\
\0
BELL (alert)
Backspace
Horizontal Tab
Newline (Line Feed)
Vertical Tab
Form Feed
Carriage Return
Quotation Mark (")Apostrophe/Single Quote (')
Question Mark (?)
Backslash (\)
Null
7
8
9
10
11
12
13
3439
63
92
0