lunes, 18 de julio de 2016

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