Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Micro PIC16F87

Descargar como txt, pdf o txt
Descargar como txt, pdf o txt
Está en la página 1de 13

PIC16F87X

Ir a la navegaci�nIr a la b�squeda
Los PIC16F87X forman una subfamilia de microcontroladores PIC (Peripheral Interface
Controller) de gama media de 8 bits, fabricados por Microchip Technology Inc..

Cuentan con memoria de programa de tipo EEPROM Flash mejorada, lo que permite
programarlos f�cilmente usando un dispositivo programador de PIC. Esta
caracter�stica facilita sustancialmente el dise�o de proyectos, minimizando el
tiempo empleado en programar los microcontroladores (�C).

Esta subfamilia consta de los siguientes modelos que var�an de acuerdo a


prestaciones, cantidad de terminales y encapsulados:

PIC16F870
PIC16F871
PIC16F872
PIC16F873A
PIC16F874A
PIC16F876A
PIC16F877A
La "A" final de los modelos PIC16F873A, PIC16F874A, PIC16F876A y PIC16F877A indica
que estos modelos cuentan con m�dulos de comparaci�n anal�gicos.1?

El hecho de que se clasifiquen como microcontroladores (MCU) de 8 bits hace


referencia a la longitud de los datos que manejan las instrucciones, y que se
corresponde con el tama�o del bus de datos y el de los registros de la CPU.

Se trata de versiones mejoradas del caballo de batalla PIC16F84, muy empleado en


proyectos sencillos, de educaci�n y de entrenamiento.

�ndice
1 Caracter�sticas principales
1.1 Detalles seg�n modelo
2 Tipos de encapsulado y n�mero de terminales
3 Estructura interna
4 Circuiter�a externa auxiliar
4.1 La alimentaci�n
4.2 El reloj
4.3 El circuito de reinicio
5 Memoria interna
5.1 Memoria de datos SRAM
6 Registros de funciones especiales (SFR)
6.1 El registro STATUS
7 El registro W
8 Set de instrucciones y sintaxis
8.1 Tabla resumen de instrucciones
9 Registro de configuraci�n
10 El conversor anal�gico-digital
10.1 Controlando el conversor A/D
10.2 Conversi�n Terminada
10.3 Pasos necesarios para la conversi�n A/D
11 Acerca de la programaci�n de los dispositivos
12 Ejemplo sencillo: encender y apagar un LED
12.1 Circuito el�ctrico
12.2 Programa
12.2.1 Ensamblador
12.2.2 Lenguaje m�quina
13 Referencias
14 Bibliograf�a
15 V�ase tambi�n
16 Enlaces externos
Caracter�sticas principales
Las caracter�sticas principales de estos dispositivos son:

CPU de arquitectura RISC (Reduced Instruction Set Computer).1?


Set de 35 instrucciones.1?
Frecuencia de reloj de hasta 20MHz (ciclo de instrucci�n de 200ns).1?
Todas las instrucciones se ejecutan en un �nico ciclo de instrucci�n, excepto las
de salto.1?
Hasta 8K x 14 palabras de Memoria de Programa FLASH (ver tabla a continuaci�n).1?
Hasta 368 x 8 bytes de Memoria de Datos tipo RAM (ver tabla a continuaci�n).1?
Hasta 256 x 8 bytes de Memoria de Datos tipo EEPROM (ver tabla a continuaci�n).1?
Hasta 15 fuentes de Interrupci�n posibles.1?
8 niveles de profundidad en la Pila hardware.1?
Modo de bajo consumo (Sleep).1?
Tipo de oscilador seleccionable (RC, HS, XT, LP y externo).2?
Rango de voltaje de operaci�n desde 2,0V a 5,5V.3?4?5?
Conversor Anal�gico/Digital de 10 bits multicanal.1?
3 Temporizadores.1?
Watchdog Timer o Perro Guardi�n.1?
2 m�dulos de captura/comparaci�n/PWM.1?
Comunicaciones por interfaz USART (Universal Synchronous Asynchronous Receiver
Transmitter).1?
Puerto Paralelo Esclavo de 8 bits (PSP).1?
Puerto Serie S�ncrono (SSP) con SPI e I�C.1?
Detalles seg�n modelo
Modelo
Memoria de programa Flash (palabras de 14 bits)
Memoria de datos SRAM (bytes)
Memoria de datos EEPROM (bytes)
L�neas de E/S
Canales A/D
PWM
MSSP
USART
Comparadores
SPI
I�C Maestro
PIC16F870
2048
128
64
22
5
1
No
No
S�
No
PIC16F871
2048
128
64
33
8
1
No
No
S�
No
PIC16F872
2048
128
64
22
5
1
S�
S�
No
No
PIC16F873A
4096
192
128
22
5
2
S�
S�
S�
S� (2)
PIC16F874A
4096
192
128
33
8
2
S�
S�
S�
S� (2)
PIC16F876A
8192
368
256
22
5
2
S�
S�
S�
S� (2)
PIC16F877A
8192
368
256
33
8
2
S�
S�
S�
S� (2)
Tipos de encapsulado y n�mero de terminales
Microchip Technology Inc. fabrica estos microcontroladores en encapsulados PDIP y
SPDIP, SOIC, SSOP, PLCC, QFP y QFN.

Los dispositivos PIC16F870, PIC16F872, PIC16F873A y PIC16F876A se fabrican en


encapsulados de 28 pines en formatos PDIP, SOIC, SSOP y QFN, mientras que los
dispositivos PIC16F871, PIC16F874A y PIC16F877A se fabrican en encapsulados de 40
pines para formato PDIP, y en encapsulados de 44 pines para formatos PLCC, QFP y
QFN.

En los encapsulados de 28 pines no est� implementado el Puerto Paralelo Esclavo


(PSP).

Muchas de los pines o terminales de estos dispositivos, como suele ocurrir en la


mayor�a de microcontroladores, tienen m�s de una funci�n (multiplexaci�n),
dependiendo de c�mo se configuren internamente por software.

Los terminales VDD (tensi�n) y VSS (masa) sirven �nicamente para alimentar al
dispositivo.

Estructura interna
Estos microcontroladores tienen la memoria de programa y la memoria de datos
separadas, lo que se conoce como arquitectura Harvard. Esta configuraci�n interna
permite entre otras cosas acceder a las instrucciones de programa y a los datos
simult�neamente a trav�s de buses diferentes, lo que mejora notablemente la
velocidad de proceso de estos dispositivos.

Circuiter�a externa auxiliar


Para que el microcontrolador sea capaz de funcionar en cualquier proyecto, se
necesita al menos la siguiente circuiter�a externa:

La alimentaci�n.
El reloj (oscilador).
Tambi�n, y de manera opcional:

El circuito de reinicio.
La alimentaci�n
Los dispositivos de la familia PIC16F87X admiten un amplio rango de tensiones de
alimentaci�n, que va de 2,0 V a 5,5 V. La tensi�n a la cual se alimenten
determinar� la frecuencia m�xima de trabajo.

La potencia m�xima disipada es de 1 W y se calcula mediante la siguiente f�rmula:

{\displaystyle \,\!P_{disipada}=V_{DD}(I_{DD}-\Sigma I_{OH})+\Sigma [(V_{DD}-


V_{OH})I_{OH}]+\Sigma (V_{OL}I_{OL})}{\displaystyle \,\!P_{disipada}=V_{DD}
(I_{DD}-\Sigma I_{OH})+\Sigma [(V_{DD}-V_{OH})I_{OH}]+\Sigma (V_{OL}I_{OL})}

donde:

{\displaystyle V_{DD}}{\displaystyle V_{DD}} es la tensi�n suministrada por la


fuente de alimentaci�n.
{\displaystyle I_{OH}}{\displaystyle I_{OH}} es la corriente suministrada por las
salidas del PIC en estado alto.
{\displaystyle I_{OL}}{\displaystyle I_{OL}} es la corriente absorbida por las
salidas del PIC en estado bajo.
{\displaystyle V_{OH}}{\displaystyle V_{OH}} es la tensi�n entregada por los
terminales en estado alto.
{\displaystyle V_{OL}}{\displaystyle V_{OL}} es la tensi�n presente en los
terminales en estado bajo.
El reloj
El reloj u oscilador se utiliza para generar la base de tiempo del
microcontrolador. Para la conexi�n del oscilador se emplean los terminales OSC1 y
OSC2 del dispositivo.

Los microcontroladores PIC16F87X emplean por cada ciclo de instrucci�n cuatro


ciclos de reloj. Esto significa que por ejemplo, si el microcontrolador debe
ejecutar un programa de 1000 instrucciones con un reloj de 10 MHz (periodo de reloj
de 100 ns), el tiempo total que emplear� para ejecutar todo el programa (asumiendo
que todas las instrucciones fueran de un ciclo de instrucci�n) ser� de:

{\displaystyle T={1000*4 \over {10*10^{6}}}=400\mu s}{\displaystyle T={1000*4 \over


{10*10^{6}}}=400\mu s}

La serie PIC16F87X puede trabajar a una frecuencia de reloj m�xima de 20 MHz. Esto
quiere decir que, a esta frecuencia, el tiempo necesario para ejecutar las
instrucciones de un ciclo de instrucci�n es de 200 ns, y de 400 ns para las de dos
ciclos de instrucci�n (instrucciones de salto).

La se�al de reloj puede generarse mediante una red resistencia-condensador, un


cristal de cuarzo piezoel�ctrico o un resonador cer�mico, aunque empleando
cristales de cuarzo se consiguen frecuencias de oscilaci�n muy exactas, lo cual es
�til para calcular tiempos de ejecuci�n, temporizaciones precisas, etc.

Estos microcontroladores permiten escoger entre cinco tipos distintos de


osciladores:

LP (Low Power): reloj de bajo consumo, estable, con frecuencia de oscilaci�n de


hasta 200 kHz.
XT (Xtal, Crystal): estable, frecuencia de oscilaci�n de hasta 4 MHz.
HS (High Speed): estable, frecuencia de oscilaci�n de hasta 20 MHz.
RC (Resistor/Condensador): frecuencia de oscilaci�n dependiente de resistencia,
condensador, voltaje de alimentaci�n y temperatura de trabajo. Es el tipo m�s
econ�mico, pero tambi�n el m�s inestable.
Externo: cuando la se�al de reloj es externa, generada por otro circuito.
Los modos LP, XT y HS suponen la conexi�n de un cristal de cuarzo o resonador
cer�mico entre las patitas OSC1/CLKIN y OSC2/CLKOUT del dispositivo, mientras que
el modo RC y Externo solo ocupan la patita OSC1/CLKIN.

El circuito de reinicio
El terminal MCLR (Master Clear) debe estar a valor l�gico alto para que el
dispositivo funcione normalmente, esto es, sin irse a reinicio. Con un valor l�gico
bajo el dispositivo se reinicia, comenzando la ejecuci�n desde el principio del
programa que tenga cargado en memoria.

Lo m�s pr�ctico, para facilitar el hecho de poder realizar un reinicio manual, es


utilizar un pulsador (pulsador de reinicio), similar al que se puede encontrar en
la mayor�a de ordenadores. El fabricante recomienda que se intercale una
resistencia de 50 a 100 ohmios entre el pulsador y la patita MCLR, para evitar
posibles corrientes inducidas de m�s de 80 mA que podr�an bloquear el dispositivo
cuando este se lleva a masa (reinicio).3?

Debido a que el pulsador no produce una respuesta instant�nea, producto de los


rebotes de �ste (transitorio), se generan una serie de pulsos hasta quedar
estabilizado en su estado permanente. Para evitar esto se puede usar un condensador
instalado en paralelo con la entrada MCLR (filtro pasa bajo).

Tambi�n resulta muy efectivo el uso de un filtro pasa alto para hacer la se�al de
reinicio independiente del tiempo en que se presiona el pulsador. Inmediatamente
despu�s de pulsar el pulsador el �C se reinicia, sin tener en cuenta cu�nto tiempo
se mantiene presionado dicho pulsador.

Estas t�cnicas de reinicio son muy efectivas, pero no son las �nicas. Existe
infinidad de circuitos y posibilidades para provocar el reinicio externo en los
microcontroladores, adecu�ndose cada soluci�n a la necesidad o al criterio de
dise�o del circuito y su funci�n espec�fica.

Memoria interna
Existen tres bloques bien diferenciados de memoria. Estos son:

Memoria de programa EEPROM Flash: es el lugar f�sico donde se guarda el programa de


usuario. Es de tipo no vol�til.
Memoria de datos SRAM: es el lugar f�sico donde se guardan datos. Es de tipo
vol�til.
Memoria de datos EEPROM: es el lugar f�sico donde se guardan datos. Es de tipo no
vol�til.
Memoria de datos SRAM
Esta memoria es de tipo vol�til, lo que significa que no conserva su contenido
despu�s de un apagado de alimentaci�n.

En esta memoria se encuentran los registros de funciones especiales (SFR) y los


registros de prop�sito 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 mayor�a 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 f�sicamente siguen
estando separados.

El registro STATUS
El registro de estado (STATUS) es uno de los m�s importantes y empleados en el
microcontrolador.

Proporciona informaci�n acerca del resultado de operaciones aritm�ticas,


operaciones l�gicas y causa de reinicios, adem�s de permitir la selecci�n 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 mayor�a 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 (pr�cticamente todas las
instrucciones pueden utilizar cualquier operando), �stas son r�pidas y todas tienen
una longitud fija de 14 bits.
Las instrucciones se pueden clasificar en:

Instrucciones de carga.
Instrucciones de bits.
Instrucciones aritm�ticas.
Instrucciones l�gicas.
Instrucciones de salto.
Instrucciones de manejo de subrutinas.
Instrucciones especiales.
Tabla resumen de instrucciones
Sintaxis
Descripci�n
Ciclos de Instrucci�n
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 aritm�ticas
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
Instrucciones l�gicas
ANDLW k Realiza la operaci�n l�gica AND entre el valor k y el registro W
1
ANDWF f,d Realiza la operaci�n l�gica 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 operaci�n l�gica OR entre el valor k y el registro W
1
IORWF f,d Realiza la operaci�n l�gica 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 trav�s del carry
bit
1
RRF f,d Rota el contenido del registro f hacia la derecha a trav�s del carry
bit
1
SWAPF f,d Intercambia los cuatro primeros bits con los cuatro �ltimos del
registro f
1
XORLW Realiza la operaci�n l�gica XOR entre el valor k y el registro W
1
XORWF f,d Realiza la operaci�n l�gica 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 instrucci�n siguiente si est� en
�0�
1 (2 si salta)
BTFSS f,b Lee el bit b del registro f y salta la instrucci�n siguiente si est� en
�1�
1 (2 si salta)
DECFSZ f,d Decrementa en una unidad el contenido del registro f y salta la
instrucci�n siguiente si es cero
1 (2 si salta)
INCFSZ f,d Incrementa en una unidad el contenido del registro f y salta la
instrucci�n 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 interrupci�n
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 operaci�n (pero consume tiempo de ejecuci�n)
1
SLEEP Se pone el PIC en estado de reposo (dormido)
1
En todas las instrucciones donde aparece una d como operando:

Si d = 0, el resultado de la operaci�n se guarda en W.


Si d = 1, el resultado de la operaci�n se guarda en el registro f. Es el valor por
defecto.
Registro de configuraci�n
Estos microcontroladores cuentan con un registro especial llamado palabra de
configuraci�n (Configuration Word) de 14 bits, que se encuentra en la direcci�n
2007h de la memoria de programa.

Este registro debe escribirse durante el proceso de grabaci�n del microcontrolador


ya que no puede ser modificado durante el tiempo de ejecuci�n de un programa.

Su funci�n es especificar ciertas caracter�sticas de funcionamiento del


microcontrolador, como son:

Protecci�n de memoria de programa.


Uso del modo de depuraci�n en circuito.
Permiso de escritura en memoria Flash.
Protecci�n de memoria EEPROM de datos.
Uso de programaci�n en modo de bajo voltaje.
Uso de reinicio por ca�da de tensi�n.
Uso del temporizador de conexi�n de alimentaci�n.
Uso del Watchdog.
Tipo de oscilador empleado.
Existen dos formas de configurar estos bits: una de ellas es desde MPLAB, mediante
la opci�n Configuration bits del men� configure. La otra es mediante la directiva _
_CONFIG dentro del programa ensamblador.

El conversor anal�gico-digital
El conversor anal�gico-digital (ADC en ingl�s) que llevan incorporados los
microcontroladores de la subfamilia PIC16F87X es de 10 bits. Su funcionamiento es
bastante simple, comparado con los conversores A/D R2R, los de resistencia
ponderada, etc.

El n�mero de canales de conversi�n disponibles depende del modelo de dispositivo.


As�, los modelos PIC16F874A y PIC16F877A vienen equipados con 8 canales, mientras
que los modelos PIC16F873A y PIC16F876A vienen equipados con 5 canales.

La t�cnica que utilizan estos dispositivos para la conversi�n es la de �incremento


y comparaci�n�. Consiste en usar un registro auxiliar cuyo valor se compara con la
entrada anal�gica. Si es menor se incrementa el registro y se vuelve a comparar.
As� hasta que el valor del registro sea lo m�s aproximado posible (pero sin
pasarse) a la entrada anal�gica.

El rango de voltaje aceptado para la conversi�n de la se�al anal�gica es de 0 V a 5


V. Si se tiene que trabajar con una se�al de mayor voltaje, basta con poner a la
entrada del conversor un divisor de tensi�n correctamente calculado o bien trabajar
con alguna tensi�n de referencia externa al �C.

La resoluci�n de la conversi�n es funci�n de la tensi�n de referencia externa (en


caso de que la hubiere) y viene dada por:

{\displaystyle Res={{V_{ref+}-V_{ref-}} \over 1024}}{\displaystyle Res={{V_{ref+}-


V_{ref-}} \over 1024}}

Si no existe referencia externa, el microcontrolador toma como valores de


referencia Vref+ = VDD y Vref- = GND (valores de alimentaci�n del dispositivo).

Por ejemplo, si la tensi�n de referencia positiva (Vref+) es de 5 V y la tensi�n de


referencia negativa (Vref-) es de 0 V, la resoluci�n es de 4,8 mV por cada bit. Una
vez realizada la conversi�n, se obtienen un valor binario 0000000000 para 0 V y un
valor binario 1111111111 para 5 V.

Controlando el conversor A/D


Los registros asociados al conversor A/D son:

ADRESH (completo)
ADRESL (completo)
ADCON0 (completo)
ADCON1 (completo)
Como la resoluci�n del convertidor A/D es de 10 bits y los registros del �C 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 ADCON0 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 oscilaci�n del �C.
Los bits 3,4 y 5 sirven para elegir el canal de conversi�n. El bit 2 sirve para
iniciar la conversi�n. Debe ponerse en nivel l�gico alto (1) para comenzar el
proceso de conversi�n. Autom�ticamente, este bit pasar� a nivel l�gico bajo (0)
cuando la conversi�n haya finalizado. El bit 1 no se usa. El bit 0 sirve para
activar el m�dulo de conversi�n. Si este bit est� a nivel l�gico bajo, el m�dulo de
conversi�n estar� deshabilitado.

El registro ADCON1 es el encargado de definir qu� patita del �C usaremos como


entrada anal�gica. Esto es muy �til cuando, por ejemplo, se usa un mismo terminal
del �C como salida/entrada digital y en un determinado momento se quiere que ese
mismo terminal lea un voltaje anal�gico externo. Este registro tambi�n es el
responsable de la selecci�n de la �justificaci�n� del resultado de la conversi�n
(bit 7) y de configurar cual/es ser�n los terminales donde aplicaremos la tensi�n
de referencia en caso de necesitarla.

Conversi�n Terminada
El tiempo que le toma al �C realizar la conversi�n se denomina {\displaystyle
T_{AD}}{\displaystyle T_{AD}} y nunca debe ser menor que 1,6 �s para la familia
16F87X. el tiempo {\displaystyle T_{AD}}{\displaystyle T_{AD}} es configurado por
software seg�n la relaci�n {\displaystyle T_{AD}=kT_{OSC}}{\displaystyle
T_{AD}=kT_{OSC}} donde K es el divisor de la frecuencia del conversor. Por ejemplo,
si trabajamos con {\displaystyle T_{OSC}}{\displaystyle T_{OSC}} = 1�s y en los
bits 7 y 6 del registro ADCON0 ponemos 00, quedar�: {\displaystyle
T_{AD}=2T_{OSC}=2*1\mu s=2\mu s}{\displaystyle T_{AD}=2T_{OSC}=2*1\mu s=2\mu s} lo
cual est� dentro del rango permitido.

Una vez terminada la conversi�n, el resultado se almacena en los registros ADRESH y


ADRESL seg�n est�n configurados en el bit 7 del registro ADCON1. La "justificaci�n"
a la derecha o izquierda es sencilla de comprender; se trata de guardar el
resultado de 10 bits en dos registros de 8 bit�s 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 elecci�n de la justificaci�n est� directamente emparentada con la


resoluci�n que queremos leer, es decir, si se quiere conectar un potenci�metro y
seg�n la tensi�n aumentar o disminuir el tiempo de parpadeo de un led, se puede
justificar a la izquierda y leer como resultado de la conversi�n solo los 8 bits
del ADRESH y descartar o despreciar los dos bits de menor peso significativo que se
guardar�n en el ADRESL.

Pasos necesarios para la conversi�n A/D


A modo de algoritmo los pasos necesarios para una correcta utilizaci�n del m�dulo
A/D son los siguientes:

Configurar el m�dulo A/D:


Terminales de entrada anal�gica y de referencia.
Seleccionar el canal adecuado.
Seleccionar la velocidad de conversi�n.
Prender el conversor: Setear el bit 0 del registro ADCON0
Empezar la conversi�n: Setear el bit 1 del registro ADCON0
Esperar que el bit 2 del registro ADCON0 se ponga a 0
Leer el resultado en los registros ADRESH:ADRESL
En estos pasos no se tiene en cuenta que se pueden necesitar m�s de una conversi�n
por distintos canales o bien que se realicen varias conversiones y luego tomar un
promedio. Esta �ltima t�cnica es muy usada cuando las variaciones de tensi�n son
r�pidas y promediando tres o cuatro conversiones se tiene as� el resultado, hasta
que se realice una segunda conversi�n.

Acerca de la programaci�n de los dispositivos


La familia de los PIC16F87X cuenta con un conjunto reducido de 35 instrucciones, lo
que facilita enormemente su memorizaci�n. La mayor�a de estas instrucciones se
ejecutan en un solo ciclo de instrucci�n, mientras que aquellas instrucciones que
realizan saltos de ejecuci�n lo hacen en dos ciclos de instrucci�n. Cada una de
estas instrucciones se codifica en una palabra de 14 bits �nica e inequ�voca, que
conforman en conjunto lo que se conoce como c�digo m�quina del dispositivo.

Aunque podr�a emplearse directamente este c�digo m�quina para programar el


dispositivo (ya fuera en formato binario o en hexadecimal), resultar�a demasiado
lento y complicado. Por esta raz�n, cada una de las instrucciones se representa de
manera equivalente con un nem�nico, que es m�s f�cil de recordar y de interpretar
por el programador. A este tipo de lenguaje de programaci�n se le llama lenguaje
ensamblador.

Actualmente, para la programaci�n de microcontroladores puede emplearse tanto el


lenguaje ensamblador como lenguajes de m�s alto nivel, tipo C o Pascal, empleando
el compilador adecuado.

Los microcontroladores tienen un espacio de memoria que var�a seg�n el modelo y


este espacio de memoria es limitado. Hay que tener en cuenta que a cada instrucci�n
escrita en lenguaje de alto nivel le corresponder�n por lo general varias
instrucciones en lenguaje ensamblador, lo que significa que un programa escrito en
lenguaje de alto nivel ocupa m�s espacio de memoria que uno escrito en lenguaje
ensamblador. Por este motivo, la elecci�n 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


programa terminado para obtener el archivo hexadecimal (lenguaje m�quina) con el
cual se programar� el microcontrolador.

La programaci�n f�sica 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 c�mo conectar un LED por medio de una resistencia
limitadora de corriente a un terminal de salida de un PIC16F873, para que �ste se
encienda al presionar un pulsador y se apague al soltarlo.

Circuito el�ctrico
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 fabricante Microchip Technology Inc.

B�sicamente este sencillo ejemplo se puede modelar con el siguiente pseudoc�digo:

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
pseudoc�digo anterior. El archivo generado deber� tener la extensi�n ".asm":

LIST P=PIC16F873 ;Indica que Pic se usa


INCLUDE "P16F873.inc" ;Agrega la definici�n est�ndar de
registros
ORG 00h ;Comienza el programa en la
direcci�n 00h
Inicio bsf STATUS,5 ;Selecciona el banco 1 de memoria
movlw 00h ;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 PORTA,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 PORTB,0 ;Pone un �0� en RB7
goto Comienzo ;Salta a Comienzo
Enciende bsf PORTB,0 ;Pone un �1� en RB7
goto Comienzo ;Salta a Comienzo
end ;Fin del programa
El s�mbolo ; permite escribir comentarios en el programa.

Inicio, Comienzo, Apaga y Enciende son etiquetas que ayudan a identificar una
direcci�n de memoria del programa. Estas se reemplazan por la direcci�n de memoria
correspondiente.

En el programa se pueden observar las directivas comentadas, instrucciones,


literales, configuraci�n de registros, etc.

Lenguaje m�quina
Al compilar el archivo ".asm" creado se obtienen varios archivos. Uno de ellos, con
extensi�n ".hex", es el que se grabar� en el PIC, y contiene todas las
instrucciones traducidas al lenguaje m�quina del microcontrolador.

El archivo ".hex" obtenido es el siguiente:

:020000040000FA
:10000000831600308600FF308500831205180B2808
:0A0010000928061006280614062829
:00000001FF
Referencias
Microcontroladores PIC. Dise�o pr�ctico de aplicaciones, p�gina 34
Microcontrolador PIC16F84. Desarrollo de proyectos. 2� edici�n, p�gina 4
PIC16F87XA Datasheet
PIC16F870/871 Datasheet
PIC16F872 Datasheet
Bibliograf�a
Microchip Technology Inc. (2003). �PIC16F870/871 Datasheet� (pdf) (en ingl�s). p.
170. Consultado el 31 de mayo de 2009.
Microchip Technology Inc. (2006). �PIC16F872 Datasheet� (pdf) (en ingl�s). p. 166.
Consultado el 31 de mayo de 2009.
Microchip Technology Inc. (2003). �PIC16F87XA Datasheet� (pdf) (en ingl�s). p. 232.
Consultado el 21 de mayo de 2009.
Angulo Usategui, Jos� Mar�a; S. Romero Yesa, I. Angulo Mart�nez (2006).
Microcontroladores PIC. Dise�o pr�ctico de aplicaciones. (2� edici�n). McGraw-Hill.
ISBN 978-84-481-4627-6.
Palacios Municio, Enrique; F. Remiro, L. J. L�pez (2005). Microcontrolador
PIC16F84. Desarrollo de proyectos. (2� edici�n). Ra-Ma. ISBN 84-7897-691-4.
V�ase tambi�n
Microchip Technology Inc.
PIC16F84
PIC16F88
MPLAB
Enlaces externos
Web oficial de Microchip Technology Inc.
Control de autoridades
Proyectos WikimediaWd Datos: Q5400222
Categor�a: Microcontroladores
Men� de navegaci�n
No has accedidoDiscusi�nContribucionesCrear una cuentaAcceder
Art�culoDiscusi�n
LeerEditarVer historialBuscar
Buscar en Wikipedia
Portada
Portal de la comunidad
Actualidad
Cambios recientes
P�ginas nuevas
P�gina aleatoria
Ayuda
Donaciones
Notificar un error
Herramientas
Lo que enlaza aqu�
Cambios en enlazadas
Subir archivo
P�ginas especiales
Enlace permanente
Informaci�n de la p�gina
Citar esta p�gina
Elemento de Wikidata
Imprimir/exportar
Crear un libro
Descargar como PDF
Versi�n para imprimir

Idiomas
A�adir enlaces
Esta p�gina se edit� por �ltima vez el 11 oct 2019 a las 12:12.
El texto est� disponible bajo la Licencia Creative Commons Atribuci�n Compartir
Igual 3.0; pueden aplicarse cl�usulas adicionales. Al usar este sitio, usted acepta
nuestros t�rminos de uso y nuestra pol�tica de privacidad.
Wikipedia� es una marca registrada de la Fundaci�n Wikimedia, Inc., una
organizaci�n sin �nimo de l

También podría gustarte