Professional Documents
Culture Documents
Contenido:
1. Estructura de un programa en C.
2. Punteros, funciones, archivos y operaciones I/O
3. Estructuras de control del programa y bucles o ciclos
4. Tipos de datos soportados por la serie TMS320C55x
Nota: A lo largo del documento y para los efectos del laboratorio se insertaran cdigos en
C, estos estar dispuestos dentro de lo que llamaremos cuadros de cdigo.
Elaborada por: Br. Manuel De Oliveira - Revisado: 25/02/15
Introduccin
C ha sido distinguido por la eficiencia del cdigo que produce no solo por la
potencialidad de los comandos y estructuras de datos sino tambin por su portabilidad
para migrar entre plataformas y dispositivos DSP. Es el lenguaje de programacin ms
popular para crear desarrollos de software, para crear aplicaciones y para la programacin
de microcontroladores de todo tipo.
Se trata de un lenguaje medio nivel pero con muchas caractersticas de bajo nivel.
Dispone de las estructuras tpicas de los lenguajes de alto nivel pero, a su vez, dispone de
construcciones del lenguaje que permiten un control a muy bajo nivel. Los compiladores
suelen ofrecer extensiones al lenguaje que posibilitan mezclar cdigo en ensamblador con
cdigo C o acceder directamente a memoria o dispositivos perifricos.
El compilador C traduce programas de alto nivel a lenguaje de mquina que puede
ser ejecutado por procesadores como TMS320C55x. Los ambientes de programacin
incluyen programas de depuracin (debugger) para identificar errores en programas
fuente.
El propsito de la programacin DSP es manipular seales digitales para una
aplicacin especfica de procesamiento. Para conseguir esto los programas DSP deben ser
capaces de:
Organizar las variables ( diferentes tipos de datos)
Describir las acciones (Operadores)
Controlar las operaciones (Flujo del programa)
Mover los datos de adentro y afuera entre el mundo exterior y el programa
(Entradas/Salidas)
El presente documento tiene como objetivo hacer un compendio de los elementos
requeridos sobre este lenguaje, considerando su sintaxis, estructura y uso de sus
instrucciones, sin embargo no cubre todos los elementos en su totalidad.
1. Estructura de un programa en C
Un programa en C, consta de varias secciones en donde se determinarn que
variables y funciones tendr el programa, as como la tarea que tendr que realizar.
Los caracteres que se encuentren entre "/*" y "*/", son comentarios y no tienen
efecto para la compilacin, tambin puede usarse // para iniciar un comentario por lnea.
Aunque son opcionales, los comentarios detallados son muy importantes en el
mantenimiento de software DSP
1.1.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define K 1024
1.2.
Programa Principal (Main)
El programa principal contiene las instrucciones y llamadas a funciones que se
ejecutan en primera instancia. Un programa en C puede constar de una o ms funciones y
una y slo una funcin llamada main() con la que el sistema comenzar a ejecutar.
Despus de iniciar la aplicacin, la funcin main() se ejecuta primero, y por lo general
es responsable del control del programa. Esta funcin se puede escribir para devolver un
valor, o puede ser escrita como una funcin void que no devuelve un valor. El cuerpo de
la funcin est encerrado entre llaves como se muestra en el ejemplo main.c.
void main()
{ unsigned long int i = 1;
short int x ; //Declaraciones para definir variables
x = 2 * i ; //Declaraciones para ejecutar programas
}
Tipo_de_dato Nombre;
Nota: este leguaje en particular es sensitivo a maysculas haciendo que las variables DSP,
DsP, y dSP sean diferentes.
1.4. Arreglos
Un arreglo es una serie de variables distintas del mismo tipo, bajo un solo nombre.
Un arreglo de una sola dimensin se puede visualizar como una lista de valores dispuestos
en una fila o bien una columna.
Se puede asignar un identificador a un arreglo, y luego distinguir entre elementos o
valores en el utilizando subndices. Los subndices siempre comienzan con 0 y se
incrementa en 1. En C, todos los tipos de datos pueden ser declarados como un arreglo
colocando el nmero de elementos a ser asignado a un arreglo entre corchetes despus
de su nombre.
Un arreglo puede ser inicializado cuando se define, o los valores se pueden asignar
a l utilizando sentencias de programa. Para inicializar la matriz al mismo tiempo cuando
se define, los valores se especifican en una secuencia que est separado por comas y
encerrada con las llaves:
int y[5]= {1.0, 0.0, 0.0, 0.0, 0.0};
int *ptr;
En el cuadro de cdigo se define a ptr como un puntero a una variable del tipo
integer, por lo que *ptr y ptr[0] son exactamente equivalente, aunque el significado
de ptr[0] es con frecuencia mas claro.
Nota: Se puede apreciar que la diferencia que existe entre un puntero y un arreglo es que
el arreglo tiene una cantidad de memoria propia, mientras que el puntero no.
2.2.
Funciones
Como discutimos en las seccin 1.2 todos los programas en C tienen una o ms
funciones incluyendo el main(). En C las funciones o subrutinas estas disponibles en las
libreras, estas funciones son un conjunto de sentencias que tpicamente ejecutan una
operacin.
Para mantener la simplicidad y la legibilidad en aplicaciones complicadas, se
desarrollan programas que usen una funcin main() aadiendo otras adicionales, en
vez de usar una sola funcin main muy larga.
Una funcin consiste de una definicin de sentencia seguida por el cuerpo de
la funcin, la primera parte define el nombre de la funcin y el tipo de valor que es
devuelto por ella y una segunda dentro de un par de parntesis contiene los argumentos,
mientras que las llaves contienen las sentencias ejecutables. Por ejemplo:
signed long int fir(int *x, int *h, int ntap)
{
short int yn = 0.0;// salida del filtro FIR
int i; // ndice
//ms sentencias
return(yn); // devuelve el valor de y(n) a el main
}
La primera lnea declara la funcin llamada fir que devuelve un valor del tipo
signed long int al programa principal. Note que las variables declaradas como
argumentos de la funcin son en realidad punteros.
Adicionalmente variables locales (yn,i) se declaran en el cuerpo de la funcin, la
sentencia return(yn)devuelve el resultado a la funcin que hizo el llamado. Tenga en
cuenta que el tipo de expresin debe coincidir con el tipo de retorno indiciado en la
definicin de la funcin, si la funcin no devolviese un valor, el tipo es void.
if(condicin)
{
sentencia1;
sentencia2;
}
Declaracin if / else
Una declaracin if/else permite ejecutar un conjunto de sentencias si la
condicin es verdadera y un conjunto diferente si por el contrario es falsa.
if(condicin)
{ sentencia A;
}
else
{ sentencia B;
}
Declaracin switch-case
Cuando un programa tiene que elegir entre varias alternativas, el if/else es
inconveniente y algo ineficaz. Cuando se eligen ms de cuatro alternativas desde una sola
expresin, la declaracin switch-case es muy til.
switch(expresin entera)
{
case constante_1:
sentencia;
break;
case constante_2;
sentencia;
break;
...
default:
sentencia;
}
while (condicin)
{ sentencias
}
Esta repeticin contina hasta que la condicin es falsa. Tenga en cuenta que la
decisin de ir entrar al bucle se hace antes que el bucle inicie. Debido a esto es posible
que el bucle nunca se ejecute.
Bucle Do/While
do{ Sentencia;
}
while(condicin);
Tamao
16-bit
16-bit
16-bit
16-bit
16-bit
16-bit
32-bit
Representacin
ASCII
ASCII
Complemento a 2
Binaria
Complemento a 2
Binario
Complemento a 2
Rango
[-32768, 32767]
[0, 65 535]
[-32768, 32767]
[0, 65 535]
[-32768, 32767]
[0, 65 535]
[-2147483648, 2147483647]
Unsigned long
Float
Double
Long double
Enum
Data pointer
Data pointer
Program pointer
32-bit
32-bit
32-bit
32-bit
16-bit
16-bit
23-bit
24-bit
Binario
IEEE 32-bit
IEEE 32-bit
IEEE 32-bit
Complemento a 2
Memoria small
Memoria large
Funcin
[0, 4294967295]
[1.175494
,3.40282346
[1.175494
,3.40282346
[1.175494
,3.40282346
[-32768, 32767]
[0x0, 0xFFFF]
[0x0, 0x7FFFFF]
[0x0, 0xFFFFFF]
]
]
]
A. Apndice A. Operadores
A.1. Aritmticos
Los operadores aritmticos binarios usuales (son binarios por que realizan las operaciones
en dos operadores) los primeros cuatro son definidos para todas las variables, mientras
que el ultimo solo para operadores enteros, estos utilizan en C los siguientes smbolos.
Operadores Aritmticos
Descripcin
Multiplicaciones
Divisin
Adicin
Sustraccin
Modulo (Resto entero despus de la divisin)
A.3.
Descripcin
AND bit a bit
Or bit a bit
Or exclusivo bit a bit
Desplazamiento a la izquierda (del nmero de bits operando)
Desplazamiento a la izquierda (del nmero de bits operando)
Not bit a bit
Referencias
[1]
[2]
[3]