Sie sind auf Seite 1von 11

Investigacin PIC 16F886

Profesor: Juan Antonio Sarreon Ramrez


Materia: Microprocesadores
Integrantes: Gascn Ibarra Cristian Erick
Rivera Barreiro Isaas
Paredes Gamero Carlos
Alonso Colalco Reinaldo

Que son los circuitos integrados (CI)
Un CI es aquel en el cual todos los componentes, incluyendo transistores, diodos, resistencias,
condensadores y alambres de conexin, se fabrican e interconectan completamente sobre un chip o
pastilla semiconductor de silicio.
Una vez procesado, el chip se encierra en una capsula plstica o de cermica que contiene los pines
de conexin a los circuitos externos.
Los chips digitales ms pequeos contienen varios componentes sencillos como compuertas,
inversores y flip-flops, los ms grandes contienen circuitos y sistemas completos como contadores,
memorias, microprocesadores, etc. La mayora de los circuitos integrados digitales vienen en
presentacin tipo DIP (Dual in-line package) o de doble hilera. Los CIs ms comunes tipo DIP son los
de 8, 14, 16,24, 40 y 64 pines.
En la capsula trae impresa la informacin respecto al fabricante, la referencia del dispositivo y la fecha
de fabricacin.
Adems del tipo DIP, existen otras presentaciones comunes de los circuitos integrados digitales como
la capsula metlica, la plana y la chip carrier. Existen circuitos integrados que utilizan capsulas SMT o
de montaje superficial, SMT son casi 4 veces ms pequeos que los DIPs.
La tecnologa SMT (Surface-mount technology) es la que ha permitido obtener calculadores del tamao
de una tarjeta de crdito.

Terminales del micro-controlador PIC16F886 y sus respectivas
funciones
Esta sera la disposicin de sus terminales y sus respectivos nombres.








Encapsulado DIP - PIC16F886
Pin 1 que es utilizado para resetear el microcontrolador.
Las cuatro entradas para los conversores anlogo digital del pin 2-5 el cual tiene 14 modos y se puede
tener referencias de voltajes programados. Y tiene dos comparadores internos.
Los puertos 6,7 que son utilizados para programacin puede ser conectado al puerto serial.
Los pines 9 y 10 son utilizados para el resonador externo.
Los pines 11 a 14 son salidas, controlan diferentes dispositivos.
Los pines 15-18 funcionan como entradas o salidas, pueden ser utilizados para recepcin de datos o
salida control de los dispositivos externos.
Ocho salidas las cuales pueden ser agrupadas de acuerdo a la necesidad y control de diferentes
dispositivos y de control
Caractersticas principales

Las caractersticas principales de estos dispositivos son:
CPU de arquitectura RISC (Reduced Instruction Set Computer).
Set de 35 instrucciones.
Frecuencia de reloj de hasta 20MHz (ciclo de instruccin de 200ns).
Todas las instrucciones se ejecutan en un nico ciclo de instruccin, excepto las de salto.
Hasta 8K x 14 palabras de Memoria de Programa FLASH (ver tabla a continuacin).
Hasta 368 x 8 bytes de Memoria de Datos tipo RAM (ver tabla a continuacin).
Hasta 256 x 8 bytes de Memoria de Datos tipo EEPROM (ver tabla a continuacin).
Hasta 15 fuentes de Interrupcin posibles.
8 niveles de profundidad en la Pila hardware.
Modo de bajo consumo (Sleep).
Tipo de oscilador seleccionable (RC, HS, XT, LP y externo).
Rango de voltaje de operacin desde 2,0V a 5,5V.
[3][4][5]

Conversor Analgico/Digital de 10 bits multicanal.
3 Temporizadores.
Watchdog Timer o Perro Guardin.
2 mdulos de captura/comparacin/PWM.
Comunicaciones por interfaz USART (Universal Synchronous Asynchronous Receiver Transmitter).
Puerto Paralelo Esclavo de 8 bits (PSP).
Puerto Serie Sncrono (SSP) con SPI e I
2
C.

Estructura interna
Estos microcontroladores tienen la memoria de programa y la memoria de datos separadas, lo que se
conoce como arquitectura Harvard. Esta configuracin interna permite entre otras cosas acceder a
las instrucciones de programa y a los datos simultneamente a travs de buses diferentes, lo que
mejora notablemente la velocidad de proceso de estos dispositivos.
Circuitera externa auxiliar
Para que el microcontrolador sea capaz de funcionar en cualquier proyecto, se necesita al menos la
siguiente circuitera externa:
La alimentacin.
El reloj (oscilador).
Tambin, y de manera opcional:
El circuito de reinicio.

Memoria interna
Existen tres bloques bien diferenciados de memoria. Estos son:
Memoria de programa EEPROM Flash: es el lugar fsico donde se guarda el programa de usuario. Es
de tipo no voltil.
Memoria de datos SRAM: es el lugar fsico donde se guardan datos. Es de tipo voltil.
Memoria de datos EEPROM: es el lugar fsico donde se guardan datos. Es de tipo no voltil.
Memoria de datos SRAM
Esta memoria es de tipo voltil, lo que significa que no conserva su contenido despus de un apagado
de alimentacin.
En esta memoria se encuentran los registros de funciones especiales (SFR) y los registros de propsito
general (GPR), y est particionada en cuatro bancos (0, 1, 2 y 3), seleccionables independientemente.
El banco 0 es el banco seleccionado por defecto cuando se alimenta al microcontrolador.
Registros de funciones especiales (SFR)
Todos los microcontroladores cuentan con registros internos que permiten controlar y supervisar las
funciones y recursos disponibles del dispositivo.
Los registros de los microcontroladores PIC se encuentran en un espacio especial de la memoria de
datos, el SFR (Special Function Registers). En los dispositivos PIC16F87X estos registros son de 8 bits,
la mayora de lectura y escritura. Se puede acceder a dichos bits de manera individual, o bien a todo el
registro a la vez.
Determinados pares de registros tienen funciones especiales para las cuales se pueden considerar
unidos en un nico registro de 16 bits, aunque fsicamente siguen estando separados.
El registro STATUS
El registro de estado (STATUS) es uno de los ms importantes y empleados en el microcontrolador.
Proporciona informacin acerca del resultado de operaciones aritmticas, operaciones lgicas y causa
de reinicios, adems de permitir la seleccin del banco de memoria de datos.

El registro W
El registro de trabajo W (Working Register) es un registro relevante especial de 8 bits que participa en
la mayora de instrucciones. A diferencia de los SFR, se encuentra dentro de la misma CPU, y puede
ser accedido tanto para lectura como para escritura.
Set de instrucciones y sintaxis
Los PIC16F87X son microcontroladores RISC. Esto se refleja en que tienen un repertorio reducido de
35 instrucciones ortogonales (prcticamente todas las instrucciones pueden utilizar cualquier
operando), stas son rpidas y todas tienen una longitud fija de 14 bits.
Las instrucciones se pueden clasificar en:
Instrucciones de carga.
Instrucciones de bits.
Instrucciones aritmticas.
Instrucciones lgicas.
Instrucciones de salto.
Instrucciones de manejo de subrutinas.
Instrucciones especiales.
Tabla resumen de instrucciones

Sintaxis Descripcin Ciclos de Instruccin
Instrucciones de carga
CLRF f Borra el contenido del registro f 1
CLRW Borra el contenido del registro W 1
MOVF f,d Mueve el contenido del registro f 1
MOVWF f Mueve el contenido del registro W al registro f 1
MOVLW k Guarda en el registro W el valor k 1
Instrucciones de bit
BCF f,b Pone en "0" el bit b del registro f 1
BSF f,b Pone en "1" el bit b del registro f 1
Instrucciones aritmticas
ADDLW k Suma el valor k al registro W 1
ADDWF f,d Suma el contenido del registro W con el de f 1
DECF f,d Decrementa en una unidad el contenido del registro f 1
INCF f,d Incrementa en una unidad el contenido del registro f 1
SUBLW k Resta el valor k al registro W 1
SUBWF f,d Resta el contenido del registro W al registro f 1

En todas las instrucciones donde aparece una d como operando:
Si d = 0, el resultado de la operacin se guarda en W.
Si d = 1, el resultado de la operacin se guarda en el registro f. Es el valor por defecto.
Instrucciones lgicas
ANDLW k Realiza la operacin lgica AND entre el valor k y el registro W 1
ANDWF f,d Realiza la operacin lgica AND entre el contenido del registro W y el de f 1
COMF f,d Niega el valor del registro f 1
IORLW k Realiza la operacin lgica OR entre el valor k y el registro W 1
IORWF f,d Realiza la operacin lgica OR entre el contenido del registro W y el de f 1
RLF f,d Rota el contenido del registro f hacia la izquierda a travs del carry bit 1
RRF f,d Rota el contenido del registro f hacia la derecha a travs del carry bit 1
SWAPF f,d Intercambia los cuatro primeros bits con los cuatro ltimos del registro f 1
XORLW Realiza la operacin lgica XOR entre el valor k y el registro W 1
XORWF f,d Realiza la operacin lgica XOR entre el contenido del registro W con el de f 1
Instrucciones de salto
BTFSC f,b Lee el bit b del registro f y salta la instruccin siguiente si est en 0 1 (2 si
salta)
BTFSS f,b Lee el bit b del registro f y salta la instruccin siguiente si est en 1 1 (2 si
salta)
DECFSZ f,d Decrementa en una unidad el contenido del registro f y salta la instruccin
siguiente si es cero
1 (2 si
salta)
INCFSZ f,d Incrementa en una unidad el contenido del registro f y salta la instruccin
siguiente si es cero
1 (2 si
salta)
GOTO k Salto incondicional a la etiqueta k 2
Instrucciones de manejo de subrutinas
CALL k Llamada a la subrutina k 2
RETFIE Retorno de una interrupcin 2
RETLW Retorno de una subrutina con el valor k en el registro W 2
RETURN Retorno de una subrutina 2
Instrucciones especiales
CLRWDT Borra el temporizador del Watchdog 1
NOP No realiza ninguna operacin (pero consume tiempo de ejecucin) 1
SLEEP Se pone el PIC en estado de reposo (dormido) 1

Registro de configuracin
Estos microcontroladores cuentan con un registro especial llamado palabra de configuracin
(Configuration Word) de 14 bits, que se encuentra en la direccin 2007h de la memoria de
programa.
Este registro debe escribirse durante el proceso de grabacin del microcontrolador ya que no puede
ser modificado durante el tiempo de ejecucin de un programa.
Su funcin es especificar ciertas caractersticas de funcionamiento del microcontrolador, como son:
Proteccin de memoria de programa.
Uso del modo de depuracin en circuito.
Permiso de escritura en memoria Flash.
Proteccin de memoria EEPROM de datos.
Uso de programacin en modo de bajo voltaje.
Uso de reinicio por cada de tensin.
Uso del temporizador de conexin de alimentacin.
Uso del Watchdog.
Tipo de oscilador empleado.
Existen dos formas de configurar estos bits: una de ellas es desde MPLAB, mediante la opcin
Configuration bits del men configure. La otra es mediante la directiva CONFIG dentro del programa
ensamblador.
Controlando el conversor A/D
Los registros asociados al conversor A/D son:
ADRESH (completo)
ADRESL (completo)
ADCONO (completo)
ADCON1 (completo)

Como la resolucin del convertidor A/D es de 10 bits y los registros del |iC son de 8 bits, se utilizan dos
registros, ADRESL y ADRESH (AD Result Low y AD Result High), de forma concatenada.
Es decir, los 8 bits de ADRESL y 2 bits de ADRESH.

Los registros ADC0N0 y ADCON1 permiten controlar, configurar y poner en marcha al conversor.
Los bits 6 y 7 del registro ADCON0 sirven para ajustar la frecuencia del oscilador del conversor, que
est ligada directamente con la frecuencia de oscilacin del ^C. Los bits 3,4 y 5 sirven para elegir el
canal de conversin. El bit 2 sirve para iniciar la conversin. Debe ponerse en nivel lgico alto (1) para
comenzar el proceso de conversin. Automticamente, este bit pasar a nivel lgico bajo (0) cuando la
conversin haya finalizado. El bit 1 no se usa. El bit 0 sirve para activar el mdulo de conversin. Si
este bit est a nivel lgico bajo, el mdulo de conversin estar deshabilitado.

El registro ADCON1 es el encargado de definir qu patita del |iC usaremos como entrada analgica.
Esto es muy til cuando, por ejemplo, se usa un mismo terminal del |iC como salida/entrada digital y en
un determinado momento se quiere que ese mismo terminal lea un voltaje analgico externo. Este
registro tambin es el responsable de la seleccin de la justificacin del resultado de la conversin (bit
7) y de configurar cual/es sern los terminales donde aplicaremos la tensin de referencia en caso de
necesitarla.
Conversin Terminada
El tiempo que le toma al ^C realizar la conversin se denomina Tj^d y nunca debe ser menor que 1,6
^s para la familia 16F87X. el tiempo Tad es configurado por software segn la relacin Tad
=

kTosc donde K es el divisor de la frecuencia del conversor. Por ejemplo, si trabajamos con
Tose- 1^s y en los bits 7 y 6 del registro ADC0N0 ponemos 00, quedar: Tad
=
2Tose = 2 * lfis =
2fis lo cual est dentro del rango permitido.

Una vez terminada la conversin, el resultado se almacena en los registros ADRESH y ADRESL segn
estn configurados en el bit 7 del registro ADC0N1. La "justificacin" a la derecha o izquierda es
sencilla de comprender; se trata de guardar el resultado de 10 bits en dos registros de 8 bits c/u, o sea
que se elegir si se quieren los 8 primeros bits en el ADRESL y los dos restantes en el ADRESH o
viceversa.

Generalmente la eleccin de la justificacin est directamente emparentada con la resolucin que
queremos leer, es decir, si se quiere conectar un potencimetro y segn la tensin aumentar o
disminuir el tiempo de parpadeo de un led, se puede justificar a la izquierda y leer como resultado de la
conversin solo los 8 bits del ADRESH y descartar o despreciar los dos bits de menor peso significativo
que se guardarn en el ADRESL.
Pasos necesarios para la conversin A/D
A modo de algoritmo los pasos necesarios para una correcta utilizacin del mdulo A/D son los
siguientes:
1. Configurar el mdulo A/D:
1. Terminales de entrada analgica y de referencia.
2. Seleccionar el canal adecuado.
3. Seleccionar la velocidad de conversin.
4. Prender el conversor: Setear el bit 0 del registro ADCON0
2. Empezar la conversin: Setear el bit 1 del registro ADCON0
3. Esperar que el bit 2 del registro ADC0N0 se ponga a 0
4. Leer el resultado en los registros ADRESH:ADRESL
En estos pasos no se tiene en cuenta que se pueden necesitar ms de una conversin por distintos
canales o bien que se realicen varias conversiones y luego tomar un promedio. Esta ltima tcnica es
muy usada cuando las variaciones de tensin son rpidas y promediando tres o cuatro conversiones se
tiene as el resultado, hasta que se realice una segunda conversin.
Acerca de la programacin de los dispositivos
La familia de los PIC16F88X cuenta con un set reducido de 35 instrucciones, lo que facilita
enormemente su memorizacin. La mayora de estas instrucciones se ejecutan en un solo ciclo de
instruccin, mientras que aquellas instrucciones que realizan saltos de ejecucin lo hacen en dos ciclos
de instruccin. Cada una de estas instrucciones se codifica en una palabra de 14 bits nica e
inequvoca, que conforman en conjunto lo que se conoce como cdigo mquina del dispositivo.
Aunque podra emplearse directamente este cdigo mquina para programar el dispositivo (ya fuera en
formato binario o en hexadecimal), resultara demasiado lento y complicado. Por esta razn, cada una
de las instrucciones se representa de manera equivalente con un nemnico, que es ms fcil de
recordar y de interpretar por el programador. A este tipo de lenguaje de programacin se le llama
lenguaje ensamblador.

Actualmente, para la programacin de microcontroladores puede emplearse tanto el lenguaje
ensamblador como lenguajes de ms alto nivel, tipo C o Pascal, empleando el compilador adecuado.
Los microcontroladores tienen un espacio de memoria que vara segn el modelo y este espacio de
memoria es limitado. Hay que tener en cuenta que a cada instruccin escrita en lenguaje de alto nivel le
correspondern por lo general varias instrucciones en lenguaje ensamblador, lo que significa que un
programa escrito en lenguaje de alto nivel ocupa ms espacio de memoria que uno escrito en lenguaje
ensamblador. Por este motivo, la eleccin de uno u otro tipo de lenguaje a la hora de programar deber
hacerse teniendo en cuenta el espacio de memoria disponible.

En caso de utilizar un lenguaje de alto nivel, siempre se requerir compilar el pograma terminado para
obtener el archivo hexadecimal (lenguaje mquina) con el cual se programar el microcontrolador.
La programacin fsica del dispositivo se har normalmente mediante un programador, capaz de grabar
el programa de usuario en la memoria del microcontrolador.

Ejemplo sencillo: encender y apagar un LED

El ejemplo propuesto ilustra cmo conectar un LED por medio de una resistencia limitadora de corriente
a un terminal de salida de un PIC16F88X para que ste se encienda al presionar un pulsador y se
apague al soltarlo.
Circuito elctrico
El circuito completo se debe alimentar a 5 V. Se utiliza un cristal de cuarzo de 10 MHz con
condensadores de 27 nF como circuito de reloj y un circuito de reset.
Se agrega un pulsador conectado a la patita RA0 (entrada) y un LED con su resistencia limitadora
conectado a la patita RB7 (salida).
Programa
Para crear el programa que se grabar en el PIC se puede usar MPLAB, que es el entorno de
desarrollo gratuito ofrecido por el fabribante Microchip Technology Inc.
Bsicamente este sencillo ejemplo se puede modelar con el siguiente pseudocdigo:
Inicio programa Repetir:
RA0 = 1?
Si > Encender LED No >
Apagar LED Fin Repetir Fin
programa









Ensamblador

Empleando MPLAB, se genera el programa en lenguaje ensamblador a partir del pseudocdigo
anterior. El archivo generado deber tener la extensin ".asm":

El smbolo ; permite escribir comentarios en el programa.
Inicio, Comienzo, Apaga y Enciende son etiquetas que ayudan a identificar una
direccin de memoria del programa. stas se reemplazan por la direccin de memoria
correspondiente.
En el programa se pueden observar las directivas comentadas, instrucciones, literales, configuracin
de registros, etc.
Lenguaje mquina
Al compilar el archivo ".asm" creado se obtienen varios archivos. Uno de ellos, con extensin ".hex",
es el que se grabar en el PIC, y contiene todas las instrucciones traducidas al lenguaje mquina del
microcontrolador.
El archivo ".hex" obtenido es el siguiente:
:020000040000FA
:10000000831600308600FF308500831205180B2808
:0A0010000 9280 6100 6280 6140 6282 9 :00000001FF

LIST P= PIC16F873 ;Indica que Pic se usa

INCLUDE "P16F8 7 3.inc" ;Agrega la definicin estndar de registros

ORG 0 0h ;Comienza el programa en la direccin 00h
Inicio bsf STATUS,5 ;Selecciona el banco 1 de memoria

movlw 0 0h ;Guarda en W el n 0

movwf TRISB ;Indica que el puerto B es salida

movlw 0ffh ;Guarda en W el n 255d

movwf TRISA ;Indica que el puerto A es entrada

bcf STATUS,5 ;Selecciona el banco 0 de memoria
Comienzo btfsc P0RTA,0 ;Comprueba el estado de RA0

goto Enciende ;Si est en 1 salta a "Enciende"

goto Apaga ;Si est en 0 salta a "Apaga"
Apaga bcf P0RTB,0 ;Pone un 0en RB7

goto Comienzo ;Salta a Comienzo
Enciende bsf P0RTB,0 ;Pone un 1en RB7

goto Comienzo ;Salta a Comienzo

end

;Fin del programa

Referencias

[1] Microcontroladores PIC. Diseo prctico de aplicaciones, pgina 34
[2] Microcontrolador PIC16F84. Desarrollo de proyectos. 2
a
edicin, pgina 4
[3] PIC16F87XA Datasheet
[4] PIC16F870/871 Datasheet
[5] PIC16F872 Datasheet

Das könnte Ihnen auch gefallen