Programar PIC desde Cero en C
4.7 (94.89%) 47 votes

En esta entrada vamos a comenzar a aprender a Programar PIC desde Cero utilizando lenguaje C con nuestro compilador PIC C Compiler. Con este articulo aprenderás programación de PIC en C desde cero.

Hoy aprenderás a crear tus primeros programas en lenguaje C para nuestro microcontrolador. Recordemos que aunque sea un curso básico para programar microcontroladores, debemos tener un mínimo de conocimiento en lenguaje C y en Electrónica.

También explicare como pueden programar el PIC utilizando el quemador PicKit 3 para que graben los programas que vamos a comenzar a hacer en sus microcontroladores.

Si es tu primera vez aqui, te cuento que tenemos un curso COMPLETO de MICROCONTROLADORES PIC desde CERO y PASO A PASO (GRATIS) Es solo dar click en el siguiente enlace para ver todas las clases disponibles y conviértete en un experto Programando PIC:👉🏻 CURSO DE MICROCONTROLADORES PIC

Programar PIC en C – Primeros Pasos

A continuación vamos a ver unos programas de ejemplo para Programar PIC donde usaremos las instrucciones básicas de como preguntar por una entrada y como activar una salida. Configurando nuestro PIC y colocando nuestro encabezado. Recuerda que todo esto lo vimos en la entrada pasada, si aún no lo has visto da click aqui 👉🏻 Instrucciones básicas en PIC C

 

Encender y Apagar un led con pic

Con base en el siguiente esquema electrónico que consta de un PIC16F887, un switche y un Led hacer.

Proyecto1

Encender el LED conectado a RB0 si el switche conectado a RB1 está Activo.

 

Como vemos es un código sencillo, donde se pregunta en todo instante si el SW(PortA,1) está activo. Si esta sentencia es cierta, se activa la salida LED(PortB,0). Todo lo usado en este código fueron las sentencias basicas vistos en los post anteriores. (al final de la página se muestra el video con la implementación de este ejemplo)

 

 

 

Retardo en PIC – Programar PIC

Para este segundo ejemplo, veremos una nueva instrucción básica, llamada “delay_ms(tiempo en milisegundos)”. Esta es un instrucción de retardo que es muy útil ya que me permite dejar al microcontrolador esperando por un lapso de tiempo, sin hacer nada, para que luego continúe con su rutina.

En muchos programas que vamos a hacer, vamos a necesitar que el PIC se quede quieto esperando bien sea una visualizacion o esperando un tiempo para continuar con su programa. La instrucción del retardo se declara de la siguiente forma.

Dentro de los parentesis, se coloca el numero de milisegundos que va a durar el retardo, en este caso, se coloco 1000 milisegundos que corresponde a 1 segundo.

 

En el siguiente ejemplo, vamos a encender y a apagar un LED conectado a RB0 cada medio segundo.

Microcontroladores PIC

 

 

 

Programando PIC usando Output Toggle CCS

En este ejemplo aprenderemos a usar una instrucción que nos permite cambiar el estado lógico de una salida, Es decir que si el Pin esta en 1 cambia para 0 y viceversa. La instrucción es output_toggle(pin_x) donde ‘x‘ se remplaza por el pin que queremos cambiar de nivel. Ejemplo: portb,1 se colocaria pin_b1.

En el siguiente ejemplo, emplearemos 3 leds conectados al PORTB, la idea del ejemplo es hacer con que cada led prenda y apague con una frecuencia diferente, y para eso utilizaremos la instrucción output_toggle y delay_ms. La idea entonces es hacer que el LED 1 prenda y apague cada 233 ms, el LED 2 cada 592 ms y el LED 3 cada 879 ms.

PIC C

Programar PIC usando el PICKIT 3

Para poder programar los códigos de los ejemplos anteriores en nuestro PIC, vamos a necesitar de un quemador. En esta entrada voy a enseñarles a usar el Quemador PICKIT3 el cual vemos a continuación:

pickit3

El datasheet o manual del PICKIT3 puede se encontrar a través del siguiente link (click aca) El PICKIT3 es un programador en circuito, es decir podemos programar nuestros microcontroladores directamente en el circuito o en la protoboard, sin necesidad de tener que colocar el PIC en una base especifica.

 

La programación es sumamente sencilla, el PICKIT3 posee 6 lineas como puede ser observado en la sigiente figura:

PicKit3 PinOut

Vemos que tiene una flecha indicando el Pin 1, que es el Master Clear. Ahora para programar nuestro PIC solo basta con conectar cada pin del PICKIT3 con su respectivo pin del PIC, así por ejemplo el Pin1MCLR debe conectarse con el MCLR del pic, el pin2 va a positivo (+5v), el pin3 va a tierra (GND), el pin 4 va al ICSPDAT del PIC y el pin5 va al ICSPCLK del PIC, el pin 6 del PICKIT3 no es necesario conectarlo. A continuación muestro los pines del PIC que deben ser conectados al 16F887:

pickit3 + pic16f887

Descargar PICKIT 3

El software para programar el PIC, sera la versión PicKit3 StandAlone, el cual es una versión lanzada por Microchip para programar los PIC sin necesidad de instalar el MPLAB.

Puedes descargar el PicKit3 StandAlone V1.0 dando click aca.

Puedes descargar el PicKit3SatandAlone V3.1o dando click aca

 

A continuación se muestra un video con la primera configuración que debe hacerse en el Programa del PICKIT3 Standalone:

 

 

En el siguiente video vemos la implementación práctica del Ejemplo 1 – Encender y apagar un led, en la vida real:

 

 

En el siguiente video vemos la implementación práctica del Ejemplo 2 – Retardo con PIC, en la vida real:

 

 

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 9 comentarios

  1. hola amigo buen tutorial una consulta estoy haciendo un timer en c estoy usando el oscilador interno del pic16f628a es un temporisador doble el detalle es en simulacion funciona pero en board no muestra nada en el lcd
    aqui el inicio no se si esta bien la cabecera
    #define LCD_ENABLE_PIN PIN_A3
    #define LCD_RS_PIN PIN_A2
    #define LCD_RW_PIN PIN_A5
    #define LCD_DATA4 PIN_B4
    #define LCD_DATA5 PIN_B5
    #define LCD_DATA6 PIN_B6
    #define LCD_DATA7 PIN_B7
    #use standard_io(A)
    //#use fixed_io(a_outputs=PIN_A1,PIN_A2,PIN_A3,PIN_A6)
    #include
    #define CRISTAL 4000000
    #define FRECUENCIA_TIMER1 CRISTAL/4 //
    int32 Ticker;
    int8 Segundos=0;

    1. Parece estar definido bien. Tal vez en el montaje práctico no has conectado los pines de contraste del LCD o depronto no has colocado el master clear a positivo. Lo digo es porque si te simula bien, debe ser algún problema en el hardware.

  2. Hola, disculpa cuál es la función de la línea “#BYTE PORTB= 6”, ¿Qué pasa si se pone?

    1. Hola Rodrigo, esa linea le dice al compilador donde se ubica los pines del puerto B. Le esta diciendo que para hacer alguna cosa con el puerto, tiene que dirigirse al banco de memoria en la posición 6. A medida que vayas avanzando en el curso, se te será mucho más familiar estos conceptos.

  3. Muy buen tutorial, pero tengo una duda si en el banco de memoria no fuera 05h sino por ejemplo f80h ¿como escribiria eso en #byte?

    1. Hola Daniel, en ese caso lo escribes en Hexadecimal:
      #byte PORTA= 0x80

  4. parcero como siempre gracias excelente

    1. De nada Emerson, que bueno que te sirve el contenido del blog.

  5. muy buen exelente

Deja un comentario

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

Programar PIC desde Cero en C
9. Timer
Cerrar menú