1390229945 843 _lenguaje_c-introduccion

29
MICROCONTROLADORES SEGUNDO PARCIAL MICROCONTROLADORES

Transcript of 1390229945 843 _lenguaje_c-introduccion

Page 1: 1390229945 843 _lenguaje_c-introduccion

MICROCONTROLADORESSEGUNDO PARCIAL

• MICROCONTROLADORES

Page 2: 1390229945 843 _lenguaje_c-introduccion

LENGUAJE C PARA PICs

Estructura Directivas preprocesadoras Tipos de Datos Nuevos tipos de datos

Page 3: 1390229945 843 _lenguaje_c-introduccion

LENGUAJE C PARA PICS

• MICROCONTROLADORES

Page 4: 1390229945 843 _lenguaje_c-introduccion

Lenguajes de Programacion

• Como el proceso de escribir directamente código ejecutable es extremadamente cansado, se creó entonces el programa ensamblador.

• Sin embargo la programación en ensamblador sigue complicada y muy dependiente de la arquitectura interna del PIC, pero al menos la programación dejó de ser una pesadilla.

• Las instrucciones en lenguaje ensamblador se representan en forma abreviada mediante símbolos con sentido funcional, el proceso de ensamblado se lo deja al programa ensamblador que genera código ejecutable.

Page 5: 1390229945 843 _lenguaje_c-introduccion

• Sin embargo los programadores siempre han necesitado de un lenguaje de programación muy próximo o cercano al lenguaje común que usamos para comunicarnos.

• Como resultado de esta necesidad se han creado los lenguajes de nivel alto. La ventaja principal de estos lenguajes es la “simplicidad” en la escritura de programas, ya no es de mucho interés conocer con exactitud cómo los comandos se ejecutan.

• En casos que requieran exactitud, es fácil insertar en el programa una secuencia de instrucciones en ensamblador, habilitándolo.

Lenguajes de Programacion

Page 6: 1390229945 843 _lenguaje_c-introduccion

• Algo similar al lenguaje ensamblador, un programa especializado llamado COMPILADOR que corre en una PC, es el encargado de compilar el programa fuente a lenguaje de máquina.

• A diferencia del programa ensamblador, un compilador genera código ejecutable que no siempre es el más corto posible, en éste sentido el ensamblador es más eficiente.

Lenguajes de Programacion

Page 7: 1390229945 843 _lenguaje_c-introduccion

• En la siguiente gráfica se ilustra lo que ocurre durante el proceso de compilacion de un programa desde lenguaje de alto nivel a lenguaje de bajo nivel.

Lenguajes de Programacion

Page 8: 1390229945 843 _lenguaje_c-introduccion

COMPILACION

• MICROCONTROLADORES

Page 9: 1390229945 843 _lenguaje_c-introduccion

Ventajas de los lenguajes de alto nivel

Page 10: 1390229945 843 _lenguaje_c-introduccion

Ventajas de los lenguajes de alto nivel

• Los PICs basan su funcionamiento en una arquitectura RISC, es decir carecen de muchas instrucciones, tal como: multiplicacion, division, comparacion, etc.

• Cada problema tiene una solución, por ejemplo, la multiplicación fácilmente se sustituye por sumas sucesivas.

• Esto no es motivo de preocupación, porque el lenguaje C ha solucionado éste problema y muchos otros.

Page 11: 1390229945 843 _lenguaje_c-introduccion

• Un preprocesador es parte integral del compilador C y su función es reconocer y ejecutar instrucciones del preprocesador.

• Las instrucciones del preprocesador son especiales ya que no pertenecen al lenguaje C, pero es parte del paquete (software) que viene con el compilador C.

• Cada comando del preprocesador inicia con signo numeral (#). Antes de la compilacion del programa, el compilador C activa el preprocesador que recorre el programa buscando estos signos numerales (#).

• Si encuentra alguno el preprocesador los reemplazara con otro texto, que depende del tipo de comando, podria ser el contenido de un archivo o una secuencia corta de caracteres. Luego de esto, se inicia el proceso de compilación.

DIRECTIVAS PREPROCESADOR

Page 12: 1390229945 843 _lenguaje_c-introduccion

Directiva Preprocesadora: # include.

• El comando # include obtiene texto desde otro documento, no importa qué es, para formar parte del programa.

• Con la finalidad de acelerar el proceso de escritura de un programa, los comandos, comentarios y declaraciones que se repiten varias veces se agrupan en ficheros especiales que facilmente se incluyen usando esta directiva.

Page 13: 1390229945 843 _lenguaje_c-introduccion

Directiva Preprocesadora: # include.

Page 14: 1390229945 843 _lenguaje_c-introduccion

Directiva Preprocesadora # define

• El comando # define provee expansion macro reemplazando identificadores en el programa por sus valores.

• #define symbol sequence_of_charactersEjemplo:... #define PI 3.14

...

Page 15: 1390229945 843 _lenguaje_c-introduccion

Fundamentos Básicos del Lenguaje de Programación C

• La idea principal de escribir un programa en lenguaje C es dividir un problema grande en módulos más pequeños.

• Por ejemplo nos piden escribir un programa para leer temperatura y visualizar resultados en una pantalla LCD. Este problema se lo podría dividir en cuatro partes que se procesan con determinado orden:

1. Configurar módulo ADC del PIC.2. Leer señal analógica.3. Calcular temperatura.4. Enviar datos con formato a pantalla LCD.

Como se puede ver este problema se resuelve escribiendo cuatro funciones que se ejecutan repetidamente en lazo infinito.Todo se basa en funciones !

Page 16: 1390229945 843 _lenguaje_c-introduccion

Estructura de un programa en Lenguaje C

Page 17: 1390229945 843 _lenguaje_c-introduccion

Comentarios• Los comentarios son parte del programa y muy necesarios para

clarificar su operación y proveer más información del mismo.• El compilador reconoce ciertos caracteres especiales usados para

designar el inicio y fin de los comentarios, ignora completamente el texto entre estos símbolos durante la compilación.

• Estos caracteres especiales son de dos tipos:

Uno define comentarios largos que se extiende varias líneas de programa./*xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx*/

El otro define comentarios cortos de una sola línea de programa.// xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Page 18: 1390229945 843 _lenguaje_c-introduccion

• Un programa ya escrito y funcional siempre se:

Mejora.Modifica.Actualiza.Simplifica.

• Programa sin comentarios, tratar de entenderlo, casi siempre es una pérdida de tiempo.

Comentarios

Page 19: 1390229945 843 _lenguaje_c-introduccion

Tipos de Datos en Lenguaje CLa tabla muestra el rango de valores, que estos datos tienen en su forma básica.

Page 20: 1390229945 843 _lenguaje_c-introduccion

Tipo bit

• mikroC PRO para PICs provee datos tipo bit que podrian usarse para declarar variables tipo bit.

• Ejemplo:bit bf; //bf variable tipo bit

• No hay punteros a variables tipo bit.bit *ptr; //no valido

• Un arreglo tipo bit no es valido.bit array [7]; //no valido

• Variables tipo bit no pueden inicializarse.

Page 21: 1390229945 843 _lenguaje_c-introduccion

Tipo sbit

• El compilador mikroC Pro tiene el tipo sbit que provee acceso a registros SFRs, variables

• Se puede declarar una variable tipo sbit tal que apunte a un bit específico en un registro SFR.

• En el programa principal se tiene que especificar a que registro la variable tipo sbit apunta, por ejemplo:

sbit Abit at PORTB.B0; // aqui queda definida la variable Abit...void main() { ...}De esta manera la variable Abit apunta a PORTB.0

Page 22: 1390229945 843 _lenguaje_c-introduccion

Modificadores: signed y unsigned

• Los prefijos modificadores signed y unsigned se pueden aplicar a tipo char y tipo int.

• En ausencia de prefijos modificadores, el tipo char por defecto es unsigned (sin signo), es decir entero de 8 bits sin signo.

• En ausencia de prefijos modificadores, el tipo int por defecto es signed (con signo)

Page 23: 1390229945 843 _lenguaje_c-introduccion

Modificadores: short y long

• Los modificadores short y long solamente es aplicable con tipo int.

• Estos modificadores (short, long), usados por sí sólos, significan short int y long int respectivamente.

Page 24: 1390229945 843 _lenguaje_c-introduccion

Tipos float, double y long double

Los tipos float, double y long double son considerados por MikroC como iguales.

Page 25: 1390229945 843 _lenguaje_c-introduccion

Tipos Punto Flotante

• El tipo float y double, junto con la variante long double son considerados tipo punto flotante.

• mikroC PRO considera a los tres del mismo tipo, es decir punto flotante.

• Estos tipos, en mikroC todos demandan 4 bytes en memoria.

Page 26: 1390229945 843 _lenguaje_c-introduccion

Asignación de datos

• Decimal– int i = 10; /* decimal 10 */ – int j = -10; /* decimal -10 */ – int p = 0; /* decimal 0 */

• Hexadecimal– short x = 0x37; /* decimal 55 */– short y = 0x7F; /* decimal 127 */– int z = 0x125; /* decimal 293 */

Page 27: 1390229945 843 _lenguaje_c-introduccion

Asignación de datos

• Octal– int m = 023; /* 19 */– short n = 016; /* 14 */

• Binario– char p = 0b00001111;– short q = 0b10101010;– unsigned char z = 0b11001100;

• ASCII– char dato = ‘a’;– char m = ‘5’;

Page 28: 1390229945 843 _lenguaje_c-introduccion

Definir nuevos tipos de datos

La palabra clave typedef le permite crear nombres que se convierten en sinónimos del tipo especificado.

typedef unsigned int positivo; // positivo es un sinónimo para el tipo entero sin signo

positivo a,b; // Variables a y b son de tipo positivo

a = 10; // Variable a equivale a 10 b = 5; // Variable b equivale a 5

Page 29: 1390229945 843 _lenguaje_c-introduccion

Ejemplos

Declarar un sinónimo para"unsigned long int" typedef unsigned long int Distancia; Ahora, sinónimo "Distancia" puede usarse como identificador del tipo unsigned long int.Distancia i; declara variable i de unsigned long int

Varios tipos pueden declararse de una. Por ejemplo:typedef int *Pti, Array[10]; Aqui, Pti es un sinonimo para tipo “apunta a int”, y Array es un sinónimo para el tipo “array de 10 elementos enteros”.