









Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Este documento proporciona una guía detallada sobre la programación de microcontroladores utilizando el entorno de desarrollo integrado (ide) mikroc pro for pic. Se explican los pasos para crear un nuevo proyecto, editar y compilar programas, así como las principales características y funcionalidades del compilador mikroc. Se cubren temas como la declaración de variables, el uso de instrucciones de entrada/salida de datos a través de los puertos, estructuras de control de flujo como if-else, switch-case, while y do-while, y operadores lógicos bit a bit. Además, se presentan ejemplos prácticos de programación, como un led intermitente, decodificación de display de 7 segmentos y control de un motor dc. Una guía valiosa para estudiantes y profesionales que deseen aprender a programar microcontroladores pic utilizando el entorno mikroc.
Tipo: Esquemas y mapas conceptuales
1 / 17
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!










UNIVERSIDAD PÚBLICA DE EL ALTO INGENIERÍA DE SISTEMAS INGENIERÍA DE CONTROL LABORATORIO No. 4 PROGRAMACION EN LENGUAJE C, MIKROC
1. OBJETIVO ✓ Conocer creación de proyectos, Realizar la Edición, Compilación y Depuración de un programa en el IDE MikroC en lenguaje Ensamblador ✓ Mostrar en simulación Virtual y también en Hardware su funcionamiento de los ejemplos propuestos. 2. EQUIPOS Y MATERIALES ✓ PC equipado con: MikroC Pro for PIC v.7.6, Proteus última versión y otros ✓ Guía de laboratorio y manual de Microcontrolador Pic18F ✓ Grabador Bootloader ✓ Otros 3. MARCO TEÓRICO 3.1. COMPILADOR MIKROC PRO La programación de microcontroladores se basa en un código de máquina que es conocido como código ensamblador, este código contiene una a una las instrucciones del programa, este código ensamblador o también conocido como código assembler es minucioso, y tedioso de editar. El assembler crea códigos de programa extensos y de difícil comprensión. La creación de compiladores de alto nivel facilitó la edición y creación de programas en todo modo de programación lógica, por supuesto los microcontroladores no fueron la excepción, comercialmente existen varios compiladores de diferentes fabricantes y diferentes lenguajes de alto nivel. Es posible adquirir compiladores como el PICC, CCS, PIC Basic, entre otros. El estudio de este guía se centra en el compilador MikroC PRO, que es un compilador en lenguaje C para microcontroladores PIC Micro de la familia 12F, 16F, y 18F. MikroC PRO es un paquete de software con una amplia variedad de ayudas y herramientas que facilita la creación de proyectos y aplicativos para los microcontroladores PIC Micro. El estudio de este entorno de desarrollo es posible debido a que el estudiante puede descargar una versión demo o estudiantil, que tiene las mismas características de la versión completa, la única limitación es la dimensión del código de máquina que no puede exceder 2K bytes, sin embargo es una capacidad suficiente al tratarse de un prime aprendizaje. La versión demo se puede descargar de la página: www.mikroe.com. 3.2. CREACIÓN DE PROYECTO EN MIKROC PRO FOR PIC 1) Crear una carpeta con nombre “LAB. INGENIERIA DE CONTROL” en mi escritorio 2) Abrir software mikroC PRO for PIC v 7.
Lenguaje mikroC, especialmente diseñado para programar los PIC. Ahora, lo que hemos revisado es suficiente para empezar a programar, es hora de presentar el software que utilizará para desarrollar y editar los proyectos. Este software se le denomina Entorno de desarrollo integrado (Integrated Developement Environment - IDE) e incluye todas las herramientas necesarias para desarrollar los proyectos (editor, depurador etc.). Por extensión, IDE es a veces llamado compilador. En esta sección le enseñaremos lo básico que debe saber para empezar a desarrollar su primer proyecto en mikroC utilizando el IDE del compilador mikroC PRO for PIC. Aparte de todas las características comunes de cualquier IDE, mikroC PRO for PIC contiene las informaciones de arquitectura de los microcontroladores PIC (registros, módulos de memoria, funcionamiento de circuitos particulares etc.) para compilar y generar un archivo legible por un microcontrolador PIC. Además, incluye las herramientas específicas para programar los microcontroladores PIC. El proceso de crear y ejecutar un proyecto contiene los siguientes pasos: ✓ Crear un proyecto (nombre de proyecto, configuración de proyecto, dependencias entre archivos) ✓ Editar un programa ✓ Compilar el programa y corrección de errores ✓ Depurar (ejecutar el programa paso a paso para asegurarse de que se ejecutan las operaciones deseadas). ✓ Programar un microcontrolador (cargar el archivo .hex generado por el compilador en el microcontrolador utilizando el programador Universal. INSTALAR MIKROC PRO FOR PIC Antes que nada, usted debe instalar el compilador (con su IDE) en la PC. La instalación del mikroC PRO for PIC es similar a la instalación de cualquier programa en Windows. Basta con seguir las instrucciones y pulsar sobre Next, OK, Next, Next... CARACTERÍSTICAS PRINCIPALES DEL MIKROC PRO FOR PIC Al iniciar el IDE del compilador mikroC PRO for PIC por primera vez, aparecerá una ventana como se muestra a continuación: MANEJAR LOS PROYECTOS Antes de empezar a escribir el código, usted debe crear un proyecto. Un programa escrito en el compilador mikroC PRO for PIC no es un archivo fuente autónomo, sino que forma parte de un proyecto que incluye un código hex, un código ensamblador, cabecera y otros archivos. Algunos de ellos se requieren para compilar el
programa, mientras que otros se crean durante el proceso de compilación. Un archivo con extensión .mcppi le permite abrir cualquiera de estos proyectos. Para crear un proyecto, basta con seleccionar la opción Project/New Project , y un wizard aparecerá automáticamente. ¿Qué hacer entonces? Siga las instrucciones... PROJECT MANAGER (ADMINISTRADOR DEL PROYECTO) Una vez creado el proyecto, es posible manejar todos los archivos que contiene al utilizar la ventana Project Manager. Basta con pulsar con el botón derecho del ratón sobre una carpeta y seleccionar la opción que necesita para su proyecto. PROJECT SETTINGS (CONFIGURACIÓN DE PROYECTOS) Al compilar un proyecto, el compilador genera el archivo .hex que se cargará en el microcontrolador. Estos archivos serán diferentes lo que depende del tipo del microcontrolador así como del propósito de la compilación. Por esta razón es necesario ajustar algunos parámetros de proyectos utilizando la ventana Project Settings. DEVICE (dispositivo): Al seleccionar el tipo de microcontrolador a utilizar permite al compilador extraer el archivo de definición (archivo .def) asociado. El archivo de definición de un microcontrolador contiene las informaciones específicas de sus registros SFR, de sus direcciones de memoria y algunas variables de programación específicas a ese tipo del microcontrolador. Es obligatorio crear un archivo .hex compatible. OSCILLATOR (oscilador): Se debe especificar la velocidad de operación del microcontrolador. Por supuesto, este valor depende del oscilador utilizado. El compilador la necesita para compilar rutinas, lo que requiere información del tiempo (por ejemplo, la función Delay_ms). Más tarde, el programador necesitará esta información también. La velocidad de operación se configura de modo que permita al oscilador interno del microcontrolador funcionar a una frecuencia seleccionada. BUILD/DEBUGGER TYPE: Todo el proceso de compilar (building) está compuesto por análisis sintáctico (parsing), compilar, enlazar (linking) y generar los archivos .hex. El tipo de compilación le permite ajustar el modo de compilación. Dependiendo del modo seleccionado, difieren los archivos generados a cargar en el microcontrolador. Release : Al elegir esta opción, el compilador no puede afectar más a la ejecución de programa después de la compilación. El programa a cargar en el microcontrolador no será modificado de ninguna manera. ICD debug : Al elegir esta opción, una vez completado el proceso de la compilación y cargado el programa en la memoria del microcontrolador, el compilador se queda conectado al microcontrolador por medio del cable USB y el programador, y todavía puede afectar a su funcionamiento. El archivo .hex generado contiene los datos adicionales que permiten el funcionamiento del depurador. Una herramienta denominada mikroICD (Depurador en circuito - In Circuit Debugger) permite ejecutar el programa paso a paso y proporcionar un acceso al contenido actual de todos los registros de un microcontrolador real. El simulador no utiliza los dispositivos reales para simular el funcionamiento del microcontrolador, así que algunas operaciones no pueden ser reproducidas (por ejemplo, interrupción). De todos modos, resulta más rápido depurar un programa por medio de un simulador. Además, no se requiere ningún dispositivo destino. Note que es posible modificar cualquier configuración en cualquier momento mientras se edita el programa. No se olvide de recompilar y reprogramar su dispositivo después de modificar una configuración.
en el programa, basta con pulsar dos veces sobre su nombre en esta ventana, y el cursor estará automáticamente posicionado en la línea apropiada en el programa. COMPILAR Y SOLUCIONAR LOS ERRORES, Para compilar su código, pulse sobre la opción Build en el menú Project. En realidad, el proyecto entero se ha compilado, y si la compilación se ha realizado con éxito, se generarán los archivos de salida (asm, .hex etc.). Una compilación se ha realizado con éxito si no se ha encontrado ningún error. Durante el proceso de compilación se generan muchos mensajes que se visualizan en la ventana Messages. Estos mensajes consisten en información, advertencia y errores. Cada error encontrado se asocia con su línea de programa y su descripción. Como un error en su código puede generar mucho más errores, simplemente debe intentar solucionar el primer error en la lista y después recompile su programa. En otras palabras, es recomendable solucionar los errores uno a uno. DEPURAR EL PROGRAMA La depuración es un paso muy importante ya que permite probar el programa después de una compilación realizada con éxito, o solucionar los errores descubiertos mientras se ejecuta el programa. Como ya hemos visto, hay dos modos de depurar: un depurador software que simula el funcionamiento del microcontrolador (modo por defecto) y depurador hardware (mikroICD) que lee directamente el contenido de la memoria del microcontrolador. El procedimiento de depuración es el mismo sin reparar en el modo elegido. En caso de elegir la opción ICD debug , hay que cargar el programa en el microcontrolador antes de depurarlo. Para iniciar la depuración, pulse sobre la opción Start debugger del menú Run. El editor del código será ligeramente modificado automáticamente y aparecerá una ventana denominada Watch Values. El principio de depuración se basa en ejecutar el programa paso a paso y monitorear el contenido de los registros y los valores de las variables. De este modo, es posible comprobar el resultado de un cálculo y ver si algo inesperado ha ocurrido. Al ejecutar el programa paso a paso, podrá localizar los problemas con facilidad. Durante una depuración el programa será modificado, por lo que usted siempre debe recompilar el programa después de cada corrección, y reiniciar el depurador para comprobar qué ha sido modificado. COMANDOS DEL DEPURADOR Hay varios comandos disponibles para depurar el código:
ejecutar la parte de programa desde la línea en la que está el cursor hasta el punto de ruptura, utilice el comando Run/Pause Debugger. VENTANA WATCH VALUES El depurador software y hardware tienen la misma función de monitorear el estado de los registros durante la ejecución del programa. La diferencia es que el depurador software simula ejecución de programa en una PC, mientras que el depurador ICD (depurador hardware) utiliza un microcontrolador real. Cualquier cambio de estado lógico de los pines se indica en el registro (puerto) apropiado. Como la ventana Watch Values permite monitorear el estado de todos los registros, resulta fácil comprobar si un pin está a cero o a uno. La última modificación está marcada en rojo en la ventana Watch Values. Esto le permite localizar la modificación en la lista de variables y registros durante el proceso de la depuración. Para visualizar esta ventana es necesario seleccionar la opción View/Debug Windows/Watch Values. Entonces usted puede hacer una lista de registros/variables que quiere monitorear y la manera de visualizarlos. STOPWATCH (CRONÓMETRO) Si quiere saber cuánto tiempo tarda un microcontrolador en ejecutar una parte del programa, seleccione la opción Run/View Stopwatch. Aparecerá una ventana como se muestra en la figura a la derecha. ¿Cómo funciona un cronómetro? Eso es pan comido... El tiempo que tarda un comando (step into, step over, run/pause etc.) en ejecutarse por el depurador se mide automáticamente y se visualiza en la ventana Stopwatch. Por ejemplo, se mide tiempo para ejecutar un programa, tiempo para ejecutar el último paso etc. 3.5. DECLARACIÓN DE VARIABLES EN LENGUAJE C Las variables básicas en este compilador específico son: No TIPO DE VARIABLE TAMAÑO EN BYTES VALORES QUE SOPORTA 1 bit 1 0 ó 1 2 char 1 - 127 a 127 3 short 1 - 127 a 127 4 int 2 - 32767 a 32767 5 long 4 - 2147483647 a 2147483647 6 float 4 - 1.5x10^45 a 3.4x10^ 7 double 4 - 1.5x10^45 a 3.4x10^ 8 unsigned char 1 0 a 255 9 unsigned short 1 0 a 255 10 unsigned int 2 0 a 65535 11 unsigned long 4 0 a 4294967295
LATB=var; //El valor de var sale por el puerto RB LATB=LATA+ 70 ; //El valor del puerto RA más 70 se envía hacia el puerto RB También se pueden poner a 1 o 0 bits individuales de un puerto usando las siguientes instrucciones: LATB.F0=0; //El pin 0 del puerto RB se pone en 0 RB0_bit=0; INSTRUCCIÓN DE DECISIÓN if...else (si ... entonces) Permite la ejecución de las instrucciones1 si la condición es verdadera, de lo contrario se ejecutan las instrucciones2. Las llaves { } no son necesarias cuando hay una sola instrucción. if (condición) { instrucciones1; } else { instrucciones2; } Ejemplo 1 : Si el contenido de la variable ‘código’ es igual al contenido de la variable ‘clave’, se ejecutan las primeras cuatro instrucciones; de lo contrario se ejecutan únicamente las dos últimas instrucciones. if (codigo==clave) { intentos=0; RA7_bit=1; Delay_ms(1000); RA7_bit=0; } else { intentos++; Delay_ms(200); } Ejemplo 2 : Instrucción de decisión sin ‘else’. Esta es una variante muy utilizada cuando se desea condicionar la ejecución de un grupo de instrucciones. Las dos instrucciones se ejecutarán únicamente si la variable ‘contador’ es igual a 2, de lo contrario la ejecución continúa a partir de la línea //Aquí if (contador==2) { RB6_bit=~RB6_bit; contador=0; } //Aquí Ejemplo 3 : Similar al caso anterior, pero con una sola instrucción. Si la variable ‘horas’ es igual a 24 se asigna a esta variable con un valor de cero. if (horas==24) horas=0; Nota: Las condiciones se obtienen por medio de los operadores de relación y los operadores lógicos. ✓ OPERADORES DE RELACIÓN :
Mayor que = Mayor o igual que < Menor que <= Menor o igual que == Igual a (nótese la diferencia con el operador de asignación =) != No es igual a ✓ OPERADORES LÓGICOS BOOLEANOS: (devuelven un bit: 1 o 0) && Y (AND) || O (OR) ! No (NOT)
✓ OPERADORES LÓGICOS bit a bit: (devuelven un byte: 0 a 255) & Y (AND) | O (OR) ~ No (NOT) INSTRUCCIÓN DE CICLO CONTROLADO for (para) Permite ejecutar un grupo de instrucciones de manera repetitiva, una determinada cantidad de veces. for (expresión de inicio; expresión de condición, expresión de cambio) { instrucciones; } Ejemplo 1 : La variable ‘i’ tiene un valor inicial de 7 (i=7) y un valor de condición final de 1 (i>=1). Esta variable va disminuyendo de 1 en 1 (i--). Por lo tanto, las dos instrucciones se ejecutarán en 7 ocasiones. La primera vez cuando i=7, la segunda cuando i=6, la tercera cuando i=5 y así sucesivamente hasta la séptima vez cuando i=1. Luego la ejecución continúa en //Aquí for (i=7; i>=1; i--) { PORTB=PORTB<<1; Delay_ms(500); } //Aquí Ejemplo 2 : El valor inicial de var es 1 y su valor final es 3. La variable var se va incrementando de 1 en 1 (var++). Por lo tanto, la instrucción se ejecuta tres veces, lo que da como resultado un retardo de 3 segundos. Luego la ejecución continúa en //Aquí for (var=1; var<=3; var++) Delay_ms(1000); //Aquí INSTRUCCIÓN ITERATIVA WHILE (mientras) Permite ejecutar un grupo de instrucciones de manera repetitiva, mientras una condición sea verdadera. Primero se revisa la condición para determinar su valor de verdad (verdadero o falso) y luego se ejecutan las instrucciones. while (condición) { instrucciones; } Ejemplo 1 : La ejecución del programa permanece indefinidamente en esta línea mientras el bit menos significativo del puerto RB sea igual a cero (Falso). Como caso particular no se ejecuta ninguna instrucción (la cual debería estar antes del punto y coma). while ( !PORTB.F0 ) ; Ejemplo 2 : Ejemplo de un lazo infinito. En MikroC, cualquier valor distinto de cero se considera VERDADERO, y un valor igual a cero se considera FALSO. Al valor en RA se le suma 65 y el resultado se envía hacia RB. Este proceso es infinito ya que la condición siempre es verdadera (1). while (1) LATB=PORTA+65; Ejemplo 3 : Las cuatro instrucciones encerradas por { } se ejecutarán indefinidamente mientras el valor del bit RD7 sea igual a 1 (Verdadero). while (PORTD.F7) { RB1_bit=1;
En la programación de PIC en C existen pequeños detalles que se deben tener muy en cuenta y que permitirán que los programas realizados cumplan las tareas para los cuales fueron diseñados. ✓ Los comentarios de una sola línea se inician con la doble barra diagonal // ✓ Los comentarios de varias líneas (o de bloques) inician con /* y terminan con */ ✓ Los signos de agrupación siempre deben estar en pareja, es decir si hay tres llaves de apertura {{{, debe haber tres llaves de cierre correspondientes}}}. Lo mismo ocurre con los paréntesis ( ) ✓ Los números hexadecimales se escriben comenzando con 0x, por ejemplo, 0x0A, 0x16, 0xFD, etc. ✓ Los números binarios se escriben comenzando con 0b, por ejemplo, 0b001110, 0b11101111, etc. ✓ Los números decimales se escriben sin ningún símbolo adicional, por ejemplo 64, 126, 12.75, etc. ✓ No se debe confundir el operador de asignación = con el operador de comparación igual == ✓ El punto y coma ‘;’ indica el final de una instrucción, por lo tanto, se debe tener en claro su uso. Ejemplo: for(i=0; i<5; i++); no es un bucle de 5 repeticiones debido al ‘;’ al final. ✓ Las llaves { } no son necesarias en aquellos casos en los que únicamente se va a ejecutar una sola instrucción. ✓ Todo programa en mikroC debe tener una función principal main, y su nombre no debe ser cambiado. ✓ Si se requiere ayuda referente a una instrucción o función de librería, en MikroC basta con escribir el nombre de la instrucción o función y, con el cursor dentro de texto escrito, presionar la tecla F1. Esto nos llevará a la ventana de Ayuda donde, además de una explicación detallada se tiene también un ejemplo de código y esquemático.
4. PRE INFORME 4.1. Objetivos de laboratorio. 4.2. Resumen para flujo de programa: La sentencia condicional if e if else, la sentencia switch case, el ciclo iterativo while y do while. 5. PROCEDIMIENTO 5.1. Diseño de programa en mikroC de LED INTERMITENTE que muestre por el puerto RB (RB.0 al RB.7) y demostrar su funcionamiento en plataforma virtual y en hardware.
DIAGRAMA DE FLUJO
5.3. Diseñar en lenguaje C de “ACTIVAR Y DESACTIVAR UN MOTOR DC”. Demostrar su funcionamiento en plataforma virtual y en hardware.
5.4. Diseñar un programa en lenguaje C para mostrar en hardware los procesos básicos de control doméstico e industrial a elección del estudiante.