Está en la página 1de 10

Laboratorio 10

Introducción a la tecnología PIC

1. Objetivos

1.1. Objetivo general

 Realizar la introducción al manejo de la tecnología PIC.

1.2. Objetivos específicos

 Manipular los PIC de gama media, concretamente, el PIC 16f628 A.


 Aprender a instalar el compilador MikroC PRO for PIC y el programa para quemar el código en
el microcontrolador Pickit 3 v3.10.
 Aprender a codificar los programas para PIC y observar las diferencias con la programación
Arduino.
 Grabar un programa en el microcontrolador.
 Probar los circuitos con el microcontrolador ya grabado.

2. Marco teórico

2.1. Microcontrolador PIC

Los PIC son una familia de microcontroladores tipo RISC (Reduced Instruction Set Computer, en
español Computador con Conjunto de Instrucciones Reducidas) fabricados por Microchip
Technology Inc. y derivados del PIC1650, originalmente desarrollado por la división de
microelectrónica de General Instrument.
El nombre actual no es un acrónimo. En realidad, el nombre completo es PICmicro, aunque
generalmente se utiliza como Peripheral Interface Controller (controlador de interfaz periférico).
El PIC original se diseñó para ser usado con la nueva CPU de 16 bits CP16000. Siendo en general
una buena CPU, ésta tenía malas prestaciones de entrada y salida, y el PIC de 8 bits se desarrolló en
1975 para mejorar el rendimiento del sistema quitando peso de entrada/salida a la CPU. El PIC
utilizaba microcódigo simple almacenado en ROM para realizar estas tareas; y aunque el término no
se usaba por aquel entonces, se trata de un diseño RISC que ejecuta una instrucción cada 4 ciclos
del oscilador.
En 1985 la división de microelectrónica de General Instrument se separa como compañía
independiente que es incorporada como filial (el 14 de diciembre de 1987 cambia el nombre a
Microchip Technology y en 1989 es adquirida por un grupo de inversores) y el nuevo propietario
canceló casi todos los desarrollos, que para esas fechas la mayoría estaban obsoletos. El PIC, sin
embargo, se mejoró con EPROM para conseguir un controlador de canal programable. Hoy en día
multitud de PIC vienen con varios periféricos incluidos (módulos de comunicación serie, UART,
núcleos de control de motores, etc.) y con memoria de programa desde 512 a 32 000 palabras (una
palabra corresponde a una instrucción en lenguaje ensamblador, y puede ser de 12, 14, 16 o 32 bits,
dependiendo de la familia específica de PICmicro).

1
2.2. Características de los microcontroladores

Los microcontroladores seleccionados para el trabajo, están basados en características propias de


los PIC pertenecientes a las gamas baja, media y mejorada. La gama baja de los PIC, encuadra
nueve modelos fundamentales en la actualidad.
La memoria de programa puede contener 512 byte, 1 k. y 2 k palabras de 12 bits, y ser de tipo
ROM, EPROM. También hay modelos con memoria OTP, (One Time Programmable) que sólo
puede ser grabada una vez por el usuario. La memoria de datos puede tener una capacidad
comprendida entre 25 y 73 bytes.
Con las Gamas de PIC se dispone de gran diversidad de modelos y encapsulados, pudiendo
seleccionar el que mejor se acople a las necesidades de acuerdo con el tipo y capacidad de las
memorias, el número de líneas de entrada y salida (E/S) y las funciones auxiliares precisas, sin
embargo, todas las versiones están construidas alrededor de una arquitectura común.
 Gama Baja: Repertorio de 33 instrucciones de 12 bits y dos niveles de pila.
 Gama Media: Repertorio de 35 instrucciones de 14 bits, 8 niveles de pila y un vector de
interrupción.
 Gama Alta: Repertorio de 58 instrucciones de 16 bits, 16 niveles de pila y cuatro vectores de
interrupción.
 Gama Mejorada: Repertorio de 77 instrucciones de 16 bits, 32 niveles de pila y cuatro vectores
de interrupción.
Considerando el momento actual, comparando los parámetros fundamentales con los modelos
comerciales de otros fabricantes y las aplicaciones más habituales a las que se destinan los
microcontroladores, la elección de una versión adecuada de PIC es la mejor solución, atendiendo a
sus principales ventajas:
- Bajo costo.
- Bajo consumo de potencia.
- Alta inmunidad al ruido.
- Distintos modelos adecuados para cada necesidad.
- Herramientas de desarrollo gratuitas.
- Fácil de empezar a usar.
- Abundante información técnica gratuita oficial y de terceros (ambas por Internet).
- Protección del código de programa por encriptación.
- Modo SLEEP (estado de reposo o de muy bajo consumo).
- Predisposición para osciladores RC (Resistor/Capacitor), XT (XTal), HS (High Speed) y
LP (Low Power).
- Solo 35 instrucciones RISC (Reduced Instruction Set Computer).
2
- Interrupciones programables.
- Circuito de vigilancia tipo perro guardián (watch dog timer o WDT).
- Modelos con conversores A/D.
- Modelos con salida PWM (modulación de anchura de pulsos).
- Modelos con varios temporizadores internos.

2.3. Arquitectura de los microcontroladores

Aunque inicialmente todos los microcontroladores adoptaron la arquitectura clásica de Von


Neumann, en la actualidad se impone la Arquitectura Harvard.
La Arquitectura de Von Neumann se caracteriza por disponer de una sola memoria principal, donde
se almacenan datos e instrucciones de forma indistinta. A dicha memoria se accede a través de un
sistema de buses único (direcciones, datos y control).
La arquitectura Harvard empleada en los microcontroladores actuales, dispone de dos memorias
independientes: una que contiene sólo instrucciones y otra sólo datos.
Ambas disponen de sus respectivos sistemas de buses de acceso y es posible realizar operaciones de
acceso (lectura o escritura) simultáneamente en ambas memorias, todo esto propicia que se mejore
el ancho de banda con respecto a la arquitectura tradicional.
Separar los buses de programa y de datos, permite además que el ajuste del tamaño de las
instrucciones sea diferente del ancho de 8 bits en los datos de palabra. Un bus de acceso a la
memoria de programa con un ancho de 14 bits, toma una instrucción de 14 bits en un solo ciclo.
Todos los registros de funciones especiales, incluyendo el contador del programa, son trazados en
un mapa en la memoria de datos. Estos microcontroladores, tienen un set ortogonal (simétrico) de
instrucción, que hace posible que se lleve a cabo cualquier operación en cualquier registro usando
cualquier modo de dirección.
La naturaleza simétrica y la ausencia de situaciones óptimas especiales, hacen la programación con
estos microcontroladores simple y más eficiente.

2.4. Organización de memoria


La repercusión más importante del empleo de la arquitectura Harvard en los microcontroladores
PIC, se manifiesta en la organización de la memoria del sistema.
La memoria de programa es independiente a la de los datos, accediéndose en el mismo ciclo a
ambas memorias, pues cada uno tiene sus propios buses de acceso, además de tener tamaños y
longitudes de palabra diferentes.

 Organización de la Memoria de Programa


En los PIC de la gama baja, el registro contador de programa (PC) proporciona la dirección de la
memoria de programa y su longitud puede oscilar entre 9 y 11 bits, según la capacidad de la misma.
En los modelos que sólo disponen de la página 0, bastan los 9 bits de menos peso del PC (A8-A0)
para direccionar la instrucción en curso, que, si no es una de salto, provoca el autoincremento del
mismo.
En las instrucciones de salto, el valor del PC se obtiene de diferentes formas según de la instrucción
de que se trate.
3
Los PIC de rango medio poseen un registro Contador del Programa (PC) de 13 bits, capaz de
direccional un espacio de 8K x 14, como todas las instrucciones son de 14 bits, esto significa un
bloque de 8k instrucciones.
El bloque total de 8K x 14 de memoria de programa, está subdividido en 4 páginas de 2K x 14.
Los PIC de la gama mejorada 18CXX2 y 18F452, tienen un registro Contador del Programa (PC)
de 14 bits, poseen mayores capacidades de memoria que los de la gama media que alcanza hasta 1M
palabras.
La mayoría de las instrucciones son de 16 bits, aunque las hay también de 32 bits. El número total
de instrucciones es de 77.

 Organización de la memoria de datos


La memoria de datos evoluciona según se ejecuta el programa, la misma es de tipo lectura–
escritura, es decir tipo RAM.
La memoria de datos se organiza en "bancos", pudiendo existir hasta cuatro en los modelos de
mayor capacidad.
El banco 0 tiene un tamaño de 32 bytes, mientras que todos los demás sólo disponen de 16. El
banco 0 ocupa las 32 primeras posiciones de la memoria y lo poseen todos los modelos de la gama
baja.
Las 16 posiciones de menos peso de los bancos 1, 2 y 3 no son accesibles y cuando se direcciona
desde el valor 00h al 0Fh, siempre se acude al banco 0. Cuando la dirección está comprendida entre
la 10h y la 1Fh, hay que seleccionar a cuál de los cuatro posibles bancos corresponde con los bits 6
y 5 del registro FSR (File Select Register o archivo de registro seleccionado en español).
La memoria datos de los PIC de la gama media, consta de dos áreas mezcladas y destinadas a
funciones distintas:
- Registros de Propósito Especial (SFR)
- Registro de Propósito General (GPR)
Los SFR, son localidades asociadas específicamente a los diferentes periféricos y funciones de
configuración del PIC y tienen un nombre específico asociado con su función. Mientras que los
GPR son memoria RAM de uso general.

 Bancos de memoria

Toda la memoria de datos está organizada en 4 bancos numerados: 0, 1, 2 y 3. Para seleccionar un


banco, se debe hacer uso de los bits del registro STATUS<7:5> denominados IRP, RP1 y RP0.
Cada banco se extiende hasta la dirección de memoria 7Fh (128 bytes). Las posiciones inferiores de
cada banco están reservadas para los registros de funciones especiales, a continuación de estos, se
ubican los registros de propósito general, implementado como RAM estática.
Todos los bancos implementados contienen registros de funciones especiales. Uno de los usos más
frecuentes de estos registros con respecto a un banco, puede ser el reflejo en otro para la reducción
de código y la vía de entrada más rápida.
Hay dos maneras de acceder a la memoria de datos: Direccionamiento directo e indirecto.
Los PIC de la gama mejorada, poseen memoria de datos RAM en todas las versiones hasta 1MB,
con MMU y 4 canales de DMA. También tienen versiones de memoria de datos EEPROM (con
protección) de 256 bytes

3. Material y equipos

 4 Resistores 220 Ω  Grabador de PIC


 4 Leds rojos de alto brillo  Conectores
 PIC 16f628A  2 Capacitores de 33 pF
 1 Cristal 4 MHz

4
 Placa Arduino UNO (usada solo como
alimentación)

5
4. Circuitos y esquemas

4.1. Esquema para la conexión del circuito de secuencia de leds con PIC i6f628A.

C1
U1
33pF 16 17
RA7/OSC1/CLKIN RA0/AN0
X1 15
RA6/OSC2/CLKOUT RA1/AN1
18
CRYSTAL 1
C2 4
RA2/AN2/VREF
2
RA5/MCLR RA3/AN3/CMP1
3
RA4/T0CKI/CMP2
33pF 6
RB0/INT
7
RB1/RX/DT
8
RB2/TX/CK
9
RB3/CCP1
10
RB4
11
RB5
12
RB6/T1OSO/T1CKI
13
RB7/T1OSI
PIC16F628A D1 D2 D3 D4
LED-RED LED-RED LED-RED LED-RED

R2 R3 R4 R1
220 220 220 220

4.2. Circuito para probar la secuencia de encendido y apagado de leds con PIC 16f628 A.

5. Marco práctico

- Antes de iniciar con el circuito del laboratorio correspondiente al manejo de PIC se instalaron
dos programas para empezar con el uso de microcontroladores. El primero fue MikroC Pro for
PIC, este es un programa que cuenta con un entorno integrado de desarrollo para escribir,
compilar, ejecutar y depurar código. Este programa requería ser parchado para que se ejecute
normalmente. El segundo programa necesario era el que permitía grabar el programa en el
microcontrolador haciendo uso del archivo hexadecimal que genera el MikroC Pro for PIC; el
programa necesario para grabar se llama PICkit 3 versión 3.10, el cual es parte del grabador de
microcontroladores fabricado por Microchip.

- Ya con los programas listos para ser ejecutados, primero se procede a abrir el MikroC Pro for
PIC, en el cual se empieza a escribir el código en lenguaje C. Ya con el programa escrito, se
procedió a compilarlo, MikroC Pro genera varios archivos con diferentes extensiones, el archivo
de interés es el que tiene la extensión .hex, que es un archivo escrito en hexadecimal, el cual se
utiliza para simular el programa en Proteus y para grabar en el microcontrolador.

- Para grabar el programa en el microcontrolador se conectó el PICkit directamente al


microcontrolador en determinados pines destinados para ese uso. PICkit es utilizado para grabar
diferentes microcontroladores, es por ello que había que ver la hoja de datos del
microcontrolador que se quería grabar para realizar la conexión correcta.

El microcontrolador tiene la siguiente distribución de pines, es por ello que había que tener cuidado
de conectar correctamente los pines para evitar que este se queme.
Partiendo de la flecha que el quemador tiene como referencia los pines están en el siguiente orden:

- Una vez grabado el programa en el microcontrolador, se procedió a armar el circuito en el


programa Proteus versión 7 entorno ISIS. No hubo mucha diferencia en el armado del circuito
hasta que fue momento de subir el programa al microcontrolador y simular el código escrito.
Para ello, se debe hacer doble click en el microcontrolador del simulador y en el menú de Edit
Component (editar componente) se presiona en la carpeta del lado derecho que está encerrada en
un círculo rojo y se debe buscar el archivo con extensión hexadecimal y seleccionarlo.
- Verificada la simulación y el correcto funcionamiento de la secuencia escrita en el código, se
procedió a armar el circuito físico, siempre observando cuidadosamente que los pines conectados
sean los correctos.

- Se probó el circuito y se verificó su correcto funcionamiento de acuerdo a lo escrito en el código.

6. Anexos, tablas y código de programación

6.1. Código de la secuencia de leds.

El código escrito es sencillo, dentro del programa principal se inicializa el puerto B con el comando
TRISB que inicializa el puerto en cero. Después, se crea un bucle artificial con while(1) y dentro
del bucle se designa el puerto que se va a utilizar. En este caso, se utiliza todo el puerto B, de dicho
puerto solamente se utilizarán 4 pines.

B6 B5 B4 B3 B2 B1 B0
64 32 16 8 4 2 1
64
32
16
8
16
32
64

La sentencia PORTB=64, se debe a que el puerto B tiene una salida decimal de 64, lo cual hace que
el pin B6 se ponga en estado alto y el led conectado se encienda. Aplicando la misma lógica, se
consigue la secuencia deseada donde los leds se encienden uno a uno de derecha a izquierda de
manera indefinida.

7. Conclusiones
Se realizó la introducción al manejo de la tecnología PIC utilizando un pic de gama media 16f628
A, en el cual se grabó una secuencia de encendido y apagado de leds utilizando el puerto B como
puerto de salida digital.
Se instalaron los programas MikroC Pro for PIC, que es un compilador para escribir el código que
se quiere grabar en el microcontrolador y también se instaló el programa PICkit 3 versión 3.10, con
el cual se graba el archivo hexadecimal en el micro.
Se codificó en lenguaje C el programa deseado y se observaron la diferencia con la programación
Arduino, se llegó a la conclusión de que ambos lenguajes son parecidos y que tienen sentencias
equivalentes entre ambos.
Se grabó un programa en el microcontrolador y se verifico el correcto funcionamiento en el circuito
físico y en la simulación.
Se probaron los programas grabados en el microcontrolador en los circuitos físicos y se verificó que
el procedimiento arroja el resultado deseado.

8. Bibliografía

[1] https://es.wikipedia.org/wiki/Microcontrolador_PIC
[2] https://www.ecured.cu/Microcontroladores_PIC
[3] https://www.microchip.com/Developmenttools/ProductDetails/PG164130
[4]https://www.mikroe.com/ebooks/microcontroladores-pic-programacion-en-c-con-
ejemplos/mikroc-pro-for-pic