Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
PROGRAMACION DE LOS PIC 2021-1.pdf
1. ¡Hola!
¡Que bueno volver a encontrarnos por aquí!
Espero estés bien, y te hayan sido de provecho
cada una de las presentaciones anteriores
Hoy quiero invitarte a seguir andando un poco mas en la temática
de los microcontroladores PIC, hoy abordaremos la nave de la
programación, hablaremos un poco del lenguaje C, también del
entro compilador Mikro C, y las características propias de la
programación de los PIC.
1
¿Qué te parece? ¿Te animas?...
¡Vamos a darle!
Wilfran Yaraure
Ing. En Electronica
Facilitador
2. PROGRAMACIÓN DE
MICROCONTROLADORES PIC
Área Cs. De la Salud
Programa de Ing. Biomédica Dpto. De
Electromedicina
Unidad Curricular: Microcontroladores y
Microprocesadores II
Wilfran Yaraure
Ing. En Electrónica
Facilitador
3. PROGRAMACIÓN DE MICROCONTROLADORES PIC
En el PIC la memoria encargada de
ejecutar el programa es la memoria
flash, la cual almacena en su pila de
direcciones el código ejecutable del
programa, que esta constituido por un
conjunto de numero binarios (0 y 1
lenguaje de maquina) que conforman
una serie de palabras o sentencias que el
micro puede ejecutar, estar palabras
pueden tener una achura de 12, 14, o 16
BIT según la arquitectura con la que
cuente el PIC.
Estas palabras son procesadas por el
CPU del micro como una instrucción a
ejecutar, la totalidad de las instrucciones
que el PIC puede reconocer y ejecutar
conforman el conjunto de instrucciones
de ese PIC.
Anteriormente el desarrollo de estos códigos
ejecutables se realizaba mediante un proceso
bastante difícil, lo que origino el surgimiento
del primer lenguaje de programación, un
lenguaje de bajo nivel, llamado lenguaje
assembler (ASM) o ensamblador, con una
sintaxis básica de fácil comprensión y fácil
escritura, basado en abreviaturas con
significados, este lenguaje era traducido o
compilado a lenguaje de maquina (código
binario) mediante el compilador ensamblador.
A pesar de esto, assembler presenta dos
grandes desventajas como:
1. El código de programación suele ser muy
extenso y ocupar mucha memoria del PIC.
2. En este lenguaje cada microcontrolador se
programa con un conjunto de
instrucciones especifico para el.
3
Solemos pensar
que la
programación es
un proceso
complicado, pero
esto no es cierto,
ya existen una
serie de lenguajes
y compiladores,
que nos permiten
reducir el numero
de instrucciones,
tiempo, y
complejidad que
generaría la
programación en
tiempos
anteriores, así que
no te asustes, y
dispón tu mente a
ser instruida en
este proceso.
Wilfran Yaraure
Ing. En Electrónica
Facilitador
5. PROGRAMACIÓN DE MICROCONTROLADORES PIC
5
Lenguaje C
Wilfran Yaraure
Ing. En Electrónica
Facilitador
Este lenguaje permite
realizar operaciones tanto
en Byte como en Bit, es
decir operaciones lógicas,
desplazamientos entre
otros, además esta
estandarizado en ANSI, en
lenguaje portable, lo que
permite reutilizar el mismo
código en varios proyectos,
El lenguaje C nace
en la década de los
70´s (1972) con el
objetivo de reescribir
los sistemas
operativos UNIX y
optimizar el ASM, en
los laboratorios Bell .
Este fue la evolución
de lenguajes previos
llamados B, y BCPL.
Entre sus características
destacadas esta que
varias instrucciones en
ASM pueden ser
sustituidas por una sola
sentencia en C,
optimizando el uso de
memoria, la escritura y
la comprensión del
código.
6. Cada uno de estos lenguajes de alto o bajo
nivel utiliza o requiere de un software
compilador o traductor, encargado de
traducir, como su nombre lo indica, cada
sentencia en C a un lenguaje de maquina (0 y
1) o códigos binarios, para que puedan ser
procesados por el micro.
Actualmente existe una variedad de
compiladores e intérpretes para diversas
familias de microcontroladores.
En el caso se pueden encontrar el CPCM de
la empresa CCS, el PBASIC de PARALLAX,
mikroC PRO, mikroBasic y mikroPascal
Estos ofrecen una serie de librerías que
reducen el proceso de configuración y
utilización de periféricos avanzados que
incorporan estos PIC.
6
Los Compiladores se basan en estructuras que
facilitan la programación, optimizan las
operaciones matemáticas y los procesos,
utilizando funciones predefinidas y las funciones
creadas por el desarrollador, además de un
conjunto de variables, de tipo carácter, entero, y
punto decimal.
El objeto principal del Compilador es crear el
código binario o lenguaje de maquina y generar
un archivo *.hex, que permita programa
eléctricamente el microcontrolador
PROGRAMACIÓN DE MICROCONTROLADORES PIC
Compilador
Wilfran Yaraure
Ing. En Electrónica
Facilitador
8. PROGRAMACIÓN DE MICROCONTROLADORES PIC
Mikro C PRO es un paquete de software
con una amplia variedad de ayudas y
herramientas que facilita la creación
códigos de programación en lenguaje C,
para diferentes familias de PIC.
Presenta algunas diferencias con el
estándar ANSI, que le permiten hacer mas
fácil la programación de los PIC, y otras
debido a la limitación de la arquitectura
del hardware de los PIC.
La letra C Hace referencia a las
semejanzas entre el lenguajes C y mikro C
8
Mikro C
Este entorno cuenta con una versión demo o
estudiantil, con características similares a su
versión completa, la única limitación es la
dimensión del código de máquina que no
puede exceder 2K bytes,
se puede descargar de la pagina:
www.mikroe.com.
¿Por qué Mikro C?
Wilfran Yaraure
Ing. En Electrónica
Facilitador
9. PROGRAMACIÓN DE MICROCONTROLADORES PIC
1) El archivo fuente contiene el código en mikroC (Programación del micro controlador).
2) El preprocesador se utiliza automáticamente por el compilador al iniciarse el proceso de la
compilación.
3) El compilador busca las directivas del preprocesador (inician con ’#’) en el código y lo configura
según estas directivas.
4) El analizador sintáctico (parser) elimina toda la información inútil del código (comentarios,
espacios en blanco).
5) El compilador traduce el código a un archivo binario denominado archivo .mcl.
6) El enlazador (linker) recupera toda la información requerida para ejecutar el programa de los
archivos externos y los agrupa en un solo archivo (.dbg).
7) Por último , el generador .hex produce un archivo .hex. Es el archivo que se va a cargar en el
microcontrolador.
9
Compilación en Mikro C
Pasos de la compilación
Todo este
proceso se
denomina
“building”
Wilfran Yaraure
Ing. En Electrónica
Facilitador
10. “
¿Cómo vas hasta ahora?...
¿Que te ha parecido la información?
10
Todo esto es un proceso interesante, y bastante fácil de realizar, solo hay que
prestar atención y dedicarle algo de tiempo.
Ahora vamos a la parte mas densa, que es la programación, mantén la calma y el
ánimo, eres capaz e inteligente.
¡Vamos a darle!.
Wilfran Yaraure
Ing. En Electrónica
Facilitador
11. ESTRUCTURA DE UN PROGRAMA.
11
PROGRAMACIÓN DE MICROCONTROLADORES PIC
1. Cabecera.
2. Declarar las variables globales.
3. Declarar las funciones secundarias
4. Declarar la función principal void main ();
5. Inicialización de los puertos y módulos del
microcontrolador;
6. Crear Ciclo infinito de repeticiones do { … }
While (1);
Lógica del programa
Wilfran Yaraure
Ing. En Electrónica
Facilitador
12. ESTRUCTURA DE UN PROGRAMA.
Para el desarrollo de un programa en
Mikro C, se debe seguir la siguiente
estructura:
12
PROGRAMACIÓN DE MICROCONTROLADORES PIC
Debes recordar que el micro
lee las líneas de
programación por orden
descendente
Es decir, de arriba hacia
abajo
Por lo que es necesario
cumplir con el orden de
estos pasos
Wilfran Yaraure
Ing. En Electrónica
Facilitador
1 Cabecera; Ayuda a describir los datos e información del
programa empleando un comentario /* Comentario */
Declarar las variables globales (Int j; Char entre otros);
presentar las variables que se utilizaran en todo el código, (son
establecidas por el desarrollador).
2
Declarar las funciones secundarias;
Describir las subrutinas o funciones diseñadas por el
desarrollador para el funcionamiento del programa.
3
Declarar la función principal void main ();
Es la función principal sobre ella se ejecuta la lógica de control
principal que se quiere.
4
Inicialización de los puertos y módulos del microcontrolador;
configurar quien E/S, Conversión A/D, Oscilador, entre otros,
esto se realiza dentro de la función void main.
5
Crear Ciclo infinito de repeticiones do { … } While (0);
Para que mientras este encendido el micro se ejecute el
programa, de lo contrario solo lo ejecutara una sola vez.
6
Lógica del programa
Donde se describen las líneas de programación que ejecutaran
el control principal y visible del programa.
7
13. Son partes del programa que se
emplean para aclarar operaciones de
programa o para proporcionar mayor
información sobre el mismo, como los
hacemos en la cabecera.
Son de uso exclusivo del programador
y el compilador se encarga de
eliminarlos del código fuente antes del
análisis sintáctico.
En mikroC pueden ser unilineales o
multilíneas.
Los multilíneas están entre /* y */
Los cometarios unilineal inician con ‘//’
¿QUE SON LOS COMENTARIOS?
13
PROGRAMACIÓN DE MICROCONTROLADORES PIC
Wilfran Yaraure
Ing. En Electrónica
Facilitador
14. Una declaración consiste en informar
al compilador los nombres o
etiquetas que se emplearan en un
programa, qué representan, de qué
tipo serán, cuáles operaciones se
permiten, entre otra cosas.
¿QUE SON LAS DECLARACIONES?
¿Qué aspectos deben ser declarados en
un programa?
❑ Variables.
❑ Constantes.
❑ Funciones.
❑ Tipos.
❑ Estructuras.
❑ Uniones.
❑ Etiquetas de enumeraciones.
❑ Miembros de estructuras.
❑ Miembros de uniones.
❑ Otros tipos de matrices.
❑ Etiquetas de sentencias.
❑ Macros de preprocesador..
14
PROGRAMACIÓN DE MICROCONTROLADORES PIC
Declaraciones y declaradores
Una declaración contiene especificadores
seguidos por uno o mas identificadores
(declaradores). Inicia con los especificadores
opcionales de clase de almacenamiento,
especificadores de tipo u otros modificadores.
Los identificadores se separan por
comas. La declaración termina en un punto y
coma.
Wilfran Yaraure
Ing. En Electrónica
Facilitador
15. son los nombres arbitrarios utilizados
para identificar : etiquetas, tipos,
símbolos, constantes, variables,
procedimientos y funciones.
Identificadores
Características para su uso:
❑ Se puede utilizar cualquier letras del abecedario
mayúsculas y minúsculas desde a hasta z, y A hasta
Z, el guion bajo "_", y los dígitos 0 a 9.
❑ MikroC no hace diferencia entre mayúsculas y
minúsculas, entonces Sum, sum y suM serán
equivalentes.
❑ Si se emplea el mismos nombre para varios
identificadores en el mismo programa, ocurre un error
❑ Al escribir el primer carácter debe ser una letra o el
guion bajo.
15
PROGRAMACIÓN DE MICROCONTROLADORES PIC
Ejemplos de identificadores válidos:
✓ temperature_V1
✓ Pressure
✓ no_hit
✓ dat2string
✓ SUM3
✓ _vtext.
Wilfran Yaraure
Ing. En Electrónica
Facilitador
16. Son palabras o nombres que ya tienen
significado fijo, por lo que no se pueden
usar como identificadores.
Mickro C, presenta un total de 98 palabras
reservadas
Palabras clave o reservadas
Listado de palabras reservadas:
16
PROGRAMACIÓN DE MICROCONTROLADORES PIC
Wilfran Yaraure
Ing. En Electrónica
Facilitador
17. MikroC Maneja un lenguaje de tipo, cada
variable o constante pertenecen a un tipo
definido.
Este entorno soporta tipos de datos
estándar (predefinidos) como los tipos
enteros con signo o sin signo de varios
tamaños, matrices, punteros, estructuras y
uniones.
También permite definir nuevos tipos de
datos utilizando el especificador typedef.
Tipos
17
PROGRAMACIÓN DE MICROCONTROLADORES PIC
Por ejemplo:
✓ typedef char MyType1[10];
✓ typedef int MyType2;
✓ typedef unsigned int * MyType3;
✓ typedef MyType1 * MyType4;
✓ MyType2 mynumber;
Tipos aritméticos
Este tipo se refiere a variables con palabras claves:
void, char, int, float y double, precedidas por los
siguientes prefijos: short (corto), long (largo), signed
(con signo) y unsigned (sin signo). Hay dos tipos
aritméticos, el tipo entero y el de punto flotante.
Tipos enteros
Son Los tipos char e int, junto con sus variantes. Se
escriben utilizando los prefijos de los modificadores
short, long, signed y unsigned.
Tipos de punto flotante (fraccionarios)
Son Los tipos de punto flotante float y double junto
con el tipo long double
Tipo Void
Es un tipo especial que indica la ausencia de valor. No
hay objetos de void; este se utiliza para derivar tipos
más complejos.
Wilfran Yaraure
Ing. En Electrónica
Facilitador
18. Como venimos hablando las variables en
mikro C, pueden ser:
✓ bit
✓ char
✓ short
✓ int
✓ long
✓ float
✓ double
Tipos de Variables O Datos
18
PROGRAMACIÓN DE MICROCONTROLADORES PIC
Las variables bit almacenan valores lógico,
verdadero o falso, 0 o 1.
Las variables char almacenan caracteres
codificados con el código ASCII, se utiliza para
guardar letras o textos.
Las variables short almacenan números entero de
8 bits cortos con valores entre : -127 a 127.
Las variables tipo int almacenan números enteros
de 16 bits, con valores entre: -32767 a 32767.
Las variables tipo long almacenan números enteros
largos de 32 bits, con valores entre: -2147483647 a
2147483647.
Las variables tipo float y double permiten guardar
números con punto decimal.
Wilfran Yaraure
Ing. En Electrónica
Facilitador
19. En estas tablas puedes observar las características de cada variable mencionadas anteriormente:
Tipos de Variables O Datos
19
PROGRAMACIÓN DE MICROCONTROLADORES PIC
Wilfran Yaraure
Ing. En Electrónica
Facilitador
20. ¿Que debemos hacer para declara variables?
Para ello debes hace lo siguiente:
1. Indicar el tipo de variable
2. Nombrar la variable, asignando un
nombre según tu preferencia.
3. Asignar un valor inicial a la variable,
esto es opcional.
4. Culminar con el carácter punto y
coma (;).
20
PROGRAMACIÓN DE MICROCONTROLADORES PIC
Ejemplos de identificadores válidos:
✓ bit VARIABLE1_BIT; //Declaración de una variable tipo
bit.
✓ char CARACTER; //Declaración de una variable tipo
char.
✓ int ENTERO; //Declaración de una variable tipo entera
inicializada
✓ float DECIMAL; //Declaración de una variable con punto
decimal
✓ double DECIMAL2; //Declaración de una variable con
punto decimal
✓ long ENTERO2//Demacración de una variable de tipo
entero largo
Debes tener en cuenta que:
✓ Las variables no deben tener nombres repetidos.
✓ Las variables no deben empezar por un número.
✓ Una variable no puede utilizar caracteres especiales como: / * „ ; { }-! · % &.
Wilfran Yaraure
Ing. En Electrónica
Facilitador
21. ¿Que son las Funciones?
Son subprogramas o fragmento de
código que ciertas tareas especificas,
cuando es invocada o nombrada en el
flujo del programa principal o Función
principal, esta trabajan o se desarrolla
mediante uno o varios parámetros de
entrada, y generan un parámetro de
salida que se emplea en la
programación.
Existen 2 tipos de funciones, la función
principal de programa Void main () {…},
que solo puede existir una en todo el
código, y las funciones secundarias, que
pueden ser varias en el mismo código,
Las funciones son creadas por el
desarrollador, aunque también
existen algunas predefinidas en el
compilador.
la función main o principal como su
nombre lo indica es la principal, es
decir la de mayor importancia.
Debido a que es la encargada de
ejecutar el programa del
microcontrolador automáticamente
cuando este se energiza.
21
PROGRAMACIÓN DE MICROCONTROLADORES PIC
Wilfran Yaraure
Ing. En Electrónica
Facilitador
22. ¿Qué debo hacer para declara las Funciones?
Generalmente deben ser declaradas las
funciones secundarias, que
acompañaran a la función principal del
programa, que son funciones diseñadas
por el desarrollador (es decir, por ti).
estas funciones hechas por el
desarrollador deben ser declaradas
antes de la función main.
Recuerda que el micro lee las líneas de
programación de forma descendiente,
por eso si llega a la función main, y se
invoca alguna función secundaria que no
se haya declarado antes, se presentara
un error en el programa y la
compilación.
Para dar nombre a las funciones se
deben cumplen con las mismas
reglas para nombrar las variables.
22
PROGRAMACIÓN DE MICROCONTROLADORES PIC
tipo_de_resultado nombre_de_funcion name(lista-de-declaradores-deparámetros));
1. nombre_de_función hace referencia a el
nombre de función y debe ser un
identificador válido según las reglas antes
mencionadas.
2. tipo_de_resultado Hace referencia a el tipo
del datos que se procesaran en la función,
estos puede ser cualquier tipo estándar o
definido por el usuario, según los
mencionados anteriormente,
Wilfran Yaraure
Ing. En Electrónica
Facilitador
23. Ejemplos de declaración de funciones
✓void Función ( void ) {…} //Función con parámetros de entrada y salida vacíos.
✓void Función ( int A ) {…} //Función con un parámetro de entrada y salida vacía
✓int Función ( void ) {…} //Función con parámetro de entrada vacío y salida entera.
✓int Funcion ( int A ) {…} //Función con un parámetro de entrada y salida enteras.
✓float Producto ( float A, flota B ) //Función para calcular el producto de A y B.
{ // Apertura de la función con corchete.
float RESULTADO;
RESULTADO = A*B; //Producto de A y B.
return RESULTADO; //La función retorna el resultado guardado en RESULTADO.
} //Cierre de la función con corchete.
23
PROGRAMACIÓN DE MICROCONTROLADORES PIC
void main( void ) //Declaración de la función main.
{ // Apertura de la función main.
… //Código del programa principal del microcontrolador.
} //Cierre de la función main
Wilfran Yaraure
Ing. En Electrónica
Facilitador
24. Puntuadores o Separadores
Estos son elementos operadores que
permiten separa las líneas de
programación para organizar la lógica
del código fuente diseñado.
24
PROGRAMACIÓN DE MICROCONTROLADORES PIC
En mikro C se emplean los siguientes
separadores:
o [ ] Corchetes
o ( ) Paréntesis
o { } Llaves
o , Coma
o ; Punto Y Coma
o : Dos Puntos
o . Punto
o * Asterisco
o = Signo Igual
o # Almohadilla
[ ] Corchetes: indican índices de matrices uni y multi
dimensionales. Ejemplo:
char ch, str[] = "mikro";
int mat[3][4]; /* matriz de 3 x 4 */
ch = str[3]; /* cuarto elemento */
( ) Paréntesis: sirven para agrupar expresiones, aislar
expresiones condicionales e indicar llamadas a funciones.
Ejemplo:
d = c * (a + b); /* modifica la precedencia normal */
if (d == z) ++x; /* expresión condicional */
func(); /* llamada a función, sin parámetros */
void func2(int n); /* declaración de función, con
parámetros */
{ } Llaves: indican el inicio y el final de una sentencia
compuesta, no requiere el punto y coma después de
corchete de cierre. Ejemplo:
if (d == z)
{
++x;
func();
}
Wilfran Yaraure
Ing. En Electrónica
Facilitador
25. Puntuadores o Separadores
25
PROGRAMACIÓN DE MICROCONTROLADORES PIC
, Coma: se utiliza para separar los
parámetros en las llamadas a función, los
identificadores en las declaraciones y los
elementos del inicializador. Ejemplo:
Lcd_Out(1, 1, txt);
char i, j, k;
const char MONTHS[12] =(31,28,31,30,31);
; Punto y coma: Finalizador de sentencia. Cada
expresión válida en C (incluyendo la vacía)
seguida por un punto y coma se interpreta como
una sentencia. Ejemplo:
a + b; /* evalúa a + b, descarta el resultado */
++a; /* efecto lateral en 'a', se descarta el valor ++a */
; /* expresión vacía, o una sentencia nula */
: Dos puntos: indican una etiqueta. Ejemplo:
start: x = 0;
= Signo igual: se utiliza para separar
declaraciones de variables de las listas de
inicialización así como los lados izquierdo y
derecho en las expresiones de asignación.
Ejemplo:
int test[5] = { 1, 2, 3, 4, 5 };
int x = 5;
Wilfran Yaraure
Ing. En Electrónica
Facilitador
26. Break
Wow!... Estamos avanzado, ¿Como vas?...
Es un tema interesante y bastante fácil ¿verdad?.
En principio parece tedioso y difícil, pero cuando le
prestas atención y comienzas a unir cada una de
las piezas te das cuenta que es fácil y divertido,
como si jugaras con legos
26
Es hora de continuar, ¿que te parece?
Entonces ¡Vamos a darle!.
Wilfran Yaraure
Ing. En Electrónica
Facilitador
27. OPERADORES
27
PROGRAMACIÓN DE MICROCONTROLADORES PIC
Son símbolos que indican las operaciones que se realizan
sobre una expresión. Pueden ser operaciones aritméticas,
lógicas u otras en particular. En el lengua C se disponen de
mas de 40 operadores, pero en la puesta en practica se
emplean realmente de 10 a 15.
Wilfran Yaraure
Ing. En Electrónica
Facilitador
28. Operadores Aritméticos
Existen dos
tipos:
Unitarios y
Binarios
(Necesitan 2 variables
o números para la
operación
Nos permiten
realizar
operaciones
matemáticas
Ejemplos:
A++; //Este operador incrementa en una unidad el valor de A.
A --; //Este operador decrementa en una unidad el valor de A.
C = A+B; //Está expresión guarda la suma de A y B en la variable C.
C = (A+B)/C; //Está expresión es equivalente a C = (A+B)÷C.
28
PROGRAMACIÓN DE MICROCONTROLADORES PIC
Wilfran Yaraure
Ing. En Electrónica
Facilitador
29. Operadores Relacionales
Si es cierta
arroja un 1,
Si es falsa
un 0
Comprueba
veracidad
de
expresiones
Ejemplos:
29
PROGRAMACIÓN DE MICROCONTROLADORES PIC
Wilfran Yaraure
Ing. En Electrónica
Facilitador
30. Operadores asignación simple
En este se emplea
el signo = como
un operador, y
permite asignar
valor simple a una
variable, por
ejemplo A= 8;
30
PROGRAMACIÓN DE MICROCONTROLADORES PIC
Wilfran Yaraure
Ing. En Electrónica
Facilitador
Estos operadores nos permiten
asignar valores a una
determinada variable. Existen 2
tipos:
Operadores
de
asignación
compuesta
Operadores
de
asignación
simple
En este caso, se
emplean dos
operadores, para
simplificar la
sintaxis, y
asignara valores
mas complejos
Como observas en los ejemplos, el valor de a, será
a+8, o a-8, según sea el caso.
31. Operadores lógicos
31
PROGRAMACIÓN DE MICROCONTROLADORES PIC
Wilfran Yaraure
Ing. En Electrónica
Facilitador
Estos operadores nos
permiten realizar
operaciones de lógica
digital, como las realizadas
con las compuertas
lógicas conocidas, arrojan
valores de 0 y 1, según la
tabla de las relaciones
lógicas. :
32. ¿Qué formatos Numéricos puedo usar al programar?
32
CARACTERES ASCII
HEXADECIMALES.
OCTALES
DECIMAL
BINARIOS
Usando el Prefijo 0x o 0X, ejemplo: 0x8F
Números entero base 10, sin prefijos
Enteros que empiezan con 0, ejemplo, 0357.
Usando el prefijo 0b o 0B, ejemplo, 0b10100101.
Usando Caracteres alfanuméricos entre comillas
para mostrar en pantalla, ejemplo: "Hola mundo"
En el lenguaje C se emplean diferentes bases numéricas, la principal para el procesamiento es la base
numérica binaria (2), pero pueden ser empleados 3 tipos de bases numéricas, como lo son: Los decimales
que emplean base 10, a los que estamos acostumbrados normalmente en las matemáticas, la
Hexadecimales que emplean base 16, y los binarios que emplean base 2, como lo hemos visto en la teoría
de circuitos digítales, además se pueden emplear también el Código ASCII para formatos alfanuméricos
PROGRAMACIÓN DE MICROCONTROLADORES PIC
Wilfran Yaraure
Ing. En Electrónica
Facilitador
Para poder usarlo se deben tener en cuenta los prefijos
correspondientes
33. ¿Que tal vas?
Espero que vayas bien, y
que este viaje sea de
provecho… no te
preocupes, ni te
apresures, tomate tu
tiempo y rumea un poco
la información, ve
asimilando poco a poco,
tu puedes …
33
¿Que te parece si continuamos?...
¡ok, Vamos a darle!
Wilfran Yaraure
Ing. En Electrónica
Facilitador
34. Sentencia Explicación Sintaxis
Sentencias
de
interacción
(Bucles)
Son vital del código, permiten repetir un conjunto de sentencias en
función de conteos y condiciones de variables creando bucles
interactivos, que cuentan o gobiernan tareas y procesos
desarrollados en el programa
❑ While () {…}
❑ Do {…} while ()
❑ For (...) {…}
Sentencias
Condicional
Permiten realizar menús, tomar decisiones entre distintos cursos de
acción en función de valores o condiciones.
❑ If (…) {…}
❑ if else(…) {…}
❑ switch case (…) {…}
Sentencias
de salto
Permiten detener, iniciar o salir de interacciones en medio de bucles
o sentencias de interacción.
❑ break;
❑ continue;
❑ return […];
34
Son líneas de programación que permiten controlar el flujo de la lógica del código diseñado, pueden ser de 6
tipo, como los mostrados en el grafico. Es decir, le indican al micro que hacer y que no hacer. Y pueden ser de
estos 3 tipos
PROGRAMACIÓN DE MICROCONTROLADORES PIC
Wilfran Yaraure
Ing. En Electrónica
Facilitador
35. puedes crear un bucle o ciclo de
repeticiones, según el numero de
repeticiones que necesites.
¿Que puedo hacer con ella?
while(condición o numero de repeticiones){Porción del código que se repite}
¿Cuál sintaxis debo usar?
La porción del código entre las {…} Se repite tantas
veces como lo indique la condición entre los (…)
¿Que ocurre cuando se esta ejecutando?
while (1) ...;
Usando un valor constante dentro de los paréntesis, como se
muestra, no afectado por ninguna condición, el código se repetirá
mientras 1 sea 1, y como no existe un valor que lo afecte 1 siempre
será 1, generando un ciclo infinito de repeticiones.
Esta es la forma más simple de crear un bucle
Infinito, ¿como lo hacemos?.
Sentencia While
PROGRAMACIÓN DE MICROCONTROLADORES PIC
Wilfran Yaraure
Ing. En Electrónica
Facilitador
35
{Sentencias de iteración (Bucles)}
36. Sentencia Do while
36
1 ¿Que puedo hacer con ella?
Puedes realizar un ciclo de repeticiones
similar al realizado con While, pero en este
caso primero se ejecuta el fragmento de
código a repetir, y luego se evalúa la
condición del While, por lo que el código se
ejecutará por lo menos una vez
2 ¿Cual sintaxis que debo usar?
do{ Porción
del código
que se repite;
}
while(condición);
3
¿Qué ocurre cuando se esta
ejecutando?
La porción del código entre las {…}
entre do y while Se repite tantas
veces como lo indique la condición
entre los (…) del while
PROGRAMACIÓN DE MICROCONTROLADORES PIC
Wilfran Yaraure
Ing. En Electrónica
Facilitador
{Sentencias de iteración (Bucles)}
37. for (I=0; I=10; I++ o I--)
{Porción
del código
Que se repite;
}
1. Se le da un valor de inicio a
la variable en este caso I=0,
que indica que inicia en 0
2. Se asigna valor final a la
variable, es decir, cuantas
veces se repetirá, en este
caso I=10.
3. Se expresa la condición del
conteo, si será incremento
I++, o decremento I--.
4. Se repite la porción de
código hasta que se alcance
el valor final de la variable
¿Qué ocurre cuando se esta
ejecutando?
¿Qué sintaxis debo usar?
¿Que puedo hacer con ella?
Con ella puedes crear
ciclos o bucles de
repeticiones con
mayor control de
condiciones, creando
condiciones de inicio,
de final, y cambios
progresivos en la
variable controlada
Sentencia For
37
PROGRAMACIÓN DE MICROCONTROLADORES PIC
Wilfran Yaraure
Ing. En Electrónica
Facilitador
{Sentencias de iteración (Bucles)}
38. Sentencia If
¿Cual sintaxis debo usar?
¿Que ocurre durante la ejecución?
¿Que puedo hacer con ella?
38
{Sentencias Condicionales} PROGRAMACIÓN DE MICROCONTROLADORES PIC
Wilfran Yaraure
Ing. En Electrónica
Facilitador
Usando la sentencia if puedes evaluar el estado lógico (1 o 0)
de alguna variable, puerto o pin, es decir si esta activo o no, y
luego de eso decidir si se ejecuta una porción de código o no,
por ejemplo, si un botón esta presionado o no, si una variable
alcanzó un determinado valor, depende de la condición que
necesites evaluar
if(Valor>100) //evalúa si la variable Valor es mayor que 100.
{
… // Porción de código que se ejecuta si el if es verdadero.
}
Al usar esta sentencia, se evalúa la condición dentro de los (…) si
esta condición se cumple, se ejecuta la porción del condigo dentro
de las {…}, si no se cumple, el programa sigue ejecutando las
demás líneas de código que prosiguen
39. Sentencia if (…) else (…) {…}
¿Cual sintaxis debo usar?
¿Que ocurre durante la ejecución?
¿Que puedo hacer con ella?
39
{Sentencias Condicionales} PROGRAMACIÓN DE MICROCONTROLADORES PIC
Wilfran Yaraure
Ing. En Electrónica
Facilitador
Es similar a if, pero con 2 porciones de código ejecutar, una
para cuando se tenga un estado lógico bajo (0) o falso y otro
para cuando se tenga un estado lógico alto (1) o verdadero,
por ejemplo: si el puerto A es igual a 1, ejecuta este código, si
no ejecuta este otro código.
if(Valor>100)//Este if evalúa si la variable Valor es mayor que
100.
{// Porción de código que se ejecuta si la condición del if se cumple.}
else
{// Porción de código que se ejecuta si la condición del if no se cumple.}
Al usar esta sentencia, primero se evalúa la condición dentro de
los (…) si esta condición se cumple, se ejecuta la porción del
condigo dentro de las primeras {…}, si no se cumple, se ejecuta el
código dentro de las {…} que siguen después del else
40. ¿Que puedo hacer con
ella?
Puedes desarrollar menús
con varias opciones, de
manera que según la
opción seleccionada se
ejecuten una serie de
sentencias. Consiste en una
sentencia de control
(selector) y una lista de los
valores posibles de la
expresión, además no se
evalúa una condición si no
el valor de una variable
¿Que sintaxis debo usar?
Switch ( Valor )
{
case Valor 0: //Fragmento de código
correspondiente al valor 0 de la variable
Valor.
break; //Ruptura del caso 0.
case Valor 1: //Fragmento de código
correspondiente al valor 1 de la variable
Valor.
break; //Ruptura del caso 1.
case Valor 10: //Fragmento de código
correspondiente al valor 10 de la variable
Valor.
break; //Ruptura del caso 10.
}
¿Qué ocurre durante su
ejecución?
Primero Evalúa la variable (valor) y
la compara con todas las opciones
disponibles de case valor.
Si hay una coincidencia, se ejecuta
el fragmento de código
correspondiente a ese case valor.
Cada uno de los fragmentos
de código finaliza con la
directriz break para romper el
flujo y volver al código general
40
{Sentencias Condicionales} PROGRAMACIÓN DE MICROCONTROLADORES PIC
Wilfran Yaraure
Ing. En Electrónica
Facilitador
Sentencia Switch (…) {…}
41. Sentencia Break
Puede ser usada dentro
de cualquier bucle, pero
es especialmente
empleada en la
sentencia Swicht.
La puedes emplear para
interrumpir el flujo de
cualquier bucle, es decir
detener el programa en
ese punto y salir del
bucle en el que se
encontraba.
Sintaxis
Solo debes colocar Break;
donde quieres que se
detenga el bucle
Sentencia Contine
La puedes emplear
para realizar salto de
una interacción sin
detener el bucle, y te
permitira obviar
algunas líneas de
código, según la
condición que
establezcas.
Sintaxis
Solo debes colocar
contnie; donde quieres
que se realice el salto
Sentencia Goto
La puedes usar para saltar
de forma incondicional
cualquier parte del código
que requieras en tu lógica.
Sintaxis
Solo debes colocar
Goto
identificador_de_etiq
ueta; especificando la
etiqueta del punto a
donde quieres dar el
salto
41
{Sentencias de Salto} PROGRAMACIÓN DE MICROCONTROLADORES PIC
Wilfran Yaraure
Ing. En Electrónica
Facilitador
42. Inicialización de Variables, librerías para
pantallas y teclados, entre otros
Lcd_Init(); Glcd_Init(); I2C1_Init(100000);.
En este caso la inicialización hace
referencia a los valores iniciales de las
VARIABLES, PUERTOS, Y REGISTROS a
utilizar en el código.
Es decir, que debes establecer las
condiciones iniciales con las que se va a
trabajar, por ejemplo cuales puertos
serán de entra o salida, cuales serán de
entrada Digital y cuales analógica, que
frecuencia de trabajo se utilizara para el
Oscilados, entre otras cosas.
Para ellos se debe asignar valores a los
registros de función especial SFR
correspondientes, o declarar la librería a
utilizar, según sea el caso.
Esto lo debes hacer al inicio de la
función principal
Void main ()
Registros para inicialización de puertos
PORTA; PORTB; PORTC; PORTD; PORTE.
Registro para inicialización del Oscilador
OSCCON;
Registro para Inicialización A/D
ADCON1;
05
02
03
04
Inicialización
Registros para Configuración inicial de puertos
TRISA; TRISB; TRISC; TRISD; TRISE;
PROGRAMACIÓN DE MICROCONTROLADORES PIC
Wilfran Yaraure
Ing. En Electrónica
Facilitador
01
42
43. Ejemplo de inicialización
PROGRAMACIÓN DE MICROCONTROLADORES PIC
Wilfran Yaraure
Ing. En Electrónica
Facilitador
43
// inicialización de los puertos Digitales
// inicialización de la comunicación serial
// inicialización del PIN 0 del PUERTO C como entrada
// inicialización del Teclado Matricial
// inicialización de la Pantalla GLCD
// Valor inicial que mostrara la Pantalla GLCD
// Valor inicial de las variables
// Retardo o tiempo de Espera
44. Generalmente el tiempo de ejecución de
una instrucción en el PIC, es un tiempo que
no puede ser percibido por el ojo humano.
Para poder apreciar las ejecuciones de las
sentencias se hacen necesario los retardos
o tiempos de Espera.
Estas son líneas de programación que
indican al micro un periodo de tiempo en el
que debe esperar sin ejecutar ninguna
sentencia alguna, permitiendo así que se
muestre la ultima sentencia ejecutada.
Mikro C, tiene algunas sintaxis ya definidas
que nos permiten programar retardos en
Micro segundos (us), milisegundos (ms) o
en unidad tiempo de ciclo de reloj (cyc).
Retardos o Tiempo de espera
PROGRAMACIÓN DE MICROCONTROLADORES PIC
Wilfran Yaraure
Ing. En Electrónica
Facilitador
Delay_us(Valor) ;
Sintaxis para crea un
retardo en
microsegundo
Delay_ms(Valor) ;
Sintaxis para crea un
retardo en milisegundo
Delay_cyc(Valor) ;
Sintaxis para crea un
retardo en ciclos de
reloj
45. Enunciado del problema
Diseñar un código de programación que permita controlar el
encendido y apagado automático de un led, conectado al pin
0 del PUERTO A, con un tiempo de espera de 1 segundo entre
el encendido y apagado
Dividimos el problema en pedazos y lo atacamos por partes.
PROGRAMACIÓN DE MICROCONTROLADORES PIC
Wilfran Yaraure
Ing. En Electrónica
Facilitador
¿Quien será el puerto de entrada?
ninguno. No se empleara ningún botón, ya que se realizara
un encendido y apagado automático.
¿Quien será puerto de salida? El Puerto A, específicamente
el pin 0, para conectar el led.
¿Se utilizara E/S Analógicas o Digitales? Digitales, se
requieren solo 2 estados , uno alto (1) para el encendido y
bajo (0) para el apagado.
¿Se requiere alguna función secundaria? En este caso no,
debido a que es un código simple, con la función principal
es suficiente.
¿Se requiere declara alguna variable?
No en este caso, debido a que todo se hará desde el
puerto A
Código
Ejemplo
#1
46. Luego de analizar los requerimientos de nuestro programa, procedemos a escribir nuestro código,
según la estructura del programa vista anterior mente (pg. 11 y 12)
PROGRAMACIÓN DE MICROCONTROLADORES PIC
Wilfran Yaraure
Ing. En Electrónica
Facilitador
1. Cabecera, haciendo uso de la
herramienta /*Comentario*/ describimos
nuestro código.
4. Declarar la función principal void main ();
5. Inicialización de los puertos y
módulos del microcontrolador;
6. Crear Ciclo infinito de
repeticiones do { … } While (1);
Lógica del programa
Código
Ejemplo
#1
Como te habrás dado cuneta solo
usamos los pasos 1, 4, 5, y es de la
estructura de un código, debido a los
requerimientos que analizamos en la
parte anterior
47. Código
Ejemplo
#1
Así se vería la conexión y el comportamiento del Ejemplo1 anterior.
PROGRAMACIÓN DE MICROCONTROLADORES PIC
Wilfran Yaraure
Ing. En Electrónica
Facilitador
Te invito a que lo intentes, abre mikro c, escribe el mismo código, compílalo, y simúlalo en proteus,
para que confirmes el comportamiento. ¡Tu puedes hacerlo!
48. Enunciado del problema
Diseñar un código de programación que permita controlar el
encendido y apagado automático de un led, conectado al pin
0 del PUERTO A, con un tiempo de espera de 1 segundo entre
el encendido y apagado, repitiendo el ciclo 10 veces
Dividimos el problemas en pedazos y lo atacamos por partes.
PROGRAMACIÓN DE MICROCONTROLADORES PIC
Wilfran Yaraure
Ing. En Electrónica
Facilitador
¿Quien será el puerto de entrada?
ninguno. No se empleara ningún botón, ya que se realizara
un encendido y apagado automático.
¿Quien será puerto de salida? El Puerto A, específicamente
le pin 0, para conectar el led.
¿Se utilizara E/S Analógicas o Digitales? Digitales, se
requieren solo 2 estados , uno alto (1) para el encendido y
bajo (0) para el apagado.
¿Se requiere alguna función secundaria? En este caso no,
debido a que es un código simple, con la función principal
es suficiente.
¿Se requiere declara alguna variable?
No en este caso, debido a que todo se hará desde el
puerto A
Código
Ejemplo
#2
Igual al código anterior, solo
necesitamos ahora controlar
los ciclos de repeticiones y lo
haremos empleando la
sentencia de interacción for
49. Luego de analizar los requerimientos de nuestro programa, procedemos a escribir nuestro código,
según la estructura del programa vista anterior mente (pg. 11 y 12)
PROGRAMACIÓN DE MICROCONTROLADORES PIC
Wilfran Yaraure
Ing. En Electrónica
Facilitador
1. Cabecera, haciendo uso
de la herramienta
/*Comentario*/
describimos nuestro
código.
4. Declarar la función
principal void main ();
5. Inicialización de los
puertos y módulos del
microcontrolador;
6. Creando bucle de
repeticiones infinitas do
while(), para mientras este
encendido el pic ejecute el
programa
Lógica del programa
Código
Ejemplo
#2
2. Declarar las
variables globales.
Dentro de la lógica,
Utilizamos la sentencia for
para la creación de un
bucle de 10 repeticiones,
según lo pide el enunciado
50. Aquí te dejo estos ejercicios para que practiques,
usando mikroC y Proteus
Ejercicio #1
Diseñar un código de programación para el PIC18F4550, que permita ejercer el control del
encendido y apagado de 8 LED conectados al PUERTO D del PIC, el encendido debe ser
secuencialmente uno a uno, desde el menos significativo hasta el mas significativo, y luego los
apague de igual forma, con un tiempo de espera entre cada uno de los LED de ½ segundo,
tanto en la secuencia de encendido, como en la secuencia de apagado.
50
Ejercicio #2
Diseñar un código de programación para el PIC18F4550, que funcione como un decodificador
BCD a 7 segmento, es decir que permita ingresar un código binario de 4 dígitos usando 4bit
menos significativos del puerto B, y muestre los valores de salida hexadecimal de 0 a F en un
Display 7 segmentos conectado al puerto D.
Ejercicio #3
Diseñar un código de programación para el PIC18F4550, que funcione como un temporizador o
contador decimal, que vaya desde 0 a 99, cambiando automáticamente de valor cada 100ms, y
muestre los valores de salida a través de dos Display 7 segmentos, uno conectado al puerto B y
otro al puerto D, .
Wilfran Yaraure
Ing. En Electrónica
Facilitador
Recuerda que
estoy a un
mensaje de
distancia,
puedes
escribir por la
plataforma
ADI, o al
correo
Electrónico
para aclarar
tus dudas
51. 51
Aunque actualmente todo parece una
locura, realmente “Locura es hacer lo
mismo una y otra vez esperando obtener
resultados diferentes” (anónimo) Por eso
hoy mas que nunca debemos ir más allá, de
lo que hemos ido, a encontrar otro punto de
vista, a buscar nuevas maneras de hacer las
cosas, y seguir avanzando, y no nos
quedemos esperando a que todo sea
diferente si seguimos haciendo lo mismo de
siempre. ¡Que nuestra nueva normalidad
sea lo extraordinario!
Wilfran Yaraure
Ing. En Electrónica
Facilitador
52. Bibliografía
✓ Clavijo (2011), Diseño y simulación de sistemas microcontrolados en lenguaje C,
Programación con MikroC PRO, Simulación en Proteus ISIS.
https://drive.google.com/file/d/0B3Gup-Soes9hbFByRHF0WFpuQk0/view?usp=sharing
✓ MikroElectronika (2011) GUÍA DE REFERENCIA RÁPIDA A mikroC www.mikroe.com
52