Está en la página 1de 34

INTRODUCCION AL LENGUAJE C

PARA SISTEMAS EMBEBIDOS

QUE ES UN SISTEMA EMBEBIDO ?

Es un sistema electrnico que est contenido dentro de un


dispositivo electromecnico y es diseado para realizar una
aplicacin especfica.
El cerebro de un sistema embebido es tpicamente un
microcontrolador, aunque tambin puede ser un DSP o un FPGA.
El diseo del sistema est optimizado para reducir su tamao y su
costo, aumentar su confiabilidad y mejorar su desempeo.
1

ESTRUCTURA DE UN PROGRAMA
EN LENGUAJE C
Como resolver un problema usando un microcontrolador ?.

Reconocimiento del problema.


Algoritmo describiendo los pasos para la solucin.
Usar el lenguaje C para implemetar la solucin (segn algoritmo).
Compilar el programa desarrollado.

ESTRUCTURA DE UN PROGRAMA EN LENGUAJE C

ESTRUCTURA DE UN PROGRAMA EN LENGUAJE C

NO se dispone de un sistema operativo ...

Cada programa desarrollado en lenguaje C debe contener una


funcin "main", el cdigo de la funcin debe estar contenido entre
llaves { }.

EL ESTANDAR ANSI C
El lenguaje C fue basado en los lenguajes BCPL y B, ejecutados
en el sistema operativo UNIX a principios de los 70s.
Desarrollado por Dennis M. Ritchie y Brian Kernighan en los
laboratorios Bell (AT&T), para ser ejecutado en el sistema operativo
UNIX.
En 1988 se adopta el estndar ANSI C, conteniendo nuevas
revisiones de sintaxis y de la operacin interna del lenguaje, as
como la estandarizacin de las libreras, resultando en "ANSI
Standar X3.159-1989" e "ISO 9899-1990", conocido como C90.
El estndar C99 agrupa las nuevas definiciones de tipos en el
archivo stdint.h:
int8_t, int16_t, int32_t, uint8_t, uint16_t, uint32_t.
5

EL ESTANDAR ANSI C

Compilando un programa en C:
Transforma un programa en alto nivel en un programa ejecutable.

TIPOS DE DATOS
Al ser un microcontrolador un sistema digital binario, solo reconoce
ceros y unos.

La unidad de informacin bsica es el bit o Binary digiT, al agrupar


n bits, se puede obtener
valores posibles.
Cuantas clases de datos necesitamos para aplicar a
la solucin de un problema ?.
Numeros:
Textos:
Imagenes:
Sonidos:
7

enteros (con signo o sin signo), reales, complejos.


caracteres, cadenas de caracteres.
pixels, colores, formas.
calidad radio, calidad CD, alta definicin.

TIPOS DE DATOS

Tipos de datos numricos


utilizando el sistema de notacin binaria:
Un valor numrico sin signo de n bits representa
es desde cero hasta

valores, esto

TIPOS DE DATOS

Tipos de datos numricos


utilizando el sistema de notacin binaria:
Los valores numricos con signo operan con formato de
complemento binario a dos, lo cual permite asignaciones y
operaciones aritmticas de forma natural y representar valores
desde cero hasta
, o desde cero hasta
.

TIPOS DE DATOS

Tipos de datos enteros:

Tipos de datos en coma flotante:


IEEE 754, estndar de notacin numrica en coma flotante de
precisin simple para 32 bits.

10

TIPOS DE DATOS

Variables:

Las variables son tipos de datos identificados con un nombre.


Para los nombres de las variables se permite la combinacin de
letras y nmeros.
Se diferencia entre maysculas y minsculas
(sum es diferente a Sum).
Los nombres de las variables no deben iniciar con un nmero.
Solo se reconocen los primeros 31 caracteres.
Nombres de variables vlidos:
VarX, i, result, Result, Op_Data, _SensX ...
Nombres de variables NO vlidos:
23Digit, ten'sdigit, result?, double ...

11

TIPOS DE DATOS

Duracin y alcance de las variables:

El alcance de una variable comprende el rea del programa donde


la variable es vlida (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 vlidas durante toda la
ejecucin del programa.
Variables de tipo Local (static):

Solo son accesibles en un bloque particular del programa.


Son declaradas dentro de un bloque o funcin del programa.
Son creadas al inicio de la funcin y son vlidas durante la
ejecucin de la funcin.
Tambin pueden ser locales al archivo fuente actual; en este caso
la variable es global al archivo fuente actual.
12

TIPOS DE DATOS

Operadores:
Los operadores permiten realizar acciones sobre las variables.
Operadores aritmticos:

Operadores lgicos:

13

TIPOS DE DATOS

Operadores relacionales:

Operadores lgicos a bit:


Tratan la variable entera o el valor como variable booleana siendo
TRUE, diferente de cero y FALSE, igual a cero.
El resultado ser 1 (TRUE) o 0 (FALSE).
Operador
!
& &
| |
14

Descripcin
Negacin lgica
AND lgica
OR lgica

Ejemplo
!X
X && Y
X || Y

TIPOS DE DATOS

Operadores de asignacin:

Operadores de incremento y decremento:

15

SENTENCIAS Y EXPRESIONES
Una sentencia consta de palabras reservadas (instrucciones),
expresiones y otras sentencias. Cada sentencia termina con un
punto y coma (;).
Palabras reservadas:

16

SENTENCIAS Y EXPRESIONES

Las expresiones son operaciones que realiza el programa,


describiendo clculos o procesos.
A+b+c
X&y||z
VarX >= X

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

expresiones

sentencias

Un tipo especial de sentencia, la sentencia compuesta o bloque, es


un grupo de sentencias encerradas entre llaves { }.
El cuerpo de una funcin es una sentencia compuesta.
{ Z = A + b + c; A = X & y | | z; VarX = VarX + 1; }

17

SENTENCIAS Y EXPRESIONES

Sentencias de salto condicional:

Ejecutan parte del cdigo, basndose en la evaluacin de la


expresin de control.

if
if else
switch

Sentencias de iteracin:

Ejecutan parte del cdigo varias veces y terminan la ejecucin


basndose en la evaluacin de la expresin de control.

18

for
while
do - while

SENTENCIAS Y EXPRESIONES

Esta sentencia de control permite ejecutar o no una sentencia


simple o compuesta segn se cumpla o no una determinada
condicin.
19

SENTENCIAS Y EXPRESIONES

Esta sentencia permite realizar una bifurcacin, ejecutando una


parte u otra del programa segn se cumpla o no una cierta
condicin
20

SENTENCIAS Y EXPRESIONES

Esta sentencia desarrolla una funcin similar a la de la sentencia


if ... else con mltiples ramificaciones, aunque como se puede ver
presenta tambin importantes diferencias.
21

SENTENCIAS Y EXPRESIONES

Esta sentencia permite ejecutar repetidamente, mientras se


cumpla una determinada condicin, una sentencia o bloque de
sentencias.
22

SENTENCIAS Y EXPRESIONES

Esta sentencia permite ejecutar un bloque de cdigo, un nmero


especificado de veces.
23

SENTENCIAS Y EXPRESIONES

24

Esta sentencia funciona de modo anlogo a while, con la


diferencia de que la evaluacin de la condicin se realiza al final
del bucle, despus de haber ejecutado al menos una vez una
sentencia (loop_body) o un bloque { }; stas se vuelven a ejecutar
mientras la condicin sea TRUE.

SENTENCIAS Y EXPRESIONES

break, continue, goto


La instruccin break interrumpe la ejecucin del bucle donde se ha
incluido, haciendo al programa salir de l aunque la condicin
correspondiente a ese bucle sea verdadera.

La sentencia continue hace que el programa comience el


siguiente ciclo del bucle donde se halla, aunque no haya llegado al
final de las sentencia compuesta o bloque.
La sentencia goto etiqueta hace saltar el programa a la sentencia
donde se haya escrito la etiqueta.

25

FUNCIONES
Es un bloque de construccin de un programa, contiene
expresiones y sentencias que desarrollan un problema en
particular.
La agrupacin de funciones permiten modularidad en un programa.
Las funciones se pueden agrupar y almacenar en libreras.
Cada programa en lenguaje C tiene al menos una funcin main.
Cada funcin tiene un nombre, un tipo de datos, y una lista de
parmetros contenidos en variables.
Las funciones deben ser declaradas al inicio del programa.

26

FUNCIONES

27

EL PRE-PROCESADOR DE C
El pre-procesador es un programa que se encarga de reconocer y
ejecutar las denominadas directivas al inicio de la etapa de
compilacin (anterior a la compilacin).
El pre-procesador acta sobre los archivos fuente procesando las
directivas para entregar un programa mas simple al compilador.
Las directivas son instrucciones que comienzan con el smbolo #.
#define, #undef
#if, #ifdef, #ifndef, #endif, #else, #elif
#include
#pragma
#error

28

EL COMPILADOR Y EL ENLAZADOR

Transforman un programa en alto nivel, en un programa ejecutable


y entendible por la mquina.
El compilador analiza la estructura del programa para identificar
sus componentes: expresiones, sentencias, variables, funciones,
etc.
El cdigo en alto nivel al ser compilado genera un programa en
lenguaje ensamblador.
El enlazador combina archivos de cdigo objeto para generar un
archivo con cdigo ejecutable (organizado lgicamente en
memoria).

29

EL COMPILADOR Y EL ENLAZADOR

30

UN 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
#define ctPwmCounts
62500

//TIEMPO DE ACTUALIZACION LED DE ESTADO (MILISEGUNDOS)


//RESOLUCION DEL GENERADOR PWM0 = (PWMClock / ctServoPwmFreq)

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

//LED DE ESTADO

//DECLARACION DE VARIABLES
F32 ServoMinG; //CONTIENE EL ANCHO DE PULSO PWM, PARA CERO GRADOS EN EL SERVO
U32 ServoStep; //CONTIENE EL VALOR DE PASO PARA CALCULAR ANCHO DE PULSO SEGUN GRADOS
//PROTO FUNCIONES
static void SystemInit(void); //INICIALIZA LOS PERIFERICOS NECESARIOS
static S16 DetCommand(void); //DETECCION DE COMANDO DE POSICION EN GRADOS
//PROGRAMA PRINCIPAL
int main(void)
{
S08 inpChar; //CONTIENE CARACTER RECIBIDO DESDE LA TERMINAL
S16 ActServoPos = 0; //CONTIENE LA POSICION ACTUAL DEL SERVO (0 A 180)
SystemInit(); //INICIALIZA PERIFERICOS
Delayms(1000); //RETARDO PARA INICIALIZACION

31

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

REFERENCIAS

www.es.wikipedia.org/wiki/C_(lenguaje_de_programacin)
www.monografias.com/trabajos4/lenguajec/lenguajec.shtml
http://148.208.235.3:4000/~tutorias/tutoria/CursodeC.pdf

32

Electrnica - Didctica - Instrumentacin

Dimensionamos nuestros productos y servicios


de acuerdo a sus necesidades

Calle 103 No. 33A 04 / Telfono (6) 8745257 / Manizales


www.gamatecweb.com/didactic
www.gamatecinstrumentacion.com
soporte@gamatecinstrumentacion.com

Suministro - Reparacin - Mantenimiento

También podría gustarte