34
INTRODUCCION AL LENGUAJE C INTRODUCCION AL LENGUAJE C PARA SISTEMAS EMBEBIDOS PARA SISTEMAS EMBEBIDOS

INTRODUCCION AL LENGUAJE C PARA SISTEMAS EMBEBIDOS · 2013. 11. 6. · El lenguaje C fue basado en los lenguajes BCPL y B, ejecutados en el sistema operativo UNIX a principios de

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: INTRODUCCION AL LENGUAJE C PARA SISTEMAS EMBEBIDOS · 2013. 11. 6. · El lenguaje C fue basado en los lenguajes BCPL y B, ejecutados en el sistema operativo UNIX a principios de

INTRODUCCION AL LENGUAJE CINTRODUCCION AL LENGUAJE CPARA SISTEMAS EMBEBIDOSPARA SISTEMAS EMBEBIDOS

Page 2: INTRODUCCION AL LENGUAJE C PARA SISTEMAS EMBEBIDOS · 2013. 11. 6. · El lenguaje C fue basado en los lenguajes BCPL y B, ejecutados en el sistema operativo UNIX a principios de

1

QUE ES UN SISTEMA EMBEBIDO ?QUE ES UN SISTEMA EMBEBIDO ?

Es un sistema electrónico que está contenido dentro de undispositivo electromecánico y es diseñado para realizar unaaplicación específica.El cerebro de un sistema embebido es típicamente unmicrocontrolador, aunque también puede ser un DSP o un FPGA.El diseño del sistema está optimizado para reducir su tamaño y sucosto, aumentar su confiabilidad y mejorar su desempeño.

Page 3: INTRODUCCION AL LENGUAJE C PARA SISTEMAS EMBEBIDOS · 2013. 11. 6. · El lenguaje C fue basado en los lenguajes BCPL y B, ejecutados en el sistema operativo UNIX a principios de

2

Como resolver un problema usando un microcontrolador ?.

ESTRUCTURA DE UN PROGRAMAESTRUCTURA DE UN PROGRAMAEN LENGUAJE CEN LENGUAJE C

Reconocimiento del problema.Algoritmo describiendo los pasos para la solución.Usar el lenguaje C para implemetar la solución (según algoritmo).Compilar el programa desarrollado.

Page 4: INTRODUCCION AL LENGUAJE C PARA SISTEMAS EMBEBIDOS · 2013. 11. 6. · El lenguaje C fue basado en los lenguajes BCPL y B, ejecutados en el sistema operativo UNIX a principios de

3

ESTRUCTURA DE UN PROGRAMA EN LENGUAJE CESTRUCTURA DE UN PROGRAMA EN LENGUAJE C

Page 5: INTRODUCCION AL LENGUAJE C PARA SISTEMAS EMBEBIDOS · 2013. 11. 6. · El lenguaje C fue basado en los lenguajes BCPL y B, ejecutados en el sistema operativo UNIX a principios de

4

NO se dispone de un sistema operativo ...

ESTRUCTURA DE UN PROGRAMA EN LENGUAJE CESTRUCTURA DE UN PROGRAMA EN LENGUAJE C

Cada programa desarrollado en lenguaje C debe contener unafunción "main", el código de la función debe estar contenido entrellaves { }.

Page 6: INTRODUCCION AL LENGUAJE C PARA SISTEMAS EMBEBIDOS · 2013. 11. 6. · El lenguaje C fue basado en los lenguajes BCPL y B, ejecutados en el sistema operativo UNIX a principios de

5

EL ESTANDAR ANSI CEL ESTANDAR ANSI C

El lenguaje C fue basado en los lenguajes BCPL y B, ejecutadosen el sistema operativo UNIX a principios de los 70s.

Desarrollado por Dennis M. Ritchie y Brian Kernighan en loslaboratorios Bell (AT&T), para ser ejecutado en el sistema operativoUNIX.

En 1988 se adopta el estándar ANSI C, conteniendo nuevasrevisiones de sintaxis y de la operación interna del lenguaje, asícomo la estandarización de las librerías, resultando en "ANSIStandar X3.159-1989" e "ISO 9899-1990", conocido como C90.

El estándar C99 agrupa las nuevas definiciones de tipos en elarchivo stdint.h:int8_t, int16_t, int32_t, uint8_t, uint16_t, uint32_t.

Page 7: INTRODUCCION AL LENGUAJE C PARA SISTEMAS EMBEBIDOS · 2013. 11. 6. · El lenguaje C fue basado en los lenguajes BCPL y B, ejecutados en el sistema operativo UNIX a principios de

6

Compilando un programa en C:

EL ESTANDAR ANSI CEL ESTANDAR ANSI C

Transforma un programa en alto nivel en un programa ejecutable.

Page 8: INTRODUCCION AL LENGUAJE C PARA SISTEMAS EMBEBIDOS · 2013. 11. 6. · El lenguaje C fue basado en los lenguajes BCPL y B, ejecutados en el sistema operativo UNIX a principios de

7

Cuantas clases de datos necesitamos para aplicar a la solución de un problema ?.

TIPOS DE DATOSTIPOS DE DATOS

Numeros: enteros (con signo o sin signo), reales, complejos.Textos: caracteres, cadenas de caracteres.Imagenes: pixels, colores, formas.Sonidos: calidad radio, calidad CD, alta definición.

Al ser un microcontrolador un sistema digital binario, solo reconoceceros y unos.

La unidad de información básica es el bit o Binary digiT, al agruparn bits, se puede obtener valores posibles.

Page 9: INTRODUCCION AL LENGUAJE C PARA SISTEMAS EMBEBIDOS · 2013. 11. 6. · El lenguaje C fue basado en los lenguajes BCPL y B, ejecutados en el sistema operativo UNIX a principios de

8

Tipos de datos numéricos utilizando el sistema de notación binaria:

TIPOS DE DATOSTIPOS DE DATOS

Un valor numérico sin signo de n bits representa valores, estoes desde cero hasta

Page 10: INTRODUCCION AL LENGUAJE C PARA SISTEMAS EMBEBIDOS · 2013. 11. 6. · El lenguaje C fue basado en los lenguajes BCPL y B, ejecutados en el sistema operativo UNIX a principios de

9

Tipos de datos numéricos utilizando el sistema de notación binaria:

TIPOS DE DATOSTIPOS DE DATOS

Los valores numéricos con signo operan con formato decomplemento binario a dos, lo cual permite asignaciones yoperaciones aritméticas de forma natural y representar valoresdesde cero hasta , o desde cero hasta .

Page 11: INTRODUCCION AL LENGUAJE C PARA SISTEMAS EMBEBIDOS · 2013. 11. 6. · El lenguaje C fue basado en los lenguajes BCPL y B, ejecutados en el sistema operativo UNIX a principios de

10

TIPOS DE DATOSTIPOS DE DATOS

Tipos de datos enteros:

Tipos de datos en coma flotante:IEEE 754, estándar de notación numérica en coma flotante deprecisión simple para 32 bits.

Page 12: INTRODUCCION AL LENGUAJE C PARA SISTEMAS EMBEBIDOS · 2013. 11. 6. · El lenguaje C fue basado en los lenguajes BCPL y B, ejecutados en el sistema operativo UNIX a principios de

11

TIPOS DE DATOSTIPOS DE DATOS

Variables:

Las variables son tipos de datos identificados con un nombre.Para los nombres de las variables se permite la combinación deletras y números.Se diferencia entre mayúsculas y minúsculas(sum es diferente a Sum).Los nombres de las variables no deben iniciar con un número.Solo se reconocen los primeros 31 caracteres.

Nombres de variables válidos:VarX, i, result, Result, Op_Data, _SensX ...

Nombres de variables NO válidos:23Digit, ten'sdigit, result?, double ...

Page 13: INTRODUCCION AL LENGUAJE C PARA SISTEMAS EMBEBIDOS · 2013. 11. 6. · El lenguaje C fue basado en los lenguajes BCPL y B, ejecutados en el sistema operativo UNIX a principios de

12

TIPOS DE DATOSTIPOS DE DATOS

Duración y alcance de las variables:

El alcance de una variable comprende el área del programa dondela variable es válida (accesible).

Variables de tipo Global:Son accesibles en cualquier parte del programa.Son declaradas fuera de los bloques o funciones del programa.Son creadas al inicio del programa y son válidas durante toda laejecución del programa.

Variables de tipo Local (static):

Solo son accesibles en un bloque particular del programa.Son declaradas dentro de un bloque o función del programa.Son creadas al inicio de la función y son válidas durante laejecución de la función.También pueden ser locales al archivo fuente actual; en este casola variable es global al archivo fuente actual.

Page 14: INTRODUCCION AL LENGUAJE C PARA SISTEMAS EMBEBIDOS · 2013. 11. 6. · El lenguaje C fue basado en los lenguajes BCPL y B, ejecutados en el sistema operativo UNIX a principios de

13

TIPOS DE DATOSTIPOS DE DATOS

Operadores:

Los operadores permiten realizar acciones sobre las variables.

Operadores aritméticos:

Operadores lógicos:

Page 15: INTRODUCCION AL LENGUAJE C PARA SISTEMAS EMBEBIDOS · 2013. 11. 6. · El lenguaje C fue basado en los lenguajes BCPL y B, ejecutados en el sistema operativo UNIX a principios de

14

TIPOS DE DATOSTIPOS DE DATOS

Operadores relacionales:

Operadores lógicos a bit:Tratan la variable entera o el valor como variable booleana siendoTRUE, diferente de cero y FALSE, igual a cero.El resultado será 1 (TRUE) o 0 (FALSE).

Operador Descripción Ejemplo ! Negación lógica !X & & AND lógica X && Y | | OR lógica X || Y

Page 16: INTRODUCCION AL LENGUAJE C PARA SISTEMAS EMBEBIDOS · 2013. 11. 6. · El lenguaje C fue basado en los lenguajes BCPL y B, ejecutados en el sistema operativo UNIX a principios de

15

TIPOS DE DATOSTIPOS DE DATOS

Operadores de asignación:

Operadores de incremento y decremento:

Page 17: INTRODUCCION AL LENGUAJE C PARA SISTEMAS EMBEBIDOS · 2013. 11. 6. · El lenguaje C fue basado en los lenguajes BCPL y B, ejecutados en el sistema operativo UNIX a principios de

16

SENTENCIAS Y EXPRESIONESSENTENCIAS Y EXPRESIONES

Una sentencia consta de palabras reservadas (instrucciones),expresiones y otras sentencias. Cada sentencia termina con unpunto y coma (;).

Palabras reservadas:

Page 18: INTRODUCCION AL LENGUAJE C PARA SISTEMAS EMBEBIDOS · 2013. 11. 6. · El lenguaje C fue basado en los lenguajes BCPL y B, ejecutados en el sistema operativo UNIX a principios de

17

SENTENCIAS Y EXPRESIONESSENTENCIAS Y EXPRESIONES

Las expresiones son operaciones que realiza el programa,describiendo cálculos o procesos.

A + b + cX & y | | zVarX >= X

Z = A + b + c;A = X & y | | z;VarX = VarX + 1;

} expresiones

} sentencias

Un tipo especial de sentencia, la sentencia compuesta o bloque, esun grupo de sentencias encerradas entre llaves { }.El cuerpo de una función es una sentencia compuesta.

{ Z = A + b + c; A = X & y | | z; VarX = VarX + 1; }

Page 19: INTRODUCCION AL LENGUAJE C PARA SISTEMAS EMBEBIDOS · 2013. 11. 6. · El lenguaje C fue basado en los lenguajes BCPL y B, ejecutados en el sistema operativo UNIX a principios de

18

SENTENCIAS Y EXPRESIONESSENTENCIAS Y EXPRESIONES

Ejecutan parte del código, basándose en la evaluación de laexpresión de control.

Sentencias de salto condicional:

● if● if – else● switch

Ejecutan parte del código varias veces y terminan la ejecuciónbasándose en la evaluación de la expresión de control.

Sentencias de iteración:

● for● while● do - while

Page 20: INTRODUCCION AL LENGUAJE C PARA SISTEMAS EMBEBIDOS · 2013. 11. 6. · El lenguaje C fue basado en los lenguajes BCPL y B, ejecutados en el sistema operativo UNIX a principios de

19

SENTENCIAS Y EXPRESIONESSENTENCIAS Y EXPRESIONES

Esta sentencia de control permite ejecutar o no una sentenciasimple o compuesta según se cumpla o no una determinadacondición.

Page 21: INTRODUCCION AL LENGUAJE C PARA SISTEMAS EMBEBIDOS · 2013. 11. 6. · El lenguaje C fue basado en los lenguajes BCPL y B, ejecutados en el sistema operativo UNIX a principios de

20

SENTENCIAS Y EXPRESIONESSENTENCIAS Y EXPRESIONES

Esta sentencia permite realizar una bifurcación, ejecutando unaparte u otra del programa según se cumpla o no una ciertacondición

Page 22: INTRODUCCION AL LENGUAJE C PARA SISTEMAS EMBEBIDOS · 2013. 11. 6. · El lenguaje C fue basado en los lenguajes BCPL y B, ejecutados en el sistema operativo UNIX a principios de

21

SENTENCIAS Y EXPRESIONESSENTENCIAS Y EXPRESIONES

Esta sentencia desarrolla una función similar a la de la sentenciaif ... else con múltiples ramificaciones, aunque como se puede verpresenta también importantes diferencias.

Page 23: INTRODUCCION AL LENGUAJE C PARA SISTEMAS EMBEBIDOS · 2013. 11. 6. · El lenguaje C fue basado en los lenguajes BCPL y B, ejecutados en el sistema operativo UNIX a principios de

22

SENTENCIAS Y EXPRESIONESSENTENCIAS Y EXPRESIONES

Esta sentencia permite ejecutar repetidamente, mientras secumpla una determinada condición, una sentencia o bloque desentencias.

Page 24: INTRODUCCION AL LENGUAJE C PARA SISTEMAS EMBEBIDOS · 2013. 11. 6. · El lenguaje C fue basado en los lenguajes BCPL y B, ejecutados en el sistema operativo UNIX a principios de

23

SENTENCIAS Y EXPRESIONESSENTENCIAS Y EXPRESIONES

Esta sentencia permite ejecutar un bloque de código, un númeroespecificado de veces.

Page 25: INTRODUCCION AL LENGUAJE C PARA SISTEMAS EMBEBIDOS · 2013. 11. 6. · El lenguaje C fue basado en los lenguajes BCPL y B, ejecutados en el sistema operativo UNIX a principios de

24

SENTENCIAS Y EXPRESIONESSENTENCIAS Y EXPRESIONES

Esta sentencia funciona de modo análogo a while, con ladiferencia de que la evaluación de la condición se realiza al finaldel bucle, después de haber ejecutado al menos una vez unasentencia (loop_body) o un bloque { }; éstas se vuelven a ejecutarmientras la condición sea TRUE.

Page 26: INTRODUCCION AL LENGUAJE C PARA SISTEMAS EMBEBIDOS · 2013. 11. 6. · El lenguaje C fue basado en los lenguajes BCPL y B, ejecutados en el sistema operativo UNIX a principios de

25

SENTENCIAS Y EXPRESIONESSENTENCIAS Y EXPRESIONES

La instrucción break interrumpe la ejecución del bucle donde se haincluido, haciendo al programa salir de él aunque la condicióncorrespondiente a ese bucle sea verdadera.

La sentencia continue hace que el programa comience elsiguiente ciclo del bucle donde se halla, aunque no haya llegado alfinal de las sentencia compuesta o bloque.

La sentencia goto etiqueta hace saltar el programa a la sentenciadonde se haya escrito la etiqueta.

break, continue, goto

Page 27: INTRODUCCION AL LENGUAJE C PARA SISTEMAS EMBEBIDOS · 2013. 11. 6. · El lenguaje C fue basado en los lenguajes BCPL y B, ejecutados en el sistema operativo UNIX a principios de

26

FUNCIONESFUNCIONES

Es un bloque de construcción de un programa, contieneexpresiones y sentencias que desarrollan un problema enparticular.

La agrupación de funciones permiten modularidad en un programa.

Las funciones se pueden agrupar y almacenar en librerías.

Cada programa en lenguaje C tiene al menos una función “main”.

Cada función tiene un nombre, un tipo de datos, y una lista deparámetros contenidos en variables.

Las funciones deben ser declaradas al inicio del programa.

Page 28: INTRODUCCION AL LENGUAJE C PARA SISTEMAS EMBEBIDOS · 2013. 11. 6. · El lenguaje C fue basado en los lenguajes BCPL y B, ejecutados en el sistema operativo UNIX a principios de

27

FUNCIONESFUNCIONES

Page 29: INTRODUCCION AL LENGUAJE C PARA SISTEMAS EMBEBIDOS · 2013. 11. 6. · El lenguaje C fue basado en los lenguajes BCPL y B, ejecutados en el sistema operativo UNIX a principios de

28

EL PRE-PROCESADOR DE CEL PRE-PROCESADOR DE C

El pre-procesador es un programa que se encarga de reconocer yejecutar las denominadas directivas al inicio de la etapa decompilación (anterior a la compilación).

El pre-procesador actúa sobre los archivos fuente procesando lasdirectivas para entregar un programa mas simple al compilador.

Las directivas son instrucciones que comienzan con el símbolo #.

#define, #undef#if, #ifdef, #ifndef, #endif, #else, #elif#include#pragma#error

Page 30: INTRODUCCION AL LENGUAJE C PARA SISTEMAS EMBEBIDOS · 2013. 11. 6. · El lenguaje C fue basado en los lenguajes BCPL y B, ejecutados en el sistema operativo UNIX a principios de

29

EL COMPILADOR Y EL ENLAZADOREL COMPILADOR Y EL ENLAZADOR

Transforman un programa en alto nivel, en un programa ejecutabley entendible por la máquina.

El compilador analiza la estructura del programa para identificarsus componentes: expresiones, sentencias, variables, funciones,etc.

El código en alto nivel al ser compilado genera un programa enlenguaje ensamblador.

El enlazador combina archivos de código objeto para generar unarchivo con código ejecutable (organizado lógicamente enmemoria).

Page 31: INTRODUCCION AL LENGUAJE C PARA SISTEMAS EMBEBIDOS · 2013. 11. 6. · El lenguaje C fue basado en los lenguajes BCPL y B, ejecutados en el sistema operativo UNIX a principios de

30

EL COMPILADOR Y EL ENLAZADOREL COMPILADOR Y EL ENLAZADOR

Page 32: INTRODUCCION AL LENGUAJE C PARA SISTEMAS EMBEBIDOS · 2013. 11. 6. · El lenguaje C fue basado en los lenguajes BCPL y B, ejecutados en el sistema operativo UNIX a principios de

31

UN PROGRAMA SIMPLE EN LENGUAJE CUN PROGRAMA SIMPLE EN LENGUAJE C

//DESCRIPCION.//PERMITE CONTROLAR UN SERVO-MOTOR R/C, DESDE EL PUERTO SERIE, UTILIZANDO EL GENERADOR PWM0.

//ARCHIVOS DE INCLUSION#include <stdlib.h>#include "Globals.h"

//DECLARACION DE CONSTANTES#define ctLedTimer 100 //TIEMPO DE ACTUALIZACION LED DE ESTADO (MILISEGUNDOS)#define ctPwmCounts 62500 //RESOLUCION DEL GENERADOR PWM0 = (PWMClock / ctServoPwmFreq)

//DECLARACION DE MACROS#define LedStat(x) PinWrite(PortD, GPIO_PIN_5, x) //LED DE ESTADO

//DECLARACION DE VARIABLESF32 ServoMinG; //CONTIENE EL ANCHO DE PULSO PWM, PARA CERO GRADOS EN EL SERVOU32 ServoStep; //CONTIENE EL VALOR DE PASO PARA CALCULAR ANCHO DE PULSO SEGUN GRADOS

//PROTO FUNCIONESstatic void SystemInit(void); //INICIALIZA LOS PERIFERICOS NECESARIOSstatic S16 DetCommand(void); //DETECCION DE COMANDO DE POSICION EN GRADOS

//PROGRAMA PRINCIPALint main(void){

S08 inpChar; //CONTIENE CARACTER RECIBIDO DESDE LA TERMINALS16 ActServoPos = 0; //CONTIENE LA POSICION ACTUAL DEL SERVO (0 A 180)

SystemInit(); //INICIALIZA PERIFERICOSDelayms(1000); //RETARDO PARA INICIALIZACION

//BUCLE DE PROGRAMAwhile(true){

inpChar = getc(UART0_BASE); //CAPTURA UN CARACTER DESDE EL PUERTO SERIE if(inpChar > 0) ServoStep ++; Delayms(1); //BUCLE DE PROGRAMA 1000/S }}

Page 33: INTRODUCCION AL LENGUAJE C PARA SISTEMAS EMBEBIDOS · 2013. 11. 6. · El lenguaje C fue basado en los lenguajes BCPL y B, ejecutados en el sistema operativo UNIX a principios de

32

REFERENCIASREFERENCIAS

www.es.wikipedia.org/wiki/C_(lenguaje_de_programación)www.monografias.com/trabajos4/lenguajec/lenguajec.shtml

http://148.208.235.3:4000/~tutorias/tutoria/CursodeC.pdf

Page 34: INTRODUCCION AL LENGUAJE C PARA SISTEMAS EMBEBIDOS · 2013. 11. 6. · El lenguaje C fue basado en los lenguajes BCPL y B, ejecutados en el sistema operativo UNIX a principios de

Electrónica - Didáctica - Instrumentación

Suministro - Reparación - Mantenimiento

Dimensionamos nuestros productos y serviciosde acuerdo a sus necesidades

Calle 103 No. 33A – 04 / Teléfono (6) 8745257 / Manizaleswww.gamatecweb.com/didactic

[email protected]