tecmikro logo
Programación de microcontroladores PIC en mikroC PRO
Email: tecmikro@gmail.com   Cel. 098 743 8877   Telf. 243 0352 Quito-Ecuador


Primeros pasos en la programación de microcontroladores PIC

Requisitos

Conocimientos previos

Para que una persona pueda aprender con rapidez y facilidad los conceptos de la programacion de microcontroladores PIC debe tener conocimientos basicos de:

Si usted carece de los requisitos nombrados no es aconsejable que siga adelante en la lectura de este documento pues se le dificultara notablemente entender los conceptos explicados.

Software

Hardware

Introducción

Un microcontrolador (abreviado μC, UC o MCU) es un circuito integrado fabricado de Silicio que puede programarse para realizar tareas (ejecutar instrucciones) de forma automática al conectarlo a una fuente de energia. Las instrucciones se almacenan en un espacio de memoria especificamente destinada a ese propósito. En la siguiente imagen se aprecia el patillaje o pinout del popular PIC16F628A:

Un microcontrolador está compuesto de varios bloques funcionales, los cuales cumplen una tarea específica; un microcontrolador incluye en su interior las tres principales unidades funcionales de una computadora:

Terminologia

Mi primer proyecto

Este es el primer ejemplo de como crear un proyecto practico y funcional desde el principio. El proposito es hacer un contador de pulsos desde 0 hasta 9. Se utillizará el popular PIC16F628A, un boton pulsador normalmente abierto para generar los pulsos manualmente y un display de 7 segmentos para mostrar el conteo. Los pasos indicados son los que se deben seguir normalmente para crear otros nuevos proyectos:

  1. Iniciar el programa mikroC PRO for PIC (utilizamos la version 4.1 que puedes descargar más arriba en esta misma pagina) y crear un nuevo proyecto: Project > New Project. Clic en Next
  2. Seleccionar el PIC16F628A en el campo Device Name. Clic en Next
  3. Establecer la frecuencia de trabajo del microcontrolador en Device Clock. Se suele trabajar con una frecuencia de 4MHz y ese es el valor que  usaremos. Clic en Next
  4. Crear una carpeta (folder) para el nuevo proyecto; para ello hacer clic en el simbolo al final del campo Project File Name, esto abrirá la ventana New Project Location. Crear una carpeta en una determinada ubicación de su elección haciendo clic en New Folder, la carpeta deberá tener un nombre relacionado con la aplicación que vamos a crear; la llamaremos Contador. Luego de crear la carpeta Contador hacemos doble clic en ella para ubicarnos dentro de la misma y en el campo File Name creamos un nuevo archivo de proyecto, lo llamaremos tambien Contador (la extension propia del archivo de proyecto es .mcppi en mikroC PRO for PIC, no hace falta escribirla porque el sistema la añade automaticamente). Clic en Save y luego en Next.
  5. En el siguiente paso solo hacemos clic en Next
  6. Aunque en este ejemplo no vamos a emplear ninguna de las librerias de funciones de mikroC PRO, dejamos seleccionada la opcion Include All (por defecto). Clic en Next
  7. Un paso absolutamente necesario e imprescindible es establecer los bits de configuracion del microcontrolador PIC. Por lo tanto en este paso seleccionamos el checkbox Open Edit Project Window to set Configuration Bits. Clic en Finish.
  8. En la ventana Edit Project establecemos los bits de configuracion de la siguiente manera y hacemos clic en OK:
    Oscillator:    INTOSC: I/O on RA6/OSC2, I/O on RA7/OSC1
    Watchdog Timer: Off
    Power Up Timer: Enabled
    Master Clear Enable: Disabled
    Brown Out Detect: Enabled
    Low Voltage Program: Disabled
    Data EE Read Protect: Disabled
    Code Protect: Off
    Uno de los puntos mas importantes a tener en cuenta es la configuracion del oscilador que es un subsistema encargado de generar la base de tiempo (reloj) para la ejecucion de las instrucciones; con una frecuencia de 4MHz la base de tiempo (llamada ciclo de instruccion) es de 1us. Algunas instrucciones se ejecutan en un ciclo de instruccion, es decir que el microcontrolador se demora  1us en realizar la instruccion; por tanto, la ejecucion de las instrucciones se realiza a alta velocidad. El PIC16F628A incluye un oscilador interno de 4MHz que es utilizado al seleccionar INTOSC: I/O on RA6/OSC2, I/O on RA7/OSC1 para el bit Oscillator; el uso del oscilador interno es recomendable ya que facilita armar el circuito electrico y libera dos pines del microcontrolador, de lo contrario seria necesario agregar un cristal oscilador externo con sus elementos asociados.
    El significado y funcion de los demas bits se irá aclarando a medida que profundice en su estudio de la programacion de microcontroladores PIC.
  9. Aparece la ventana del editor de texto, donde escribiremos el codigo fuente de nuestro proyecto:
    //Contador.c
    
    //Macros (simbolos equivalentes)
    #define BOTON RA4_bit  //BOTON es equivalente a RA4_bit
    #define PRESIONADO 0   //PRESIONADO es equivalente a 0
    
    //Función para convertir de Binario a 7 segmentos
    char Bin2_7seg(char digit){
     switch (digit){ 
       case 0: return 0x3F;   //0x3F es el código 7-segmentos del 0.
       case 1: return 0x06;   //0x06 es el código 7-segmentos del 1.
       case 2: return 0x5B;
       case 3: return 0x4F;
       case 4: return 0x66;
       case 5: return 0x6D;
       case 6: return 0x7D;
       case 7: return 0x07;
       case 8: return 0x7F;
       case 9: return 0x67;
     }
    }
    
    //Declaracion de variables
    char contador=0;  //La variable contador es de tipo char y tiene valor inicial de 0.
    
    //Función principal
    void main(){
     PORTB=0x00;  //Estado inicial del puerto B.
     CMCON=0x07;  //Pines RA<3:0> como E/S digital.
     TRISB=0x00;  //Puerto B como salida.
     while (1){
      if (BOTON==PRESIONADO){          //Si se pulsa,
       Delay_ms(10);                   //esperar 10ms,
       if (BOTON==PRESIONADO){         //revisar si el boton sigue pulsado,
        while (BOTON==PRESIONADO);     //y esperar mientras siga presionado.
        contador++;                    //Al soltar incrementar el contador,
        if (contador>9) contador=0; //y reiniciarlo a 0 si supera el valor de 9.
       }
      }
      PORTB=Bin2_7seg(contador);  //Convertir y enviar al puerto B el valor
                                  //presente en la variable contador.
     }
    }//Fin de la función principal
    
    
    
  10. Una vez terminada la escritura procedemos con la compilación (la traducción del codigo anterior a codigo de máquina). Este proceso es transparente para nosotros (lo único que observaremos serán unos mensajes durante esta fase en la parte inferior del IDE). Para compilar debemos seleccionar el comando Build > Build. El codigo de máquina o codigo ejecutable (se identifica como Contador.hex) se guarda automaticamente en un archivo en la carpeta Contador que creamos en el paso 4. 

    El codigo anterior es un ejemplo que se puede tomar como plantilla para la escritura de otros proyectos. El microcontrolador PIC ejecuta las instrucciones que se encuentran dentro de la función principal void main(){//Instrucciones...}, las partes restantes sirven como codigo complementario para la ejecución correcta de dichas instrucciones. Los Macros tienen el proposito de facilitar el mantenimiento y comprension del codigo; por ejemplo si se quiere emplear el pin RA7 en lugar del pin RA4 simplemente se tiene que escribir #define BOTON RA7_bit; también es mucho más comprensible BOTON==PRESIONADO que RA4_bit==0.

    Una funcion es una agrupacion de instrucciones que luego se tratan como una nueva instruccion dentro de la funcion principal; así Bin2_7seg(contador); es considerada como una instruccion más y ejecutada de acuerdo a su definicion.

    En mikroC PRO for PIC (así como en otros lenguajes de programación) es obligatorio declarar las variables que se usan en la funcion principal, indicando su tipo y de forma opcional su valor inicial; así char contador=0; es la declaracion de la variable contador como una variable de tipo caracter (puede tomar valores entre 0 y 255) y tiene en este caso un valor inicial de 0.

  11. El codigo de maquina Contador.hex tiene que ser grabado en la memoria de programa del microcontrolador PIC de tal forma que al encenderlo ejecute las instrucciones indicadas en dicho codigo, de no ser asi el microcontrolador PIC seria un dispositivo que no serviria para nada ya que su memoria de programa se encuentra en blanco cuando sale de fabrica. El proceso de grabado se realiza por medio de un programador tal como el PICkit2 (todos los detalles los puede encontrar en el articulo Pickit2 Programador-quemador-grabador de microcontroladores PIC).
  12. El último paso es armar el circuito electrico del contador, teniendo en cuenta que la fuente de alimentacion debe ser de 5V (este voltaje se puede obtener fácilmente a partir de un regulador 7805).

  13. Como recomendacion importante se sugiere agregar un condensador ceramico de 0.1uF entre los pines de alimentacion del PIC, lo cual ayudara a eliminar posibles problemas ocasionados por las fluctuaciones rapidas de la fuente de alimentacion. Además, notese que la conexion al display es directa (sin resistencias de por medio), lo que es posible debido a que los microcontroladores PIC están diseñados para suministrar una corriente máxima de 25mA en cada uno de sus pines. Al encender el circuito se observará que el display muestra el numero 0 ya que asi fue programado el PIC. Si se presiona (y se libera) el pulsador el conteo se incrementará en una unidad hasta una cuenta máxima de 9, en la siguiente pulsacion el conteo regresa a 0.

    Para profundizar en el aprendizaje de la programación de microcontroladores PIC le recomendamos leer nuestra serie de Articulos, donde se explican los conceptos basicos acompañados con ejemplos practicos y faciles de probar. También puede adquirir el libro Cómo programar en lenguaje C los microcontroladores PIC, que contiene el fundamento teorico mas detallado y muchos ejemplos reales minuciosamente explicados, asi como las simulaciones en Proteus-ISIS para que pueda verificar su funcionamiento de forma rapida y efectiva.


eBook en formato PDF "Cómo programar microcontroladores PIC"

Guía básica para programar microcontroladores PIC en mikroC PRO. Disponible en formato PDF. A la venta por tan sólo US$12.00

¡Cómpralo ya!