1. Primeros pasos programando un Microcontrolador
4.7 (94.29%) 14 votes

En esta entrada veremos los primeros pasos para aprender microcontroladores PIC desde cero, para que te vuelvas un experto y puedas desarrollar proyectos increíbles con estos dispositivos electrónicos. Por eso si quieres aprender a programar PIC desde cero, este curso es ideal para ti.

Antes de comenzar dejame mostrarte los links de utilidad:

En el siguiente link puedes acceder al curso de 👉 programación de PIC en C desde cero.

También te podria interesar la 👉 Introdución a Arduino desde cero.

Programar PIC desde Cero

Un microcontrolador es un circuito integrado que contiene toda la estructura de un Microcomputador, es decir, unidad de proceso (CPU), memoria RAM, memoria ROM y circuitos de entrada/salida.

Es un dispositivo programable que puede ejecutar un sinnúmero de tareas y procesos.Un Microcontrolador esta compuesto básicamente por cuatro componentes principales:

Memoria ROM, EEPROM, EPROM o FLASH: es la memoria donde se almacena el programa. Memoria RAM o SRAM: es la memoria donde se almacenan los datos. Líneas de Entrada / Salida (I / O): también llamada puertos, se utilizan para conectar elementos externos al microcontrolador. CPU: controla y ejecuta todas las instrucciones que conforman el programa.

Existen diferentes familias de microcontroladores: Intel, Motorola, Microchip, entre otras. En este curso solo se estudiará el microcontrolador PIC16F887, que pertenece a la familia de Microchip; esta familia se caracteriza por tener procesador RISC y arquitectura Harvard caracterizada por la independencia entre la memoria de código (programa) y la de memoria de datos. Y para realizar la programación en lenguaje C usaremos el compilador CCS C PIC C Compiler y por último para probar nuestros proyectos usaremos el simulador Proteus.

Sin embargo todos los programas que veamos en el Curso, podrás aplicarlos a otro PIC diferente, a lo largo de todo el contenido te dejaré notas especificandote los pasos que debes seguir para adaptar los códigos a otro microcontrolador PIC.

PIC16F887

DESCRIPCIÓN DEL MICROCONTROLADOR PIC16F887

 Descripción de los Pines:

  • OSC1 / CLK IN (13): Entrada del cristal de cuarzo o del oscilador externo.
  • OSC2 / CLK OUT (14): Salida del cristal de cuarzo.
  • VSS (12 – 31): Conexión a tierra (GND)
  • VDD (11 – 32): Conexión a positivo (+5V)
  • MCLR# / VPP (1): Entrada de Reset o entrada del voltaje de programación. Si no se va a utilizar se debe poner a +5V.

El PIC16F887 cuenta con 5 puertos, los cuales son los pines del Chip y se pueden usar como entradas y/o salidas ademas que algunos pines cuentan con caracteristicas especiales que pueden ser lectura analoga, salidas PWM, etc. (Esto se verá mas adelante en el curso). Los puertos están distribuidos de la siguiente manera:

PUERTO A: Cuenta con 6 pines que van desde RA0 hasta RA5.

PUERTO B: Cuenta con los 8 Pines (RB0 – RB7).

PUERTO C: Cuenta con los 8 Pines (RC0 – RC7).

PUERTO D: Cuenta con los 8 Pines (RD0 – RD7).

PUERTO E: Cuenta con 3 pines (RE0 – RE2)

 

La distribución de los pines del PIC16F887 se puede observar en la siguiente figura.

 

Pines PIC16F887
Figura 1. Distribución de los Pines del PIC16F887

 

Si te está sirviendo de algo la información de la pagina, podrías invitarme a un café y ayudarme a seguir manteniendo en pie el sitio WEB. Solo cuesta $2USD y me ayudarías enormemente a seguir con mi trabajo. Muchas Gracias por tu visita.




Para Brasil

Se você está em Brasil pode utilizar o botão que está aqui em baixo, para realizar o convite em Reais.




CONFIGURACIÓN DE LOS PINES

Cada pin de los puertos del microcontrolador se pueden configurar como entrada o salida digital.

Las entradas corresponden a sensores, suiches o pulsadores, es decir son los ojos del microcontrolador, el microcontrolador se
da cuenta de lo que ocurre a través de las entradas.
Las salidas corresponden a los elementos que el microcontrolador va a controlar, un bombillo, un led, un motor, una electro
válvula, entre otros, es decir las salidas corresponden al elemento final de control.
Cada línea de cada puerto representa un bit, por ejemplo el puerto B:

Para denotar un bit en particular, se puede decir:

PORTB, 6 → el bit 6 del puerto B

Si un PIN va a funcionar como entrada se coloca en “1” y si va a funcionar como salida se coloca en “0”.

Ejemplo – Configuración puerto B

Si se necesita configurar el puerto B de la siguiente manera:

PortB
En el encabezado del programa debe escribirse la línea:

# BYTE PORTB=6

El número 6 corresponde a la dirección de memoria Ram en la que esta ubicado el puerto B. (Esto puede verse en el datasheet del microcontrolador). En el programa principal se digita la línea:

SET_TRIS_B(0B00001111);
Los últimos cuatro bits corresponden a salidas, por lo tanto se ponen en cero y los otros cuatro corresponden a entradas por
consiguiente se ponen en uno.

Por ultimo, es importante tener a la mano la hoja de datos del microcontrolador (Datasheet) que proporciona el fabricante con el fin de aprovechar todas las características del dispositivo y para saber donde buscar y como activar cada una de las características del chip. Si deseas puedes descargar el datasheet a continuación. DataSheet PIC16F887.

 

Te doy la bienvenida a este curso, donde estoy seguro vas a aprender mucho sobre este interesante mundo de microcontroladores, Puedes suscribirte a mi canal de Youtube dando click al siguiente botón y podrás acceder a todos los videos que alli publico sobre microcontroladores y asi podrás seguir paso a paso todos lo códigos que voy dejando aquí en la pagina.

Si te sirvió de algo la información de la pagina, podrías invitarme a un café y ayudarme a seguir manteniendo en pie el sitio WEB. Solo cuesta $2USD y me ayudarías enormemente a seguir con mi trabajo. Muchas Gracias por tu visita.




Para Brasil

Se você está em Brasil pode utilizar o botão que está aqui em baixo, para realizar o convite em Reais.




Esta entrada tiene 18 comentarios

  1. Estimado Sergio
    Antes de nada le felicito por toda la información impartida por su persona, se ve que sabe mucho de los temas. Sergio estoy iniciando en microcontroladores, realice un pequeño programita con pic 18F2550. El problema que tengo es en la simulación en Proteus y con la protoboar. El prograna no me corre, al simular solo veo que mis entradas se activan pero las salidas no. lo probe con reloj de 4Mz y 20Mz pero nada que funciona.
    Por su atención quedo agradecido, y muchos exitos Sergio

    1. debes definir la dirección de memoria de los puertos en el encabezado, que la puedes ver en la pagina 66 del datasheet.
      #byte porta=0xF80
      #byte portb=0xF81
      #byte portc=0xF82
      #byte portd=0xF83
      #byte porte=0xF84

      1. Muy agradecido por su respuesta Sergio
        Le comento el mismo programa si me corre con el 16f887, lo que realize es de pasar el programa al pic 18f2550 obviamente definiendo los puertos y los registros, pero no corre el programa.
        Saludos

        1. Fijate si tienes el pin del MasterClear en +5VDC, el pin de MCLR. Si esta al aire o desconectado tu pic se está reiniciando constantemente.

          1. Hola Sergio
            Si lo tengo el pin MCLR a 5Vcc, le puedo pasar el archivo fuente en algun archivo que lo visualice y podamos encontrar el error, y a donde lo puedo enviar.?
            Gracias

  2. hola sergio mira soy nuevo en esto de los pic .. y me gustaría saber si al inicio de cualquier programa de cualquier pic…. se empieza con eso mismo parámetro … cambiando el pic y los pines cualquier ayuda le estaré agradecido

    1. Hola Santiago, si, basicamente con las configuraciones que vimos aqui, puedes comenzar los programas con cualquier PIC. Lo importante es que cambies la libreria de tu PIC. Por ejemplo aqui usamos el 16F887.h, pero si tu usas otro pic, colocas la libreria del otro pic, supongamos el 18F4550.h, o el 16F877A.h, o el 16F88.h y asi por delante. Saludos.

  3. Felicitaciones, muy didáctico. Tienes material en español sobre PID en la plataforma PIC?. Gracias por compartir.

    1. Jose Luis aqui en el blog he hecho algunas entradas sobre PID en el PIC, dale un vistazo dando click aqui. Saludos.

  4. Hola Sergio.
    Soy estudiante de Ingeniería en Electrónica y Telecomunicaciones, y tengo una duda.
    Nos han platicado que, a nivel industrial, actualmente no se utiliza demasiado los PICs y que en su lugar se utiliza PLC’s ¿Es cierto esto?
    Muchas gracias por este material de tan buena calidad que haz hecho para nosotros 🙂
    ¡Saludos!

    1. Hola Angie. A nivel industrial es mucho más común utilizar PLC, dado que tienen una electrónica mucho más robusta y su programación es hecha en forma de lógica de contactos generalmente. Un PIC también podría ser utilizado a nivel industrial, el único problema es que debes hacerle una muy buena electrónica para evitar que le entren ruidos o interferencias y obviamente eso va a demandar algo de tu tiempo para hacerlo. Por eso por facilidad se opta por los PLC, donde la programación es mucho más intuitiva. Pero igual, yo he utilizado PIC a nivel industrial y han funcionado muy bien.

      1. hola sergio, tengo un equipo, el cual no lo diseñe yo que esta echo con un 16f877, y se me reinicia cada tanto el equipo, el equipo lo único que me muestra es la posicion de un motor que mueve una regla, y mediante 4 pulsadores puedo cambiarle la posicion que quiero que este la regla, la posición la sabe con un encoder, estoy seguro que por ruido que se me reinicia, el problema es que nose como hacer para sacarle ese problema, me podrias ayudar?

        1. Hola David, talvez podrías intentar lo siguiente:
          1- Resolda todos los puntos de estaño de tu placa, vaya ser que talvez haya un falso contacto.
          2- Cuando trabajas con motores y microcontroladores la fuente de alimentación es primordial, debes tener una buena fuente, con el mínimo de rizado posible. Si te es posible, alimenta el PIC con un fuente diferente a la que alimentas el motor, si no, entonces trata de usar un buena fuente.
          3- Coloca un condensador de Bypass, (0.1uF) entre los pines de alimentación (VCC y GND) del microcontrolador lo mas cerca posible del integrado, esto ayuda a reduzir ruidos de interferencia.
          4- Utiliza conexiones a tierra separadas, una para el microcontrolador (GND Digital) y otra para la etapa de potencia (GND Análoga).

  5. Hola hay mucha diferencia entre el pic16f877a al PIC16F887.??.. son de la misma familia ademas tienen casi la misma configuración de pines

    1. No, son practicamente el mismo. El 887 es la versiona actualizada del 877a.

  6. Hola, perdona que te moleste pero me gustaría saber como accedo a tus dos post anteriores que mencionas aquí en el primer vídeo, para conocer un poco mas del lenguaje que se utiliza con los PIC, por las dudas aclaro que soy un novato en el tema programación y me gustaría empezar desde abajo.
    Desde ya muchas gracias por tu esfuerzo.

    1. Hola Eduardo. Aquí te dejo el link con todos los post que he hecho de microcontroladores. Todos van en orden ascendente, la gran mayoria tienen videos entonces no te vas a perder.

      CURSO COMPLETO DE MICROCONTROLADORES

      Igual puedes ubicar el mouse en la sección de arriba donde dice Microcontroladores(PIC) y se te desplegaran todos los artículos que he hecho.
      Gracias por tu visita.

  7. Es lo malo de ser pobre. No podemos auto-financiar nuestros proyectos, solo la con ayuda de terceros.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

1. Primeros pasos programando un Microcontrolador
1. Primeros pasos programando un Microcontrolador
Cerrar menú