SlideShare una empresa de Scribd logo
1 de 29
MICROCONTROLADORES 
SEGUNDO PARCIAL 
• MICROCONTROLADORES
LENGUAJE C PARA PICs 
 Estructura 
 Directivas preprocesadoras 
 Tipos de Datos 
 Nuevos tipos de datos
LENGUAJE C PARA PICS 
• MICROCONTROLADORES
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.
Lenguajes de Programacion 
• 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 
• 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 
• 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.
COMPILACION 
• MICROCONTROLADORES
Ventajas de los lenguajes de alto nivel
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.
DIRECTIVAS PREPROCESADOR 
• 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.
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.
Directiva Preprocesadora: # include.
Directiva Preprocesadora # define 
• El comando # define provee expansion macro 
reemplazando identificadores en el programa 
por sus valores. 
• #define symbol sequence_of_characters 
Ejemplo: 
... 
#define PI 3.14 
...
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 !
Estructura de un programa en 
Lenguaje C
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
Comentarios 
• 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.
Tipos de Datos en Lenguaje C 
La tabla muestra el rango de valores, que estos datos tienen en su forma básica.
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.
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
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)
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.
Tipos float, double y long double 
Los tipos float, double y long double son considerados por MikroC como iguales.
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.
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 */
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’;
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
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”.

Más contenido relacionado

La actualidad más candente

Lenguaje c 1
Lenguaje c   1Lenguaje c   1
Lenguaje c 1Denisse C
 
Lenguaje ensamblador del microprocesador
Lenguaje ensamblador del microprocesadorLenguaje ensamblador del microprocesador
Lenguaje ensamblador del microprocesadorsmfch
 
"Hola Mundo" C18, PIC18F y MPLAB
"Hola Mundo"  C18,  PIC18F y MPLAB"Hola Mundo"  C18,  PIC18F y MPLAB
"Hola Mundo" C18, PIC18F y MPLABBlackD10
 
Estructuras de un programa
Estructuras de un programaEstructuras de un programa
Estructuras de un programaTensor
 
Guia referencia mc
Guia referencia mcGuia referencia mc
Guia referencia mcsackter
 
Comunicaciones seriales c# 2012
Comunicaciones seriales c# 2012Comunicaciones seriales c# 2012
Comunicaciones seriales c# 2012Gerardo C
 
Lenguaje Borland C - Estructura y Componentes
Lenguaje Borland C - Estructura y ComponentesLenguaje Borland C - Estructura y Componentes
Lenguaje Borland C - Estructura y ComponentesKarina Arguedas Ruelas
 
Repaso del lenguaje C++
Repaso del lenguaje C++Repaso del lenguaje C++
Repaso del lenguaje C++g_torrealba
 
Tutorial proton part 2
Tutorial proton part 2Tutorial proton part 2
Tutorial proton part 2dar851112
 
Manejo de perifericos para microcontroladore
Manejo de perifericos para microcontroladoreManejo de perifericos para microcontroladore
Manejo de perifericos para microcontroladoreLuis Zurita
 

La actualidad más candente (17)

Lenguaje c 1
Lenguaje c   1Lenguaje c   1
Lenguaje c 1
 
Lenguaje ensamblador del microprocesador
Lenguaje ensamblador del microprocesadorLenguaje ensamblador del microprocesador
Lenguaje ensamblador del microprocesador
 
Ejemplos pic c
Ejemplos pic cEjemplos pic c
Ejemplos pic c
 
"Hola Mundo" C18, PIC18F y MPLAB
"Hola Mundo"  C18,  PIC18F y MPLAB"Hola Mundo"  C18,  PIC18F y MPLAB
"Hola Mundo" C18, PIC18F y MPLAB
 
C(++) programacion en c y c++
C(++)   programacion en c y c++C(++)   programacion en c y c++
C(++) programacion en c y c++
 
Adc 4
Adc 4Adc 4
Adc 4
 
Estructuras de un programa
Estructuras de un programaEstructuras de un programa
Estructuras de un programa
 
Lenguaje C (pdf)
Lenguaje C (pdf)Lenguaje C (pdf)
Lenguaje C (pdf)
 
Punteros y funciones abril agosto 2016
Punteros y funciones abril agosto 2016Punteros y funciones abril agosto 2016
Punteros y funciones abril agosto 2016
 
Guia referencia mc
Guia referencia mcGuia referencia mc
Guia referencia mc
 
Comunicaciones seriales c# 2012
Comunicaciones seriales c# 2012Comunicaciones seriales c# 2012
Comunicaciones seriales c# 2012
 
Lenguaje Borland C - Estructura y Componentes
Lenguaje Borland C - Estructura y ComponentesLenguaje Borland C - Estructura y Componentes
Lenguaje Borland C - Estructura y Componentes
 
Tutorial C
Tutorial CTutorial C
Tutorial C
 
Transparencias4
Transparencias4Transparencias4
Transparencias4
 
Repaso del lenguaje C++
Repaso del lenguaje C++Repaso del lenguaje C++
Repaso del lenguaje C++
 
Tutorial proton part 2
Tutorial proton part 2Tutorial proton part 2
Tutorial proton part 2
 
Manejo de perifericos para microcontroladore
Manejo de perifericos para microcontroladoreManejo de perifericos para microcontroladore
Manejo de perifericos para microcontroladore
 

Destacado

Uso del timer0 para el pic 16 f877a con el compilador hi tech
Uso del timer0 para el pic 16 f877a con el compilador hi techUso del timer0 para el pic 16 f877a con el compilador hi tech
Uso del timer0 para el pic 16 f877a con el compilador hi techCarlos Buitron Quispe
 
Ensamblador pic16f84a
Ensamblador pic16f84aEnsamblador pic16f84a
Ensamblador pic16f84aRoberto Mora
 
Libro simulacion mikroc
Libro simulacion mikrocLibro simulacion mikroc
Libro simulacion mikrocpabs_devil
 
Set de 35 instrucciones para pic16f877A programación en assembler
Set de 35 instrucciones para pic16f877A programación en assembler Set de 35 instrucciones para pic16f877A programación en assembler
Set de 35 instrucciones para pic16f877A programación en assembler Anllel Cardenas Yllanes
 
Curso microprocesadores y_microcontroladores_unidad_1
Curso microprocesadores y_microcontroladores_unidad_1Curso microprocesadores y_microcontroladores_unidad_1
Curso microprocesadores y_microcontroladores_unidad_1ddarioooo
 

Destacado (8)

Microc
MicrocMicroc
Microc
 
Uso del timer0 para el pic 16 f877a con el compilador hi tech
Uso del timer0 para el pic 16 f877a con el compilador hi techUso del timer0 para el pic 16 f877a con el compilador hi tech
Uso del timer0 para el pic 16 f877a con el compilador hi tech
 
Ensamblador pic16f84a
Ensamblador pic16f84aEnsamblador pic16f84a
Ensamblador pic16f84a
 
Microcontroladores pic
Microcontroladores picMicrocontroladores pic
Microcontroladores pic
 
Libro mikro c
Libro mikro cLibro mikro c
Libro mikro c
 
Libro simulacion mikroc
Libro simulacion mikrocLibro simulacion mikroc
Libro simulacion mikroc
 
Set de 35 instrucciones para pic16f877A programación en assembler
Set de 35 instrucciones para pic16f877A programación en assembler Set de 35 instrucciones para pic16f877A programación en assembler
Set de 35 instrucciones para pic16f877A programación en assembler
 
Curso microprocesadores y_microcontroladores_unidad_1
Curso microprocesadores y_microcontroladores_unidad_1Curso microprocesadores y_microcontroladores_unidad_1
Curso microprocesadores y_microcontroladores_unidad_1
 

Similar a Microcontroladores Lenguajes C

Similar a Microcontroladores Lenguajes C (20)

LENGUAJE ENSAMBLADOR
LENGUAJE ENSAMBLADORLENGUAJE ENSAMBLADOR
LENGUAJE ENSAMBLADOR
 
lenguaje c.ppt
lenguaje c.pptlenguaje c.ppt
lenguaje c.ppt
 
C ++ Estatutos ciclos
C ++ Estatutos ciclosC ++ Estatutos ciclos
C ++ Estatutos ciclos
 
C lpii
C lpiiC lpii
C lpii
 
Lenguaje c completo 6 g x revisar x los estudiantes
Lenguaje c completo 6 g x revisar x los estudiantesLenguaje c completo 6 g x revisar x los estudiantes
Lenguaje c completo 6 g x revisar x los estudiantes
 
Libro digital de programación
Libro digital de programaciónLibro digital de programación
Libro digital de programación
 
Presentación-Algoritmos
Presentación-Algoritmos Presentación-Algoritmos
Presentación-Algoritmos
 
Como usar el lenguaje c++
Como usar el lenguaje c++Como usar el lenguaje c++
Como usar el lenguaje c++
 
Lenguaje de programación C
Lenguaje de programación CLenguaje de programación C
Lenguaje de programación C
 
Inf 324 01_22_lenguaje_c
Inf 324 01_22_lenguaje_cInf 324 01_22_lenguaje_c
Inf 324 01_22_lenguaje_c
 
Universidad de panamá kathia j
Universidad de panamá kathia jUniversidad de panamá kathia j
Universidad de panamá kathia j
 
Lenguaje c 2
Lenguaje c 2Lenguaje c 2
Lenguaje c 2
 
GENERACION DE CODIGO INTERMEDIO
GENERACION DE CODIGO INTERMEDIOGENERACION DE CODIGO INTERMEDIO
GENERACION DE CODIGO INTERMEDIO
 
Cesar ivan lenguaje_c
Cesar ivan lenguaje_cCesar ivan lenguaje_c
Cesar ivan lenguaje_c
 
02. lenguaje c autor enrique vicente bonet esteban
02. lenguaje c autor enrique vicente bonet esteban02. lenguaje c autor enrique vicente bonet esteban
02. lenguaje c autor enrique vicente bonet esteban
 
Lenguaje C
Lenguaje CLenguaje C
Lenguaje C
 
Lenguaje c
Lenguaje cLenguaje c
Lenguaje c
 
Gran Libro de C en Español
Gran Libro de C en EspañolGran Libro de C en Español
Gran Libro de C en Español
 
Lenguaje c
Lenguaje cLenguaje c
Lenguaje c
 
Lenguaje c
Lenguaje cLenguaje c
Lenguaje c
 

Más de Jair BG

Parcial 2 tdic10_2010
Parcial 2 tdic10_2010Parcial 2 tdic10_2010
Parcial 2 tdic10_2010Jair BG
 
Parcial t1 2011 sol
Parcial t1 2011 solParcial t1 2011 sol
Parcial t1 2011 solJair BG
 
Parcial t1 2010 sol
Parcial t1 2010 solParcial t1 2010 sol
Parcial t1 2010 solJair BG
 
Parcial dic 13 t2 2008 sol
Parcial dic 13 t2 2008 solParcial dic 13 t2 2008 sol
Parcial dic 13 t2 2008 solJair BG
 
Micp mejoramiento-sept2011solucion
Micp mejoramiento-sept2011solucionMicp mejoramiento-sept2011solucion
Micp mejoramiento-sept2011solucionJair BG
 
Micp mej feb18_2011_solucion
Micp mej feb18_2011_solucionMicp mej feb18_2011_solucion
Micp mej feb18_2011_solucionJair BG
 
Micc temas examen
Micc temas examenMicc temas examen
Micc temas examenJair BG
 
Micc mejoramiento-sept2011-solucion
Micc mejoramiento-sept2011-solucionMicc mejoramiento-sept2011-solucion
Micc mejoramiento-sept2011-solucionJair BG
 
Micc parcial dic9_2010 - copia (3)_sol
Micc parcial dic9_2010 - copia (3)_solMicc parcial dic9_2010 - copia (3)_sol
Micc parcial dic9_2010 - copia (3)_solJair BG
 
Micc parcial dic9_2010 - copia (2)_sol
Micc parcial dic9_2010 - copia (2)_solMicc parcial dic9_2010 - copia (2)_sol
Micc parcial dic9_2010 - copia (2)_solJair BG
 
Micc parcial dic9_2010 - copia (1)_sol
Micc parcial dic9_2010 - copia (1)_solMicc parcial dic9_2010 - copia (1)_sol
Micc parcial dic9_2010 - copia (1)_solJair BG
 
Micc mejoramiento feb_28_2009_soluc
Micc mejoramiento feb_28_2009_solucMicc mejoramiento feb_28_2009_soluc
Micc mejoramiento feb_28_2009_solucJair BG
 
Micc mej sept16_2010_solucion
Micc mej sept16_2010_solucionMicc mej sept16_2010_solucion
Micc mej sept16_2010_solucionJair BG
 
Micc mej sept16_2010
Micc mej sept16_2010Micc mej sept16_2010
Micc mej sept16_2010Jair BG
 
Micc mej feb18_2010_solucion
Micc mej feb18_2010_solucionMicc mej feb18_2010_solucion
Micc mej feb18_2010_solucionJair BG
 
Micc mej feb18_2010
Micc mej feb18_2010Micc mej feb18_2010
Micc mej feb18_2010Jair BG
 
Micc leccion04 nov26_2009
Micc leccion04 nov26_2009Micc leccion04 nov26_2009
Micc leccion04 nov26_2009Jair BG
 
Micc final sept05_2009
Micc final sept05_2009Micc final sept05_2009
Micc final sept05_2009Jair BG
 
Micc final sep02_2010 solucion
Micc final sep02_2010 solucionMicc final sep02_2010 solucion
Micc final sep02_2010 solucionJair BG
 
Micc final feb14_2009_soluc
Micc final feb14_2009_solucMicc final feb14_2009_soluc
Micc final feb14_2009_solucJair BG
 

Más de Jair BG (20)

Parcial 2 tdic10_2010
Parcial 2 tdic10_2010Parcial 2 tdic10_2010
Parcial 2 tdic10_2010
 
Parcial t1 2011 sol
Parcial t1 2011 solParcial t1 2011 sol
Parcial t1 2011 sol
 
Parcial t1 2010 sol
Parcial t1 2010 solParcial t1 2010 sol
Parcial t1 2010 sol
 
Parcial dic 13 t2 2008 sol
Parcial dic 13 t2 2008 solParcial dic 13 t2 2008 sol
Parcial dic 13 t2 2008 sol
 
Micp mejoramiento-sept2011solucion
Micp mejoramiento-sept2011solucionMicp mejoramiento-sept2011solucion
Micp mejoramiento-sept2011solucion
 
Micp mej feb18_2011_solucion
Micp mej feb18_2011_solucionMicp mej feb18_2011_solucion
Micp mej feb18_2011_solucion
 
Micc temas examen
Micc temas examenMicc temas examen
Micc temas examen
 
Micc mejoramiento-sept2011-solucion
Micc mejoramiento-sept2011-solucionMicc mejoramiento-sept2011-solucion
Micc mejoramiento-sept2011-solucion
 
Micc parcial dic9_2010 - copia (3)_sol
Micc parcial dic9_2010 - copia (3)_solMicc parcial dic9_2010 - copia (3)_sol
Micc parcial dic9_2010 - copia (3)_sol
 
Micc parcial dic9_2010 - copia (2)_sol
Micc parcial dic9_2010 - copia (2)_solMicc parcial dic9_2010 - copia (2)_sol
Micc parcial dic9_2010 - copia (2)_sol
 
Micc parcial dic9_2010 - copia (1)_sol
Micc parcial dic9_2010 - copia (1)_solMicc parcial dic9_2010 - copia (1)_sol
Micc parcial dic9_2010 - copia (1)_sol
 
Micc mejoramiento feb_28_2009_soluc
Micc mejoramiento feb_28_2009_solucMicc mejoramiento feb_28_2009_soluc
Micc mejoramiento feb_28_2009_soluc
 
Micc mej sept16_2010_solucion
Micc mej sept16_2010_solucionMicc mej sept16_2010_solucion
Micc mej sept16_2010_solucion
 
Micc mej sept16_2010
Micc mej sept16_2010Micc mej sept16_2010
Micc mej sept16_2010
 
Micc mej feb18_2010_solucion
Micc mej feb18_2010_solucionMicc mej feb18_2010_solucion
Micc mej feb18_2010_solucion
 
Micc mej feb18_2010
Micc mej feb18_2010Micc mej feb18_2010
Micc mej feb18_2010
 
Micc leccion04 nov26_2009
Micc leccion04 nov26_2009Micc leccion04 nov26_2009
Micc leccion04 nov26_2009
 
Micc final sept05_2009
Micc final sept05_2009Micc final sept05_2009
Micc final sept05_2009
 
Micc final sep02_2010 solucion
Micc final sep02_2010 solucionMicc final sep02_2010 solucion
Micc final sep02_2010 solucion
 
Micc final feb14_2009_soluc
Micc final feb14_2009_solucMicc final feb14_2009_soluc
Micc final feb14_2009_soluc
 

Microcontroladores Lenguajes C

  • 1. MICROCONTROLADORES SEGUNDO PARCIAL • MICROCONTROLADORES
  • 2. LENGUAJE C PARA PICs  Estructura  Directivas preprocesadoras  Tipos de Datos  Nuevos tipos de datos
  • 3. LENGUAJE C PARA PICS • MICROCONTROLADORES
  • 4. 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.
  • 5. Lenguajes de Programacion • 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.
  • 6. Lenguajes de Programacion • 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.
  • 7. Lenguajes de Programacion • 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.
  • 9. Ventajas de los lenguajes de alto nivel
  • 10. 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.
  • 11. DIRECTIVAS PREPROCESADOR • 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.
  • 12. 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.
  • 14. Directiva Preprocesadora # define • El comando # define provee expansion macro reemplazando identificadores en el programa por sus valores. • #define symbol sequence_of_characters Ejemplo: ... #define PI 3.14 ...
  • 15. 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 !
  • 16. Estructura de un programa en Lenguaje C
  • 17. 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
  • 18. Comentarios • 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.
  • 19. Tipos de Datos en Lenguaje C La tabla muestra el rango de valores, que estos datos tienen en su forma básica.
  • 20. 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.
  • 21. 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
  • 22. 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)
  • 23. 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.
  • 24. Tipos float, double y long double Los tipos float, double y long double son considerados por MikroC como iguales.
  • 25. 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.
  • 26. 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 */
  • 27. 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’;
  • 28. 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
  • 29. 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”.