Lenguaje C Para Ambientes Embebidos

download Lenguaje C Para Ambientes Embebidos

of 26

Transcript of Lenguaje C Para Ambientes Embebidos

  • 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