TEMA_04 Programacion C

download TEMA_04 Programacion C

of 98

Transcript of TEMA_04 Programacion C

  • 8/17/2019 TEMA_04 Programacion C

    1/98

     

    Tema 4INTRODUCCION AL LENGUAJE C

  • 8/17/2019 TEMA_04 Programacion C

    2/98

     

    Microcontroladores: Tema 4

    2

    Programación

  • 8/17/2019 TEMA_04 Programacion C

    3/98

     

    Microcontroladores: Tema 4

    3

    ¿Qué es el lenguaje C? 

    • Es un lenguaje de propósito general inventado en

    Bell-labs por Dennis itc!ie entre "#$# % "#&'

    • Es actualmente el lenguaje m(s usado

    • De este lenguaje se derivan)

     * C++,C, D, .o, /ava, /ava0cript, 1imbo, 1PC,

    Perl, P2P, P%t!on,

    • En3ocado para plata3ormas cru4adas % portabilidad• E5iste un est(ndar 607 cu%a 8ltima revisión es

    60796EC #:##);

  • 8/17/2019 TEMA_04 Programacion C

    4/98

     

    Microcontroladores: Tema 4

    4

    1a re3erencia obligada de C 

    !ttp)99===>ama4on>com9C-Programming-1anguage-;nd-Edition9dp9

  • 8/17/2019 TEMA_04 Programacion C

    5/98

     

    Microcontroladores: Tema 4

    5

    ¿entajas del C sobre @ssembler ? • Permite trabajar en un ma%or nivel de abstracción Aue

    assembler

    • Programas m(s legibles

    • acilidad para el mantenimiento

    • Programas con ma%or portabilidad a otrosmicrocontroladores arAuitecturas

    • a%or productividad de los programadores

    • enor curva de aprendi4aje al cambiar de micro

    • 0e !ace cada ve4 m(s popular para aplicaciones embebidasa medida Aue los microcontroladores tienen cada ve4 mas@ % 7

    • .ran cantidad de código libre disponible>

  • 8/17/2019 TEMA_04 Programacion C

    6/98

     

    Microcontroladores: Tema 4

    6

    ¿Fiene desventajas? • Esconde complejidad % puede ser peligroso en ciertas

    aplicaciones

    • Es m(s di3icil controlar rutinas crGticas en tiempo>

    •  Ho se puede utili4ar en microcontroladores con poca

    capacidad de @ % 7

    • En aplicaciones embebidas es importante revisar lae3iciencia del compilador 

    • E5iste siempre un trade-o33 entre velocidad % tamaIo del

     programa lo Aue se le conoce como optimi4ación

    • 0u uso reAuiere Aue los programadores tengan !abilidadesmu% di3erentes Aue los programadores de desJ-top>

  • 8/17/2019 TEMA_04 Programacion C

    7/98

     

    Microcontroladores: Tema 4

    7

    Programa en C• Esta 3ormado de 3unciones % variables

    • unciones

     *  Contienen los estatutos de las acciones a reali4ar 

    • Declaraciones• @signaciones

    • 1lamados a 3unciones

    • Control

    •  Hulo• ariables

     *  @lmacenan los valores Aue ser(n utili4ados en losc(lculos

  • 8/17/2019 TEMA_04 Programacion C

    8/98

     

    Microcontroladores: Tema 4

    8

  • 8/17/2019 TEMA_04 Programacion C

    9/98

     

    Microcontroladores: Tema 4

    9

    2eader iles

    • El directivo includeKarc!ivo>!L es usado para indicaral compilador los arc!ivos de encabe4ado utili4ados

    • 1os arc!ivos de encabe4ados o M!eader 3ilesN como

    stdio>! contienen los prototipos de 3unciones %de3inición de variables Aue ser(n utili4adas en el

     programa cuando estos reAuieren utili4ar una biblioteca libreria e5terna u otros arc!ivos de código

    • En el lenguaje C las 3unciones reAuiren ser declaradasantes de ser llamadas

     

  • 8/17/2019 TEMA_04 Programacion C

    10/98

     

    Microcontroladores: Tema 4

    10

    ariables

    • 1as variables en lenguaje C deben de ser

    declaradas antes de ser utili4adas, est(n

    3ormadas por) *  Hombre

     * Fipo

     * 7pcionalmente su valor inicial

  • 8/17/2019 TEMA_04 Programacion C

    11/98

     

    Microcontroladores: Tema 4

    11

     Hombres de variables

    • Deben empe4ar con letras o MON guión bajo

    • Pueden contener n8meros pero H7

     * 0ignos aritméticos, puntos, apóstro3es, palabrasreservadas de C, sGmbolos especiales

    ,?>>>etc

    • @gregar el MON entre palabras le da ma%or

    legibilidad a las variables * iariableEntera miOvariableOentera

    El guión bajo al inicio se utili4a en la codi3icación de librerias

    !a% Aue evita usarlo en programas

  • 8/17/2019 TEMA_04 Programacion C

    12/98

     

    Microcontroladores: Tema 4

    12

    Fipos de ariable

    • De3ine el tamaIo % tipo de almacenamiento de lavariable, los principales)

     *  void Ho de3ine nada

     *  c!ar Caracter un caracter o b%te

     *  int Entero dos b%tes

     *  long Entero cuatro b%tes *  3loat Punto 3lotante precisión simple cuatro b%tes

     *  double Punto 3lotante pres> doble oc!o b%tes

  • 8/17/2019 TEMA_04 Programacion C

    13/98

     

    Microcontroladores: Tema 4

    13

    Declaración de ariables

    • 1as variables deben de ser declaradas antes de

    usarlas, una declaración especi3ica el tipo % una lista

    de una o m(s variables de este tipo)

    int i,j,k;char mi_char1,mi_char2;

    • 1as variables pueden ser iniciali4adas en la

    declaración)int i = 0;

    char mi_char = 'a';

  • 8/17/2019 TEMA_04 Programacion C

    14/98

     

    Microcontroladores: Tema 4

    14

    Constantes

    • E5isten cinco tipo de constantes

    strings: “Hola mundo”

    char: 'a'

    integer: 123

    !loat: 123"3#

    long: $%&$%&(

  • 8/17/2019 TEMA_04 Programacion C

    15/98

     

    Microcontroladores: Tema 4

    15

    Base numérica

    • Como en ensamblador, en C se pueden especi3icar

    di3erentes bases numéricas para 3acilitar legibilitad

     * )*+ -./ -( * 4ecimal ninguno 123 * ctal 0 0&23

     * He5 05 052* 

  • 8/17/2019 TEMA_04 Programacion C

    16/98

     

    Microcontroladores: Tema 4

    16

    7peradores aritméticos

    • E5isten & operadores aritméticos

    • 6 +uma• 7 .esta• 8  ulti9licacin• dimdulo?• 66 incrementar• 77 decrementar

  • 8/17/2019 TEMA_04 Programacion C

    17/98

     

    Microcontroladores: Tema 4

    17

    7peraciones a bit bit=ise

    • C provee operadores para manipulación a nivel bit

    % son v(lidos para operandos c!ar, s!ort, int, longsignados o no

    • @  *A4• B . >Carra?• D E. >gorrito?

    • F  AG >tilde?• rotacin derecha• II rotacin iJKuierda

  • 8/17/2019 TEMA_04 Programacion C

    18/98

     

    Microcontroladores: Tema 4

    18

    Ejemplo de operaciones a bit

    unsigned char a = 05##;

    a = a @ 050/0;

    a = a B 050%2;

    <

  • 8/17/2019 TEMA_04 Programacion C

    19/98

     

    Microcontroladores: Tema 4

    19

    Ejemplo de operaciones a bit

    unsigned char a = 05##;

    a = a @ 050/0;

    a = a B 050%2;

    <

  • 8/17/2019 TEMA_04 Programacion C

    20/98

     

    Microcontroladores: Tema 4

    20

    Ejemplos operadores bit=ise

    nciende Cit 0 de 9uerto )

    -.G) = -.G) B 0501

    *9aga el Cit 1 del 9uerto )-.G) = -.G) @ 05/4 05/ = 11111101

    .ecorre Cits hacia la iJKuierda

  • 8/17/2019 TEMA_04 Programacion C

    21/98

     

    Microcontroladores: Tema 4

    21

    epresentación alternativa

    cuando operador es el mismo despues de Rnciende Cit 0 de 9uerto )

    -.G) = -.G) B 0501

    GamCien se 9ude escriCir asM

    -.G) B= 0501

    *9aga el Cit 1 del 9uerto )

    -.G) = -.G) @ 05/4 05/ = 11111101

    GamCien se 9ude escriCir asM-.G) @= 05/4

    1as e5presions en lenguaje C pueden ser escritas de varias 3ormas

    !a% Aue privilegiar la claridad sobre la e3iciencia en codi3icar ergo es m(s

    legible P7FB R P7FB S org9

  • 8/17/2019 TEMA_04 Programacion C

    22/98

     

    Microcontroladores: Tema 4

    22

    7peradores relacionales % lógicos• 1os relacionaes son empleados en e5presiones para

    comparar dos operandos, si la comparación esverdadera el resultado < si 3alsa % di3erente de < si

    verdadera• == igual a >dos iguales?• N= no igual a

    •  maLor Kue

    • =  maLor o igual Kue

    • I  menor Kue

    • I=  menor igual Kue

    • @@ L >lgico?

    • BB o >lgico?

    • N no >lgico?

  • 8/17/2019 TEMA_04 Programacion C

    23/98

     

    Microcontroladores: Tema 4

    23

    Ejemplos de operadores relacionales % lógicos

    !> N>*4OG( @ 05%0??PestatutosQ

    +i Cit & no es uno ejecuta estatutos

    !> i 0 @@ j I 10??PestatutosQ

    +i maLor Kue 0 L menor Kue 10 ejecuta

    estatutos

    !>a1 == a2 ?PestatutosQ+i a1 igual a a2 ejecuta estatutos 

  • 8/17/2019 TEMA_04 Programacion C

    24/98

     

    Microcontroladores: Tema 4

    24

    Precedence o3 operators in C

  • 8/17/2019 TEMA_04 Programacion C

    25/98

     

    Microcontroladores: Tema 4

    25

    Control de 3lujo i3 • El estatuto i3  es condicional, si la condición es

    evaluada como MunoN o verdadera, los estatutos se

    ejecutan,

    • i!>e59resion?PestatutosQ

    • Ejemplo• i!>a C?P

      sum = sum 6 2; otra !orma sum 6=2Q

  • 8/17/2019 TEMA_04 Programacion C

    26/98

     

    Microcontroladores: Tema 4

    26

    Control de 3lujo i3-else

    • El estatuto i3-else permite Aue se ejecuten estatutosen caso de evaluacion uno % cero

    • i!>e59resion?PestatutosQelsePestatutosQ

    • Ejemplo• i!>aN=0?P

      r = C; 

    Q else P  r = c;

    Q

    El estatuto i3-else puede ser reempla4ado por el estatuto ? Como sigue

    rRaTR

  • 8/17/2019 TEMA_04 Programacion C

    27/98

     

    Microcontroladores: Tema 4

    27

    Control de 3lujo s=itc!

    • El estatuto s=itc! es multi opciones basado en el

    valor de las e5presiones de control• sRitch>e59resion?P

    case const1: Pe59resions1

      Q Creak;

    case const2: Pe59resions2

      Q Creak;

    case constn: Pe59resionsn  Q Creak;

    de!ault: Pe59resionsdQ

    Q

  • 8/17/2019 TEMA_04 Programacion C

    28/98

     

    Microcontroladores: Tema 4

    28

    Control de 3lujo s=itc!

    • Ejemplo de s=itc!• sRitch>i2?P

    case 0:  9rint!>“ceroSn”?;

       Creak;

    case 1:  9rint!>“unoSn”?;

       Creak;

    case 2:  9rint!>“dosSn”?;

       Creak;de!ault:  9rint!>“no

  • 8/17/2019 TEMA_04 Programacion C

    29/98

     

    Microcontroladores: Tema 4

    29

    Control de 3lujo 3or-loop

    • Ejecuta un ciclo donde e5p" % e5p' sonasignaciones % e5p; es una e5presion relacional

     * !or>e591;e592;e593?PestatutosQ; 

  • 8/17/2019 TEMA_04 Programacion C

    30/98

     

    Microcontroladores: Tema 4

    30

    Control de 3lujo 3or-loop

    • Ejemplo, calcula la suma de loscuadrados de enteros del " al #

    sum = 0;

    !or>i=1;iI10;i66?Psum = sum 6 i8i;Q

     

  • 8/17/2019 TEMA_04 Programacion C

    31/98

     

    Microcontroladores: Tema 4

    31

    Control de 3lujo =!ile

    • ientras una e5presión sea di3erente de cero, el

    =!ile repite un bloAue de código> Cada ciclo se

    evalua % no termina !asta Aue la evaluación en la

    e5presión sea cero

     Rhile>e59resin?PestatutosQ;

  • 8/17/2019 TEMA_04 Programacion C

    32/98

     

    Microcontroladores: Tema 4

    32

    Control de 3lujo =!ile

    • Ejemplo) espera !asta Aue la condición secumpla)

    i=1;

     Rhile>iI#?P  a66;

      i66;

    Q;

    • epite el proceso para siempre Rhile>1?P  a66;

    Q;

  • 8/17/2019 TEMA_04 Programacion C

    33/98

     

    Microcontroladores: Tema 4

    33

    Control de 3lujo do-=!ile

    • El =!ile veri3ica la e5presión al incio, el

    do-=!ile veri3ica la e5presión al 3inal por lo

    Aue el cuerpo de estatutos se reali4a almenos una ve4

    doP

    estatutosQ Rhile>e59resin?;

  • 8/17/2019 TEMA_04 Programacion C

    34/98

     

    Microcontroladores: Tema 4

    34

    Control de 3lujo do-=!ile

    • Ejemplo, desplegar en pantalla los digitos

    del # al "

    int digito = $;• doP

     9rit!>“d”,digito?;

    digito = digito 71; Rhile>digito =1?;

  • 8/17/2019 TEMA_04 Programacion C

    35/98

     

    Microcontroladores: Tema 4

    35

    Control de 3lujo goto

    • El goto causa Aue el control sea trans3erido

    directamente al estatuto con la etiAueta Aue

    se debe de encontrar dentro de la misma3unción>

    goto etiKueta;

    • 0e recomienda evitar su uso porAue rompecon el concepto de programaciónestructurada

  • 8/17/2019 TEMA_04 Programacion C

    36/98

     

    Microcontroladores: Tema 4

    36

    Control de 3lujo goto

    • Ejemplo)

    i! >i 100? goto error_!atal;

    88888888

    error_!atal:  9rint!>“TG/Sn”?;

    return>1?;

  • 8/17/2019 TEMA_04 Programacion C

    37/98

     

    Microcontroladores: Tema 4

    37

    Entrada % 0alida

    • 1as prestacions de entrada % salida no

    3orman parte del lenguaje C

    • 0e !a de3inido por est(ndar incluir unalibrerGa de entrada % salida asociadas aldispositivo est(ndar tipicamente pantalla %

    teclado llamada 0FD67

  • 8/17/2019 TEMA_04 Programacion C

    38/98

     

    Microcontroladores: Tema 4

    38

    Entrada % 0alida

    • int getc!ar

     * egresa el caracter disponible en el dispositivo

    estandar char 5chr;

    5chr = getchar>?;

    • int putc!arint

     * 0aca un caracter por el dispositivo estandar

     9utchar>'a'?;

  • 8/17/2019 TEMA_04 Programacion C

    39/98

     

    Microcontroladores: Tema 4

    39

    Entrada % 0alida

    • int putsconst c!ar Ws

     *  0aca el string cadena apuntada por s

     9uts>“Ourso de microcontroladoresSn”?;

    • int print33ormato, arg",arg;>>>>argn

     *  Convierte % 3ormatea e imprime los argumentos>

     9rint!>“Ualor = d ”,

  • 8/17/2019 TEMA_04 Programacion C

    40/98

     

    Microcontroladores: Tema 4

    40

    Especi3icadores de 3ormato

    • c character• d decimal >integer? numCer >Case 10?• e e59onential !loating79oint numCer

    • ! !loating79oint numCer• i integer >Case 10?• o octal numCer >Case %?• s a string o! characters

    • u unsigned decimal >integer? numCer• 5 numCer in he5adecimal >Case 1?• 9rint a 9ercent sign• S 9rint a 9ercent sign

  • 8/17/2019 TEMA_04 Programacion C

    41/98

     

    Microcontroladores: Tema 4

    41

    unciones• 1os programas en C se constru%en con

    3unciones

    • Una 3unción no puede ser declarada dentro

    de otra 3unción

    • 1a misma 3unción puede ser llamada en

    varios lugares dentro del programa

    • .eneralmente procesan la in3ormaciónalimentada por el MllamanteN % le regresa unsolo valor 

  • 8/17/2019 TEMA_04 Programacion C

    42/98

     

    Microcontroladores: Tema 4

    42

    unciones• 1a in3ormación se pasa por medio de

    argumentos o par(metros

    • El resultado de la 3unción se trans3iere al

    llamante mediante el estatuto MreturnN

    • 1as 3unciones pueden aceptar % regresarvalores vacios o nulos void

    • 1as 3unciones pueden llamarse a si mismasecursividad

  • 8/17/2019 TEMA_04 Programacion C

    43/98

     

    Microcontroladores: Tema 4

    43

    unciones

    • Declaración de una 3unción

    tL9e !unction_name> 9aram1,"""?P

    estatutos

    Q

  • 8/17/2019 TEMA_04 Programacion C

    44/98

     

    Microcontroladores: Tema 4

    44

    unciones

    • El tipo de retorno *  Puede ser cualAuier tipo v(lido c!ar,int,long,3loat etc>>

    int !unction1>,,,?  .eturns tL9e int

    !loat !unction2>,,,?  .eturns tL9e !loat

    ,,,?  .eturns nothing

    • El nombre de la 3unción *  CualAuier nombre mientras cumpla con las reglas de C

  • 8/17/2019 TEMA_04 Programacion C

    45/98

     

    Microcontroladores: Tema 4

    45

    unciones

    • 1a lista de par(metros  *  0on los valores pasados a la 3unción cuando es llamada

    long cuCe>long 5? 

    int 5, !loat L, char J?

  • 8/17/2019 TEMA_04 Programacion C

    46/98

     

    Microcontroladores: Tema 4

    46

    unciones

    • ariables locales *  0e declaran dentro de la 3unción % son privadas por lo Aue el

    nombre puede repetirse en otras 3unciones

    int !unction1>int L?

    Pint a, C=10;

    char mL_char;V"

    Q

  • 8/17/2019 TEMA_04 Programacion C

    47/98

     

    Microcontroladores: Tema 4

    47

    unciones

    • El valor de retorno *  0e emplea el estatuto MreturnN el cual regresa el valor

    especi3icado % el control del programa al código llamante>

     *  0e pueden tener varios MreturnsN dentro de la misma 3unción

     int great_than>int a, int C?P

    i! >a C?

    return a;else

    return C;

    Q

  • 8/17/2019 TEMA_04 Programacion C

    48/98

     

    Microcontroladores: Tema 4

    48

    unciones

    • El prototipo de la 3unción * Fodo programa debe de incluir un prototipo de toda

    3unción utili4ada

     * El prototipo es la de3ición 3ormal Aue le indica alcompilador el tipo de returno % de sus argumentos>

     * Puede estar de3inida en el programa o en losarc!ivos de encabe4ado W>!

  • 8/17/2019 TEMA_04 Programacion C

    49/98

     

    Microcontroladores: Tema 4

    49

  • 8/17/2019 TEMA_04 Programacion C

    50/98

     

    Microcontroladores: Tema 4

    50

    unciones

    • 1lamados * 1a 3unción puede ser llamada al colocar su nombre

    % argumentos, si regresa valor % no se iguala a nada

    el valor se pierde>  maLor_Kue>100,200?;

     * 1as 3unciones Aue regresan valor pueden serllamadas desde e5presiones u otras 3unciones)

     9rint!>“Snl maLor !ue: d“, maLor_Kue>5,L??;

     

    i!> 5  maLor_Kue>5,L?? 9rint!>“Sn 5 es maLor”?; 

  • 8/17/2019 TEMA_04 Programacion C

    51/98

     

    Microcontroladores: Tema 4

    51

    @puntadores

    • 1as variables almacenan datos, los

    apuntadores almacenan direcciones dememoria

    tL9e_name 89ointer_name 

    int 8a9tr;  4eclara un a9untador a entero llamado a9tr

      int *,); 4eclara un 9ar de

  • 8/17/2019 TEMA_04 Programacion C

    52/98

     

    Microcontroladores: Tema 4

    52

    @rreglo

    • Es un conjunto de localidades de

    almacenamiento Aue tienen un mismo

    nombre % tipo>

    ariables @rreglo

  • 8/17/2019 TEMA_04 Programacion C

    53/98

     

    Microcontroladores: Tema 4

    53

    @rreglos Unidimensionales

    • Fienen solamente un Gndice 

    int  mi_arregloW12X;

     

     mi_arregloW0X mi_arregloW1X mi_arregloW3X  mi_arregloW11X

    Elemento del

    arreglo

    6ndice, su rango para un arreglo de n elementos

    es de < a n-"

    Fipo Hombre Cantidad de elementos

  • 8/17/2019 TEMA_04 Programacion C

    54/98

     

    Microcontroladores: Tema 4

    54

    @rreglos

    • El elemento de un arreglo puede ser empleadocomo cualAuier otra variable>

     mi_arregloWX = 13;

     mi_arregloW3X = mi_arregloW0X;

      mi_arregloW#X = otro_arregloW122X;

    • 0e pueden usar e5presiones como Gndice del arreglo

    variables en Gndice siempre enteras>

     mi_arregloWi61X = 13;

     mi_arregloWi82X = 2;

      mi_arregloW mis_indicesW2XX= 5;

  • 8/17/2019 TEMA_04 Programacion C

    55/98

     

    Microcontroladores: Tema 4

    55

    @rreglos ultidimensionales

    • Fienen m(s de dos indices no !a% lGmite 

    !loat taClaWXW%X;

     

    taClaW0XW0X taClaW0XW1X taClaW0XW2X taClaW0XW&X>>>

    taClaW1XW0X taClaW1XW1X taClaW1XW2X taClaW1XW&X>>>

    taClaW2XW0X taClaW2XW1X taClaW2XW2X taClaW2XW&X>>>

    taClaW#XW0X taClaW#XW1X taClaW#XW2X taClaW#XW&X>>>

    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

  • 8/17/2019 TEMA_04 Programacion C

    56/98

     

    Microcontroladores: Tema 4

    56

    cuCoW0XW0XW1X cuCoW0XW1XW1X cuCoW0XW2XW1XcuCoW0XW3XW1X

    cuCoW0XW3XW1X

    cuCoW1XW0XW0X cuCoW1XW1XW0X cuCoW1XW2XW0XcuCoW1XW3XW1X

    cuCoW1XW3XW1X

    cuCoW2XW0XW0X cuCoW2XW1XW0X cuCoW2XW2XW0XcuCoW2XW3XW1X

    cuCoW2XW3XW1X

    cuCoW3XW0XW0X cuCoW3XW1XW0X cuCoW3XW2XW0XcuCoW3XW3XW1X

    cuCoW3XW3XW1X

    cuCoWXW0XW0X cuCoWXW1XW0X cuCoWXW2XW0XcuCoWXW3XW1X

    cuCoWXW3XW1X

    @rreglos ultidimensionales

      char cuCoW#XWXW2X; 

    cuCoW0XW0XW0X cuCoW0XW1XW0X cuCoW0XW2XW0X cuCoW0XW3XW0X

    cuCoW1XW0XW0X cuCoW1XW1XW0X cuCoW1XW2XW0X cuCoW1XW3XW0X

    cuCoW2XW0XW0X cuCoW2XW1XW0X cuCoW2XW2XW0X cuCoW2XW3XW0X

    cuCoW3XW0XW0X cuCoW3XW1XW0X cuCoW3XW2XW0X cuCoW3XW3XW0X

    cuCoWXW0XW0X cuCoWXW1XW0X cuCoWXW2XW0X cuCoWXW3XW0X

    Mi t l d T 4

  • 8/17/2019 TEMA_04 Programacion C

    57/98

     

    Microcontroladores: Tema 4

    57

    6niciali4ación de arreglos

      int mi_arregloWX = P1,23,,1000Q;

      int mi_arregloWX = P1,23,,1000Q; 

    int mi_taClaW2XW3X = P1,2,3,,#,Q;

      int mi_taClaW2XW3X = PP1,2,3Q,P,#,QQ; 

    Mi t l d T 4

  • 8/17/2019 TEMA_04 Programacion C

    58/98

     

    Microcontroladores: Tema 4

    58

    Microcontroladores Tema 4

  • 8/17/2019 TEMA_04 Programacion C

    59/98

     

    Microcontroladores: Tema 4

    59

    @puntadores % @rreglos

    • CualAuier operación Aue se pueda reali4ar con indicesen los arreglos se puede reali4ar usando apuntadores>

     

    int a5W20X;Y 4eclara *rreglo de 20 enteros

      int 8i9; 4eclara a9untador a enteros

      i9 = @a5W0X -asa a i9 direccion elemento 0 arreglo

    (os siguientes estatutos:

      a5W0X = 0501; Zuardamos 0501 a elemento 0

      a5W1X = 0502; Zuardamos 0502 a elemento 1

    9ueden hacer con a9untadores asi:

      8i9 = 0501 Zuardamos 0501 a9untador elemento 0 

    i9 = i9 61; ncrementanmos a siguiente elemento

      8i9 = 0502 Zuardamos 0502 a9untador elemento 1 

    Microcontroladores: Tema 4

  • 8/17/2019 TEMA_04 Programacion C

    60/98

     

    Microcontroladores: Tema 4

    60

    Microcontroladores: Tema 4

  • 8/17/2019 TEMA_04 Programacion C

    61/98

     

    Microcontroladores: Tema 4

    61

    Paso de arreglos a 3unciones• 0e puede usar un arreglo como argumento de 3unciónint 9romedio>int,int arrWX?;Y -rototi9o !uncion

      ?P

      int arregloW2#X; *lmacenar[ 2# enteros 9ara 9romedio

      as estatutos Kue introducen los elementos al arreglo

      9rint!>“-romedio= dSn”, 9romedio>2#,arreglo??;

      Q

      int 9romedio>int n,int arrWX?P /uncion de 9romedio

      int i;

      total = 0;

      !or>i=0;iIn;i66? P

      total = total 6 arrWiX; +uma elemento i

    Q

    return>totaln?;

      Q 

    Microcontroladores: Tema 4

  • 8/17/2019 TEMA_04 Programacion C

    62/98

     

    Microcontroladores: Tema 4

    62

    Estructuras• Una estructura es un conjunto de variables agrupada

     bajo un mismo nombre para 3acilitar su manipulación

    struct coord P  +e declara la estructura int 5; int L;

    Q?Pstruct coord 9os1,9os2; +e declaran dos instancias de coord(os elementos de la estructura se usan como cualcuier

  • 8/17/2019 TEMA_04 Programacion C

    63/98

     

    Microcontroladores: Tema 4

    63

    Estructuras

    • 1as estructuras pueden contener arreglos %apuntadores dentro de sus elementos

    • 0e pueden también !acer arreglos deestructuras

    Microcontroladores: Tema 4

  • 8/17/2019 TEMA_04 Programacion C

    64/98

     

    Microcontroladores: Tema 4

    64

    Uniones

    • uera del alcance del curso

    Microcontroladores: Tema 4

  • 8/17/2019 TEMA_04 Programacion C

    65/98

     

    Microcontroladores: Tema 4

    65

    @lcance de variables 0cope

    • El alcance se re3iere a Aue partes del programa pueden accesar una variable dic!o de otro

    modo, donde es visible>

    • El alcance de3ine también el tiempo Aue

     perdurar( la variable en memoria

    Microcontroladores: Tema 4

  • 8/17/2019 TEMA_04 Programacion C

    66/98

     

    Microcontroladores: Tema 4

    66

    @lcance de variables 0cope

    3unción

    3unción

    vars

    3unción

    Variables

    3unción

    3unción

    3unción

    vars

    3unción

    3unción

    vars

    3unción

    3unción

    3unción

    3unción

    Variables

    Variables

    Microcontroladores: Tema 4

  • 8/17/2019 TEMA_04 Programacion C

    67/98

     67

    ariables E5ternas

    • Usadas cuando un programa es dividido en varios

    arc!ivos para 3acilitar su mantenimiento % con ello sele indica al compilador Aue la variable con ese nombre

    es la misma para todo el programa como Auiera setiene Aue declarar donde sea usada

    e5tern int 5; Ualida o gloCal 9ara todo el 9rograma

  • 8/17/2019 TEMA_04 Programacion C

    68/98

     68

    ariables autom(ticas % est(ticas• 1as variables son por de3ault autom(ticas se

    destru%en al salir de la 3unción salvo Aue se

    especi3iAue lo contrario est(ticas

    int !uncin1 P

  • 8/17/2019 TEMA_04 Programacion C

    69/98

     69

    ariables egistro

    • 1e indica al compilador Aue la variable ser(

    almacenada en un registro del procesador en lugar dela memoria convencional>

    Microcontroladores: Tema 4

  • 8/17/2019 TEMA_04 Programacion C

    70/98

     70

    Compilador CC":

    • Fipos de datos % lGmites

    Microcontroladores: Tema 4

  • 8/17/2019 TEMA_04 Programacion C

    71/98

     71

    Compilador CC":

    • Fipos de datos % lGmites

    Microcontroladores: Tema 4

  • 8/17/2019 TEMA_04 Programacion C

    72/98

     72

    Compilador CC":

    • Clases de almacenamiento

     * @uto,0tatic, E5tern, egister, 7verla%

    • Clase 7verla%

     * Permite Aue Aue varias variables compartan las

    mismas localidades de memoria con el 3in de

    optimi4ar el uso de la memoria @>

     * 0olo puede aplicarse en variables locales porAuese destru%en

    Microcontroladores: Tema 4

  • 8/17/2019 TEMA_04 Programacion C

    73/98

     73

    Compilador CC":

    • Constantes numéricas

     * 0e soporta el pre3ijo

  • 8/17/2019 TEMA_04 Programacion C

    74/98

     74

    Compilador CC":

    • Constantes tipo string

     * El compilador almacena automaticamente todos los

    strings cadenas de caracteres en la memoria de programa 7 dentro de un (rea especial llamada

    MstringtableN

     * Debido a lo anterior e5isen X variantes para las

    3unciones est(ndares Aue accesan strings cadenas

    Microcontroladores: Tema 4

  • 8/17/2019 TEMA_04 Programacion C

    75/98

     75

    Compilador CC":

    • Ensamblador dentro de C

     * El CC": permite escribir bloAues de código usando

    lenguaje ensamblador 

     * El bloAue debe de empe4ar con Oasm % 3inali4ar con Oendasm>

    Microcontroladores: Tema 4

  • 8/17/2019 TEMA_04 Programacion C

    76/98

     76

    Compilador CC":

    • Ensamblador dentro de C

    Microcontroladores: Tema 4

  • 8/17/2019 TEMA_04 Programacion C

    77/98

     77

    Compilador CC":

    • Ensamblador dentro de C

    Microcontroladores: Tema 4

  • 8/17/2019 TEMA_04 Programacion C

    78/98

     78

    Compilador CC":

    • anipulación de bits * 0e puede utili4ar las operaciones lógicas a nivel b%te

     para manipular bits, por ejemplo)

      -.G4 = -.G4 B 05%1; -uerto 4 = -uerto 4 . 05%1  -.G4 B= 0E%1

    < " " < < < "

  • 8/17/2019 TEMA_04 Programacion C

    79/98

     79

    Compilador CC":

    • anipulación de bits 

    -.G4 = -.G4 @ 05O3; -uerto 4 = -uerto 4 *A4 05O3  -.G4 @= 0EO3

    " " < " < " " "P7FD

    " " < < < < " "

  • 8/17/2019 TEMA_04 Programacion C

    80/98

     80

    Compilador CC":

    • anipulación de bits 

    -.G4 = -.G4 D 05%; -uerto 4 = -uerto 4 E. 05%  -.G4 D= 0E%

    " " < " < " " "P7FD

    " < < < < " < "

  • 8/17/2019 TEMA_04 Programacion C

    81/98

     81

    Compilador CC":

    • esumen de manipulación de bits * Para !acer < algunos bits de un registro o variable se

    reali4a un AND con una m(scara Aue tiene < en las

     posiciones de bit Aue reAuieren ser borradas

     * Para !acer " algunos bits, se reali4a un OR  con unam(scara Aue tiene " en las posiciones Aue se desean!acer "

     * Para cambiar de estado algunos bits, se reAuiere un

    XOR con una m(scara Aue tiene " en las posiciones

    Aue se desea cambiar de estado < a " % visceversa,

    Microcontroladores: Tema 4

  • 8/17/2019 TEMA_04 Programacion C

    82/98

     82

    Compilador CC":

    • anejo de bits por medio de arc!ivos deencabe4ado especG3icos>

     * icroc!ip provee arc!ivos encabe4ado Aue permiten la manipulación de bits de los

    registros 0 de una manera m(s directa>

    Microcontroladores: Tema 4

  • 8/17/2019 TEMA_04 Programacion C

    83/98

     83

    Compilador CC":

    • anejo de bits por medio de arc!ivos de encabe4adoespecG3icos>

    Microcontroladores: Tema 4

  • 8/17/2019 TEMA_04 Programacion C

    84/98

     84

    Compilador CC":

    • anejo de bits por medio de arc!ivos de encabe4adoespecG3icos>

    WWWWWWWWWWWWWW

    99Contiene la de3inición de bits

    Microcontroladores: Tema 4

  • 8/17/2019 TEMA_04 Programacion C

    85/98

     85

    Compilador CC":

    • 1os arc!ivos de encabe4ado también proveen acros de procesos escritos en ensamblador para reali4ar operacionesno disponibles en C>

    Microcontroladores: Tema 4

  • 8/17/2019 TEMA_04 Programacion C

    86/98

     86

    Compilador CC":

    • El directivo pragma

     * Es utili4ado para controlar el comportamiento

    del compilador> Pueden ser utili4adas para

    de3inir espacios en memoria, interrupcionesetc> Es una manera de especi3icar cosas Auesalen del est(ndard de C % es especG3ico de la

    implementación>

    Microcontroladores: Tema 4

  • 8/17/2019 TEMA_04 Programacion C

    87/98

     87

    e4clando C % Ensamblador 

    • Es posible llamar 3unciones escritas enensamblador desde un programa en C o bien,3unciones escritas en C desde un programa de

    ensamblador>

    • Este tipo llamados Aueda 3uera del alcance del

    curso

    Microcontroladores: Tema 4

  • 8/17/2019 TEMA_04 Programacion C

    88/98

     88

    0tartup Code

    • Cuando el microcontrolador es reiniciado, ladireccion de inicio es la

  • 8/17/2019 TEMA_04 Programacion C

    89/98

     89

    Bibliotecas de 3unciones

    • Biblioteca libreria dependientes del procesador 

     * Provee 3unciones Aue son dependientes del procesador utili4ado, como 0 % 3uciones

     para iniciali4ar peri3éricos>  processor>lib

    • unciones generales % matem(ticas

     * 0on soportadas en toda la 3amilia del

     procesador clib>lib• Caracteres, datos, dela%s, manipulación de memoria %

    strings> er sección Z>":>' de libro

    Microcontroladores: Tema 4

  • 8/17/2019 TEMA_04 Programacion C

    90/98

     90

    Ejemplo !a"#o $%LA&

    Microcontroladores: Tema 4

  • 8/17/2019 TEMA_04 Programacion C

    91/98

     91

    Programas

    • Entender el problema

    • De3inir la estrategia de solución

    • De3inir el algoritmo• Codi3icación

    • Pruebas % depuracion debug

    • 1iberación

    • antenimiento

    Microcontroladores: Tema 4

  • 8/17/2019 TEMA_04 Programacion C

    92/98

     92

    Banda Fransportadora

    CONTROLADOR

    &A'ADO EN %IC18

    $OTOR

    'EN'OR

    &OTON DE

     ARRAN(UE

    TORRETA

    CONTENEDOR

    Microcontroladores: Tema 4

  • 8/17/2019 TEMA_04 Programacion C

    93/98

     93

    Banda Fransportadora

    • El programa de control deber( de reali4ar losiguiente)

     * Esperar el botón de arranAue * Contar el n8mero de cajas

     * 0i el n8mero llega a un @Y67 parar la

     banda transportadora

    • Encender una torreta

    • Esperar de nuevo el botón de arranAue>

    Microcontroladores: Tema 4

  • 8/17/2019 TEMA_04 Programacion C

    94/98

     94

    Banda Fransportadora

    • 0eIales en sensores % actuadores)

    R&4   &OTON

    %RE'IONADO

    )1*

    )0*

    RD0

    )1*

    )0*

    $OTOR

    ENCENDIDO

    R&5

    )1*   'EN'ORCAJA %RE'ENTE

    RD1

    TORRETAENCENDIDA

    )1*

    )0* )0*

    Microcontroladores: Tema 4

  • 8/17/2019 TEMA_04 Programacion C

    95/98

     95

    Ejemplo

    • El programa de control deber( de reali4ar losiguiente)

     * Esperar el botón de arranAue

     * Contar el n8mero de cajas

     * 0i el n8mero llega a un @Y67 parar la banda

    transportadora

    • Encender una torreta• Detener la banda

    • Esperar de nuevo el botón de arranAue>

    Microcontroladores: Tema 4

  • 8/17/2019 TEMA_04 Programacion C

    96/98

     96

    Microcontroladores: Tema 4

  • 8/17/2019 TEMA_04 Programacion C

    97/98

     97

    Microcontroladores: Tema 4

    C ió d j t bl

  • 8/17/2019 TEMA_04 Programacion C

    98/98

    Comparación de ejecutables

    1eng aje C

    Ensamblador 

    FE@O