PIC16F887
Se denomina microcontrolador a un dispositivo programable capaz de realizar diferentes actividades que requieran del procesamiento de datos digitales y del control y comunicación digital de diferentes dispositivos.
Los microcontroladores
poseen una memoria interna que almacena dos tipos de datos; las instrucciones,
que corresponden al programa que se ejecuta, y los registros, es decir, los
datos que el usuario maneja, así como registros especiales para el control de
las diferentes funciones del microcontrolador.
Los microcontroladores
se programan en Assembler y cada microcontrolador varía su conjunto de
instrucciones de acuerdo a su fabricante y modelo. De acuerdo al número de
instrucciones que el microcontrolador maneja se le denomina de arquitectura RISC
(reducido) o CISC (complejo). Los microcontroladores poseen principalmente una
ALU (Unidad Lógico Aritmética), memoria del programa, memoria de registros, y
pines I/O (entrada y/o salida). La ALU es la encargada de procesar los datos
dependiendo de las instrucciones que se ejecuten (ADD, OR, AND), mientras que
los pines son los que se encargan de comunicar al microcontrolador con el medio
externo; la función de los pines puede ser de transmisión de datos,
alimentación de corriente para el funcionamiento de este o pines de control
especifico.
El microcontrolador
16F887 es fabricado por MicroChip familia a la cual se le denomina PIC. El
modelo 16F887 posee varias características que hacen a este microcontrolador un
dispositivo muy versátil, eficiente y práctico para ser empleado en múltiples
proyectos.
Algunas de estas características son:
·
Frecuencia
de operación 0-20 MHz
·
Oscilador interno de alta precisión
o Calibrado de fábrica
o
Rango de frecuencia de 8MHz a
31KHz seleccionado por software
·
35
pines de entrada/salida
o
Alta corriente de fuente y de drenador para manejo de
LED
o resistencias pull-up programables
individualmente por software
o
interrupción al cambiar el estado del pin
·
256 bytes de
memoria EEPROM
o
Los datos se pueden grabar más de 1.000.000
veces
·
368 bytes de
memoria RAM
·
Convertidor A/D
o 14 canales
o resolución de 10 bits
· Módulo PWM incorporado
ARQUITECTURA DEL PIC
DESCRIPCIÓN DE PINES
La mayoría de los pines del microcontrolador PIC16F887 son multipropósito como se muestra en la figura anterior. Por ejemplo, la asignación RA3/AN3/Vref+/C1IN+ para el quinto pin del microcontrolador indica que éste dispone de las siguientes funciones:
RA3 Tercera entrada/salida digital del puerto A
AN3 Tercera entrada analógica
Vref+ Referencia positiva de voltaje
C1IN+ Entrada positiva del comparador C1
La funcionalidad de los pines presentados anteriormente es muy útil puesto que permite un mejor aprovechamiento de los recursos del microcontrolador sin afectar a su funcionamiento. Estas funciones de los pines no se pueden utilizar simultáneamente, sin embargo se pueden cambiar en cualquier instante durante el funcionamiento.
Las siguientes tablas se refieren al microcontrolador DIP de 40 pines.
MEMORIA ROM
La memoria ROM se utiliza para guardar permanente el programa que se está ejecutando. Es la razón por la que es frecuentemente llamada “memoria de programa”. El PIC16F887 tiene 8Kb de memoria ROM (en total 8192 localidades). Como la memoria ROM está fabricada con tecnología FLASH, su contenido se puede cambiar al proporcionarle un voltaje de programación especial (13V).
No obstante, no es necesario explicarlo en detalles puesto que se realiza automáticamente por un programa especial en la PC y un simple dispositivo electrónico denominado programador.
BANCOS DE LA MEMORIA RAM
La memoria RAM está dividida en cuatro bancos. Antes de acceder a un registro al escribir un programa (para leer o cambiar su contenido), es necesario seleccionar el banco que contiene ese registro. Más tarde vamos a tratar dos bits del registro STATUS utilizados para selección del banco. Para simplificar el funcionamiento, los SFR utilizados con más frecuencia tienen la misma dirección en todos los bancos, lo que permite acceder a ellos con facilidad.
PRINCIPAL REGISTRO SFR
PUERTOS DE ENTRADA/SALIDA
Con el propósito de sincronizar el funcionamiento de los puertos de E/S con la organización interna del microcontrolador de 8 bits, ellos se agrupan, de manera similar a los registros, en cinco puertos denotados con A, B, C, D y E. Todos ellos tienen las siguientes características en común:
· Por las razones prácticas, muchos pines de
E/S son multifuncionales. Si un pin realiza una de estas funciones, puede ser
utilizado como pin de E/S de propósito general.
·
Cada puerto tiene su propio registro de
control de flujo, o sea el registro TRIS correspondiente: TRISA, TRISB, TRISC
etc. lo que determina el comportamiento de bits del puerto, pero no determina
su contenido.
Al poner a cero un bit del registro TRIS (pin=0), el pin correspondiente del puerto se configurará como una salida. De manera similar, al poner a uno un bit del registro TRIS (bit=1), el pin correspondiente del puerto se configurará como una entrada. Esta regla es fácil de recordar: 0 = Entrada 1 = Salida.
LENGUAJES DE PROGRAMACIÓN
El microcontrolador ejecuta el programa cargado en la memoria Flash. Esto se denomina el código ejecutable y está compuesto por una serie de ceros y unos, aparentemente sin significado. Dependiendo de la arquitectura del microcontrolador, el código binario está compuesto por palabras de 12, 14 o 16 bits de anchura. Cada palabra se interpreta por la CPU como una instrucción a ser ejecutada durante el funcionamiento del microcontrolador. Todas las instrucciones que el microcontrolador puede reconocer y ejecutar se les denominan colectivamente Conjunto de instrucciones. Como es más fácil trabajar con el sistema de numeración hexadecimal, el código ejecutable se representa con frecuencia como una serie de los números hexadecimales denominada código Hex. En los microcontroladores PIC con las palabras de programa de 14 bits de anchura, el conjunto de instrucciones tiene 35 instrucciones diferentes.
LENGUAJE ENSAMBLADOR
Como el proceso de escribir un código
ejecutable era considerablemente arduo, en consecuencia fue creado el primer
lenguaje de programación denominado ensamblador (ASM). Siguiendo la sintaxis
básica del ensamblador, era más fácil escribir y comprender el código. Las
instrucciones en ensamblador consisten en las abreviaturas con significado y a
cada instrucción corresponde una localidad de memoria. Un programa denominado
ensamblador compila (traduce) las instrucciones del lenguaje ensamblador a
código máquina (código binario)
Este programa compila instrucción a instrucción sin o Optimización. Como permite controlar en detalle todos los procesos puestos en marcha dentro del chip, este lenguaje de programación todavía sigue siendo popular.
VENTAJAS DE LENGUAJES DE PROGRAMACIÓN DE ALTO NIVEL
A pesar de todos los lados buenos, el lenguaje ensamblador tiene algunas desventajas:
· Incluso una sola operación en el programa escrito en
ensamblador consiste en muchas instrucciones, haciéndolo muy largo y difícil de
manejar.
· Cada tipo de
microcontrolador tiene su propio conjunto de instrucciones que un programador
tiene que conocer para escribir un programa
· Un programador tiene que conocer el hardware del
microcontrolador para escribir un programa
Programa escrito en C (El mismo programa compilado al código ensamblador):
Los lenguajes de programación de alto nivel (Basic, Pascal, C etc.) fueron creados con el propósito de superar las desventajas del ensamblador. En lenguajes de programación de alto nivel varias instrucciones en ensamblador se sustituyen por una sentencia. El programador ya no tiene que conocer el conjunto de instrucciones o características del hardware del microcontrolador utilizado. Ya no es posible conocer exactamente cómo se ejecuta cada sentencia, de todas formas ya no importa. Aunque siempre se puede insertar en el programa una secuencia escrita en ensamblador.
Si alguna vez ha escrito un programa para un microcontrolador PIC en lenguaje ensamblador, probablemente sepa que la arquitectura RISC carece de algunas instrucciones. Por ejemplo, no hay instrucción apropiada para multiplicar dos números. Por supuesto, para cada problema hay una solución y éste no es una excepción gracias a la aritmética que permite realizar las operaciones complejas al descomponerlas en un gran número operaciones más simples. En este caso, la multiplicación se puede sustituir con facilidad por adición sucesiva (a x b = a + a + a + … + a). Ya estamos en el comienzo de una historia muy larga… No hay que preocuparse al utilizar uno de estos lenguajes de programación de alto nivel como es C, porque el compilador encontrará automáticamente la solución a éste problema y otros similares. Para multiplicar los números a y b, basta con escribir a*b.
INTRODUCCIÓN A LA PROGRAMACIÓN EN LENGUAJE ASSEMBLER
https://mega.nz/#!iQlkGAaJ!DVFGMSjGamAGr6ar7vx0iZupUB_Q06ODFRY4OTTuvpg
Acá les dejo el link del SET de INSTRUCCIONES
https://mega.nz/#!7ctCSIhA!DVFGMSjGamAGr6ar7vx0iZupUB_Q06ODFRY4OTTuvpg
Para poder realizar la simulación de los programas y circuitos a utilizar usaremos:
MPLABX IDE, descargue la ultima version dando clic en el siguiente enlace MICROCHIP
PROTEUS 7.7 descargue dando clic en el siguiente enlace:
https://mega.nz/#!KcEyRCTR!0aD7i1T8RUytTjzHMnxc8qca1TQzay1sej238p3V7sk
LIBROS CONSULTADOS:
- Compilador C CCS y Simulador PROTEUS para Microcontroladores PIC 1ra Edicion Eduardo García Breijo.
- Microcontrolador 8051 - Scott Mackenzie 4ta Edicion.
- Microcontroladores, Funcionamiento, programacion y aplicaciones practicas, EDITORIAL USERS
- MICROCONTROLADORES «PIC»Diseño práctico de aplicaciones, Primera parte. El PIC16F84, Lenguajes PBASIC y Ensamblador, tercera edicion, autor JOSÉ M.ª ANGULO USATEGUI
- MICROCONTROLADORES «PIC»Diseño práctico de aplicaciones, Segunda parte. El PIC16F87x, tercera edicion, autor JOSÉ M.ª ANGULO USATEGUI, SUSANA ROMERO YESA.
- Diseño y simulación de sistemas microcontrolados en lenguaje C, Programación con el compilador MikroC PRO y simulación en Proteus ISIS, AUTORJuan Ricardo Clavijo Mendoza
Puede descargar los libros acá --->>LINK<<-----