Vous êtes sur la page 1sur 236

CONTENIDO

Prlogo ....................................................................................................................................

Captulo 1. NECESIDAD Y APORTACIONES DE LOS NUEVOS PIC .....................


1.1.
1.2.
1.3.
1.4.

Las nuevas aplicaciones exigen mayores prestaciones ..........................................


Dos nuevas lneas de PIC: familias PIC 16F87x y PIC 18Cxxx..............................
El PIC pobre (PIC 16F84) y los ricos (PIC 16F87x) ...............................................
Herramientas para trabajar con los PIC 16F87x .....................................................

Programar PIC es fcil: recordando el viejo PIC16F84 .............................................


Disear con PIC es fcil: presentacin de los sensores analgicos ms utilizados .........
Captulo 2. ARQUITECTURA. DIAGRAMA DE CONEXIONES Y REPERTORIO
DE INSTRUCCIONES ..................................................................................
Introduccin ...........................................................................................................
Procesador RISC con arquitectura Harvard ...........................................................
Organizacin de la memoria de programa .............................................................
Organizacin de la memoria de datos RAM ..........................................................
2.4.1. Registros especficos para el control de la memoria de programa ...........
2.4.2. Control de la memoria de datos ................................................................
Diagrama de conexionado ......................................................................................
Repertorio de instrucciones ....................................................................................

Programar PIC es fcil: el primer programa con los PIC16F87x .............................


Disear con PIC es fcil: actuadores para diversas aplicaciones: los motores .........

Captulo 3. PRINCIPALES REGISTROS DE CONTROL Y MANEJO DE LAS MEMORIAS FLASH Y EEPROM .....................................................................
3.1.
3.2.
3.3.
3.4.

3.5.

Los registros de control ........................................................................................


Registro de estado (STATUS) ................................................................................
Registro de opciones (OPTION) ............................................................................
Registro para controlar las interrupciones ..............................................................
3.4.1. Registro de control de interrupciones (INTCON) ....................................
3.4.2. Registro de permiso de interrupciones 1 (PIE I ) .......................................
3.4.3. Registro de permiso de interrupciones 2 (PIE2).......................................
3.4.4. Registros de los sealizadores de interrupciones 1 y 2 (PIR 1 y PIR2) .........
Lectul-a y escritura de las memorias EEPROM y FLASH .....................................

Programar PIC es fcil: un programa que maneja las iiiemorias FLASH de


cdigo y EEPROM de datos ...........................................................................................
Disear con PIC es fcil: ampliacin de perifricos para el trabajo con PIC ..........
Captulo 4. LAS PUERTAS DE EIS Y RECURSOS ESPECIALES DEL PROCESADOR ...........................................................................................................
4.1.

4.2.
4.3.
4.4.
4.5.
4.6.
4.7.

Puertas de E/S ........................................................................................................


4.1. 1 . Puerta A ....................................................................................................
4.1.2. Puerta B ....................................................................................................
4.1.3. Puerta C ....................................................................................................
4.1.4. Puerta ....................................................................................................
4.1.5. PuertaE ....................................................................................................
Palabra de configuracin ........................................................................................
.,
Palabras de identificacion .......................................................................................
Reinicializacin o reset ..........................................................................................
Perro guardihl (W DT: watchdog timer) ................................................................
Modo de reposo o de bajo consumo .......................................................................
Programacin de los PIC 16F87x ...........................................................................

Programar PIC es fcil: utilizacin de los recursos del PIC ......................................


Disear con PIC es fcil: ampliacin de los recursos del PIC ....................................
Captulo 5. LOS TEMPORIZADORES ..........................................................................
5.1.
5.2.
5.3.
5.4.
5.5.

Tipos y caractersticas generales ...........................................................................


Estructura interna y funcionamiento del TMR 1 ....................................................
Registro de control del TMR 1 (T1 CON) ...............................................................
Chuleta-resumen de los registros asociados al TMR 1 ...........................................
Funcionamiento y programacin del TMR2 ..........................................................

CONTENIDO

5.6.Chuleta.resumen de los registros asociados al TMR2 ................................................

vii
92

Programar PIC es fcil: iiiidiendo el tiempo................................................................ 93


Disear con PIC es fcil: aplicacin de los PIC al control de motores y sensores ......... 100
Capitulo 6. MDIILOS DE CAPTURA. COMPARACIN Y MODULACIN DE
ANCHURA DE PULSOS ............................................................................. 105
6.1.
6.2.
6.3.
6.4.
1

6.5.
6.6.

Introduccin a los mdulos CCP ........................................................................... 105


Modo captura .........................................................................................................106
Modo comparacin ................................................................................................107
Chuleta-resumen de los registros asociados al mdulo de captura y al de comparacin ..................................................................................................................108
Modo de n~odulacinde anchura de pulsos (PWM).............................................. 109
Chuleta-resumen de los registros asociados al mdulo PWM ............................... 110

Programar PIC es f'cil: trabajo con los mdulos CCP .............................................. 112
Disear con PIC es fcil: aplicacin de los microcontroladores: la microbtica ............. 124
Captulo 7. EL CONVERSOR A/D .................................................................................. 129
7.1.
7.2.
7.3.
7.4.

Presentacin del conversor analgico/digital ......................................................... 129


Registros de trabajo ................................................................................................129
Estructura interna y configuracin del C A/D ........................................................ 131
Chuleta-resumen de los registros asociados al conversos analgico/digital .......... 136

Programar PIC es fcil: adquisicin de valores con los conversores A/D ................. 137
Ilisear con PIC es fcil: visuali~acinde valores por pantallas LCD ...................... 145
Capitulo 8. M O D U L O DE COMUNICACINSERIE SINCRONA: MSSP............... 153
8.1.
8.2.
8.3.
8.4.
8.5.

8.6.

Introduccin ........................................................................................................... 153


ModoSPI ...............................................................................................................155
Manejoyprogram;~cinenelmodoSPI................................................................ 156
Mdulo MSSP trabajando en modo I2C ................................................................ 159
Conceptos fundai~ientalessobre el bus 12C ........................................................... 160
8.5.1. Concepto del bus 12C ............................................................................... 160
8.5.2. Ter~ninologiadel bus 12C ......................................................................... 162
Caractersticas generales ........................................................................................ 162
8.6.1. Transferencia del bit ................................................................................. 163
8.6.2. Transferencia de datos .............................................................................. 164

viii

CONTENIDO

8.6.3. Arbitraje sin sincronizacin de reloj ........................................................


8.6.4. Formato ....................................................................................................
8.7. Direccionamiento ...................................................................................................
8.7.1. Definicin del primer byte ........................................................................
8.8. Especificaciones elctricas .....................................................................................
8.8.1. Tiempos ....................................................................................................
8.9. El bus 12C y los PIC 16F87x...................................................................................
8.10. Chuleta-resumen de los registros usados para el bus 12C ......................................
8.11. Funcionamiento del modo maestro ........................................................................
8.1 1.1. Condicin de inicio (start) ........................................................................
8.1 1.2. Condicin de repeticin de inicio (start) ..................................................
8.1 1.3. Modo maestro en transmisin ..................................................................
8.1 1.4. Modo maestro en recepcin .....................................................................
8.1 1.5. Secuencia de reconocimiento ...................................................................
8.11.6. Condicin de parada (stop) .......................................................................

Programar PIC es fcil: comunicacin mediante el mdulo MSSP ..........................

181

Disear con PIC es fcil: comunicacin de datos digitales por radio frecuencia........... 186

Capitulo 9
9.1.
9.2.
9.3.
9.4.

EL USART: TRANSMISORIRECEPTOR SNCRONOIASNCRONO


SERIE..................................................................................................................... 191

Comunicacin serie asncrona ...............................................................................


Generador de baudios.............................................................................................
Transmisor asncrono .............................................................................................
Receptor asncrono .................................................................................................

191
193
195
198

Programar PIC es fcil: comunicacin serie con el USART ...................................... 201

Captulo 10. EL FUTURO EST AQUI: LA FAMILIA PIC18CXXX ........................ 207


10.1. Esto es otra historia ................................................................................................
10.2. Las grandes aportaciones .......................................................................................
10.2.1. Espacio lineal de direccionamiento ..........................................................
10.2.2. Complejo juego de instrucciones .............................................................
10.2.3. Diseo optimizado para compilador C .....................................................
10.2.4. Herramienta modular para la emulacin ..................................................
10.2.5. Otras ventajas ...........................................................................................
10.3. Diagrama de conexionado ......................................................................................
10.4. Arquitectura interna ...............................................................................................
10.5. Organizacin de la memoria de programa .............................................................
10.6. Organizacin de la memoria de datos ....................................................................
10.7. Repertorio de instrucciones ....................................................................................

CONTENIDO

ix

Apndice A: La familia PIC al completo ............................................................................ 223


Bibliografa y direcciones de inters relacionadas con los PIC......................................... 229
ndice ...................................................................................................................................... 231

Para completar la foriiiacin cle los lectores que accedieroii al estudio y desarrollo de aplicacione\
con microcontroladores basndose en la Primera Parte del libro ((Mi(i~oc~or~ti-olucJo~-e,c
PIC. Di\cfio
Prcticbo de Aplic cr< ionc\ ),.y ante la aparicin de los nuevos modelo\ que MlCKOCHIP ha comercializado recientemente, los autores han escrito una continuacin de dicho libro, reforzados con la
colaboracin de la profesora Susana Roinero de ESTDE (Universidad de Deusto). Para seguir esta
obra es prerrequisito conocer terica y prcticamente la primera parte.
Las populares y masiva\ aplicacione\ de lo\ tnicrocontroladorec de 8 bits en productos con teclado/pantalla de la dcada que comenz en 1990, ha dado paja a otras mucho ms ambiciosas, que
requieren dispositivoc programables con mc recursos y mejor rendimiento.
Los autores han intentado crear una herramienta de aprendizaje prctica, eficaz y muy amigable,
que vaya mostrando progresivamente el funcionamiento terico, el comportamiento prctico, la programacin y la puesta a punto de las aplicaciones con los modernos microcontroladores PIC.
Siguiendo la estrategia de la primera parte, dedicada exclusivamente al PIC 16x84, tambin en
sta se ha elegido una subfamilia de niicrocontroladores para dejarrollar el programa terico-prctico. Hemos seleccionado los cuatro modelos que comprende la subfamilia PIClF87.i. que suponen un espectacular avance con respecto al PIC 16x84. Adems de disponer de mayor c;ipacidad de
memoria y funcionar a ms velocidad con mejor rendimiento, ectos microcontroladores poseen i i i tegrados todos los recursos que precisan las aplicaciones comerciales de nivel medio y alto.
Tambin y como atencin a los lectores mc exigentes, se describe la familia PICl8Ci i 1 , que ect llamada a utilizarse en los proyectos ms exi,centes.
La mayora de los temac o captulos, al igual quc en la primera parte, los hemos dividido en tres
secciones:

f ,aTeora. Se expone con clar~dady senc~llezel funcionamiento, las prestaciones, la programacin


y el manejo de cada recurso Cada tema se dedlca a un recurso.

2"rogramar
PIC es fcil. Para cada tema y para cada recurso se han preparado una serle de ejerCICIOS, programas y dlseos, con los que progres~vamentese util~zanlos conceptos expuestos en /a
teora Toda la colecc~nde ejerc~c~os
propuestos se pueden reallzar ntegramente con las herramlentas bas~cascomerc~al~zadas
por M~crosystemsEnglneerlng Concretamente se preosa el econmico

xii

PRLOGO

Bajo esta estructura el libro consta de 10 temas y un anexo. El primer tema se destina a mostrar la necesidad y las aportaciones de los nuevos PIC. Se recuerda la programacin general del
PIC 16x84, poniendo de relieve algunos detalles que habr que modificar en los nuevos modelos, y
se describe el funcionamiento y control de algunos sensores analgicos, que se utilizarn en los ejercicios. El segundo tema presenta la arquitectura, el diagrama de patitas y el repertorio de instrucciones de la subfamilia PIC16F87x. En la programacin se hace un enfoque de las peculiaridades
de los nuevos PIC y los bancos de memoria y en cuanto a los perifricos se estudian los motores. El
tercer tema muestra las caractersticas y asignacin de funciones de los diversos bits de los principales registros de control y las operaciones de lectura/escritura de las memorias FLASH y EEPROM, se realiza un programa de lectura/escritura de dichas memorias y se estudia la tarjeta de ampliacin de perifricos Mical-o'PIC 10. A partir del tema 4 se van analizando los nuevos recursos de
los PIC 16F87x, dedicando cada tema a la explicacin de un recurso: Puertas de E/S, Temporizadores/Contadores 1 y 2, Mdulos CCP, Conversor AD, Comunicacin Serie, etc. Cada tema contiene
un programa resuelto que puede realizarse sobre las herramientas de Micl-osysterns Engineering comentadas anteriormente y a la vez se van describiendo perifricos especiales como los mdulos de
R.F., los microbots, etc., y las nuevas herramientas usadas en los ejercicios, como el ZOC87x para
adaptacin al Micro'PIC TI-ainel-de los PIC16FX7x y las tarjetas de ampliacin de perifricos MiCI-O'PIC
TI-ainel- Plus y la MSx84 encargada del control de motores DCV y PAP. Finalmente, la obra
se completa con un anexo que ofrece las caractersticas de los modelos actuales de microcontroladores de Micl-ochip.
Agradecemos muy sinceramente la colaboracin de Micnr-osystemsElzgineel-irzg (Bilbao), que ha
puesto a nuestra disposicin todas las herramientas que hemos necesitado y toda la informacin sobre sus productos y los ejercicios que soportaban. Los lectores interesados en conocer ms a fondo
dichas herramientas pueden dirigirse directamente a sus oficinas en C/ Gral. Concha 39,48012 Bilbao, o bien, visitarla a travs de Internet (www.arrakis.es1-msysen-). Igualmente expresamos riuestro agradecimiento a los Sres. Benito Moreno y Pepe Bustamante de Sagitr-o17(Madrid) y a nuestros
amigos Goyo y Jorge de Bilbao Electl-nica.
Para no encarecer el libro se ha prescindido de incluir disquete o CD, puesto que toda la informacin y programas de inters pueden ser recogidos por Internet (www.microchip.com y www.arrakis.es/-msyseng). Por nuestra parte nos brindamos a ayudar en lo que podamos a nuestros lectores
en la direccin autores@inf.deusto.es.

NECESIDAD Y APORTACIONES
DE LOS NUEVOS PIC

1.1.

LAS NUEVAS APLICACIONES EXIGEN MAYORES PRESTACIONES

Es posible disear un PLC comer-cial con un PIC16F84, con slo 1 K palabr-as de memoria de cdigo, 64 bytes para datos, 13 lneas de EIS digitales y un contador-tempot-izadol-?
A nuestro alumno Ivn Trueba no le era suficiente. Por eso, para poder culminar con xito su
proyecto de 3.O de Ingeniera Tcnica en Electrnica tuvo que ampliar notablemente los recursos del
PIC16F84. Mediante el protocolo del bus 12C aument con dos puertas ms las lneas de E/S y, entre otras cosas, aadi un conversor A/D que permitiese el tratamiento de seales analgicas. De esta forma, en lugar de usar un solo circuito integrado que contuviese todo lo necesario, el proyecto
requiri ms de media docena. (Figura 1.1 .)

Figura 1.1.

Fotografa del panel .fiwntul del PLC ESIDE de Ii7n Ti-ueha. Al estus basado en un hunzilde
PIC16F84, par-u uunlentucxl-sr4s r.ec.ursos t u ~ >yrrr
o uudicxl- i~ariosc.irc.uitosintegrados c.ornunic.udos
por- el hlrs 12C.

MICROCONTROL.ADORF<S<(PIC>,.LIISEO P R C ' T I C ' DE


~ APLICACIONES

Todo lo que utiliz nuestro alumno para implernentar el PLC y mucho ms est contenido en uno
de los modelos de microcontroladores de la subfamilia PICIhF(Y7.i-.
Dos de los autores de este libro (.Jos Mari J~SLISC~I~U)
somos profesores eri la Universidad de
Deusto y nos dedicamos a ensear computadores y microcontroladores a los futuros ingenieros. Somos de la opinin de que esta tecnologa CS(I U ~ I . C I ~I (C ~I CCI C ~ I ~ yO )por
)
eso, en cada curso, dirigimos
n~uchosproyectos a nuestros alumnos y a la hora de poner ejemplos siempre nos acordamos de ellos
y sus experiencias. As que, para no cambiar de alumno. con motivo de la presentacin del proyecto final del Grupo Duro, 1 ~ ~ decidi
i7
ser el mejor y para ello proyect el parking ms espectacular
y completo que pueda uno imaginar. En la Figura 1.2 se ofrece una fotografa de la maqueta del
l~u~-kit?g
ii~tcligcutrcontrolada desde un PC. No slo gobiernci las barreras de entrada y salida del
gar.je, sino qiie adems dispone de sensores en todas las plazas para controlar su liso y tarificar la
estancia. Por otra parte, en las ventanas del monitor del PC el encargado tiene acceso a una cornpletsiina informacin con un alto nivel de seg~iridadante robos. incendios, gases, etc.
Para poder soportar las varias decenas de sensoi-es y perifricos que teria el parking, Ivhn necesit utilizar cinco microcontroladores PIC 16F84 intercornunicados por bus 12C y coinple~i~entado
con ms de 20 circuitos integrados adaptables al mencionado bus. En dicha circuitera se ampliaba
la ~riemoria.las E/S, se aadan conversores A/D, reloj en tiempo real, memorias no voltiles, etc.
Tdmbin ,Jallicr Ronrpl-a, Director Tcnico de Zurlihul, considerado uno de los pioneros de la
aplicacin de los PIC, Iia pasado por el mismo probleina en el diseo de las ((ho~trsi/lt~ligr',71c'.pi,tque
fabrica su empresa. La boya TUNABAL D+ l~ln~u/..sut
esti revolucionando la pesca del atn mediante el uso de artilugios a la deriva. Estos artilugios son plataformas construidas con maderas viejas y todo tipo de materiales que sueltan los barcos atunervs al mar. Al cabo de un par de semanas
estas plataformas han atrado una gran cantidad de plancton que se ha fijado en su estructura y que
acta como suculento cebo de los atunes. Cada barco suelta a la deriva varias decenas de plataformas y para optirnizar el rendimiento de la pesca se precisa conocer su situacin y la posible atraccin de bancos de atnidos. Para proporcionar esta informacin cada artilugio incorpora una boya.

Figura 1.2.

Fotog~.qfw(1. la nluyurtu del I>I(I.X~II~ i~teligt~llt~)).

NECESIDAD Y APORTACIONES DE LOS NUEVOS PIC

La boya de Zltnihal lleva incorporado un transceptor D+ de ltima generacin con el que enva todos los datos a travs de la Red Inmarsat. La boya incorpora cuatro sondas de pesca y proporciona
informacin sobre la posicin, el rumbo, la velocidad, temperatura del agua y concentracin de pescado. La ecosonda y el sistema de indicadores intermitentes incorporan microcontroladores
PIC12C508. Mediante paneles solares, la batera de alimentacin se mantiene cargada indefinidamente. Para desarrollar el sistema de control de la boya Jai.tic.1- Rome~wtuvo que utilizar los microcontroladores ms potentes y veloces del mercado. (Figura 1.3.)
Las posibilidades de aplicacin de los microcontroladores cada vez son mayores, pero tambin
requieren cada vez m i s prestaciones. A continuacin, se ofrece una tabla con una relacin de posibles clientes y aplicaciones.

M I L E S DE C L I E N T E S
Automocin

Consumo
Black&Decker
Goldstar
Hamilton Beach
IVC
Mitsubishi
Panasonic
Philips
Samsung
Sanyo

f3ldup~inkt
RMW
Forcl
CM-Del( o
tionda
Lexus
MercedeslBenz
Nissan
Robert Bosch
S~emens

Ofimtica
Alp5
Applc Comp~itt~r
C oiiner
Compaq
DEC
IBM
Logitech
Microsoft
Mitsunii
NCR

Telecomunic.
Codex
Ei icsson
tiayes
Kyocera
Motorola
Nokia
Northern
Telecom
Pac~fic
Monolithics
Rockwell

Industria
Ai~leric~~n
5ciisors
Cvde A1'1rni
Foxhoro
General Electric
Honeywell
Pitney Bowes
Robertshaw
Tandy
United
Technologies
Wayne Systems

1.2. DOS NUEVAS LINEAS DE PIC: FAMILIAS PICl6F87X Y PIC18CXXX


Mic*i-oc,l?iplo haba anunciado y todos los ingenieros que utilizamos los PIC lo estbamos esperando ansiosamente, pero hemos tenido que traspasar la barrera del 2000 para poder disponer fcilmente y en cantidad de los nuevos PIC adaptados a las exigencias de nuestro tiempo. El ascenso de
Mic-I-oc-hipal segundo puesto del ranking mundial de fabricantes de microcontroladores de 8 bits, segn la encuesta de Dataqrrcst realizada en junio de 1998, deba mantenerse con la aportacin de investigacin y desarrollo que ha tenido que hacer la empresa para sacar al mercado estas dos nuevas
lneas de ~nicrocontroladores.

Figura 1 .S.

I;i)tog~-trfi'trtlc
(10.51101.

Itr

h o ? r r ( I T ( / N , ~ B A/>+
L /11t71o1..\(it
)>, ( o t l \ t l i{i(l(r (.o11I I ~ ~ o(
C I o ~ ~ t t . o l u ~ l( IoI ~~U .Y ~
~ : \~ / -

olll/ll-fl.\(/ Z l ~ l ~ l I ? ~ ~ l

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Equipo de TV
Receptor de radio
Reproductor de CD
Control remoto
Vdeo consola
Cmara
Mando de garaje
Detector de monxido
de carbono
Microondas
Lavadora
Secadora
Aparatos de cocina
Aspiradora

Sistema de seguridad
del vehculo
Detector de radar
ABS
Velocmetro
Ciimatizador
Inyeccin de
combustible
Suspensin
activa
Sensor de airbag

Ratn de
ordenador
Teclado
Escner
Impresora
Plter
Fotocopiadora
Lector de cdigo
de barras
Unidad de disco

Telfono celular
Telfono
inalmbrico
ldentificador de
llamadas
Mdem

Control de motores
Compresor
Termostato
Utilidades de medida
Robtica
Procesos de control
Detector de humo
Lector de tarjetas

Figura 1.4. Tabla de aplicaciones que requieren microcontroladores y clientes que desarrollan dichas aplicaciones.

Figura 1.5. Tabla con las caractersticas relevantes de los cuatro nzodelos de PIC16F87x, junto a las del
PIC16F84A.

NECESIDAD Y APORTACIONES DE LOS NUEVOS PIC

Con la incorporacin de esta familia, el conjunto de microcontroladores PIC de 8 bits se distribuye en cuatro gamas:

Figura 1.6.

Principales caractersticas de los modelos de 1a.familiaPICI8Cxxx.

GAMA MEJORADA
32 niveles de pila
7 7 instrucciones de 1 6 bits

PlCl7Cxxx
16 niveles de pila
4 vectores de interrupcin
58 instrucciones de 16 bits

GAMA ALTA

P!Cl2C6xx, PIC16Cxx v PlCl6F87x


8 niveles de pila
1 vectur de interrupcin
35 instrucciones de 14 bits
PIC 12C5xx
-.- LPIC
16C5x
2 niveles de pila
33 instrucciones de 12 bits

bAL!P-!ED!A

GAMA BSICA
-- ... -.
-- -- ---

--

En la Fig~iri1.7 re puede ver una I-epre\ent~icingrfica que recoge toda\ la\ f;tmilia<.
En este lihrci iros vanlos a centrar en la 5ubi'amilia PIC 16F87x porque con\ider:imo\ que e5 el 4guiente paso natiiral de\pu\ del PIC16F84, porque tenemos 121 conviccin de yue va a ocupar lor
puestos mi\ altos del mercado y porque sus caracterstica\ le hacen ideal para aprendel. con ellos todo\ lo\ nuevor recur\o\. Se destinar un captulo a coirreirtar el t'uncionamiento y iiiane.jo de lo\ modelos de la familia del futuro PIC 1 XCxxx.

1.3.

EI, PIC POBRE (PIC16384) Y LOS RICOS (PIC16F87X)

Hasta el ao 2000 han sido muchos los rnillone\ de p i e ~ a sdel PIC 16F84 que se haii vendido eii todo el mundo. Este irrodelo haba venido precedido por el PIC 16C84, prccticarneiite igual. col1 excepcicn de la n1eniori;i de programa que era de tipo EEPROM en lugar de FLASH. Con ainbos tipos de meri~oriasse teiia la posibilidad de grabar y bol-rar programas elctricameiite. lo cual supona
que poda estar insertado en el mismo zcalo durante todo el procsw fe diseo y del~iiracicn.Lo\
i ~ i o d e l ode rnicrocontroladores progi-amable5 conocido5 hasta entonces dispona11c inei-i~orilide
programa EPROM, que exiga soirieterla durante cierto tiempo a rayo\ ultravioleta en el procejo de
borrado. Esta operacin supona uii grave inconveiiiente y la pogiblc rotura de las p:~tita\dcl cir-cuito integrado cuando se rerrli~abanmucho\ bol-rada\.
La memoria FLASH de los PIC soporta hasta 1.000 operaciones de escritura/borrado, mediante un
proceso totalmente elctrico que no precisa sacar al microcontrolador de sil zcalo. Esta caracterfstica hace a esta memoria ideal en los ambientes de diseo y educacionai.
La memoria EEPROM para datos que tienen los PIC soportan 100.000 operaciones de grabado/borrado.

Nt:('ESIl)AD Y APORTACIONLS DE 1-OS NUEVOS PIC'

iblic 1.oc.llipha tenido ci\ponibles de\cle liace iii~icliotienipo iiiicrocoritrolaciorc\ tiiuy potetite\ LX)iiio los fatnosos PIC 16C73 y 73 de Iii gama media, pero con nlemoria EPROM parit el progr:ii~~:i.
E\to\ di\positivo\ alcati~abanc:ipacidade\ de ineinoi-i:i de 3 K, con lC>2byte\ de K A M de dato\. con
c90nver\orA/D de 8 hit\ cte varios canale de etitracla, puertas de com~ii~ic:icin\cric (USAR'T. 12C,
SPI), ii~dulo\C('P, vario\ Timer y frecuencia de funcionriiniento de 20 MI]/. Se tratahlt cic f'iC\
111u)~rico\ e11 rec~ir\o\.
El PfC 16FX-Ctielle iiitbinoii;i FLASH. pelo coi1 i i i l ~ ciipaciclrid
i
de 1 K palal.)i.:is, \6lo tieiie iiir Tiiner ), 13 lneas de E/S digitale\ y el modelo norrnal soporta una l'recuencia tic 10 MHr. auncluc el
<<A>>
llega a lo\ 20 MH/. E\ un inicroconti-olador pobre, pero su \cncillez y bii~oprecio, inicios :i
iii ini:igii~:icitin (le lo\ proy~cti\t;i\.h a logridoqiie \e le ccin\idere <<muyresiiltii>>

Los nuevos PIC16F87x se pueden considerar como una combinacin de las virtudes del PIC16F84
con la inclusin de los recursos de los PIC 16C73 y 74. Incorporan la memoria FLASH, con una capacidad de 4 K y 8 K palabras de 14 bifs, sin cambiar la estructura interna del procesador y conservando
el m~smorepertorio de instrucciones.

La irienioria RAM de dato\ de lo\ PIC I6FX7x po\ee una capacidad de 102 byte\ en (lo\ de lo\
inodelos y de 368 bytcs en lo\ otro\ dos. Aunque superan ampliamente los 68 byte\ del PIC 16FX4.
inantieneii la mi\tna e\tructura ba\ada en 4 bancos de 128 byte\ cada uno, \clcccionables con lo\
hit\ RPO y RPI del Regijti-o de E\tatlo. (Fig~ira1 .X.)
La memoria de tirito\ no voltil de 64 byte\ tipo EEPROM que tena el PIC'16FX-C en 104 t-iilevo\
PIC 16F87x de 28 patita s~ibeha\ta 128 bytes, y en lo de 40 patitas a 256 bytes.
En lo\ PIC16FX7x \e manejan ha\ta 14 posibles fuentes de interi.upciri y 3 Tiriler. frente ;i la\ 3
f~it.i~te\
y 1 Tiinei- del PIC'I6FX-C. El ninri-o dc puesta\ taiiihien se ve auil-ieiiiritlo jii\t:iiici:il~iieiitc.
coi1 3 puertas en lo\ PIC <le 28 patitri\ 4 Ii;i\ta 5 eii lo\ de 30. AdcrnAs, lo\ iiut.\o\ I'IC iticorporati
lo\ \iguicnte\ recur\os inexi\tet-ite\ en el PIC 16FX3:
1 ) Do\ ~ ~ l ( j d l t l oC'CP.
.\
Son capaces de capturar y comparar impulsos. La captiira \e efecta con
una pic.ci\iri de 12.5 ns y una resolucin de 16 bit\. iiiientras que la coinpiiracioil con igual
rc\oI~iciO~~
;ilcan~auna precisin de 200 ns. AdemLs, la seccin PWM vara Iri :incl~~ii-;i
dc lo\
ii~ip~ilso\.
tbcnica rnuy empleatia en el control de motores.

BANCO 1

BANCO O

BANCO 2

BANCO 3

OOh

7Fh

Figura 1.8.

FFh

Mn/lc;jtrrlclo los I7it.v KP) J . K P I tlcl Kcgi.vt/n tic Esttrtlo sc I ~ ~ ~ . ( I I I : L I10,s


I ~ 308 I ~ J ' I C S(Ic KAM tlo tltrtos el1 los PIC'1 fik'(S7.V.

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

2 ) Cornunicac-ilzserie. En esta subfamilia se ha potenciado muchsimo el tema de las comunicaciones y en cuanto a la serie tipo admite dos modelos. La tpica USART, orientada a la comunicacin entre subsistemas o mquinas (RS-232) y la MSSP, destinada a la comunicacin
entre diversos circuitos integrados y que admite el protocolo 12C y SPI
3) Cornurzic.ac~inpar-alelo. En los PIC 16F87417 de 40 patitas est disponible el protocolo PSP,
ms rpido que la comunicacin serie, pero que hipoteca muchas lneas de E/S: ocho de la
Puerta D y tres de control de la Puerta E. (Figura 1.9.)
4 ) Conversol- AID. En todos los PIC16F87x existe un conversor Analgico/Digital de 10 bits,
con 5 canales de entrada en los microcontroladores de 28 patitas y 8 en los de 40 patitas.

1.4. HERRAMIENTAS PARA TRABAJAR CON LOS PIC16F87X


El fabricante se ha esforzado en acompaar a los PIC 16F87x con el complemento adecuado para desarrollar las aplicaciones de forma sencilla y cmoda. Para ello, trabajando en su conocido entorno
MPLAB Integrated Development Environment (IDE), disponible en la direccin de Internet:
www.microchi~.com,ha comercializado el kit MPLAB-ICD, (Figura 1.1 O), caracterizado por:

* PrograrnadordelosP/C16F87x.

Depuracin del rn~crocontrolador


en el circuito de aplicacin.
Ejecucin en tiempo real, con puntos de parada hardware.
Ejecucin paso a paso,
Funcionamiento con alhentacin de 3 a 5,5 V y frecuencia de

KHz a

Estos PIC con memoria FLASH pueden ser grabados con su programa de aplicacin despus de
su montaje en el producto final. Esta programacin llamada ICSP (Progl-arnacin Ser-ie en Cir-c-uito) tiene las siguientes ventajas:

.neas de datos

1
Figura 1.9.

Lneas de coi

La ( ~ o ~ ~ u n i ~ en
u (par-ale10
~ i n hipoteca ocho lneas pura la tr-ur~~ferencia
de i~for-r?zu(.in
y otras
tres para e1 c*ont~-ol.

NECESIDAD Y APORTACIONES DE LOS NUEVOS PIC

1." Reduce considerablemente


2.a Disminuye el tiempo y el cost
3." Hace posible la calibracidn en
Posibilita la inclusin de cd~

El kit MPLAB-ICD consiste en una tarjeta conectada al puerto serie del PC y de la que sale una
cabeza que incorpora uno de los microcontroladores PIC16F87x, que se inserta en el mismo zcalo que utilizar el PIC definitivo.
El MPLAB-ICD une a su alto precio relativo, su especificidad para trabajar exclusivamente con
los PIC16F87x. Con la idea de abaratar las herramientas y usar un sistema de desarrollo universal,
Mici.osystems Engineei-ing ha diseado un sencillo y econmico zcalo adaptador para los
PIC 16F87x en el Micr-o'PIC Ti-uinei-,con el que se puede grabar, borrar, depurar y ejecutar programas en los nuevos PIC, con la posibilidad de conectarle todos los perifricos del sistema de desarrollo y ver su comportamiento en tiempo real.
El zcalo adaptador ZOC871-, (Figura l .1 l), se introduce en el zcalo libre de 28 patitas del Mici-o'PIC Trainer.
En el kit ZOC87x que se comercializa, se incluye, junto con el software necesario, un microcontrolador PIC 16F873 grabado con un programa que presenta diversos mensajes sobre la pantalla
LCD del Miel-o'PIC Ti-ainei: El mencionado ZOC87x tambin permite la grabacin de los
PIC 1 6F87x sobre el programador Micro'PIC P/-og?-ammc~-.
La realizacin de todos los ejercicios, programas y proyectos que se proponen en este libro exigen la siguiente relacin de herramientas de la ingeniera bilbana Mical-osystemsEngi~zeering:

Figura 1.10. El kit MPLAB-ICD pel-nlite ti-uhujui-con los PIC16F87' desde un PC hujo el entor-zosoj'tnw1-eMPLA B.

IO

MICROCONTROLADORES PIC,,. D I S E N O PRCTICODE AP1,ICACIOYES

Figura 1.1 1.

1"
2"
3"
4"

l;ofog/.c~flcr
tlel rcc,trlo uilrr/~tliclo/.
ZOC87\,
c.~-o'PlC
Trtrit~cl:

ylic p ~ / . /ir(-'
t ? t/.lrh(rltr~.
(.oti lo.\

PIC 16F87-Ycrl rl Mi-

Slstema de desarrollo ~<M1croJPIC


Tralner..
Zocalo de adaptacin <<ZOC87xj>
para trabajar con los PIC16F87x
Tarjeta de ampilacion de perifrlcos <~M~cro'PlC
Tralner Plus,., con perlfrlcos conectables por bus 12C.
Tarjeta de ampl~ac~n
de per~fricos<<M~cro'PlC
/O>,,con motor, sensores analogicos, trlacs, etc

En la Figura 1.12 se aprecia la interconexin de las dos tarjetas de ampliacihn de perifricos al


que le
sistema de desarrollo Mic.1-o'PIC Tizrir~el;que lleva alojado el zcalo de adaptacin ZOC<Y~-Y,
permite trabajar con los PIC 16F87x.
A los PIC l6F87x se les puede grabar el programa en el modo ICSP-LV. que re lleva a cabo con una
tcnsicn ig~1a1
a la de alimentacin de +5 V. La patita RBI/PGM se de\tiiia a seleccionar el Modo de
Programacin y RB6/RB7 a recibir los datos en serie y los impulso\ de relo-j,respectivirnetite.

Figura 1.12.

Itztcr.c*ot~c~.vir~
dr l(n tt11-jcfuMic.ro'PIC Tlwit~clc 011 Iris tios ttr~.jota.\(le ~rl///)li(i(
ihl.

NECESIDAD Y APORTACIONES DE LOS NUEVOS PIC

11

RECORDANDO EL VIEJO PIC16F84


En esta seccin demostraremos, captulo a captulo, que la programacin de los nuevos PIC hace
ms sencilla la realizacin de ciertas tareas en muchos casos. como consecuencia de sus recursos.
Todo es cuestin de probar y no quedarse en meros espectadores, as que manos a la obra que comienza la funcin y usted es el principal actor.

Enunciado
Vamos a comenzar recordando ci~iose trabaja con el PIC 16F84 para pasar luego a mayores con los
PIC 16F87x.
Tenemos un PIC 16F84 trabajando a 4 MHz, en el cual se han conectado 2 interruptores en las
lneas RA1 y RA2 de la Puerta A y 2 LEDs eri las lneas RBO y RB 1 de la Puerta B.
El programa debe mostrar cundo el valor lgico que introducen ambos interruptores es cero. Para ello, si los dos interruptores introducen por la Puerta A nivel lgico 0, los LEDs de la Puerta B
deben encenderse, y en los dems casos permanecen apagados.

Esquema elctrico
Tras entender lo que se pide hay que especificar el esquema elctrico del circuito para saber cmo
estn conectados los perifricos. (Figura 1.13.) En dicho esquema se representa el PIC, con los elementos auxiliares que siempre necesita (cristal, alimentacin y circuito de reset), y los perifricos
de entradalsalida que se utilizan en cada moniento.
En este ejercicio tanto los interruptores como los LEDs estn conectados para ser activos por nivel alto. En el caso de los interruptores este hecho no altera la resolucin del problema, pero si los
LED estuvieran conectados para activarse por nivel bajo, el valor para encenderlos y apagarlos sera justamente el contrario.

Organigrama
Otra prctica muy recomendable antes de empezar a programar es plasmar en un organigrama la forma de resolver el problema. (Figura 1.14.)
Cuanto ms complicado sea dicho enunciado, ms abstracto ser el organigrama, pudiendo incluso necesitarse varios para llegar a un nivel aceptable de concretizacin. Al contrario, si el problema es sencillo el programa es casi una traduccin inmediata del organigrama a cdigo.

Mhz

Figura 1.13. E.~quemaelctrico correspondiente al ejercicio pi-opuesto.

INICIALIZACI~N
PA ENTRADA
PB SALIDA

APAGAR LEDs

Figura 1.14. Organigrama del ejercicio.

ENCENDER LEDs

Programa comentado
Una vez dados estos pasos previos estamos en disposicin de comenzar la programacin.
Vamos a seguir unas reglas bsicas a la hora de escribir los programas que, aunque no son obligatorias, facilitan la lectura y la comprensin.

Siguiendo estas normas y en base al esquema elctrico y al organigrama se obtiene el programa


que aparece bajo estas lneas. Antes de continuar, por qu no intenta resolverlo usted mismo y comprueba luego cmo anda su prctica de programacin con los PIC? Recuerde que no hay un modo
nico de resolucin y que se aprende practicando y cometiendo errores.
LIST

P= 16F84

; Se indica el tipo de
; procesador

RADIX

HEX

INCLUDE

P16F84.INC

ORG

0x00

; Sistema de numeracin
; hexadecimal
; Se incluye la definicin de
; los registros internos en
; una librera
; Inicio en el Vector de

INICIO

; Va a la primera instruccin

: Reset

END

; Fin de programa

14

MICROCONTRO1,ADORES PIC. DI S E N O PRCTICO DE AI'LICACIONES

Llega Iii hora de probar la soluci6n del problema para ver si se coniporta co111o est previsto.
Los pasos a realizar serin siempre los siguientes:

l." Llamar a un edltor de textos cualqu~eray copiar el programa Grabarlo sin formato con extensin
ASM.
2." Ensamblarlo con el ensamblador de M~crochipllamado MPASM. Corregir errores si los hubiera
volv~endoal paso 7<
3." Grabar el microcontrolador utilizando el sistema de desarrollo Micro'PlC Trainer y su software de
grabacin PICME-TR.
4.' Probar la solucin utilizando los perifricos contenidos en el MicroJPICTrainer.

Se explican a continuacin detalladamente los tres ltimos pasos.

Utilizacin del ensamblador MPASM


El ensamblador MPASM e s un programa de libre distribucin que se puede obtener en la pgina
web de Microchip, y que sirve para ensamblar ficheros con extensin ASM. Su aspecto se muestra
en la Figura 1.15.
Para desplazarse por los campos de la pantalla se usan los cursores y el tabulador. Los pasos para ensamblar un programa son:

Figura 1.15.

Aspec.to del cnsan~hlaclo~MPASM.

---

NECESIDAD Y APORTACIONES DE LOS NUEVOS PIC

15

Grabacin y prueba de un programa en el Micro'PIC Trainer


El sistema de desarrollo Micro'PIC Trainer est ideado para grabar en el microcontrolador el programa, una vez ensamblado y convertido en formato HEX, y probar posteriormente dicho programa utilizando los perifricos de que dispone.
Empezaremos nuestro acercamiento a la placa identificando las partes ms importantes de la
misma, tal y como se muestra en la Figura 1.16.

Figura 1.16. Sistema de desarrollo Micro' PIC Trainer con las partes ms .significativas sealatlas.

16

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Antes de utilizar los perifricos arriba descritos hay que grabar el programa en el PIC. Se realizarn los siguientes pasos:

NECESIDAD Y APORTACIONES DE LOS NUEVOS PIC

17

Si vuelve al programa que acabamos de realizar y grabar, comprobar que las lneas de E/S han
sido configuradas de modo que coincidan con los perifricos dispuestos en el Micro'PIC Ti-ainer.
Para este primer programa slo necesitamos dos interruptores y la barra de diodos LED, de modo que desconecte la pantalla LCD y el display de 7 segmentos abriendo sus jumpers correspondientes.
Asegrese de que los jumpers A/D de las lneas RA1-RA2 estn en la posicin Digital e introduzca ahora diferentes combinaciones para comprobar el funcionamiento del programa. Si ste no se comporta como esperaba no es un fallo sintctico, ya que los errores han sido corregidos hasta obtener un
programa correctamente ensamblado. El fallo ser semntico, es decir, deber repasar el cdigo fuente
para comprobar en qu punto difieren el organigrama del programa en ensamblador y corregirlo.

Figura 1.17. Aspecto del programa de grabacin PICME-TR.

18

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

PRESENTACIN DE LOS SENSORES ANALGICOS MS UTILIZADOS


Aunque el PIC 16F84 sirve para realizar un sinfn de aplicaciones comerciales y su aprendizaje es
muy didctico y sencillo, existen ciertas aplicaciones muy comunes para las cuales este PIC no sirve. Estamos hablando de aquellas que requieren la utilizacin de censores analgicos. Vamos a p'resentar en este apartado dos sensores que, aunque muy utilizados en diversos aparatos que manejamos a diario, no eran soportados directamente por el PIC 16F84. Los nuevos PIC 16F87x7al disponer
derconversor A/D, pueden usarlos cmodamente.

El sensor de luminosidad: LDR


Un sensor de luminosidad tipo LDR es un elemento cuya resistencia entre bornes vara en funcin
de la luz que incide sobre su superficie. As, cuando no existe luz presenta una resistencia infinita y
su resistencia va decreciendo, hasta llegar a cero, segn va aumentando la luz.
Su uso puede ser interesante en todas aquellas aplicaciones en las cuales el hecho de existir ms
o menos luz determine cierto comportamiento del sistema. Por ejemplo, la iluminacin de la entrada a una vivienda, de una habitacin o de un criadero de peces, puede regularse automticamente de
modo que se active una o varias bombillas con la deteccin de determinados niveles de luminosidad.
Es un elemento sin polaridad y se puede encontrar con diferentes dimetros segn el rango de valores de luminosidad que sea capaz de diferenciar. (Figura l .18.)

Figura 1.18. Aspecto y circuito prctico de una LDR.

NECESIDAD Y APORTACIONES DE LOS NUEVOS PIC

19

A la derecha de la Figura 1.18 se muestra el esquema de conexionado al PIC. La tensin generada segn el grado de luminosidad se aplicar por una de las patitas analgicas del PIC 16F87x debidamente configurada, y ser transformada en un valor digital para su tratamiento posterior. Cuando no exista luz, el voltaje de salida, VOUT,
ser 5 V y con luminosidad mxima O V.
El sensor de temperatura estndar: LM35
Otro sensor analgico ampliamente utilizado es el de temperatura. En el mercado existen muchos
modelos de sensores de temperatura y su eleccin depende de diversos parmetros, como pueden ser
el rango de temperaturas que sean capaces de admitir, la precisin necesaria, el coste, la resistencia
que debe presentar a ciertas condiciones ambientales, etc.
En la siguiente tabla se presentan los valores de algunos de estos sensores.

SENSOR

RANGO

INCREMENTO

LM335A

-40"C-1OOC

0,lO mV/"C

PRCl O0

-40"C-I5OC

OC-100W
100"-138,5

PROPIEDADES

Precisin debido a su
comportamiento lineal
Resistente.

P T l 00

-50" C - 500" C

1 0 0 W -O"C

Reducido tamao y rpida respuesta.

PTC (Coeficiente d e
Temperatura positivo)

Diferentes

Baja resistencia a baja


temperatura y aumenta
rpidamente al superar
la temperatura de referencia.

En circuitos de aviso.
Proteccin contra sobretensiones y
sobrecorrientes.

NTC (Coeficiente de

D~ferentes

Alta resistencia a baja


temperatura y al contrario.

Buena fiabilidad a bajo coste.


Muy empleados en electrodomsticos.

Temperatura negativo)
Termopar t i p o

- 5 0 C - 400" C

Altas temperaturas.
Elevada vida til.
Espacios reducidos.

Uno de los sensores ms utilizados es el LM35, tambin llamado estndar. Sus caractersticas
son:

1." Su tensin de salida VoUT es proporcional a la temperatura en una proporcin de 10 mV/"C.


ZPaSu rango de funcionarnie to estd comprendido entre 0"C y 100" C.
3.a Su tensin de funcionarn/ nto V . esta entre 1-4 VDC y +30 VDC.
4."Su precisin es de 2 0,9"C.

En la Figura 1.19 se muestra el aspecto externo de un sensor de temperatura estndar. La patita +Vs se debe conectar a la tensin positiva, comprendida entre +4 V y +30 V. GND ser co-

GND

Figura 1.19. Aspecto de un LM3.5. La disposicin de las patitas del sensor del dibujo se corresponde con un
sensor cuya parte plana est orientada hacia arriba.

nectada a O V y VoUTse conectar a la lnea correspondiente del PIC. A ste llegar el voltaje
proporcional a la temperatura captada, que ser convertida en un valor binario para su posterior
tratamiento.

Bajo la denominacin de PIC16F87x se hace referencia a una subfamilia de microcontroladores PIC de la gama media, que se identifica por tener como memoria de programa una de tipo
FLASH y una serie de recursos semejante a los modelos ms potentes, como por ejemplo los
PIC16C73/4, teniendo estos ltimos el inconveniente de que su memoria de programa es de tipo
EPROM.
Dos de los cuatro modelos que componen esta subfamilia estn encapsulados con 28 patitas
(PIC 16F873/6), mientras que los otros dos tienen 40 patitas (PIC 16F874/7). Con la intencin de seguir potenciando la lnea con memoria FLASH, Microchip tambin comercializa los microcontroladores PIC 16F62x, que con un precio rompedor mantiene el encapsulado de 18 patitas, aumentando considerablemente los recursos internos en comparacin con el PIC16F84.
Como se mostr en el captulo anterior en la tabla de la Figura 1.5, las principales diferencias entre los PIC 16F87x con 28 patitas y los de 40 se concentran especialmente en el nmero de lneas de
E/S disponibles, pero a continuacin se citan las tres diferencias ms relevantes:

Con la intencin de ir acostumbrando al lector a conocer los recursos de los PIC16F87x se resumen seguidamente. (Figura 2.1.)

22

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Figura 2.1. Tabla de los principales recursos de los rnicrocontroladores PIC16F87x

2.2. PROCESADOR RISC CON ARQUITECTURA HARVARD


Esta arquitectura aplicada por Microchip en sus microcontroladores se caracteriza por la independencia entre la memoria de cdigo y la de datos. As, tanto la capacidad como el tamao de los buses de cada memoria se adaptan estrictamente a las necesidades del diseo, facilitando el trabajo en
paralelo de las dos memorias, lo que permite obtener altas cotas de rendimiento. La filosofa RISC
se hace patente en el reducido nmero de instrucciones que forman su repertorio. Slo consta de 35
instrucciones, que se ejecutan en un ciclo de instruccin, equivalente a cuatro perodos de reloj, excepto las de salto que necesitan dos ciclos. (Figura 2.2.)
Una primera aproximacin a la arquitectura interna de los PIC16F87x se muestra en la Figura 2.3.
Debe tenerse en cuenta que la mayor diferencia entre los modelos de 40 patitas y los de 28 reside en
el nmero de Puertas de E/S, que en el primer caso asciende a 5 y en el segundo a 3.

ARQUITECTURA, DIAGRAMA DE CONEXIONES Y REPERTORIO DE INSTRUCCIONES

23

Figura 2.2. Los buses para instrucciones y datos son totalmente independientes y se ajustan a las necesidades de cada memoria, permitiendo el acceso simultneo.

1 que la memoria de cdigo est direccionada por el PC (Contador de


Obsrvese en la Figura 2.3
Programa) en conexin con la Pila de 8 niveles. La memoria de datos RAM contiene el Banco de
Registros Especficos y el Banco de los Registros de Propsito General y transfiere informacin bidireccional por el bus de datos de 8 lneas que interconecta todos los elementos. Finalmente. el Camino de Datos est formado por una A L U - 8~ bits
~ que trabaja conjuntamente con el Registro de
Trabajo W.

Direccionamiento h
Direccin

"I

Datos

I
I
1

I
i

RECURSOS
INTERNOS

1
I
1
I
1

1
1

Figura 2.3. Arquitectura tipo Harvard simplificada para los microcontroladores PIC16F87x.

24

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

En el esquema de la Figura 2.4 se presenta con ms detalle la arquitectura correspondiente a los


modelos PIC 16F874/7 de 40 patitas. Los otros dos modelos de la subfamilia tienen idntica arquitectura, pero carecen de las puertas D y E, as como de las funciones que stas soportan.

PUERTA A

13

MEMORIA DE
c~lco
(FLASH)

PILA 8 NIVELES
DE 13 BlTS

MEMORIA DE
DATOS
(SRAM)

PUERTA B

RCO/Tl OSO/Tl CKI


R C l / T l OSI/CCP2
RC2/CCP1

TEMPORIZADOR DE

TEMPORIZADOR
DE INICIO

RC3/SCK/SCL
RC4/SDI/SDA
RC5/SDO

'

RC6/TX/CK
RC7/RX/DT

OSC2/CLKOUT

BROWN-OUT
DEPURACION
EN CIRCUITO

'
t
I

PUERTA E

CONVERSOR ND

TIMERO

EEPROM

CCP2

PUERTA SERIE
S~NCRONA

USAR1
L

Figura 2.4.

Arquitectura de los PIC16F87417 de 40 patitas. Para los modelos de 28 patitas la arquitectura


slo difiere en que carecen de las Puertas de EIS D y E .

ARQUITECTURA, DIAGRAMA DE CONEXIONES Y REPERTORIO DE INSTRUCCIONES

25

La memoria FLASH, en la que se graba el programa de aplicacin en los PIC16F87x, puede tener
una capacidad de 4 K u 8 K palabras de 14 bits cada una. Dicha memoria est dividida en pginas
de 2 K palabras y est direccionada con el PC, que tiene un tamao de 13 bits. La Pila, que tiene 8
niveles de profundidad, es transparente para el usuario, es decir, funciona automticamente y no dispone de instrucciones para guardar o sacar de ella informacin. Con la instruccin CALL y con las
interrupciones el valor del PC se salva en el nivel superior. Con las instrucciones RETURN, RETFIE y RETLW el valor contenido en el nivel superior de la Pila se carga en el PC. Al poseer la Pila
slo 8 niveles le corresponde al programador preocuparse por los anidamientos en las subrutinas para no sobrepasar dicho valor. El vector de Reset ocupa la direccin OOOOh y el vector de Interrupcin la 0004h, igual que en el PIC16F84. (Figura 2.5.)

MEMORIA DE CDIGO
VECTOR DE RESET

OOOOh

VECTOR DE INTERRUPCI~N

0004h
0005h

PGINA O
2K
07FFh
0800h

NIVEL 1

PCINA 1
2K

OFFFh

1OOOh
* PGINA 2
2K
17FFh
1800h

NIVEL 8
r

* PGINA 3
2K
1FFFh

12

PILA LlFO

13

* Slo implementadas en los modelos de 8 K

Figura 2.5.

Organizacin de la memoria de programa tipo FLASH en los PIC16F87x.

26

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

2.4. ORGANIZACINDE LA MEMORIA DE DATOS RAM


La memoria de datos tiene posiciones implementadas en RAM y otras en EEPROM. En la seccin
RAM, se alojan los registros operativos fundamentales en el funcionamiento del procesador y en el
manejo de todos sus perifricos, adems de registros que el programador puede usar para informacin de trabajo propia de la aplicacin. Ms adelante, se estudiar la memoria EEPROM para guardar datos de forma no voltil, a la que se considera como un dispositivo especial.
La RAM esttica consta de 4 bancos con 128 bytes cada uno. En las posiciones iniciales de cada
banco se ubican los Registros Especficos que gobiernan al procesador y sus recursos. Dos modelos de
PIC16F87x tienen 192 bytes de RAM y los otros dos 368 bytes. Los modelos de menor capacidad no
tienen implementadas fsicamente algunas posiciones.'La Figura 2.6 presenta los cuatro bancos de la
RAM, indicando en las primeras posiciones de cada uno los nombres de los registros que contienen.
En las Figuras 2.6 y 2.7 las posiciones con trama oscura no estn implementadas fsicamente y
siempre se leen como O. Los registros especficos marcados con la nota (1) no se hallan implementados en los PIC de 28 patitas.
Para seleccionar el banco al que se desea acceder en la RAM se emplean los bits 6 y 5 del Registro de Estado, denominados RP1 y RPO respectivamente, segn el cdigo siguiente:

Para manipular adecuadamente los elementos internos de los PIC hay que conocer la misin de
los bits de los Registros Especficos.

2.4.1. Registros especficos para el control de la memoria de programa


Los 13 bits contenidos en el PC, que direccionan la memoria de cdigo, estn guardados en dos registros especficos. El registro PCL guarda los 8 bits de menos peso y se puede leer y escribir. Los
bits <12:8> del PC se alojan en el registro PCH, que al no poder ser ledo ni escrito, se accede a l
a travs del PCLATH.
Las instrucciones de salto CALL y GOTO slo proporcionan 11 bits de la direccin a saltar. Esto limita el salto dentro de cada banco de 2 K. Cuando se desea salir del banco actual hay que programar correctamente los bits PCLATH <4:3> que seleccionan al banco. Es labor del programador
modificar el valor de dichos bits en las instrucciones CALL Y GOTO. (Figura 2.8.)

2.4.2. Control de la memoria de datos


Para direccionar la memoria RAM de datos estructurada en 4 bancos de 128 bytes cada uno existen
dos modos diferentes:

ARQUITECTURA, DIAGRAMA DE CONEXIONES Y REPERTORIO DE INSTRUCCIONES

27
180h
181h
182h
183h
184h
185h
186h
187h
188h
189h

18Ah
18Bh
18Ch
18Dh
18Eh
18Fh
190h
191h
192h
193h
194h
195h
196h
197h
198h
199h
19Ah
19Bh
19Ch
19Dh
19Eh
19Fh

Registros de

1AOh

Propsito
General
80 Bytes
1EFh

Mapeados con

1FOh

70h-7Fh
1FFh

Banco O

Banco 1

Banco 2

Figura 2.6. Distribucin de la memoria RAM en cuatro bancos con 368 bytes tiles.

Banco 3

28

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES


OOh

80h

1OOh

01h

81h

lOlh

02h

82h

102h

03h
04h

83h
84h

103h
104h

05h

85h

105h

06h

86h

106h

07h

87h

107h

08h

88h

108h

09h

89h

109h

OAh

8Ah

10Ah

OBh

8Bh

lOBh

OCh

8Ch

10Ch

ODh

8Dh

1ODh

OEh

8Eh
8Fh

1OEh

90h

110h

OFh
10h
Ilh
12h

91h
92h

13h

93h

14h

94h

15h

95h

CCPR1H

16h

96h

CCP1CON

17h

97h

RCSTA

18h

98h

TXREG

19h

99h

RCREG

1Ah

9Ah

CCPRZL
CCPR2H

1Bh
1Ch

9Bh

CCP2CON

9Ch
9Dh

ADRESH

9Eh

ADCONO
Registros de

Registros de

Propsito

Propsito

General

General

96 Bytes

96 Bytes

9Fh

19Fh

AOh

1AOh

1FFh

FFh

7Fh
Banco O

1OFh

Banco 1

Banco 2

Banco 3

Figura 2.7. Organizacin de la RAM en los modelos PICl6F87314, con de 192 bytes tiles.

ARQUITECTURA, DIAGRAMA DE CONEXIONES Y REPERTORIO DE INSTRUCCIONES

PCH

'

L-

PCL

12

PCLATH <4-O>

PCL ANTERIOR + x

PCLATH

t-- PCH
12

11

29

10

PCL

PCLATH <4:3>
DESDEEL
C D I G O OP

PCLATH

Figura 2.8. En la figura superior se muestra cmo se carga el PC. Abajo se muestra la carga del PC con las
instrucciones CALL y GOTO.

En el modo de direccionamiento directo, los bits RP1 y RPO del Registro de Estado <6:5> se encargan de seleccionar el banco, mientras que la direccin dentro del banco la determinan 7 bits procedentes del cdigo OP de la instruccin. Para el direccionamiento indirecto se usa el registro FSR,
en el que sus 7 bits de menos peso sealan la direccin, y el banco lo determina el bit de ms peso
de FSR concatenado con el bit IRP del Registro de Estado <7>. (Figura 2.9.)

2.5. DIAGRAMA DE CONEXIONADO


En la Figura 2.10 se muestra el diagrama de distribucin y asignacin de las 28 o 40 patitas de los
encapsulados PDIP (doble hilera de patitas de plstico) de los PIC16F87x. Los encapsulados con
menos patitas carecen de las puertas D y E.
La Figura 2.11 muestra algunas de las posibles opciones de encapsulado que utiliza Microchip
para proteger a sus microcontroladores.
La asignacin de funciones para las diferentes patitas es la siguiente:

30

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

DIRECCIONAMIENTO DlRECTO

I
Figura 2.9.

BANCO O

BANCO 1

DIRECCiONAMIENTOINDIRECTO

BANCO 2

BANCO 3

SELECCIN
DE
BANCO

Formas de seleccionar el banco y la direccin de la memoria RAM en los direccionamientos directo e indirecto.

ARQUITECTURA, DIAGRAMA DE CONEXIONES Y REPERTORIO DE INSTRUCCIONES

31

Figura 2.10. Diagrama de asignacin y conexionado de las patitas de los dos posibles encapsulados en los
modelos de la subfamilia PIC16F87x.

32

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Los PIC16F87x al carecer de las Puertas D y E tienen 22 lneas de E/S (6 de la Puerta A, 8 de la


B y 8 de la C). Adems, no disponen de puerta paralela esclava y slo conectan al conversor A/D
mediante 5 canales.

ARQUITECTURA, DIAGRAMA DE CONEXIONES Y REPERTORIO DE INSTRUCCIONES

33

2.6. REPERTORIO DE INSTRUCCIONES


Los mismos formatos, iguales modos de direccionamiento y las mismas 35 instrucciones que tena el PIC16F84 sirven para todos los modelos PIC16F87x, por lo que no vamos a volver a repetirlos.
No obstante, en los nuevos PIC, al contener ms recursos, existen nuevos Registros Especficos
de control cuyos bits se debern escribir o leer para su gobierno. Dichos recursos y sus registros asociados sern el tema de los prximos captulos.
En la Figura 2.12 se ofrece un cuadro resumido del repertorio de instrucciones.

MlCROCHlP PACKAGE OPTIONS


PB &S$OC L B I D I D
CHIP CAWRIER {OoPICCj

lSLead CERDlP
"JW"

&Lead PDlP
"p..

Pgiead PDiP

"'P"

32-Lead PLCC
"1"

P&Lead CEROiP
"IW"

14-lead PDIP
"P"

28Cead Skrnny PDIP


"SP"

44-Leed PLCC
"L"

4O.Lead CERDlP
*IW"

18-Lead PDIP

40-Lead PDIP

" P

"'P"

6S1ead PLCC
"L"

6aLead Shriflk PDIP


"SP

8.4-CeadPCCC
"L"

68-le& CERQUAD
"CL"

Figura 2.11. Opciones de encapsulados para los microcontroladores PIC. (Cortesa de Microchip.)

34

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Figura 2.12. Principales caractersticas de las 35 instrucciones que componen el repertorio de los
PICl6F87x.
\

ARQUITECTURA, DIAGRAMA DE CONEXIONES Y REPERTORIO'DE INSTRUCCIONES

35

EL PRIMER PROGRAMA CON LOS PIC16F87X


Tras el repaso a la programacin de microcontroladores PIC llevado a cabo en el tema anterior, vamos a repetir el mismo ejercicio pero esta vez con los PIC16F87x y, ms concretamente, con el
PIC16F873. Puesto que el enunciado, aparte de trabajar con un nuevo PIC, es el mismo, no vamos
a repetirlo. Igualmente ocurre con el organigrama. El esquema elctrico, sin embargo, presenta algunas diferencias.

Esquema elctrico
Como puede observarse en la Figura 2.13, el modo de representar los perifricos de entradalsalida no vara ms que en el lugar que ocupan, ya que la distribucin de las patitas del PIC ha cambiado. Los condensadores que acompaan al cristal de cuarzo ahora son de 15 pF y no de 27 pF
como eran en el PIC16F84 para trabajar a la misma frecuencia. Por ltimo, ahora hay 2 patitas Vss
envezde 1.

Programa comentado

Se presenta a continuacin la resolucin del ejercicio propuesto utilizando un PIC16F873. Debido a que las funciones de este PIC son mayores, sus patitas tienen asignadas varias tareas, y la
discriminacin entre dichas tareas es la diferencia ms notable con respecto al ejercicio del tema anterior. As, adems de configurar las lneas de la Puerta A como de entrada o salida, hay
que decir, en el caso de que vayan a ser entradas, si dichas entradas sern analgicas o digitales.
En el tema correspondiente al Conversor Analgico/Digital se vern todas las combinaciones posibles.
Otra cosa a tener en cuenta es que el nmero de bancos de la memoria de datos RAM ha aumentado a cuatro. Esto quiere decir que para movernos por ellos necesitamos estar pendientes no slo del bit 5 del registro Estado <RPO>, sino del 5 y del 6 <RPl:RPO>. En el programa se ha incluido este hecho aunque en este caso no era necesario por partir de los dos bits a O al comienzo del
programa.
Se ha incluido un * en todas las lneas que se han aadido o han variado.

36

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

RESET

i(

LED

Figura 2.13. Esquema elctrico del ejercicio propuesto para el PIC16F873.

ARQUITECTURA, DIAGRAMA DE CONEXIONES Y REPERTORIO DE INSTRUCCIONES

37

Prueba del programa: el ZOCF87x


Para la prueba de este programa, deberemos seguir los pasos vistos en el tema anterior en cuanto a
edicin, ensamblado, etc., teniendo en cuenta que los campos que antes eran rellenados con
PICI 6F84 ahora lo son con PIC16F873.
Una vez obtenido el fichero HEX podemos utilizar el sistema de desarrollo Micro'PIC Trainer
para la grabacin y uso de perifricos, ya que como se vio ste dispone de un zcalo de 28 patitas
donde insertar los PIC 16F873 y PIC 16F876.
Para ello, se utiliza el ZOCF87x, que adapta el encapsulado estrecho de estos PICs al ancho del
zcalo de la placa.
En la fotografa de la Figura 2.14 puede observarse dicho zcalo de adaptacin colocado sobre
el Micro'PlC Trainer. Obsrvese adems que el zcalo para los PIC de 18 patitas (junto al anterior)
permanece vaco, ya que no pueden existir dos PICs en la placa al mismo tiempo.
Los pasos a seguir para la grabacin de un PIC de 28 patitas desde el Micro'PIC Trainer son similares a los ya descritos para un PIC16F84 y se resumen en los siguientes:

38

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Figura 2.14. Fotografa que muestra la colocacin del zcalo ZOC87x sobre el Micro'PIC Trainer. (Cortesa de Microsystems Engineering.)

ARQUITECTURA, DIAGRAMA DE CONEXIONES Y REPERTORIO DE INSTRUCCIONES

39

ACTUADORES PARA DIVERSAS APLICACIONES: LOS MOTORES


Unos de los actuadores ms vistosos y verstiles para el trabajo con PICs son los motores. Los motores pueden mover una cinta transportadora; un motor puede ser lo que suba o baje una polea con
un objeto en su extremo; puede abrir o cerrar una puerta e incluso posicionar un brazo articulado.
En este apartado se van a ver dos tipos de motores:

Diferencias entre los motores DC y PAP


Las caractersticas ms destacables de los motores DC se resumen en:
1.. Buen par de fue,

y esfabilida

2;' Baja inercia en arranque y pa


3,' Peso y tamafio rwjucidoe;.
4.' Fdclf m@n@@.
L

Esto les hace ideales en aplicaciones en que se precisa coordinar la velocidad de varios motores
al mismo tiempo, y/o en que el motor tiene que responder instantneamente a las seales de control
para un encendido/apagado y cambio de sentido. Su peso y tamao reducidos les posibilita adems
para formar parte de sistemas mviles sin incrementar el peso ya existente.
Los motores PAP a su vez se caracterizan por:
.

&&'&ehbjy exactm.<

1,' Su movimiento es par incr&&ts'de &ngYb,


2." Maycr simplicidad en la lb@& de control. ' :
3.' Su manejo d8ptande del mdelo,
.
4.' SU eje no recorre todas /aslposicimimpdsbtes.

.t

'

El funcionamiento de un motor PAP se logra aplicando en sus bornes un conjunto de seales de


control especificadas por el fabricante, por lo que un programa realizado para un motor determinado deber modificarse si el motor es cambiado.

40

MICROCONTROLADORES PIC. DISENO PRCTICO DE APLICACIONES

Sin embargo, el que sea controlado por ese conjunto de seales tiene la ventaja de que en todo
momento se conoce su ngulo de giro exacto, nmero de vueltas dadas, etc., sin necesidad de sensores externos tipo encoder, lo que le hace propicio para aplicaciones en que se necesita gran precisin de movimiento. El modelo se elegir en funcin de la precisin del ngulo de giro que se necesite.

Motores DC
Los motores DC internamente estn compuestos por un imn (estator) que crea un campo magntico en el cual se encuentra una bobina o electroimn arrollada en un eje giratorio (rotor). La tensin
de alimentacin aplicada al motor hace que se generen unas fuerzas de atraccin y repulsin entre
el campo magntico del estator y del rotor, lo que hace que el motor se mantenga en movimiento.
En la prctica, el control sobre dicho motor se realiza con la aplicacin de tensin en los dos hilos que salen al exterior: con un hilo se determina el encendido/apagado del motor y con el otro el
sentido de giro.
Como la tensin e intensidad que proporcionan las lneas del PIC no son suficientes para excitar un motor DC, se hace necesaria la utilizacin de algn circuito integrado especfico.
Uno muy utilizado es el L293B, que consta de 4 drivers. La Figura 2.16 muestra la mitad de este circuito integrado con dos de sus cuatro drivers.

Figura 2.15. Fotografia de un servomotor de corriente continua modelo S3003 de Futaba.

Figura 2.16. Mitad del circuito integrado L293B con dos de sus cuatro drivers utilizados en el control de un
motor DC.

ARQUITECTURA, DIAGRAMA DE CONEXIONES Y REPERTORIO DE INSTRUCCIONES

41

Cada pareja de drivers puede ser usada para el control de un motor DC. El significado de las patitas del esquema es el siguiente:

El funcionamiento con este tipo de motores es sencillo: a travs de una patita del PIC (debidamente configurada como salida habilitar el motor, y una segunda patita marcar el sentido de giro con su seal. Dependiendo del v ltaje suministrado variar la velocidad del motor. Dicha velocidad tambin puede ser controlada a travs del PIC con las tcnicas conocidas como PWM y PFM.
En la PWM (Modulacin de Anchura de Pulsos) se aplican al motor (en su lnea de marchalparo) pulsos de amplitud variable. En la PFM (Modulacin de Frecuencia de Pulsos) se mantiene la
anchura de impulsos pero vara la frecuencia de los mismos.

Motores PAP
Los motores PAP, al igual que los DC, se basan en las fuerzas electromagnticas creadas entre estator y rotor, pero ambos constan de ms de dos polos. Esto hace que se necesiten conjuntos de impulsos para generar unas fuerzas que los hagan girar, y que este giro no sea continuo sino de un cierto nmero de grados.
En la prctica tambin se usa para su control el circuito integrado L293B, conectado tal y como
muestra la Figura 2.18.

Figura 2.17. Fotografia de un motor PAP unipolar de 4 fases y giro de 7Jg.

42

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Figura 2.18. Esquema completo del circuito L293B con un motor PAP conectado.

En este caso, se necesita el circuito L293B completo para controlar un motor PAP. La forma de
actuar sobre l sera introducir por las lneas A, B, C y D (debidamente conectadas a las lneas del
PIC) la secuencia marcada por el fabricante que podra ser, por ejemplo, como la mostrada en la Figura 2.19.
Entre paso y paso se debe introducir un pequeo retardo para dar tiempo al motor a realizar el
giro. Variando la duracin de dicho retardo se puede modificar la velocidad del motor.

BOBINAS

BOBINAS

SENTIDO HORARIO

SENTIDO ANTIHORARIO

Figura 2.19. Secuencia de control para el giro de un motor PAP en ambos sentidos.

3.1. LOS REGISTROS DE CONTROL


Para gobernar el fdncionamiento de los recursos de los PIC existe un conjunto de registros especficos cuyos bits soportan el control de los mismos. Dichos registros estn ubicados en las primeras
posiciones de cada banco de la memoria de datos RAM y para aprovechar toda la potencia de los
microcontroladores es necesario conocerlos. En las Figuras 2.6 y 2.7 del captulo anterior se mostraba el contenido de la memoria RAM de los PIC 16F87x y la denominacin y situacin de los registros especficos junto a los de propsito general. Las posiciones OOh, 80h, lOOh y 180h no son registros fsicos sino direcciones indirectas.
Este tema, en su primera parte, est dedicado a la exposicin de la misin de los bits de los principales registros de control, algunos de ellos similares a los del PIC16F84. Las diferencias entre los
registros de los PIC16F87x de 28 y 40 patitas se debe a carecer los primeros de las puertas D y E,
con lo que no disponen de los registros PORTD, PORTE, TRISD y TRISE. Tampoco tienen los registros que controlan la puerta paralela esclava que slo est implementada en los modelos de 40 patitas.

3.2. REGISTRO DE ESTADO (STATUS)


Sin duda ste es el registro ms usado de todos, pues sus bits estn destinados a controlar las funciones vitales del procesador. Por este motivo, est duplicado en las cuartas posiciones de cada banco (03h, 83h, 103h y 183h). (Figura 3.2.)

REGISTRO DE ESTADO

-'

Figura 3.1. Estructura interna del Registro de Estado.

44

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Los tres bits de menos peso son los sealizadores de ciertas condiciones en las operaciones 1gico-aritmticas.

Los sealizadores PD# y TO# son activos por nivel bajo (#) y sirven para indicar la causa que
ha provocado la reinicializacin del procesador.

Los sealizadores PD# Y TO# son muy importantes en el proceso de Reset porque indican la
causa que la ha originado y permiten actuar en consecuencia. No son escribibles.
Los PIC se resetean al conectar la alimentacin (POR: Power-on Reset). Tambin se resetean
cuando la tensin de alimentacin baja de 4 V (BOR: Brown-out Reset), aunque esta funcin es factible desactivarla poniendo a O el bit BODEN, presente en la palabra de configuracin. Tanto en el
Reset POR como en el BOR los bits PD# y TO# toman el valor 1, mientras que en los dems casos
depende de la causa que ha provocado el Reset.
/
Finalmente, los tres bits de ms peso del Registro de Estado se emplean para seleccionar el banco de la RAM al que se desea acceder. En el direccionamiento directo, como se vio en el captulo
anterior, se utilizan los bits RPl y RPO de acuerdo con la siguiente codificacin.

El bit IRP se usa concatenado con el bit de ms peso del registro FSR para elegir el banco de
RAM en el direccionamiento indirecto.

E Seleccidn del banco de RAM en dir&cimdo inqimto,


O:Banco O y 1 (OOh-m).
1: Banco 2 y 3 (100h- IFFh).

PRINCIPALES REGISTROS DE CONTROL Y MANEJO DE LAS MEMORIAS FLASH Y EEPROM

45

En algunas instrucciones, el Registro de Estado puede actuar como destino, en cuyo caso los bits
de los sealizadores Z, C y DC no son escribibles en aquellas instrucciones que les afecte la operacin que realizan, al igual que sucede con PD# y TO#. Por ejemplo, al ejecutar la instruccin clrf
STATUS, el Registro de Estado pasa a valer 000uul uu. Los bits marcados con u no cambian el valor que tenan. Por este motivo se recomienda usar las instrucciones bcf, bsf, swapf y movf para manejar los bits de este registro, ya que no afectan a los sealizadores Z, C y DC.
Como los tres bits destinados al direccionamiento de la RAM (IRP, RP1 y RPO) toman el valor
O despus del Reset, si se desease acceder al banco 3 de la RAM habra que emplear las siguientes
instrucciones:
bsf
bsf

STATUS,RPO
STAFRP1

3.3. REGISTRO DE OPCIONES (OPTION)


Tiene las mismas funciones que tena en el PIC 16F84:

El registro OPTION toma el valor 1111 1111 en cualquier tipo de reinicializacin que se produzca.
El valor de sus bits junto con su significado se presentan en la Figura 3.2.

3.4. REGISTRO PARA CONTROLAR LAS INTERRUPCIONES


Los PIC16F87x tienen muchas causas que pueden originar una interrupcin; 13 posibles causas los
de 28 patitas y 14 los de 40. Al aceptarse una interrupcin se salva el valor del PC en la Pila y se
carga aquel con el valor 0004h, que es el Vector de Interrupcin. La mayora de los recursos o perifrico~de que disponen los PIC16F87x son capaces de ocasionar una interrupcin, si se programan
adecuadamente los bits de los registros que pasamos a describir a continuacin.
El PIC16F84 tena 4 causas que generaban interrupcin: desbordamiento del TMRO, activacin
de la patita de interrupcin RBODNT, cambio del estado de una de las 4 patitas de ms peso de la
Puerta B y finalizacin de la escritura de un byte en la EEPROM. Los nuevos PIC, adems de las
causas que producen interrupcin en el PIC16F84, tienen las siguientes:

46

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

REGISTRO OPTION

1 1 1

RBPU# INTEDC TOCS TOSE

E A

( 6 2 1 PS1I 60

Figura 3.2. Denominacin y asignacin de funciones de los bits del registro OPTION. Ocupa la direccin
81h del banco 1 y la 181h del banco 3.

PRINCIPALES REGISTROS DE CONTROL Y MANEJO DE LAS MEMORIAS FLASH Y EEPROM

47

Como los PIC 16F87x disponen de ms causas que provocan interrupcin, tambin tienen ms
registros para contener los bits sealizadores y de permiso o prohibicin.
3.4.1. Registro de control de interrupciones (INTCON)
Se trata de un registro leble y escribible que, para facilitar su acceso, se halla duplicado en los cuatro bancos, ocupando las direcciones OBh, 8Bh, 10Bh y 18Bh, respectivamente. Tiene la misin de
controlar las interrupciones provocadas por el TMRO, cambio de estado en las 4 lneas de ms peso
de la Puerta B y activacin de la patita RBO/INT. Es muy parecido al registro que con el mismo nombre exista en el PIC16F84. Slo cambia el bit 6 en los nuevos PIC, que es el PEIE (permiso de interrupcin de los perifricos) en lugar del EEIE que tena el PIC16F84 para permitir la interrupcin
cuando finalizase la escritura de un byte en la EEPROM. El bit PEIE acta como una segunda llave parcial de permiso o prohibicin de las causas de interrupcin que no estn contempladas en INTCON y que las provocan los restantes perifricos del microcontrolador. GIE es el bit de permiso global de todas las interrupciones. (Figura 3.3.)

3.4.2. Registro de permiso de interrupciones 1 (PIEl)


Contiene los bits que permiten (1) o prohiben (O) las interrupciones provocadas por los perifricos
internos del microcontrolador y que no estaban contempladas en INTCON.
Ocupa la direccin 8Ch y para que cumplan su funcin los bits de PIEl es necesario que PEIE = 1
en INTCON <6>. El bit PSPIE slo es vlido en los modelos de 40 patitas, mantenindose a O en los
que tienen 28 patitas. En la Figura 3.4 se presenta el registro PIEl con el significado de todos sus bits.
\

REGISTRO INTCON

Figura 3.3. Designacin y misin de cada uno de los bits del registro INTCON

48

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

3.4.3. Registro de permiso de interrupciones 2 (PIE2)


Contiene los bits de permiso de interrupcin de las tres causas que no figuraban en PIE1. La de fin de
escritura en la EEPROM, colisin de bus en el modo SSP y produccin de una captura o una comparacin en el mdulo CCP2. La Figura 3.5 presenta la funcin de estos tres bits. El bit 6 es un bit reservado y su valor es siempre O. Cuando se leen los bits que no tienen asignada funcin se obtiene O.

3.4.4. Registros de los sealizadores de interrupciones 1 y 2 (PIRl y PIR2)


En correspondencia con los bits de permiso/prohibicin de las causas de interrupcin recogidas
en los registros PIE1 y PIE2, existen otros dos registros, PIRl y PIR2, cuyos bits actan de sealizadores del momento en el que se origina la causa que provoca la interrupcin, independientemente de si est permitida o prohibida. Ocupan las direcciones OCh y ODh, respectivamente. (Figura 3.6.)

3.5. LECTURA Y ESCRITURA DE LAS MEMORIAS EEPROM Y FLASH


En el PIC 16F84se poda leer y escribir la memoria de datos EEPROM. En los PIC 16F87xtambin se puede leer y escribir la memoria de cdigo FLASH. Esto significa que un programa dinmicamente puede generar informacin que se puede grabar en la FLASH directamente, sin necesidad del grabador externo.
La propia aplicacin se puede reprogramar segn las condiciones externas. Es posible ampliar el rea
de la memoria de datos no voltil EEPROM con posiciones libres de la memoria de cdigo FUSH.

REGISTRO PIE1

Figura 3.4. Designacin y funciones de permiso y pi-ohihicin de los hits del registro PIEI.

PRINCIPALES REGISTROS DE CONTROL Y MANEJO DE LAS MEMORIAS FLASH Y EEPROM

49

REGISTRO PIE2

Figura 3.5. Designacin y funciones de los bits del registro PIE2.


C

Para manejar la memoria EEPROM de 64 bytes del PIC16F84 bastaban dos registros para proporcionar la direccin a acceder y para guardar el dato de 8 bits que se lea o se iba a grabar. Como
slo existan 64 posiciones en la EEPROM, para contener la direccin bastaba con un registro de 8
bits: el EEADR. El dato ledo o a escribir, de tamao byte, se colocaba en el registro EEDATA.
Como en los PIC16F87x tambin se puede leer y escribir la memoria FLASH y sta puede alcanzar un tamao de 8 K palabras de 14 bits cada una. No es suficiente con un solo registro para la
direccin, que alcanza los 13 bits, y lo mismo sucede para el dato, que tiene una longitud de 14 bits.
Para cubrir esta necesidad, el registro EEADR se concatena con el EEADRH, que contiene los 5 bits
de ms peso de la direccin. Por otra parte, el registro EEDATAH se concatena con el EEDATA y
contiene los 6 bits de ms peso de la palabra leda o a escribir en la FLASH, Estos dos nuevos registros no se usan en las operaciones que afectan a la EEPROM. (Figura 3.7.)
Para controlar la operacin de lectura/escritura de las memorias EEPROM y FLASH hay dos registros denominados EECONl y EECON2. El EECONl (Figura 3.8) ocupa la direccin 18Ch, mientras
que el EECON2, como suceda con el PIC 16F84, no est implementado fsicamente y slo se utiliza en

REGISTRO P l R l

REGISTRO PIR2

Figura 3.6. Los bits de los registros PIRl y PIR2 contienen los seializadores de las causas que producen
las interrupciones, en correspondencia con los registros PIE1 y PIE2.

50

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

la delicada operacin de escritura, que tiene la elevada duracin de 2 milisegundos, aproximadamente.


Antes de iniciar la escritura de una palabra se escribe en EECON2 primero el dato 55h y luego el A&.
Se proponen algunos programas fundamentales para manejar las operaciones de lectura y escritura en las memorias EEPROM y FLASH. En la parte dedicada a programacin se incluye un ejercicio completo sobre este tema.
Es una buena prctica de programacin verificar que todos los valores escritos en las memorias
EEPROM y FLASH son correctos.
Para evitar escrituras indeseadas en la EEPROM motivadas por espreos en la inicializacin del
microcontrolador, se controla el bit WREN, prohibiendo cualquier operacin de escritura mientras
duran los 72 milisegundos que temporiza el Timer de Power-up. Para realizar la misma proteccin

Figura 3.7. Para contener la direccin y el dato de la memoria FLASH se necesitan dos registros para cada valor.

PRINCIPALES REGISTROS DE CONTROL Y MANEJO DE LAS MEMORIAS FLASH Y EEPROM


REGISTRO EECONl

Figura 3.8. Denominacin y misin de los bits del registro EECONl.

51

52

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

en la memoria FLASH se debe poner a O el bit WRT de la Palabra de Configuracin, que slo puede escribirse desde un grabador externo.
Dependiendo del valor del bit WRT y de los bits de Proteccin de Cdigo CPl y CPO, ubicados
en la Palabra de Configuracin, se consiguen diversas alternativas de proteccin contra lectura y escritura de la FLASH. (Figura 3.9.)

Figura 3.9. Diversas posibilidades de proteccin de la memoria FLASH ante operaciones de lectura y escritura, de acuerdo con los valores de los bits WRT, CPl y CPO de la Palabra de Configuracin.

UN PROGRAMA QUE MANEJA LAS MEMORIAS FLASH DE CDIGO Y


EEPROM DE DATOS
En este mismo captulo se han visto trozos de cdigo para leer y escribir la memoria FLASH de instrucciones y para escribir la memoria EEPROM de datos. Vamos a realizar ahora un ejercicio que
rena la utilizacin de estas dos memorias. Para ello, consideraremos que los cdigos ya vistos, con
una pequea modificacin, son subrutinas a las cuales se llamara para realizar procesos de lecturalescritura sobre las citadas memorias. As, tendremos las siguientes subrutinas:
LEER-FLASH
ESCRIBIR-FLASH
LEER-EEPROM
ESCRIBIR-EEPROM

Falta por realizar el cdigo correspondiente a la lectura de la EEPROM, que una vez convertida
a subrutina quedara como sigue.

54

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

En las lneas que empiezan con * se pretende resaltar las modificaciones que habra que llevar a
cabo en los cdigos anteriores para convertirlos a subrutinas: poner como etiqueta el nombre correspondiente de cada subrutina y como ltima instruccin la return para volver al programa principal.

Enunciado
La posibilidad de escribir la memoria de cdigo mientras se est ejecutando un programa puede resultar interesante para ciertas aplicaciones. Imaginemos que en un programa se necesita saber si es
la primera vez que se utiliza, para pedir cierta informacin de configuracin por ejemplo, o si ya se
ha utilizado ms veces y dicha informacin ya se tiene. Hay muchos modos de hacer esto: se podra
preguntar al usuario, mirar cierta variable para determinarlo y ejecutar una subrutina u otra o, como
haremos aqu, modificar el programa la primera vez que se entra para en posteriores ocasiones ejecutar un cdigo diferente.
En nuestro programa, la primera vez que se ejecute se leer la primera posicin de la EEPROM (aunque no es estrictamente necesario lo haremos as para probar las funciones vistas en
este captulo). Si en dicha posicin se encuentra el valor 27h (que anteriormente deberemos grabar) significa que el programa no se ha ejecutado anteriormente, en cuyo caso se inicializarn una
serie de contadores y se modificar el programa para que la prxima vez que se ejecute los contadores no sean inicializados. Puede parecer que sera ms sencillo e igual de ptimo no modificar el programa, sino el valor de la EEPROM, y simplemente leer cada vez que se ejecuta el programa la primera posicin de sta, de modo que se salte a un punto u otro. La ventaja de nuestro
mtodo es que, aunque un astuto usuario quisiera hacer trampa a nuestro programa variando el valor de la EEPROM para que creyera que era la primera vez que se entraba en l, al haberse modificado el programa y, a no ser que tenga el original, le ser imposible saber cul era la secuencia
que segua esta primera vez. Se imagina que el cuentakilmetros de los coches tuviera un mtodo tan sofisticado?
En esta ocasin, para resolver el ejercicio slo necesitamos como base el organigrama ya que, al
no utilizar perifricos de E/S, el esquema elctrico no aporta ningn dato significativo.

Organigrama
El organigrama de la Figura 3.10 representa el funcionamiento ms completo del programa, la primera vez que se ejecuta. En siguientes ocasiones, ya desde la primera instruccin se saltar a otras
instrucciones.

Programa comentado
Antes de realizar el programa principal se debe hacer un primer programa con el cual se escriba
en la primera posicin de la EEPROM (direccin 00) el valor 27. Este primer programa se grabar en el PIC de la forma habitual y su cuerpo consistir en una llamada a la subrutina ESCRIBIR-EEPROM, habiendo antes metido en el registro ADDR-L el valor 00 y en DATA-L el valor 27.

PRINCIPALES REGISTROS DE CONTROL Y MANEJO DE LAS MEMORIAS FLASH Y EEPROM

55

OTRAS INSTRUCCIONES

Figura 3.10. Organigrama del programa en su primera ejecucin.

Antes de grabar un nuevo programa, como ya se expuso en el primer captulo, es necesario borrar el PIC, pero este borrado no afecta a la EEPROM, por lo que al grabar el programa que realmente nos interesa el valor 27 de la primera posicin permanecer ah.
Ahora, intente seguir el desarrollo del programa e imaginar cul ha sido el resultado final.

56

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

PRINCIPALES REGISTROS DE CONTROL Y MANEJO DE LAS MEMORIAS FLASH Y EEPROM

57

58

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Se ha dado cuenta de nuestra pequea trampa? Hemos introducido puntos de control a lo largo
de todo el programa poniendo a 1 los bits de un registro segn se iban ejecutando partes, y mostrando el valor total al final del programa. De esta forma, podemos comprobar de una forma rpida
y fiable el cambio de nuestro cdigo. Estos puntos de control no forman parte del programa en s,
por lo que no se muestran en el organigrama ni en el esquema elctrico. Una vez comprobado el
buen funcionamiento pueden ser eliminados.
El programa ha cambiado completamente, tal y como se muestra ms abajo. Tras la primera instruccin, la mayora de las instrucciones han sido cambiadas por el cdigo de operacin de la instruccin NOP. A partir de ese cdigo, aun teniendo acceso a l, sera imposible conocer el programa original. Este mismo mtodo puede utilizarse para aplicaciones de aprendizaje en el campo de
la Inteligencia Artificial, donde microbots controlados por microcontrolador pueden ir variando sus
programas dinmicamente para adaptarse a situaciones concretas.

Figura 3.11. PICME-TR mostrando el cdigo del programa una vez modiJicado.

PRINCIPALES REGISTROS DE CONTROL Y MANEJO DE LAS MEMORIAS FLASH Y EEPROM

59

Prueba del programa


En un programa donde no hay entradas y salidas el resultado no puede comprobarse a simple vista.
Podemos introducir puntos de control, como en nuestro caso, o utilizar herramientas adecuadas para ello. Los pasos a realizar son los siguientes:

60

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

AMPLIACIN DE PERIFRICOS PARA EL TRABAJO CON PIC


Con la aparicin de los PIC 16F87x,surge la necesidad de disponer de herramientas que saquen todo el partido a los nuevos recursos que incorporan. El tratamiento de sensores analgicos y la regulacin d e motores, que estos PIC son capaces de gobernar mediante su hardware interno, ha impulsado a Microsystems Engineering a disear una plataforma con la que poder experimentar tcnicas
avanzadas de control.

La tarjeta de expansin Micro'PIC 110


La Micro'PIC 110 es una tarjeta de expansin que se conecta al Micro'PIC Trainer mediante el PICBUS tal y como muestra la Figura 3.12.
Se basa en la inclusin de perifricos de E/S relacionados con las nuevas caractersticas de los
PIC16F87x. En la Figura 3.13 se muestra una fotografa del Micro'PIC IIO con sus bloques fundamentales sealados.

Figura 3.12. Conexin de las tarjetas Micro'PIC Trainer y Micro'PIC IIO.

PRINCIPALES REGISTROS DE CONTROL Y MANEJO DE LAS MEMORIAS FLASH Y EEPROM

61

Figura 3.13. Fotografa de la tarjeta de expansin Micro' PIC 110 con las partes mas signijicativas remarcadas.

Alimentacin
Recibe una tensin de 12 VAC y un puente rectificador (DI) junto a un condensador (C1) rectifica
y filtra la VAC para entregarla a dos reguladores UA7805 (U1) y UA7812 (U2), que proporcionan
+5 VDC y +12 VDC respectivamente. Su esquema electrnico se muestra en la Figura 3.14.

62

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

IN

G
N

OUT

Figura 3.14. Esquema electrnico de la fuente de alimentacin.

Doble conector PICBUS


En la Figura 3.15 se puede observar el doble conector PICBUS. Se trata de dos conectores idnticos de 26 vas que soportan las mismas seales. Mediante un cable plano se conecta uno de dichos
conectores con el Micro'PIC Trainer, en donde se aloja el PIC bajo prueba. El otro conector puede
usarse para acoplar tambin al Micro'PIC Trainer Plus y as conformar un sistema completo con las
tres tarjetas, que pone a disposicin del usuario un abanico extenssimo de perifricos y un sistema
de desarrollo de aplicaciones profesional que facilitar en gran medida el diseo de aplicaciones.

Figura 3.15.

Esquema electrnico del doble conector PICBUS.

63

PRINCIPALES REGISTROS DE CONTROL Y MANEJO DE LAS MEMORIAS FLASH Y EEPROM

Generador de funciones
En base a un PIC16C54RC (U3), tal y como se muestra en la Figura 3.16, existe un generador de
onda cuadrada cuya frecuencia se puede seleccionar entre 8 valores diferentes con tres microrruptores (SW1).

Oscilador de 32.768 KHz


Compuesto por un cristal de cuarzo de 32.768 KHz y 2 condensadores de 27 pF, configura un oscilador de una frecuencia igual a la de resonancia del cristal. (Figura 3.17.)
La inclusin de este oscilador tiene la finalidad de permitir al temporizador TMR1 trabajar en la
modalidad en la que precisa una base de tiempos externa gobernada por un cristal de cuarzo.
La razn de haber elegido esta frecuencia es su estratgico valor, que tiene la propiedad de que
con 215 impulsos se consigue fcilmente el tiempo de 1 segundo.

Piezoelctrico
Se trata de un zumbador piezoelctrico que va a ser muy interesante para todas aquellas aplicaciones en las que se precise generar pitidos o beeps sonoros a modo de seales de aviso o alarma. (Figura 3.18.)

0vcc
a

a
v

.
I

-- C7

--

RPACKI

100n

D2

77

,b

4x10K

-- C4
--1op

SW1
-

(F

+
R2

0 X/64

U3

a
.
I

10K
O
4)

VCC

0 X/128

o Xl32

R1

ZC

MCLR
VSS
RBO
RB1
-- RB2
RB3

18
17
16
OSCl 15
O S C ~ 14
VDD 13
RB7 - 12
RB6 11
RB5 - 10
RB4

PlCl6C54RC

Generador de
Funciones
Figura 3.16. Esquema electrnico del generador de funciones.

0X116
0X/8
0 X/4
0 X/2
oX
ENABLE

64

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

27p

07.:;68K,
I

T I OS

O & 2 7 ~

Oscilador de 32.768KHz
Figura 3.17. Esquema electrnico del oscilador.

Piezoelctrico
10K
-

Figura 3.18. Esquema electrnico del zumbador piezoelctrico.

Sensores analgicos
La inclusin de un convertidor analgico/digital entre los recursos del PIC16F87x ha animado al fabricante a incluir un sensor de temperatura de tipo LM35D y un sensor de luz de tipo LDR. La tensin
de referencia necesaria que precisan los circuitos de alimentacin se ha resuelto con el circuito
LM336z-2.5V de National Semiconductor, que proporciona una tensin de 2,5 VDC. Mediante un
jumper se puede relacionar como tensin de referencia los +2,5 VDC o los +5 VDC de alimentacin.
Ambos sensores se muestran en la Figura 3.19 y forman junto a una resistencia un divisor de tensin que se alimenta con el voltaje de referencia seleccionado.

Figura 3.19. Esquema electrnico de los sensores analgicos.

PRINCIPALES REGISTROS DE CONTROL Y MANEJO DE LAS MEMORIAS FLASH Y EEPROM

65

Opto-triac para control AC


Para conseguir el control de la potencia de AC que se entrega en la carga es necesario conocer el momento en el que la tensin pasa por el valor de O VAC. El circuito detector de paso por cero puede observarse en la izquierda de la Figura 3.20 y consiste en un rectificador en puente Graetz que
recibe 12 VAC y saca una tensin rectificada en doble onda de 100 Hz, que se aplica al emisor del
optoacoplador 4N33. Cada vez que la seal vale O VAC no hay generacin de luz y el optotransistor se bloquea, y la tensin de su colector sube a +Vcc avisando del cruce por cero. Cada vez que la
VAC pasa por O V se obtiene en el colector del transistor un impulso positivo, que puede provocar
una peticin de interrupcin en el PIC.
En la tarjeta I/O se ha utilizado como carga una lmpara de incandescencia de 12 VAC gobernada su potencia mediante un opto-triac MOC3041.

Rels

Es un dispositivo muy usado en la industria y muy fcil de controlar. Basta un sencillo circuito de
excitacin para poder controlar la activacin o no de las bobinas que abren o cierran los contactos
que controlan la carga. La Figura 3.21 muestra los dos rels alojados en el Micro'PIC IIO.
Motor DC y driver L293B
Para el control de motores en la tarjeta Micro'PIC IIO se ha elegido el circuito integrado L293B, que
es capaz de controlar dos motores DC o uno PAP. Soporta una corriente de 1 A por canal.
Consta de 4 canales que son gobernados por seales de control EN1 y EN2 fcilmente generables por los recursos de los PIC16F87x, especialmente por el PWM.
A la izquierda de la Figura 3.22 se muestra uno de estos drivers. En este caso tiene conectado un
motor de corriente continua en sus salidas OUT1 y OUT2, cuyo control se lleva a cabo a travs de
EN1 para el encendido/apagado del motor e INl-IN2 para el sentido de giro.

LPI
12v

CROSS

Figura 3.20. Esquema electrnico del opto-triac para control AC.

MOC3041

66

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES


VCC

Figura 3.21. Esquema electrnico de los rels.

Optoacoplador encoder
Para realizar medidas sobre la velocidad del motor DC y de su posicionamiento,en el Micro'PIC 110
existe un optoacoplador de ranura ubicado fsicamente debajo del eje del motor. Ver parte derecha
de la Figura 3.22.
Para conformar un encoder basta recortar un disco de material rgido trasparente (plstico) y
realizar un orificio en su centro para pegarlo al eje del motor. Luego se dibujan unas franjas radiales opacas a la luz infrarroja. El nmero de franjas determinar la resolucin. El disco encaja en la
ranura del optoacoplador, que generar un pulso cada vez que pase una franja opaca.

l-

ENABLE O

3
2e

IN1
IN2

JPI

VDD

EN1
IN1
OUT1
GND
GND
OUT2
IN2
VDD

-r

VCC

o
4

IN4
OUT4
GND
GND
OUT3
IN3
EN2

14

l3

=IC8

100n

VCC O--

L293B

VCC
Motor 3-12VDC

Figura 3.22. Esquema electrnico del control de motores.

4.1. PUERTAS DE E/S


Los microcontroladores PIC16F87x encapsulados con 28 patitas disponen de tres Puertas de E/S (A,
B y C), mientras que los que tienen 40 patitas alcanzan las cinco (A, B, C, D y E). Todas las lneas
de estas puertas son multifuncionales, es decir, realizan diversas funciones segn estn programadas. Sin embargo, todas ellas tienen la capacidad de trabajar como lneas de E/S digitales.
Las caractersticas principales de las puertas son similares a las del PIC16F84, por eso en este
tema se intenta resaltar las novedades que aaden las de los PICl6F87x.

4.1.1. Puerta A
Slo dispone de 6 lneas, denominadas RAO-RAS. Son bidireccionales y su sentido queda configurado segn la programacin de los bits del registro TRISA. Si el bit O del registro TRISA se pone a 1, la lnea O (RAO) de la Puerta A funciona como entrada. Si se pone a 1 funciona como salida
y el contenido de la bscula de salida se aplica a la patita correspondiente, segn puede apreciarse
en el esquema de la Figura 4.1.
Al leer el registro PORTA de la Puerta A se lee el estado de las patitas, que es el que se halla escrito en la bscula de datos de la Figura 4.1. La escritura entraa una operacin de lectura-modificacin-escritura, o sea, se leen las patitas, luego se modifica su valor y finalmente se escribe en la
bscula de datos.
Las patitas RAOIANO, RAl/ANl y RA2/AN2, adems de lneas de E/S digitales tambin pueden actuar como los canales O, 1 y 2 por los que se puede aplicar una seal analgica al conversor
A/D. La patitas R A ~ / A N ~ / V Rtambin
E ~ + puede actuar como entrada de la Tensin de Referencia para los perifricos que la precisan. La patita RA4TOCKI acta como E/S digital y como entrada de
la seal de reloj para el Timer O. Por ltimo, la patita RAS/AN4/SS# tiene multiplexadas tres funciones: E/S digital, canal 4 para el conversor A/D y seleccin del modo esclavo cuando se trabaja
con la comunicacin serie sncrona.

68

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Figura 4.1. Esquema de conexionado de las patitas RAO-RA3 y RA5, que multiplexan la funcin de EIS digital con la de canal de entrada de una seal analgica para el Conversor AID.

Cuando se produce un Reset al conectar la tensidn de alimentacidn (POR :Powerin Reset) todas las
patitas de la Puerta A quedan configuradas como canales de entrada para e/ Conversor A/D y son
ledas como O.

Para seleccionar si las lneas de la Puerta A van a trabajar como E/S digitales o como canales de
entrada para el conversor A/D, hay que escribir el valor adecuado sobre el registro ADCONI, que
se estudiar con mayor profundidad al describir el conversor. De momento es suficiente con saber
que si se carga en dicho registro el valor O1 l x en sus 4 bits de menos peso, todas las lneas de la
Puerta A funcionan como E/S digitales y para ello habr que escribir la siguiente secuencia de instrucciones:

LAS PUERTAS DE E/S Y RECURSOS ESPECIALES DEL PROCESADOR

69

Figura 4.2. Tabla que recoge las caractersticas y bits ms importantes de los registros que manejan la
Puerta A. Cuando se pone una x signzjica desconocido, una u que no cambia y un - que no est implementado y se lee como O.

movlw b'0000 0 1 70'


movwf ABCONl

;Los 4 bits de menos peso son 0 1 10.


;Las lneas de la Puerta A son US digitales.

En la Figura 4.2 se presenta una tabla que recoge los registros que manejan la Puerta A.
4.1.2. Puerta B
Dispone de 8 lneas bidireccionales cuya funcin se elige mediante la programacin del registro
TRISB, igual que suceda en la Puerta A con TRISA. En el siguiente programa, se configuran como entradas las lneas RB<3-O> y RB<7:6>, mientras que RB<5:4> quedan asignadas como salidas.

Como se estudia al final de este tema, los PIC16F87x pueden ser programados con voltaje alto
y con voltaje bajo, siendo en este ltimo caso la misma tensin de alimentacin del microcontrolador VDD = 5 V la que se emplea en la grabacin del programa. En la programacin con voltaje alto, ste se introduce por la patita MCLR#/VPPy est comprendido entre 12 y 14 V. En la programacin con voltaje bajo por la patita MCLR#/VPPse aplican 5 V y la patita RB3/PGM hay que
conectarla a nivel alto. En la programacin con voltaje alto, esta ltima patita es una E/S digital normal. Como la programacin siempre se realiza sincronamente en serie, por la patita RB6/PGC se introducen los impulsos de reloj y por la RB7/PGD los bits de datos en serie.

70

MICROCONTROLADORES cPIC. DISEO PRCTICO DE APLICACIONES

Todas las patitas de la Puerta B disponen de una resistencia interna de pull-up al positivo de la
alimentacin, que queda conectada cuando el bit RBPU#, que es el bit 7 del registro OPTION, tiene valor O. La resistencia de pull-up, que es un transistor CMOS tipo P, como se aprecia en la Figura 4.3, se conecta automticamente siempre que la lnea est configurada como salida. Cuando
se produce un Reset por conexin de la alimentacin (POR) se desconectan todas las resistencias
pull-up.

RB7:RB6 E N M O D O PROGRAMACIN

E N SERIE

Figura 4.3. Conexionado interno de las patitas RB<7-4> de la Puerta B.

LAS PUERTAS DE E/S Y RECURSOS ESPECIALES DEL PROCESADOR

Figura 4.4.

71

Estructura de los registros que manejan la Puerta B.

Las lneas RB<7-4> pueden programarse, como en el PIC16F84, para generar una interrupcin cuando una de ellas cambia de estado. Se deben configurar como entradas y el valor que se
introduce por ellas se compara con el anterior para si no coinciden generar una interrupcin, siempre que lo autorice el bit de permiso. En cualquier caso, el sealizador RBIF, que es el bit O del
registro INTCON, se pondr a 1. Esta interrupcin es muy utilizada en el manejo de teclados matriciales.
La patita RBOIINT tambin puede programarse como peticin de interrupcin externa, si se
autoriza con el correspondiente bit de permiso, que tambin est ubicado en INTCON. La Figura 4.4
muestra algunas caractersticas de los registros que manejan la puerta B.

4.1.3. Puerta C
Consta de 8 lneas bidireccionales cuyo sentido se configura mediante el registro TRISC. Todas las
patitas de esta puerta tienen multiplexadas diferentes funciones.

4.1.4. Puerta D
Esta puerta de 8 lneas bidireccionales slo la tienen los PIC16F87x encapsulados con 40 patitas.
Ocupa la direccin 08h, mientras que su registro de configuracin TRISD ocupa la direccin 88h.
Todas las patitas disponen en su entrada de un Trigger Schmitt.

72

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Adems de usarse como lneas de E/S digitales normales, implementan una puerta paralela esclava de 8 lneas (PSP), que sirve para permitir la comunicacin en paralelo con otros elementos del
sistema.
Las patitas se denominan RDO/PSPO-RD7/PSP7 y para que funcionen como puerta de comunicacin esclava en paralelo es preciso poner el bit PSPMODE = l. Este bit es el 4 del registro TRISE, que se comentar en la Puerta E.
4.1.5. Puerta E

Ocupa la direccin 09h y slo la tienen los PIC16F87x con 40 patitas. Dispone de 3 patitas multifuncin, que se configuran como entrada o salida, segn el valor de los tres bits de menos peso del
registro TRISE, que est ubicado en la direccin 89h.
RFO/RD#/AN5. 15/S digitafleiial de lectura en el moda de puerta paralela eshva/canal5 del conversor
MI/WR#/ANG, /S digital/Ser?alde escritura en modo PSP/canal6 del conversor
&7/CS#/AN7= E/S digitaI/Seleccin de chip en el modo FP/mnal7 del conversor ND.

m.

La PSP acta como un puerto de comunicacin en paralelo de 8 lneas y para su activacin hay
que poner el bit PSPMODE a 1. Dicho bit es el 4 del registro TRISE. Adems de las 8 lneas de
transferencia de datos, se precisan 3 seales de control, que determinan si la operacin es de lectura, de escritura y de permiso de funcionamiento (RD#, WR# y CS#). Estas tres lneas de control estn implementadas en la Puerta E.
La nica diferencia apreciable entre los PIC 16F87x de 40 patitas con los de 28 radica en que los
primeros tienen las Puertas D y E y los segundos carecen de ellas. Con esas dos puertas se puede disponer de 11 lneas de E/S ms, o bien de un canal paralelo de comunicacin (PSP) con sus correspondientes seales de control.

Es una posicin reservada de la memoria de programa FLASH, que ocupa la direccin 2007h y que
slo es accesible durante la programacin del PIC. El valor de sus bits determina algunas caractersticas fundamentales (Figura 4.5).

LAS PUERTAS DE E/S Y RECURSOS ESPECIALES DEL PROCESADOR

Figura 4.5.

73

Denominacin de los bits de la palabra de configuracin, que ocupa la direccin 2007h de la


memoria de programa.

Se trata de cuatro palabras de la memoria de programa que se hallan comprendidas entre la direccin 2000h y la 2003h y estn reservadas para que el usuario las pueda emplear en funciones de
comprobaciones o cheksums, cdigos de identificacin, nmeros de serie, fecha, modelo, lote,

nmeros secuenciales o aleatorios, etc. Estas cuatro posiciones slo son accesibles en lectura y escritura durante la operacin de programacin/verificacin.
Slo se deben emplear los 4 bits de menos peso de cada una de las palabras de identificacin.

Los PIC16F87x disponen de diversas maneras de reinicializarse, de forma similar a como ocurra
con el PIC 16F84, que se citan a continuacin.

Los bits TO# y PD# del Registro de Estado toman un valor determinado en cada tipo de Reset.
Tambin los bits O y 1 del registro PCON, llamados BOR# y POR#, respectivamente, sirven para especificar las causas de un Reset. En la la tabla de la Figura 4.6 se muestran estos bits y el tipo de Reset asociado.
Las x significan que pueden tener valor O o 1 indistintamente, ya que no se conoce su valor, y las
u que su valor no vara con respecto al que tena antes del Reset.
En la Figura 4.7 se muestra el esquema elctrico en el que se representan las causas y seales que
originan un Reset.
Como se deduce de dicha figura, la generacin del Reset ocurre como consecuencia de la salida
de un nivel lgico alto de la puerta OR1, la cual es controlada por todas las causas que reinicializan
al PIC.

Figura 4.6.

Determinacin de la causa del Reset.

LAS PUERTAS DE E/S Y RECURSOS ESPECIALES DEL PROCESADOR


MC

75

RESET EXTERNO

HABlLlTAClON OST

PWRl
- - - - - m - -

1
i
1

OSCllADOR
INTERNO RC

HABILITACIN
PWRT

Figura 4.7.

La generacin del Reset se produce al activar la entrada S de la bscula, cuando sucede alguna de las condiciones que se aplican a la puerta O R l . Los temporizadores OST y PWRT retardan el Reset al actuar sobre la entrada R de la bscula de salida.

1.8 ~ C f i v a ~de
k lla~ patita W L R # .
2.aD~sbw&m'mto
del perra guwdi4n u W7:
Ra Cmexih de fa alirnentwidn (POR).
4." Caida en 1s tensitn de alkmmtacidn (BQlrl).

El temporizador PWRT retarda el Reset un tiempo fijo de 72 ms con la finalidad de garantizar la


estabilidad de VDD,mientras que el temporizador OST produce un retardo de 1 .O24 ciclos de la frecuencia aplicada por la patita OSC, con el objetivo de asegurar que el cristal de cuarzo del oscilador principal est estabilizado y en marcha.

76

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Tras un Reset, el Contador de Programa queda cargado con el valor OOOh en todos los casos,
menos cuando se produce por el desbordamiento del WDT o cuando se despierta del modo SLEEP
por una interrupcin, en cuyos casos el PC se carga con el valor PC+1.
En la tabla de la Figura 4.8 se indican los valores que toman los registros especficos del microcontrolador tras producirse los diversos tipos de Reset.

LAS PUERTAS DE E/S Y RECURSOS ESPECIALES DEL PROCESADOR

Figura 4.8.

77

Valores de los registros especllficos tras los diversos tipos de Reset.

El WDT de los PIC 16F87x es similar al del PIC 16F84. Se trata de un contador que funciona con los
impulsos de su propio oscilador y que provoca un Reset cuando se desborda en funcionamiento normal. Si el desbordamiento se produce cuando el microcontrolador se halla en estado de Reposo, se
despierta y sigue su comportamiento normal. En la Figura 4.9 se muestra un esquema con los bloques principales que constituyen al perro guardin.
Las instrucciones CLRWDT y SLEEP borran o ponen a cero el valor de contaje del WDT y el
del Postdivisor. Si se ejecuta la instruccin CLRWDT y el Predivisor de Frecuencia est asignado
al perro guardin, se borra, pero no cambia su configuracin.

4.6. MODO DE REPOSO O DE BAJO CONSUMO


En este modo especial de funcionamiento del microcontrolador se introduce cuando se ejecuta la
instruccin SLEEP, igual que en el PIClF84. Esta manera de trabajo se caracteriza por su bajo consumo y parece que el PIC se ha congelado. Las lneas de E/S digitales que se utilizaban mantienen su estado, las que no se empleaban reducen al mnimo su consumo, se detienen los temporizadores y tampoco opera el conversor A/D.
Al entrar en el modo de Reposo, si estaba funcionando el WDT se borra pero sigue trabajando.
Para salir de este estado (despertar) y pasar a ejecutar la instruccin direccionada por PC+l
existen varias causas.

78

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES


DESDE TMRO

SALIDA WDT

Figura 4.9. Esquema simplzj?cado por bloques del perro guardin.

4.7. PROGRAMACIN DE LOS PIC16F87X


La posibilidad de programar a esta subfamilia de PIC en serie permite grabar en la memoria de cdigo el programa de trabajo, estando colocado el PIC sobre el circuito o producto de aplicacin final. Esta caracterstica permite a los fabricantes construir y montar completamente la tarjeta de circuito impreso y dejar pendiente la grabacin del programa en el PIC hasta el momento de la venta,
pudiendo incluir el firmware ms reciente que se disponga en cada momento.

LAS PUERTAS DE E/S Y RECURSOS ESPECIALES DEL PROCESADOR

79

La programacin en serie tpica, que se realiza con un Voltaje Alto de 12 a 14 V aplicado por la
patita MCLR#/Vpp,requiere el uso de 5 patitas del PIC:

Una gran aportacin en los PIC16F87x la constituye la programacin con Voltaje Bajo (LVP:
Low Voltage Programming), que no requiere la tensin de 12 a 14 V. Para grabar en este modo, hay
que poner el bit LVP = 1, que reside en la Palabra de Configuracin y la patita RB3/PGM se debe
conectar a nivel alto. Entonces por la patita MCLR#/VPPse aplica la tensin VDD de 5 V mientras
dura la operacin de grabado. Cuando no se opera en este modo de programacin se puede usar la
patita RB3 como una lnea de E/S digital.

PROGRAMAR PIC ES FCIL

UTILIZACIN DE LOS RECURSOS DEL PIC


En el captulo anterior, vimos cmo se trabajaba con las puertas de E/S. Vamos ahora a partir del
mismo ejercicio pero se va a introducir el modo de reposo o bajo consumo y el perro guardin. El
esquema elctrico no vara con respecto al del captulo anterior, pero s el organigrama.

Organigrama
Segn el valor de dos interruptores, se encendern o apagarn 10s diodos de la Puerta B pero, antes
de volver a mirar el valor de dichos interruptores, se meter al microcontrolador en estado de reposo, del cual despertar al desbordarse el perro guardin, inicindose de nuevo el proceso.

INICIALIZACI~N
PA ENTRADA

CONFIGURACIN DEL
PERRO GUARDIN

+*
ENCENDER LEDs

7SLEEP

Figura 4.10. Organigrama del ejercicio.

LAS PUERTAS DE E/S Y RECURSOS ESPECIALES DEL PROCESADOR

Programa comentado
El programa, una vez adaptado al uso de estos nuevos recursos, queda de la siguiente manera:

81

82

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Los cambios son mnimos y aparecen marcados con

*.

La configuracin del perro guardin consiste en asignarle el predivisor de frecuencias, de modo


que tarde ms en desbordarse si no se le refresca, lo cual ampla considerablemefite el tiempo entre
refrescos y evita as muchas instrucciones de ese tipo.
Tras encender o apagar los LEDs y, tras borrar el perro guardin, se entra en estado de reposo o
bajo consumo, del cual saldr al desbordarse el perro guardin, volviendo as a comprobar los interruptores para volver a encenderlapagar los LEDs. En este caso no es necesaria la instruccin de refresco del perro guardin, ya que al entrar en sleep se resetea l solo.

Prueba del programa


Para la puesta en marcha de este programa, se seguirn los mismos pasos que en el captulo anterior
con excepcin de la grabacin. La Palabra de Configuracin, modificable en el proceso de grabacin, sirve entre otras cosas para habilitar o no el perro guardin. Puesto que estamos controlando
su funcionamiento, se deber activar poniendo a SI la opcin Watchdog T. De este modo, a efectos del usuario, el programa seguir funcionando del mismo modo. En caso de no habilitar el perro
guardin, una vez que se hayan encendido o apagado los LEDs en la primera ejecucin del programa, ste entrar en estado de reposo, del cual no podr salir.

LAS PUERTAS DE E/S Y RECURSOS ESPECIALES DEL PROCESADOR

83

Aunque la filosofa de los microcontroladores PIC es actuar como sistemas cerrados, limitados a sus
propios recursos, a veces se hace necesaria su ampliacin para dotarles de ms memoria, aumentar
su capacidad de manejo de perifricos de E/S, e incluso conectarle con otros PIC para delegar en
ellos subtareas, de modo que se permita el trabajo en paralelo. stas son algunas de las posibilidades que nos presenta la tarjeta de ampliacin Micro'PIC Trainer Plus.

La tarjeta de ampliacin Micro'PIC Trainer Plus


El Micro'PIC Trainer Plus es un equipo que conectado al sistema de desarrollo Micro'PIC Trainer
permite ampliar y experimentar con los recursos ms avanzados de los microcontroladores PIC. Como se ver en los Captulos 8 y 9, los PIClGF87x incorporan en su chip distintos mdulos que permiten la comunicacin con dispositivos externos.
Tal es el caso del USART, que permite la comunicacin con, por ejemplo, perifricos como el
ordenador.
Las partes fundamentales de que consta esta tarjeta se muestran en la Figura 4.11.

Figura 4.11. Tarjeta de ampliacin Micro'PIC Trainer Plus con las partes ms significativas sealadas.

84

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Descripcin del esquema electrnico


En la Figura 4.12 se ofrece el esquema electrnico de la tarjeta de ampliacin de perifricos Micro' PIC Trainer Plus.
Est compuesta por 6 bloques principales:

1."
2."
3."
4."
5."
6."

Teclado.
Canal serie RS-232.
Reloj/calendario.
Mddulo de visualizacin.
Mdulo conversor A DUDAC.
E/S paralelo.

El teclado
La conexin con el Micro'PIC Trainer de esta tarjeta de ampliacin se realiza a travs del conector
CNl, que proporciona todas las lneas del PIC, as como las de alimentacin.
El teclado matricial de 4x4 est conectado con las lneas de la Puerta B (RBO-RB7). El programa de control del teclado configurar RB7-RB4 como salidas para ir activando secuencialmente las filas una a una. Las lneas RB3-RBO se configuran como entradas desde las columnas del teclado y son ledas para detectar si hay alguna tecla pulsada.
En caso de trabajar con un PIC que utilice el bus I2C, se usa RC3 y RC4 para las seales SCL
y SDA, respectivamente, para lo cual hay que utilizar adecuadamente los jumpers J1 y 52.

LAS PUERTAS DE E/S Y RECURSOS ESPECIALES DEL PROCESADOR

85

86

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

El canal serie RS-232


El circuito principal de esta seccin es el MAX232 (U5), que convierte los niveles TTL presentes en
la patita 11 de transmisin (Tx), en niveles lgicos RS-232, que se obtiene en la patita 14 (TxD) y se
aplican al conector DB9 (CN2). La seal de recepcin RxD llega desde el canal serie a la patita 13
de U5 con niveles RS-232, que son convertidos a niveles TTL y se obtienen en la patita 12 (Rx).
Las seales Tx y Rx se controlan desde RC6 y RC7 si se trabaja con un PIC, que incorpora un
USART en su hardware. Si se gestiona la comunicacin con software, se emplean las lneas RB4 y
RB5. La seleccin de uno u otro modo se realiza mediante los jumpers J3 y 54.

Reloj calendario
Est basado en el circuito integrado PCF 8583P (U2), diseado para conectar al bus I2C. Adems
de las funciones horarias clsicas, tambin realiza funciones de alarma y temporizacin.
Contiene 256 posiciones de RAM esttica de 8 bits cada una, de las cuales las 16 primeras estn
usadas para las funciones de reloj, calendario, alarma y temporizacin. Quedan 40 posiciones libres
para el usuario, quien puede usarlas como RAM no voltil en caso de alimentar al PCF8583 con una
batera recargable de Ni/Cd.

Mdulo de visualizacin
Est compuesto por 4 displays de 7 segmentos controlados por el circuito integrado SAA1064 (Ul)
adaptable al bus I2C.
Mediante las lneas SDA y SCL, el PIC maestro enva la informacin a visualizar en los displays,
mediante un multiplexado sobre las mismas. Inicialmente, por las lneas P l -P8 aparece la informacin a representar en el dgito l y por P9-P16 la correspondiente al dgito 3. Simultneamente se activa la seal MX1 que hace conducir al transistor Q1, que gobierna los nodos comunes de dichos
dgitos. Despus, por P1-P8 y P9-P16 aparece la informacin a visualizar en los dgitos 2 y 4 con la
seal MX2 que controla Q2. Este proceso se repite a gran velocidad y de forma indefinida, provocando la sensacin visual de tener encendidos los 4 dgitos a la vez.

Mdulo ADC y DAC


Est centrado en el circuito integrado PCF8591 (U3) para el bus I2C. Consta de un Conversor Analgico/Digital ADC de 8 bits con 4 canales de entrada ANO-AN3. Tambin dispone de un Conversor DigitallAnalgico DAC de 8 bits cuya tensin de salida se obtiene por AOUT.
La seal analgica de tierra, as como la tensin de referencia necesaria, se aplican por AGND
y VREF.

Puerta de EIS paralelo


El circuito integrado PCF8574A (U4) diseado para conectarse al bus 12C proporciona una puerta
paralelo con 8 lneas de Entrada o Salida, dependiendo que se lean o escriban PO-P7. De esta manera, usando el bus 12C soportado por dos lneas, se pueden ampliar las puertas de E/S de un PIC.

Los PIC16F87x disponen de un potente conjunto de temporizadores para manejar eficientemente todas las operaciones que involucran al tiempo y al contaje. Dichos temporizadores son tres y se denominan tcnicamente TMRO, TMRl y TMR2.
El TMRO es idntico al que tiene el PIC 16F84 y sus funciones ms representativas son:

1.@
TlWRO @Sun
8 bias.
2." lis&/@-/ 8scribibb.
.
3."Reloj interno o Ox@rnonO
4.0 Selsccibn del flanm sn el rebj emft30.
5." Predivisor de la frecuencia de reloj progrmabie.
6.aGenerwih de interrupcibn &dona/ en el dwbordamento.

En el tema anterior, se present al registro OPTION, encargado del control del TMRO y cuyas
funciones son conocidas del PIC 16F84.
Los nuevos temporizadores que incluyen los PIC 16F87x son ms potentes y flexibles que el sencillo TMRO. As, el TMRl se caracteriza por:

lee W R I es un Contadorflernporizador de f 6 b b .
2." Ceble y e s c r ' l e .
3."SaltacciBn de reloj interno o exferno,
4," intwrupcin o p c i w l por desbordmiep1tode FFFh sa CQQOh.

5."Posible rrainicialjzaci6n &8&

..

lw mddulm CCR

Finalmente, el TMR2 tiene las siguientes caractersticas fundamentales.

87

88

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

1.a TMR.2e$ un Tempsrizador de 8 bits.


2." Dispone de un Registro de Perodo de 8 bits (Pff2).
3.8 Lelble y escribible,
4.' Predivisor de frecuencia programable.
5,"~stdivisor de frecuencia progrmable.
6,"Int@rrupcidnopcional al coincidir M 2 y PRZ.
7,' Posibjljdad de generar impulsos al mjula SSF!

5.2. ESTRUCTURA INTERNA Y FUNCIONAMIENTO DEL TMRl


El TMRl es el nico Temporizador/Contador ascendente con un tamao de 16 bits, lo que requiere
el uso de dos registros concatenados de 8 bits: TMRlH:TMRlL, que son los encargados de guardar
el valor del contaje en cada momento. Dicho valor evoluciona desde OOOOh hasta FFFFh, instante
en el que se activa el sealizador TMRlIF y se regresa al valor inicial 0000h. Tambin, si se desea,
se puede provocar una peticin de interrupcin.
El valor contenido en TMR1H:TMRlL puede ser ledo o escrito y los impulsos de reloj que originan el contaje ascendente pueden provenir del exterior o de la frecuencia de funcionamiento del
microcontrolador (Foscl4).
El TMRl es capaz de funcionar de tres formas:
1.a Como femporizador:

2." Como contador slncrono.


3.a Como contador aslncrono.

En el modo Temporizador el valor concatenado TMR1H:TMRlL se incrementa con cada ciclo


de instruccin (Fosc14). En el modo contador, el incremento se puede producir con los flancos ascendentes de un reloj externo, cuya entrada se aplica a las lneas RCO y RC1 de la Puerta C, o por
impulsos aplicados en la lnea RCO. En la Figura 5.1 se muestra el diagrama por bloques del TMRl,
en el que destacan las diversas seales de control y el predivisor de frecuencia.

Figura 5.1.

Esquema interno de los principales bloques del TMRl con sus seales de control.

LOS TEMPORIZADORES

89

5.3. REGISTRO DE CONTROL DEL TMRl (TICON)


El funcionamiento del TMRl est gobernado por el valor con el que se programan los bits del registro T1CON, que ocupa la direccin 1Oh de la memoria RAM y cuya denominacin y distribucin
se presentan en la Figura 5.2.
El bit TMRl ON gobierna el permiso o la prohibicin de funcionamiento del Timerl . En caso de
poner un O en dicho bit el TMRl no funciona.
El bit TMRl CS selecciona la fuente de los impulsos de contaje. Si vale O elige el reloj interno
(Fosc/4) y si vale 1 el reloj externo que se aplica por las patitas RCO y RC l .
Cuando los impulsos proceden de un reloj externo, es preciso que el bit Tl OSCEN tenga valor
1, en cuyo caso las patitas RCO/TlOSO/Tl CKI y RC l/Tl OSI/CCP2 actan como entradas del oscilador externo. Si TI OSCEN vale O los impulsos vendrn a travs de RCO/Tl OSO/Tl CKI. En ambos casos, el TMRl funciona como contador de eventos externos y los bits 1 y O (utilizados) del registro TRISC carecen de significado, ya que una o ambas patitas RC1 y RCO no pueden actuar al
mismo tiempo como entrada de impulsos y como lneas de E/S.
Entre las patitas RC1 y RCO se puede poner un cristal de hasta una frecuencia de 200 KHz. En
estas condiciones, el oscilador puede seguir funcionando aunque se fuerce el estado de bajo consumo o SLEEP.
El predivisor de frecuencia (Preescaler) es un simple divisor de la frecuencia de los impulsos
que se aplican al TMRl por 1 , 2 , 4 u 8. El rango de divisin lo eligen los bits Tl CKPSl y TI CKPSO
segn la siguiente tabla.

El bit TlSYNC# determina la posible sincronizacin o no de los impulsos del reloj externo con
los del reloj interno, segn valga O o 1 respectivamente.
El TMRl puede generar una peticin de interrupcin cuando se produce el sobrepasamiento
del contaje, es decir, cuando se pasa desde FFFFh a 0000h. En esta situacin, se pone automticamente a 1 el flag TMRIF, que es el bit O del Registro Especfico PIRI, que est ubicado en la
direccin OCh de la RAM. El permiso o prohibicin de la produccin de interrupcin del TMRl,
est controlada por el bit TMRlIE, que ocupa la posicin de menos peso del Registro Especfico
PIE1 (8Ch).

REGISTRO T I CON

Figura 5.2. Nomenclatura y distribucin de los bits del registro de control del TMRl.

90

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Cuando el mdulo CCP (captura-comparacin-PWM) est configurado como comparador para


generar un disparo especial (CCPlM3-CCPIMO = 1011), dicha seal resetea el TMRl. Para
aprovechar esta caracterstica, el TMRl debe estar configurado en modo temporizador o contador
sncrono. En otro caso no se produce el Reset.

5.4. CHULETA-RESUMEN DE LOS REGISTROS ASOCIADOS AL TMRl


En la Figura 5.3 se ofrece una tabla con los registros principales que controlan el comportamiento
del TMRl y la distribucin de los bits.

5.5. FUNCIONAMIENTO Y PROGRAMACIN DEL TMR2


Se trata de un Temporizador ascendente de 8 bits, que se puede leer y escribir, y que tambin puede realizar funciones especiales para la Puerta Serie Sncrona (SSP) y con los mdulos de captura y
comparacin. Ocupa la direccin 1 l h del mapa de los registros especficos.
La seal de reloj del TMR2 es interna Fosc/4, y antes de ser aplicada pasa por un predivisor de
frecuencia con rangos de 1:1, 1 :4 y 1:16. La salida del TMR2 atraviesa un postdivisor de frecuencia con rangos de divisin desde 1:1 a 1:16, pasando por los 16 valores posibles.
Al entrar el microcontrolador en modo de reposo o SLEEP, se detiene el oscilador interno y al
no existir la seal Fosc/4 deja de funcionar el TMR2.
Para controlar el funcionamiento del TMR2 se usa el registro T2CON, que ocupa la direccin
12h del mapa de los registros especficos y cuya distribucin y asignacin de bits se muestra en la
Figura 5.4.

Figura 5.3.

Resumen de los registros ms importantes que se encargan de programar el funcionamiento del


TMRI, con la nomenclatura de sus bits, sus direcciones y el estado que toman despus de diversas situaciones de Reset. El valor 'x' signijica indeterminado, 'u' que permanece invariable
y los no implementados (-) se leen como O.

LOS TEMPORIZADORES

91

REGISTRO T 2 C O N

Figura 5.4.

Distribucin y asignacin de los bits del registro T2CON, que sirven para programar el trabajo del TMR2.

Los bits 1 y O del T2CON (T2CKPS1 :T2CKPSO)sirven para seleccionar el rango de divisin del
predivisor de impulsos de la siguiente forma:

El bit TMR20N sirve para permitir (1) o prohibir (O) el funcionamiento del TMR2. El bit de ms
peso no es significativo y los cuatro bits restantes (TOUTPS3-TOUTPSO) determinan el rango por
el que divide la frecuencia el postdivisor, de acuerdo al siguiente cdigo:

El sealizador de desbordamiento del TMR2 es el bit 1 (TMR2IF) del registro PIRI, que ocupa
la direccin OCh. Ver la chuleta-resumen de registros de la Figura 5.6.
El predivisor y el postdivisor se ponen a O al escribir el TMR2, al escribir el T2CON o con un
Reset. Sin embargo, cuando se escribe el T2CON no se borra el TMR2. Pasa a valer O el contenido
del TMR2 cuando se produce un Reset.
El TMR2 tiene asociado un Registro de Perodo PR2, que ocupa la direccin 92h. Cuando el
valor de contaje del TMR2 coincide con el valor cargado en PR2 se genera un impulso en la salida
EQ (Figura 5.5) y se resetea el TMR2. Estos impulsos en EQ pueden ser divididos por el postdivisor antes de activar el sealizador TMR2IF.
Este temporizador tambin tiene la capacidad de producir una peticin de interrupcin si se pone a 1 el bit TMR2IE de habilitacin, que reside en el registro PIE1 (8Ch). Adems, con la programacin adecuada, los impulsos de salida del TMR2 (antes del postdividor) pueden actuar como base de tiempos para el mdulo SSP.

92

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

SALIDA TMR2 A SSP

-- FOSCl4 RELOJ
-

. -----. -

m -

Figura 5.5. Esquema por bloques de la estructura del TMR2.

5.6. CHULETA-RESUMEN DE LOS REGISTROS ASOCIADOS AL TMR2


En la Figura 5.6 se ofrece una tabla que resume los bits de los registros que se utilizan en el manejo del TMR2.

Figura 5.6. Resumen de los bits de los registros que se utilizan en el manejo y programacin del TMR2.

LOS TEMPORIZADORES

93

MIDIENDO EL TIEMPO
La mayora de los programas tienen una o ms rutinas de temporizacin. Dicha temporizacin se
puede realizar mediante bucles anidados en que se van decrementando el valor de varios contadores hasta llegar a O o, ms eficientemente, descargando de esta tarea a la CPU, utilizndola para otras
cosas, mientras un temporizador especial que lleva la cuenta. En este captulo se ha hablado del aspecto terico de los temporizadores; vamos ahora a llevarlo a la prctica mediante un ejercicio. El
uso de los temporizadores es tan comn que en captulos posteriores se seguirn mostrando ejemplos de utilizacin aunque no sea el recurso a estudiar.

Enunciado
Se quiere que el temporizador TMRl se comporte como un contador de eventos externos. Dichos
eventos vendrn por la lnea RCO/TlCKI desde el generador de onda del Micro'PIC 110. Si cuenta
los eventos durante 0,250 seg y el resultado se multiplica por 4, se obtiene el nmero de pulsos por
segundo (herzios). Cambiando el intervalo de tiempo de medicin se podran medir KHz, MHz, etc.
Si en lugar de ser el generador el que proporcionara los pulsos, fuera el optoacoplador asociado al
motor del Micro'PIC 110, estaramos consiguiendo medir su velocidad. Los herzios se van a mostrar, adems, por la pantalla LCD del Micro'PIC Trainer. El TMRO va a funcionar como temporizador auxiliar.

Esquema elctrico
La nica conexin que deber realizarse entre el Micro'PIC 110 y el Micro'PIC Trainer, adems del
PICBUS, es entre la salida del generador y la patita RCO/TlCKI de entrada de pulsos para el TMRl .
En la Figura 5.7 se muestran las conexiones al completo.

Organigrama
Una vez ms, el organigrama del programa principal es tan simple como la inicializacin de los diferentes registros y recursos a utilizar, y la espera en un bucle a que se produzca una interrupcin,
que ser la que realmente realice las operaciones necesarias. (Figura 5.8.)

94

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Vss

Vdd

Vo RC R/W#E

GENERADOR
MICRO'PIC 110

Figura 5.7. Esquema elctrico del ejercicio propuesto.

DO D I D2 D3 D4 D5 D6 D7

LOS TEMPORIZADORES

95

INKML~ZACI~N
PA W D A
PBSALlDA
PC EMlZADA

COMFIWRAC~~N
TMRO, TMR1

m1 = a

TMRO = C2(196]

HABKITACK~I\I
$M:TMRO

Figura 5.8. Organigrama del ejercicio.

Se entrar en la rutina de interrupcin cada 50 ms. ste es el tiempo aproximado que tarda el
TMRO en desbordarse con los valores cargados. Como se requiere una temporizacin de 250 ms, se
entrar en dicha interrupcin 5 veces, antes de hacer el tratamiento verdadero. Una vez llegado a
este punto se visualizar el TMR1, que se habr ido incrementando con los pulsos proporcionados
por el generador, en la pantalla LCD y, tras reponer los valores adecuadamente, se volver al programa principal hasta que se produzca una nueva interrupcin. (Figura 5.9.)

Figura 5.9. Organigrama de la rutina de tratamiento de interrupcin.

96

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Programa comentado

El programa quedar de la siguiente manera:

LOS TEMPORIZADORES

97

98

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

LOS TEMPORIZADORES

99

Prueba del programa


Se debern conectar las lneas tal y como muestra el esquema elctrico. Adems, se deber tener en
cuenta:
1.0
+ @ ! ? f ~ j 6 & I ~ ' P K : T i n e t & M a s f w ~ 8 1 r k i l d a ',
2.' Los interruptores RAU-RZL? del Micro'PIC Trainer deben permanecer activados para no int8fbrir
con el funcianam@rttudeal M3D.

La Figura 5.10 muestra una fotografa del programa funcionando. En el LCD puede observarse
el valor numrico que muestra los herzios y el osciloscopio los pulsos generados por el oscilador del
Micro' PIC IIO.

Figura 5.10. Fotografa del ejercicio propuesto en ejecucin.

100

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Tarjetas como la Micro'PIC Trainer Plus y la Micro'PIC 110 pueden ser muy adecuadas para la depuracin de programas, ya que cada una de ellas dispone de perifricos de E/S variados junto con
sus controladores. Esto permite la prueba de diferentes rutinas facilitando as el aprendizaje.
Sin embargo, cuando se acomete un proyecto real, a menudo los sensores y actuadores no se encuentran sobre la tarjeta, sino sobre el elemento al cual controlan. Para esto se hace necesario que
la circuitera de control guarde cierta independencia de los sensores y actuadores.

La tarjeta MSx84
Se trata de una controladora de motores y sensores que puede contener un PIC 16F84 de 18 patitas
para su gobierno o puede conectarse a otro sistema como el Micro'PIC Trainer que, a travs del
PICBUS, puede pasarle las seales de un PIC de un mximo de 28 patitas.
Las partes ms importantes se muestran en la Figura 5.11.

Figura 5.11. Fotografia que muestra las partes ms importantes de la MSx84.

LOS TEMPORIZADORES

101

Descripcin del esquema electrnico


En la Figura 5.13 se muestra el esquema de la tarjeta MSx84, que est compuesto de cuatro bloques
principales:
7." Fuente de alimentacidn.

2.O Seccin del rnicroconfrdador.


3.' Control de motorcss. .
4." SecciBn de sensores.

REFERENCIA

REFERENCIA

RBD

SO

REO

$0

RE1

S1

RE1

51

RB2

52

RE2

52

RB3

53

RE3

53

RA4
RAO

S4

$4

INI!IN2

RA4
RAO

RAI

IN4AN3

RA~

IN41N3

RA2
RA3

EN1

RAZ

EN1

EN2

RA3

EN2

INlilN2

Figura 5.12. Zcalos que muestran la asociacin de lneas con los sensores y actuadores.

102

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

LOS TEMPORIZADORES

103

Fuente de alimentacin
Est formada por dos secciones. La primera recibe en el puente rectificador (DI) por J8 una tensin
de 12 VAC y proporciona una tensin de 13 VDC, mediante el regulador UA7812 (U4) y los diodos D2, D3, D4 y D5.
Al cerrar el interruptor SW3, se consigue una tensin de 5 VDC a travs del regulador UA7805
(U5) en el borne +Vo, mientras que en el borne +V,, se tienen los 13 VDC.
En lugar de la seccin rectificadora del UA7812 se puede introducir una tensin de CC por medio de una batera en el conector J5.

Microcontrolador
La tarjeta contiene su propio microcontrolador PIC 16F84,que pone a disposicin del usuario todas
sus patitas a travs del conector PICBUS. Igualmente, usando este conector PICBUS puede conectarse al Micro'PIC Trainer para grabar y borrar el microcontrolador directamente sobre la tarjeta de
aplicacin.
La circuitera que envuelve al PIC16F84 es la mnima necesaria: cristal X l de 4 MHz, junto a
los condensadores C7 y C8, y el circuito de Reset formado por el pulsador SW2 y la resistencia R11.

Seccin de sensores
La tarjeta MSx84 puede controlar las seales digitales procedentes de 5 sensores externos que se
aplican por los conectores JO-J4. Dichas seales se aplican a puertas Trigger inversoras para la adaptacin de niveles, evitando ruidos y deformaciones, mediante dos circuitos integrados HF40106.
Los microrruptores de SW1 permiten que cada una de las cinco seales de los sensores puedan
desconectarse de las lneas del microcontrolador, caso de no emplearse.

Los microcontroladores PIC16F87x disponen de dos mdulos CCP, llamados CCPl y CCP2, que
son idnticos excepto en lo referente a la modalidad de Disparo Especial, que luego se comenta.
Dada esta similitud, la descripcin se orienta hacia el mdulo CCP1. Estos mdulos pueden realizar tres funciones principales:

El mdulo CCPl utiliza un registro de trabajo de 16 bits que est formado por la concatenacin
de los registros CCPRlH-CCPRlL (direcciones 16h y 15h). El registro de control del mdulo
CCPl es el CCPICON, que ocupa la direccin 17h. (Figura 6.1.) El mdulo CCP2 tiene como registros de trabajo a CCPR2H-CCPR2L (direcciones 1Ch y 1Bh) y como registro de control a
REGISTRO CCPxCON (x puede ser 1 o 2)

Figura 6.1. Asignacin de los bits de los registros CCPxCON para los mdulos CCPl y CCP2. Todos sus
hits son lehles y escribibles y pasan a O cuando se produce un Reset.

106

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

O000

Mdulo CCPx desconectado

O1O0

Modo captura con cada flanco descendente en RCyICCPx

O1O1

Modo captura con cada flanco ascendente en RCyICCPx

O11O

Modo captura cad 4 flancos ascendentes en RCyICCPx

O111

Modo captura cada 1 6 flancos ascepdentes en RCyICCPx

1 000

Modo comparacin que activa la patita RCyICCPx al coincidir valores

1 O01

Modo comparacin que desactiva (O) la patita RCyICCPx al coincidir valores

1010

Modo comparacin que genera una interrupcin software (no afecta a RCyICCPx)

1011

Modo comparacin en el que se produce un disparo especial diferente para cada mdulo

llxx

Modo PWM

CCP2CON en la direccin 1Dh. Las parejas de registros son las encargadas de capturar el valor del
TMRl, de comparar el valor que tienen con el del TMRl o, en el modo PWM, de modular la anchura del impulso.

6.2. MODO CAPTURA


En este modo, la pareja de registros CCPxH-L del mdulo CCPx captura el valor de 16 bits que contiene el TMRl cuando sucede un evento en la patita RCyICCPx de la Puerta C, que previamente ha
sido configurada como entrada poniendo a 1 el bit correspondiente del registro TRISC.
Los eventos posibles que pueden ocurrir sobre la patita RCyICCPx para producir la captura del
valor del TMRl sobre la pareja de registros CCPxH-L son:
1. Un flancoasmn&nte.
2." Un flanco dmcmdmte,
3." Cada 4 f f a m s ascendsntes.
4." Cada 16 flancos ascmdentes.

Los cuatro bits CCPlM3-O del registro CCPlCON seleccionan el evento adecuado en el mdulo CCPl y otro tanto sucede con el mdulo CCP2.
Al efectuar la captura, se activa el sealizador CCPlIF del registro PIR1. Adems, si se pone a
1 el bit de permiso de interrupcin PIEl<CCPlIE>, se genera una peticin de interrupcin cuando
se carga en CCPRIH-L el valor del TMR1. En la Figura 6.2 se muestran los elementos ms significativos que intervienen en el trabajo del modo Captura.
Cuando se emplea el mdulo CCPl en modo captura, el TMRl debe estar configurado para trabajar como Temporizador o como contador sncrono. Nunca en modo asncrono.
Si se van a cambiar las condiciones de funcionamiento en el modo captura, conviene detener o
desactivar al mdulo CCP para evitar que se produzcan falsas interrupciones durante la operacin.

MDULOS DE CAPTURA, COMPARACIN Y MODULACIN DE ANCHURA DE PULSOS

107

CAPTURA

Figura 6.2.

Esquema de los bloques principales del Mdulo de Captura del CCPl.

Si no se ha ledo el contenido de los registros CCPRIH-L y se produce una nueva captura, dichos registros pasan a contener el nuevo valor.
Cuando se desactiva el mdulo CCP o deja de funcionar en modo captura se borra la codificacin del predivisor de frecuencia que determinan los bits CCPlM3-O.
Una aplicacin muy interesante del modo captura puede ser la medicin de los intervalos de
tiempo que existen entre los impulsos que llegan a la patita RCS/CCPl que se halla configurada como entrada. El TMRl debe trabajar con entrada de reloj externo sincronizada.

En esta forma de trabajo, la pareja de registros CCPRIH-L compara su contenido, de forma continua, con el valor del TMRl. Cuando coinciden ambos valores, a la patita RC2/CCPl, que se halla
configurada como salida, la acontece uno de los siguientes eventos, de acuerdo con la programacin
de los bits CCPlM3-O:

* Pasa a niv& alto.


* Pasa a njvdba@. .

.
No cambia su estado p se pro&+? um interrupeidPrdPr

Al coincidir los valores del TMRl con los de la pareja de registros CCPRlH-L se pone a 1 el sealizador CCP 1IF.
El TMRl debe trabajar en modo temporizador o contador sncrono, nunca en modo asncrono.
Si el bit de permiso de interrupcin est a 1, cuando coinciden los valores mencionados se origina una peticin de interrupcin. En la Figura 6.3 se ofrece un esquema por bloques de la estructura general del mdulo CCPl en modo comparacin.

1
DISPARO SECUENCIAL (EN CCP2)

CCPRlH

CCPRlL

CCPl IF
r\nlS

nAA n n n

Figura 6.3. Esquema por bloques del mdulo CCPl cuando funciona en modo Comparador.

Si con los bits CCPlM3-O se selecciona el modo de trabajo de disparo especial, el mdulo
CCPl pone a O el TMRl y el CCPRI funciona como un Registro de Perodo, capaz de provocar peridicamente intermpciones. En ese modo de disparo especial, el CCP2 pone a O el TMRl y, adems, inicia una conversin en el conversor A/D, con lo que tambin y, con carcter peridico, puede realizar conversiones analgico/digitales sin el control del programa de instrucciones.

6.4. CHULETA-RESUMEN DE LOS REGISTROS ASOCIADOS AL MDULO DE


CAPTURA Y AL DE COMPARACI~N

En la tabla de la Figura 6.4 se presentan los registros, con la distribucin de sus bits, que participan
en la programacin de los mdulos de captura y comparacin de los dispositivos CCPl y CCP2.

Figura 6.4.

Tabla resumida con los registros que manejan los modos de captura y comparacin de los mdulos CCP.

MDULOS DE CAPTURA, COMPARACIN Y MODULACIN DE ANCHURA DE PULSOS

6.5.

109

MODO DE MODULACIN DE ANCHURA DE PULSOS (PWM)

Con este modo de trabajo, se consiguen impulsos lgicos cuya anchura del nivel alto es de duracin
variable, que son de enorme aplicacin en el control de dispositivos tan populares como los motores y los triacs.
La patita RC2/CCPl est configurada como salida y bascula entre los niveles lgicos O y 1 a intervalos variables de tiempo. Lo que se intenta es obtener un impulso cuyo nivel alto tenga una anchura variable (Duty Cycle) dentro del intervalo del perodo de trabajo. (Figura 6.5.)
Para lograr el basculado de la patita de salida RC2ICCP1 se usa un comparador que pone a 1
(Set) un flip-flop cuando el valor del registro PR2 coincide con la parte alta del TMR2, momento
en que el TMR2 toma el valor OOh. Luego el flip-flop se resetea (se pone a O) cuando otro comparador detecta la coincidencia del valor existente en CCPRlH con el de la parte alta del TMR2. (Figura 6.6.) De esta manera, variando los valores que se cargan en PR2 y en CCPRlL (que luego se
traspasa al CCPRlH) se vara el intervalo de tiempo en el que la patita de salida est a 1 y a O.
Cuando se trabaja con una precisin de 10 bits, los 2 bits CCPlCON<5:4> se concatenan con los
8 de CCPRlL y, de la misma forma, los 8 bits de ms peso del TMR2 se concatenan con los dos bits
de menos peso del reloj interno; haciendo que el TMR2 cuente cada Toscen vez de cada 4*Tosc.
El tiempo que dura el perodo de la onda depende del valor cargado en PR2, segn la frmula siguiente:
Periodo = [(PR2) + 11 4 a Tosc

Valor Predivisor TMRS1

Cuando el valor del TMR2 coincide con el del PR2 suceden tres acontecimientos:
1.O Se borra el TMR2.

2.' La patita RCZiCCPY se pone a 1.


3."El valor de CCPR 1L, que es el que determina la anchura del impulso, se carga en CCPR1H.

ANCHURA IMPULSO
(DUWCYCLE)

Figura 6.5.

I
1

Se desea conseguir un impulso de nivel alto con anchura controlada dentro del perodo.

Figura 6.6. Esquema de la estructura interna del mdulo CCPl cuando funciona en modo PWM.

El tiempo que la patita de salida est a nivel alto, que es la anchura del impulso, depende del
contenido cargado en CCPRlL y de los dos bits 5 y 4 del CCPlCON, cuando se trabaja con una
precisin de 10 bits.
Anchura lmpuiso = (CCPR 1L:CCP1GON<S:I(>) Tw

Vaim Pfedvisw T W ,,

El valor CCPRlL:CCPlCONc5:4> puede cargarse en cualquier momento, puesto que el mismo


no se traspasa a CCPRlH y se compara hasta que coincidan PR2 con TMR2. En el modo PWM el
registro CCPRlL slo puede ser ledo.
Los pasos a seguir para realizar la configuracin del modo PWM son los siguientes:

6.6. CHULETA-RESUMEN DE LOS REGISTROS ASOCIADOS AL MDULO PWM


En la Figura 6.7 se ofrece una tabla resumida de los registros que intervienen en la programacin del
modo PWM.

MDULOS DE CAPTURA, COMPARACINY MODULACIN DE ANCHURA DE PULSOS

Figura 6.7. Tabla que recoge los registros que se manejan en la programacin del modo PWM.

111

.apnq oyxp ua ylrn2as as u 9 3


-dnua)u! e1 ap eqanA e1 v .uo!:,dwa)u~ eun wznpold as anb ap e~adsaEI E olruyui apnq un ua as
-1epanb ylaqap ewel8old la o2anq -6.9e ~ n 2 e1
y ua E I J S ~ ~ UasI owo3 h ~ e'lez!lgn
i
e UZA as anb sol1
-s!8al sol ap u~!~Ez!~E!~!u!a uor~e.rn8guo3e1 ylezqeal as 019s eure.12old lap ~edpu!ldodran:, [a u g

' J a u l w J j 3 1 d , o n x ~lap s a g q ap eneq e1 ap sopo~psol ap oun Jezg!in apand as anb


01 lod ' 0 8 eaug
~ e1 u03 yapuodsauo:, as
18 '011 ~ I ~ , O J ~ . lap
Z N lopelaua8 la u03 I ) I ~ I J , / ( ) ~
eiged el ap u p n ~1 m d Epep FJpuaA 'alled ns lod ' T ~ N lap
A soslndur! ap Epequa e?
( 3 - 9e~n8!g) - ( I ~ ~ o J , / P v0~ ) 8 Iap soslndur!
~
~ ap epeaua ap legas EI uo:, aiuaure3!sjj asqun 2.1
-aqap ( l d 3 3 / 2 3 8 ) 1633olnpour lap ~ p ~ ap
@ -[egas
s
e1 'olla eled .salopez~~odurai
sop ap oiuayureu
- o ~ ~ ulan opuezqua
j
yisa as anb EA 'sauo!~ez!.~odura~
sapue18 Jaualqo uapand as o~3plaraaisa u03

-sauo!~ez~.~odura~
saiualajrp
laualqo uapand as u alueisuo:, e1 ap e!3uan3a~jap sa~os!~!pa~d
sol ap salolm so1 u03 opue8ny
'aploqsap as 0
8 la anb
~ zaA~epe3 y q n 3
-seq as? un h sauor3dnrra1ur u03 ylezrleal as oiualureieli1g .souIalxa soiuaAa ap J O ~ E ~ L OI OW~O op
~
-e~n8yuo:,ymlsa anb ' O X ~ lap
L J O ~ Ala aiuawal3uy anb opour ap '1)130J,/pv8 eiped e1 e epe3!lde
sa 'JOIBA ns e an3all
la 0puen3 1 6 3 3 olnpour la lod epelaua2 ep!~esap legas el ' Z ~ Ans v
-u alueiJ
-su03 eun lod sopeurwaiap uauay .1eluo3 ylaqap anb sos~ndso? -O/I 3 1 d ~ 0 ~ 3e1. ap
z ~lopelaua3 la
lod epeuo!:,.~odo.~dsa e:,!~de al as anb legas e1 apuop 'sowaxa soslndur! ap .~op~luo:,
opow ua ylereq
-eli opow aisa e oper3ose I ~ ~ \ 13
IA
- u ~ ~ ~ ~ . OPOW
I z ~ uuaI 1o d~3 3 o[np?ur [E le@qm)la:,~yala'nb a s

.soslnd ap mny3
-ue ap u~!:,e~npour/u~~~e~ed~03/e~nide:,
:salq!sod olua!ureuo!:,unj ap sopour sal1 sol soldura. sop
uo:, ~ e ~ i s oeu eloye
r
s o u r e ~'633 solnpour sol e a~uayuxa3uo3vyoal e1 o i s l ~ey as 'olni/rde:, aisa ug

MDULOS DE CAPTURA, COMPARACIN Y MODULACIN DE ANCHURA DE PULSOS

RESET

113

Figura 6.8. Esquema elctrico del ejercicio propuesto.

Cuando se trabaja con interrupciones se necesita utilizar, al menos, dos organigramas: uno para
el tratamiento de la interrupcin y otro para el programa principal. Si el programa principal o la interrupcin son complejos, sus organigramas mostrarn los llamamientos a subrrutinas y stas debern especificarse en otros organigramas.
La Figura 6.10 muestra el organigrama de tratamiento de interrupcin.
El primer recuadro INTER no se traduce en ninguna instruccin; representa la entrada a la rutina. La salida, asimismo, tambin debe ser nica.
Siempre que se habilite ms de una interrupcin, el primer paso ser discriminar de entre los tipos posibles aquel que la ha producido. En nuestro caso, tenemos la interrupcin del TMRO al desbordarse, lo cual har cambiar de estado al LED conectado en RBO, y la interrupcin provocada
cuando el comparador del mdulo CCPl detecta la igualdad del TMRI con el valor programado. En
ambos casos se debe poner a O el sealizador de interrupcin antes de volver.

114

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Figura 6.9. Organigrama del cuerpo principal del ejercicio propuesto.

Figura 6.10. Organigrama de la rutina de tratamiento de interrupcin.

MDULOS DE CAPTURA, COMPARACIN Y MODULACIN DE ANCHURA DE PULSOS

Programa comentado
El programa correspondiente al enunciado dado queda como sigue:

115

116

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Prueba del programa


Para la prueba del programa vamos a hacer uso de los sistemas Micro'PIC Trainer y Micro'PIC IIO.
La grabacin del microcontrolador se realizar como en captulos anteriores. Adems, deber tenerse en cuenta:

MDULOS DE CAPTURA, COMPARACINY MODULACIN DE ANCHURA DE PULSOS

Figura 6.1 l .

117

Fi)tog~.c!/ltr
dc.1 prn,qr-trnzrrcrl c:jcc,~rc,ic/~.

La Figura 6.1 1 muestra la conexin de las tar&jeta\Mi(*/-o'P/C//O y Miu-o'P/C T/-ai/lcl.para la


ejecucin del prograina.
De lo\ dos LED encendido\ en el Mic-lw'PIC Tl-uillrl-,uno de ellos e\ el de conexin de la placa
y el otro el que bascula cuando el TMRO \e de5borda. El poliscopio, por su parte, mue\tra lo\ p~il50s aplicado\ por el generador del M i c ~ o ' P l C//O al TMR l.

Enunciado segundo
Los mdulos CCPI y CCP2 pueden trabajar sitnultrneamente en diferente modo. En e\te ejercicio
vamos a hacer trabajar al mdulo CCP2 en modulacin de anchura de pulsos para el gobierno de un
inotor, y al mdulo CCPI en comparacin para controlar el desplaraiiiici-ito de dicho niotor. El
TMR 1 actuar en modo contador de eventos externos, donde lo\ impulso\ serrn geiierado\ por el encoder a\ociado al motor.
La sccucncia que \e pretende realizar con este prograina e\:
l." Arrancar el motor suavemente en el sentido horario hasta llegar a la velocidad mxima.

2."Girar en sentido horario tantos pasos como determine la constante HORARIO^^.


3." Parar un segundo.
4." Girar en sentido antihorario tantos pasos como indique la constante ~~ANTIHORARIO~~,
a la velocidad que determinen los interruptores (RA4-RAO). 8.
5." Decrecer la velocidad hasta llegar a detener el motor:
6." Parar un segundo.
7." Vuelta al paso 1 .".

Esquema elctrico
Para la realizacin de este ejercicio se deben hacer las conexiones mostradas en la Figura 6.12 y que
se enuncian a continuacin:

de activacindel motor.
para controlar el sentido de/ giro,

Organigrama
Los pasos a realizar tras configurar los registros adecuadamente se pueden ver como una secuencia
de acciones. En este caso, cada recuadro se corresponder con un bloque de instrucciones.
Se trata de comenzar con una velocidad nula en el motor e ir incrementndola en uno de los sentidos de giro. Esto se har mediante PWM, aumentando la anchura del pulso en un bucle hasta llegar al mximo. En esa velocidad, el motor girar un nmero dado de pasos. Dichos pasos sern pulsos que el encoder acoplado al motor introduce en la patita RCO/Tl CKI del TMRI.

GENERADOR
MICRO'PIC 110

Figura 6.12. Esquema de conexionado del PIC con el motor y el encoder.

ON IN1 IN2
MOTOR
MICRO'PIC 110

MDULOS DE CAPTURA, COMPARACIN Y MODULACIN DE ANCHURA DE PULSOS

119

Figura 6.13. Organigrama del segundo ejercicio propuesto.

Se parar el motor de golpe y permanecer as durante un segundo. A velocidad marcada por


unos interruptores el motor volver a girar, esta vez en sentido contrario al anterior y, por ultimo, por
la misma PWM se ir decrementando la velocidad del motor hasta pararlo durante otro segundo. Durante el programa, adems, se va a controlar el estado del perro guardin, introduciendo instrucciones de borrado para que resetee el PIC en el caso de que se produzca un fallo en el sistema.

120

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Programa comentado
El programa para este segundo enunciado queda:

MDULOS DE CAPTURA, COMPARACINY MODULACINDE ANCHURA DE PULSOS

121

122

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

MDULOS DE CAPTURA, COMPARACIN Y MODULACIN DE ANCHURA DE PULSOS

123

Prueba del programa


Como en el ejercicio anterior, se usan los sistemas Micro'PIC Trainer y Micro'PIC 110, teniendo en
cuenta que se deben conectar las lneas del PIC a los diferentes perifricos utilizados, tal y como se
explica en el apartado del esquema elctrico. En la Figura 6.14 se muestran dichas conexiones, donde se puede apreciar la modulacin aplicada al motor en el poliscopio.

Figura 6.14. Fotografia del montaje propuesto.

124

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

La Microbtica es una tecnologa derivada de la Robtica Industrial que se est imponiendo en multitud de aplicaciones y que proliferar masivamente en la primera dcada del siglo XXI.
El microbot es un dispositivo mvil que reacciona ante el entorno de acuerdo con un plan de acciones programados por el usuario. Para moverse utiliza motores y para reconocer el entorno emplea
sensores de todo tipo. Finalmente, para controlar motores, sensores y actuadores dispone de un computador en miniatura programado en funcin de la finalidad a la que se destina.
Existen multitud de tareas sencillas y rutinarias que nos ocupan una gran parte del da como cocinar, limpiar, controlar parmetros como la temperatura del agua y la calefaccin, lavar, conducir,
vigilar, transportar, y muchos ms.
La gran funcin de los microbots es resolver estas pequeas tareas con rapidez y precisin: explorar, medir y tomar el valor de magnitudes, cuidar jardines, recolectar frutos, vigilar zonas de seguridad, acompaar a los visitantes, transportar todo tipo de objetos, guiar a invidentes, ayudar a minusvlido~,trabajar en entornos peligrosos como los radioactivos o submarinos, y hasta ser
excelentes compaeros.
En la Figura 6.15 se presenta al microbot que en 1997 explor el planeta Marte.

Figura 6.15. Fotografia del Sojourner, que la NASA utiliz para explorar Marte.

MDULOS DE CAPTURA, COMPARACINY MODULACINDE ANCHURA DE PULSOS

125

Un microbot consta de 4 partes principales:

El cerebro del microbot es un microcontrolador programado. Recibe informacin de los sensores, la procesa y de acuerdo con su aplicacin ordena las acciones precisas a los rganos matrices.
Entre los microcontroladores ms usados en Espaa destacan los PIC y los Motorola.
El armazn debe soportar rgidamente a todos los componentes del microbot. La estructura puede ser mecnica, plstica o hecha a medida.
Los motores ms usados en Microbtica son los de corriente continua y los PAP. Son muy populares los servomotores de Futaba, que incluyen un grupo reductor y una gran estabilidad en la velocidad de giro. Adems, se caracterizan por tener una baja inercia en los instantes de arranque y parada. (Figura 6.16.)
En cuanto a sensores y actuadores que maneja un microbot, el abanico de modelos es muy amplio. Los ms utilizados en esta tecnologa son los sensores de rayos infrarrojos, los mecnicos de
posicin y contacto (bumpers), los de proximidad de tipo magntico y por efecto hall, los de luminosidad, distancia, luz, temperatura, etc.

EL PIC-BOT 2
Utilizando la tarjeta MSx84, descrita en un tema anterior, se ha desarrollado el microbot de bajo precio PICBOT-2. (Figura 6.17.)

Figura 6.16. Fotografa de un servomotor de corriente continua modelo S303 de Futaba.

126

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Figura 6.17. Fotografa del microbot PICBOT-2 controlado por un PIC16F84.

El armazn del PICBOT-2 est hecho a medida a base de placas de metacrilato trasparente, que
unidas mediante tornillera especial conforman una slida estructura donde se sitan los motores, los
sensores y la tarjeta MSx84.
Las posibilidades de la tarjeta MSx84, basada en un PIC16F84, incluyen el control de hasta dos
motores DCV, que en esta aplicacin son los dos servomotores Futaba a los que se les ha eliminado
los topes extremos en el giro; adems, tambin soporta hasta 5 sensores digitales, 4 de los cuales en
el caso del PICBOT-2 vienen con el kit (dos de tipo ptico CNY70, que se usan para distincin de
tonos y colores, y dos bumpers).
Los PICBOT ya se han usado en el desarrollo de proyectos tales como:

MDULOS DE CAPTURA, COMPARACI~N


Y MODULACI~NDE ANCHURA DE PULSOS

127

Figura 6.18. Fotografa de un momento del Certamen de Robots Rastreadores celebrado en la Universidad
de Deusto en 1999.

Slo la imaginacin de los ingenieros que proyectan y programan estas bestias inteligentes constituye el lmite de sus posibilidades.
Prueba de su importancia y su proyeccin de futuro en las facultades de Ingeniera Informtica
y Electrnica de todo el mundo es la organizacin de Certmenes anuales en los que participan los
ingenios ms inverosmiles. (Figura 6.18.)

Los microcontroladores PIC 16F87x poseen un conversor A/D de 1 O bits de resolucin y 5 canales
de entrada en los modelos con 28 patitas (PIC16F87316) y 8 canales en los que tienen 40 patitas
(PIC 16F874/7).
La resolucin que tiene cada bit procedente de la conversin tiene un valor que es funcin de la
tensin de referencia Vref, de acuerdo con la frmula siguiente:
Resolucin = (Vre f+

- Vref-) / 1.024 = Vref / 1.024

As, por ejemplo, si la Vref+ = 5 VDC y la Vref- es tierra, la resolucin es de 4,8 mV/bit. Por
tanto, a la entrada analgica de O V le corresponde una digital de 00 0000 0000 y para la de 5 V una
de 1 1 1 1 1 1 1 1 1 1. La tensin de referencia determina los limites mximo y mnimo de la tensin analgica que se puede convertir. El voltaje diferencial mnimo es de 2 V.
A travs del canal de entrada seleccionado, se aplica la seal analgica a un condensador de captura y mantenimiento (sumple nrzd hold) y luego se introduce al conversor, el cual proporciona un
resultado digital de 10 bits de longitud usando la tcnica de <<aproximacionessucesivas>>.
El conversor A/D es el nico dispositivo que puede funcionar en modo Reposo (SLEEP), para
ello el reloj del conversor deber conectarse al oscilador RC interno.
En los PIC 16F87316 los 5 canales de entrada estn soportados por las 5 lneas multifuncin de
la Puerta A. En la configuracin de dichas lneas habr que expresar la funcin que realizan.
La tensin de referencia puede implementarse con la tensin interna de alimentacin VDD. o
bien, con una externa que se introduce por la patita RA3/AN3/VKkF+,en cuyo caso la polaridad negativa se aplica por la patita RA2/AN2/VREF-.

7.2. REGISTROS DE TRABAJO


El funcionamiento del conversor A/D requiere la manipulacin de cuatro registros:

130
1."
2.'
3."
4."

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

ADRESH: parte alta del resultado de la conversin.


ADRESL: parte baja del resultado de la conversin.
ADCONO: registro de Control O.
ADCON 1: registro de Control 1.

En la pareja de registros ADRESH:ADRESL se deposita el resultado de la conversin, que al estar compuesta por 10 bits, slo son significativos 10 de los bits de dicha pareja.
El registro ADCONO controla la operacin del C A/D, mientras que el ADCONI sirve para configurar las patitas de la Puerta A como entradas analgicas o E/S digitales. (Figura 7.1.)
REGISTRO ADCONO

7
REGISTRO ADCONl

de conti-01 del C AID ADCONO y ADCONl.


Figura 7.1. A.sigriac.in de los bits de los 1-c~gistros

Los bits ADCON0<7:6> sirven para seleccionar la frecuencia de reloj que se emplea en la conversin, con la siguiente asignacin:
FRECUENCIA

A D C S l :O
00

FosJ 2

O1

Focd8

IO

FosJ32

11

FKC(procede del oscilador RC interno)

Se designa como TADel tiempo que dura la conversin de cada bit y en el caso de trabajar con valores
se selecciona por software
digitales de 10 bits, se requiere un tiempo mnimo de 12.TAD.El valor de TAD
mediante estos bits (ADCS1 :ADCSO) y en los PIC16F87x nunca debe ser menor de 1,6 microsegundos.
A D C S l :O

TAD

o0

2 *Tctsc

O1

8 *Tose

1O

32*Tosc

11

Oscilador RC interno en el C A/D

EL CONVERSOR A/D

FRECUENCIA DE TRABAJO

SELECCI~N
T~~

1,25 MHz

ADCSI :ADCSO

20 MHz

5 MHz

2* T m

00

1 00 qs

400 qs

1,6 ps

6 P5

8*To,c

O1

400 q s

1,6 qh

6,4 ps

24 ps

TAD

333,33 kHz

32*Tuv

10

1,6 ps

6,4 ps

2,6 p5

96 ps

RC

11

2-6 ps

2-6 ps

2-6 ps

2-6 ps

Figura 7.2.

131

Tuhlu quo pl.cscntu los i~aloru.\quc tonzu TAL>,


ticn~pode c-oiii~esinpol- hit, s e g ~ l iIu p/wgrwt~irrcicrz do ADCSI :ADCSO y 1u ji.ccuct7c.i~ tle fililc.ion~rn~icnto
dc.1 nic*t.oc~ont~vlacIo~-.
Pulu c.1 ( , o t ~ i9en\ol-AID c k lo,\ PlClhF87.~el \ ~ r l onlrlin~o
~de T I e,\ (Ir / , 6 n~ic~~w.\c~~y~lr~clo.s.

En la Tabla de la Figura 7.2 se presentan los diversos valores que toma Ti\,, segn los bits
ADCS 1 :ADCSO y la frecuencia de trabajo del microcontrolador. As, por ejemplo, si dichos bits toman el valor 00, TAL)
= 2*TOSC
y si el PIC funciona a 20 MHz resulta que TAL)
= 100 ns, tiempo no
= 400 ns, valor que tampoco es vlido. Si la frecuencia es
vlido. Si la frecuencia es de 5 MHz, TAD
de 1,25 MHz, TAD
= 1,6 microsegundos, valor justamente vlido. Finalmente, para una frecuencia
de 333,33 KHz, TA1,= 6 microsegundos.
Los bits CHS2-0 seleccionan el canal por el que se introduce la seal analgica a convertir, de
acuerdo con el siguiente cdigo:
CANAL

CH2-0
O00

Canal O (RAOIANO)

001

Canal 1 ( R A l / A N l )

01 O

Canal 2 (RA2/AN2)

O11

Canal 3 (RA3/AN3)

1 00

Canal 4 (RA5/AN4)

1 01

Canal 5 (REOIAN5). Los PlCl6F87x de 28 patitas no tienen este canal

11 O

Canal 6 (RElIAN). Los PlCl6F87x de 28 patltas no tienen este canal

111

Canal 7 (REZ/AN7). Los PICI 6F87x de 28 patitas no tienen este canal

El bit GO/DONE# es el bit de estado de la conversin. Ponindolo a 1 se inicia la conversin


y mientras est a 1 est realizndose dicha operacin. Cuando GO/DONE# pasa a 0 confirma el final de la conversin y la puesta del resultado en la pareja de registros ADRESH:L.
El bit ADON sirve para activar el C A/D ponindolo a 1 y para inhibir su funcionamiento ponindolo a 0.

7.3.

ESTRUCTURA INTERNA Y CONFIGURACIN DEL C A/D

En la Figura 7.3 se ofrece un esquema del conexionado del C A/D con las patitas que soportan los
canales de entrada y las de la tensin de referencia.

132

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

CONVERTIDOR

Figura 7.3. Estructura del conexionado del C AID.

El bit de menos peso (ADFM) del registro ADCONl selecciona el formato del resultado de la
conversin. Si vale 1, el resultado est justificado en el registro ADRESH, que tiene sus 6 bits de
ms peso a O; mientras que si vale O la justificacin se realiza sobre el registro ADRESL, que tiene
sus 6 bits de menos peso a O. Esto significa que los 16 bits que forman la concatenacin de
ADRESH:ADRESL unas veces tiene a O los 6 bits de ms peso y otras los 6 bits de menos peso (alineacin a la derecha o a la izquierda).

EL CONVERSOR A/D

ADFM = 1

ADRESH

133

ADFM = O

ADRESL

JUSTIFICACI~NA LA DERECHA

ADRESH

ADRESL

JUSTIFICACI~N A LA IZQUIERDA

Figura 7.4. Alineamiento del resultado digital de 10 bits de la conversin a la izquierda y a la derecha.

En la Figura 7.4 se muestran las dos formas posibles del alineamiento del resultado sobre la pareja de registros ADRESH:ADRESL.
Los restantes cuatro bits (PCFG3-O) de ADCONl se usan para configurar las patitas de los canales de entrada al conversor como analgicas o como E/S digitales, de acuerdo con la tabla de la
Figura 7.5.

Figura 7.5. Tabla que determina las patitas del PIC que actan como entradas analgicas o como EIS digitales, segn el valor de los 4 bits de ADCONl <PCFG3-O>.

EL CONVERSOR A/D

SELECCIONADO

Figura 7.6. Organigrama de la operacin del conversor AID.

135

136

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

7.4. CHULETA-RESUMEN DE LOS REGISTROS ASOCIADOS


A L CONVERSOR ANAL~GICOIDIGITAL
En la Figura 7.7 se presenta una tabla que recoge todos los registros que participan en la programacin del C A/D.

Figura 7.7. Tabla que ofrece la distribucin de los bits de los registros que intervienen en la programacin
del C AID.

EL CONVERSOR A/D

137

PROGRAMAR PIC ES FCIL

ADQUISICIN DE VALORES CON LOS CONVERSORES A/D


De los recursos contenidos en el PIC16F87x, quiz el conversor A/D sea del que ms aplicaciones
estamos acostumbrados a ver en nuestra vida diaria. Sensores de temperatura, luz, humedad, humo ..., son valores que nos interesa monitorizar pero que necesitan ser traducidos para ser entendidos por el sistema de control, labor que realizan los conversores A/D. La tarea de conversin es
siempre igual, sea cual sea el sensor utilizado. Por ello, vamos a realizar un ejercicio con uno de los
sensores disponibles en el Micro'PIC IIO, teniendo en cuenta que lo que variar en el programa al
cambiar de sensor ser el tratamiento que se haga del valor una vez convertido.

Enunciado
Se quiere controlar el valor de la temperatura, de modo que cuando pase por debajo de un valor prefijado se active un rel que emula la puesta en marcha de la calefaccin y cuando sube por encima
de un valor mximo prefijado active un motor a modo de ventilador. Adems, por una pantalla LCD
se ir visualizando dicha temperatura.

Esquema elctrico
En el Micro'PIC 110 el sensor de temperatura se aplica al canal 4 (patita RA5/AN4) del conversor
A/D. La tensin de referencia para el conversor puede ser la propia del PIC (5 V) o, como vamos a
el
hacer en este ejercicio, de 2,5 V. En este ltimo caso, dicha tensin se introduce por RA3/VREF+,
rel 1 est conectado a RCO y el motor a RC1 y RC2. El LCD ocupa las lneas RBO-RB7 para datos y RAO-RA2 para control. (Figura 7.8.)

Organigrama
Como se muestra en el organigrama de la Figura 7.9, tras configurar las lneas adecuadamente se activar el conversor, y se captar un nuevo valor cada segundo, aproximadamente. Se sabr cundo
se ha producido el fin de la conversin mirando, por ejemplo, el valor del sealizador ADIF, que se
pondr a '1 ' cuando este hecho ocurra. En el caso de hacer el tratamiento mediante interrupciones,
este bucle sera vaco y no se hara nada ms en el programa principal; el resto formara parte de la
rutina de tratamiento de interrupcin.

138

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Vss

Vdd

Vo RS R/W#E

DO D I D2 D3 D4 D5 D6 D7
.

..

CRISTAL 4 Mhz

lI

V,+
SENSOR
MICRO'PIC 110

l II
REL MOTOR
MICRO'PIC 110

Figura 7.8. Esquema elctrico del ejercicio propuesto.

9 10 11 12

13 14

EL CONVERSOR A/D

139

9
ACTIVAR CONVERSOR

I
ESPERAR 1 SG

ViSUALlZAR RESULTADO
EN LCD

I
APAGAR VENTILADOR

Figura 7.9. Organigrama del ejercicio propuesto.

El encendido y apagado de los sistemas de ventilacin y calefaccin depender de los valores


mximo y mnimo fijados como constantes en el programa principal. Una ampliacin interesante sera dejar que estos valores los introdujera un usuario externo mediante, por ejemplo, un teclado y
que, adems de lo ya controlado, se mostrara la temperatura existente mediante unos displays de 7
segmentos o incluso en una pantalla LCD.

140

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Programa comentado

El programa de este ejercicio es casi una traduccin inmediata del organigrama.

EL CONVERSOR A/D

141

142

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

EL CONVERSOR A/D

143

144

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Prueba del programa


En esta ocasin, tambin se van a utilizar las tarjetas Micro'PIC 110 y Micio'PIC Trainer. Esta ltima va a tener la misin de alojar el microcontrolador en el zcalo de 28 patitas y de mostrar la temperatura en el LCD. La configuracin de lneas que hay que tener en cuenta es:

EL CONVERSOR A/D

145

VISUALIZACIN DE VALORES POR PANTALLAS LCD


Las pantallas alfanumricas de cristal lquido, denominadas abreviadamente LCD, constituyen uno
de los visualizadores de mensajes ms econmicos, prcticos y eficaces.
Las controladoras de LCD son tarjetas diseadas para gobernar la presentacin de mensajes, con
la colaboracin de un programa que facilita su manejo.

La controladora LCD-CON
En este tema, describimos la controladora LCD-CON, que es capaz de gobernar pantallas de hasta 80 caracteres en cualquiera de las diferentes configuraciones de lneas y caracteres existentes en
el mercado. Tambin puede controlar LCDs que dispongan de luz de fondo (backlight). En la Figura 7.10 se ofrece una fotografa de la LCD-CON fabricada por Micr-osystems Engineel-ing.

Figura 7.10. Fotografa de la tarjeta controladora de LCD, basada en un PIC16C73.

146

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Para preparar los mensajes a presentar en la LCD a travs de la controladora, existe un software
que permite preparar y realizar todas las presentaciones desde un PC y que se escapan de nuestra exposicin.

Principio de funcionamiento
El control interno de la pantalla LCD es trasparente para el usuario. La controladora LCD-CON, que
acta como Esclava, se conecta mediante dos lneas con cualquier sistema maestro capaz de comunicarse en serie va RS232, como puede ser un PC, un terminal, un microcontrolador,etc. (Figura 7.11.)
El maestro comienza enviando una serie de instrucciones/comandos que son interpretados por la
LCD-CON, la cual acta directamente sobre la pantalla LCD, ejecutando los efectos de visualizacin que recibe.
Tras la ejecucin de una instruccin, la LCD-CON enva al maestro un cdigo de reconocimiento
que debe ser interpretado por ste para la transmisin de una nueva instruccin.
Existen dos versiones de controladoras LCD-CON. La LCD-CON1 se gobierna con conexin
permanente (on-line) con el maestro. Recibe y ejecuta secuencialmente todas las instrucciones que
le va enviando el maestro. Esta tarjeta est especialmente indicada para aplicaciones en las que se
necesita un control rpido y fcil de distintas funciones de visualizacin en la pantalla LCD.
El modelo LCD-CON2, dispone, adems de lo propio del LCD-CON1, de una memoria EEPROM que va almacenando todas las instrucciones segn se van recibiendo (modo programacin).
As, puede almacenar un programa que puede ejecutar autnomamente, sin estar conectado al
maestro. Por este motivo, este producto est indicado para sistemas autnomos de presentacin de
mensajes.

MASTER

Figura 7.11. Conexionado de la tarjeta LCD-CON con el maestro y con la pantalla LCD.

EL CONVERSOR A/D

147

Caractersticas generales
A continuacin, se muestra el aspecto del software utilizado con la controladora de LCD y se citan
las caractersticas ms relevantes.

Figura 7.12. Software que acompaa a la controladora LCD-CON para su manejo.

148

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Descripcin tcnica
Vamos a mostrar la serigrafa de la placa controladora LCD-CON con la distribucin de los distintos componentes, resaltndose los elementos ms importantes.

Conector de alimentacin
Es el conector a travs del cual se aplica la tensin de alimentacin a la controladora LCD-CON. Dicha tensin puede ser alterna o continua y de un valor de 12 V. La propia controladora dispone del
circuito de rectificacin, filtrado y estabilizacin.
Es posible, anulando el circuito de estabilizacin, alimentar el sistema aplicando una tensin de
+5 Vcc entre la patilla central (-) y la derecha (+) de dicho circuito.

Potencimetro de contraste
Mediante este potencimetro, se aplica a la pantalla LCD una tensin variable de entre O y +5 Vcc.
Con dicha tensin se consigue ajustar el contraste de los caracteres en la pantalla, segn las necesidades del usuario.

Microcontrolador PIC 16C73


Es el zcalo que aloja el microcontrolador PICl6Cxx grabado con el software diseado al efecto por
Microsystems Engineering y que gestiona el funcionamiento general de la tarjeta controladora de
LCDs. Por un lado se encarga de las comunicaciones va serie RS232 con el maestro, recibiendo las
distintas instrucciones.
Esas instrucciones son posteriormente interpretadas para actuar directamente sobre la pantalla LCD que se est gobernando, produciendo sobre la misma distintos efectos de visualizacin.
De esta manera, el usuario no tiene que ocuparse del funcionamiento interno del LCD ni de cmo se le programa. Basta simplemente conocer las distintas instrucciones de control diseadas al
efecto para poder sacar el mximo provecho a las posibilidades de las pantallas LCD.

LCD Interface 1
Este conector de simple hilera (SIL) permite la conexin directa con pantallas LCD cuyo conector
sea del mismo tipo que ste.
Son 16 las seales entre las que se encuentran 5 lneas de diversas alimentaciones, 3 lneas de
control del LCD y 8 lneas de datos.
La distribucin de estas seales es comn en todos los modelos de pantalla LCD analizados en
los laboratorios de Microsystems Engineering, correspondientes a modelos de las marcas WINTEK,
NORITAKE y SHARP.
Algunos modelos que no disponen de luz de fondo (backlight), las patitas designadas para ese
uso, o bien no estn disponibles, o se encuentran sin conexin interna.

EL CONVERSOR A/D

149

Las controladoras LCD-CON de Microsystems Engineering disponen de un reloj/calendario en


tiempo real alimentado por batera de NiCd.
Dicho reloj est formado por el dispositivo PCF8583 de Philips. Este dispositivo controlado por
un cristal de cuarzo de 32.768 KHz es capaz de mantener en constante funcionamiento diferentes
funciones horarias y de calendario. Dispone tambin de 250 bytes de memoria RAM esttica que,
al alimentarse mediante batera, resulta no voltil. La LCD-CON la utiliza para guardar una serie de
parmetros internos.
Gracias a la presencia de este dispositivo, la controladora LCD-CON es capaz de realizar sobre
la pantalla LCD, diferentes presentaciones en las que se incluye presentaciones de hora y fecha.

Memoria de programa
La versin LCD-CON2 de la controladora tiene capacidad para almacenar las distintas instrucciones que se van recibiendo de manera que puedan, posteriormente, ser ejecutadas de forma autnoma e independiente del Maestro (off Line).
Un conjunto de instrucciones forma un programa. Dicho programa se almacena en los dispositivos 24C65 (U2, U3 y U4). Cada uno de stos tiene capacidad para guardar 8 Kbytes de inforrnacin, con lo que la capacidad total disponible es de 24 KB.
Estos dispositivos consisten en memoria del tipo EEPROM. Se trata de una memoria no voltil
pero reutilizable. Su fabricante garantiza 100.000 ciclos de borrado y/o escritura de la misma.
Su empleo en la controladora LCD-CON2 permitir al usuario grabar programas de manejo de
la pantalla LCD de forma no voltil, aunque modificable en cualquier momento.

Conector RS232
Permite la conexin de la controladora con el maestro mediante una comunicacin serie RS232 estndar.
A travs de l, el maestro enva las instrucciones que la controladora, tras interpretarlas, las almacena en memoria y10 ejecuta.
De esta forma, la conexin entre una pantalla LCD y el maestro que la gobierna queda reducida
a la mnima expresin. Tan slo se emplean tres conductores. El pin 3 de este conector J5 se corresponde con la seal de recepcin de la controladora. Por ella se reciben las instrucciones transmitidas por el maestro.
El pin 2 de J5 corresponde a la lnea de transmisin de la controladora. Cada vez que sta ejecuta una instruccin, se transmite un carcter de reconocimiento que, cuando sea recibido por el
maestro, permitir a ste actuar en consecuencia.
Finalmente, el pin 5 de J5 es la seal de tierra. sta debe ser comn con la seal de tierra del
maestro.
Como se ha comentado con anterioridad, la figura del maestro que gobierna la controladora puede estar representada por cualquier sistema capaz de realizar una comunicacin RS232 estndar. Esto incluye terminales, microcomputadores, PCs, microordenadores, microcontroladores o cualquier
otro sistema informtica en general, con aplicaciones en las que sea necesario una representacin visual y donde la pantalla LCD y su controladora deba actuar como sub-sistema de dicho maestro.

150

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

La batera
Se trata de una batera recargable de NiCd que permite mantener constantemente alimentado al reloj/calendario de la controladora, as como ciertos parmetros constantes del sistema.
El circuito de carga lo forman un diodo y una resistencia. Cuando la controladora est conectada a una tensin externa, la batera se va cargando a travs de dicho circuito de carga.
Cuando se desconecta la tensin de alimentacin externa, es la batera la que aporta la tensin
necesaria de 3,6 V para mantener activo dicho reloj/calendario.

El reset
Se trata de un micropulsador situado en la parte inferior de la tarjeta controladora. Permite al usuario reiniciar el sistema si en alguna ocasin se bloquea o cada vez que, mediante los switches de configuracin, se cambie el modo de trabajo de la controladora.

Configuracin
Se trata de un conjunto de cuatro micro-switches que permiten, por un lado, establecer los baudios
de la comunicacin serie entre la controladora y el maestro (SWI-3 y SW1-4) y, por otro, los distintos modos de trabajo existentes (SW1-1 y SW1-2).
Siempre que se cambia de modo de trabajo, es necesario reinicializar todo el sistema para que
se adopte el nuevo modo recin seleccionado. Para ello, basta con pulsar el pulsador de Reset
SW2.
Se cita a continuacin una breve descripcin de cada uno de los modos de trabajo posibles:

EL CONVERSOR A/D

151

Ext. input
La controladora de Microsystems Engineering en su versin LCD-CON2 permite la gestin de hasta ocho seales de entrada digitales que se aplican mediante el conector Ext.Input (54).
Es posible, por tanto, la interaccin entre dichas seales de entrada y las diferentes presentaciones sobre la pantalla LCD, pudindose establecer condiciones de visualizacin en base al estado 1gico de esas seales.
Esto es especialmente til cuando las instrucciones a ejecutar por la controladora tienen una estructura de programa almacenado en la EEPROM (modo ejecucin).
Existen instrucciones del tipo Salto Condicional, que permiten desviar el flujo de la ejecucin
de un programa en base al estado lgico de esas ocho entradas. Con ellas se pueden establecer hasta 255 condiciones de salto segn las combinaciones binarias presentes en las mismas.
Las seales se muestrean slo en el momento de la ejecucin de la instruccin de salto condicional correspondiente, por lo que deben mantenerse activas hasta llegar a la ejecucin de dicha instruccin. Es por ello que existe una novena seal de entrada llamada STB. Cuando se activa (por pulso bajo) a modo de <&robe, la controladora cancela la ejecucin de toda instruccin que tuviera
en ese momento y reinicia la ejecucin desde la primera instruccin del programa. Es tarea del usuario colocar, al principio de su programa, las instrucciones de salto condicional, para que sean reconocidas y se acte en consecuencia, justo despus de llegar la seal STB.
Realmente, la seal STB provoca en la controladora de LCDs una reaccin similar a la que se
produce cuando se pulsa el pulsador RESET (SW2), pero sin mediacin del usuario.

LCD Interface 2
Este conector de doble hilera (DIL) permite la conexin directa con pantallas LCD cuyo conector
sea del mismo tipo que ste. Sus conexiones son similares a J4 y ambos estn en paralelo.
Son 16 las seales entre las que se encuentran 5 lneas de diversas alimentaciones, 3 lneas de
control de la LCD y 8 lneas de datos.
La distribucin de estas seales es comn en todos los modelos de pantalla LCD analizados en
los laboratorios de Microsystems Engineering, correspondientes a modelos de las marcas WINTEK,
NORITAKE y SHARP.
Algunos modelos que no disponen de luz de fondo (backlight), las patitas designadas para ese
uso, o bien no estn disponibles, o se encuentran sin conexin interna.

<

.
7

4 ,

<

da

'

;"

M ~ D U L ODE COMU~~;JICACI~N'
, SERIE SNCRONA:
MSSP
'

5.

r-

*....
I

<

La comunicacin serie es una forma muy apreciada de transferir datos digitales entre sistemas y circuitos integrados, dada la reducida cantidad de lneas que precisa.
En el PIC16F84, cuando se quera comunicarle en serie con otro dispositivo, haba que destinar
varias de sus patitas generales de E/S a soportar las lneas de datos y de reloj. Tambin haba que desarrollar un programa especfico para soportar el protocolo de comunicacin.
En los PIC16F87x, Microchip ha implantado en el silicio de sus chips el mdulo MSSP (Master
Synchronous Serial Port), que proporciona un excelente interfaz de comunicacin de los microcontroladores con otros microcontroladores y diversos perifricos, entre los que destacan las memorias
EEPROM serie, los conversores A/D, los controladores de displays, etc. De esta forma, el usuario
dispone de algunas patitas de la Puerta C, que correctamente programadas sirven para manejar directamente la comunicacin serie. Adems, el mdulo MSSP admite dos de las alternativas ms usadas en la comunicacin serie sncrona:
l ." SPI (Serial Peripheral Interface).
2." I2C (Inter-lntegrated Circuit).

La comunicacin serie en modo SPI la utilizan principalmente las memorias (RAM y EEPROM)
y utiliza tres lneas para llevarla a cabo. En el modo 12C slo se emplean dos lneas y, recientemente, ha conseguido una importante implantacin en la comunicacin de circuitos integrados, existiendo en el mercado todo tipo de perifricos capaces de trabajar con este protocolo (memorias, controladores, relojes, conversores, etc.).

154

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

El funcionamiento del mdulo MSSP es muy sencillo. En transmisin, el byte que se quiere
transmitir se carga en el registro SSPBUF a travs del bus de datos interno y automticamente
se traspasa al registro SSPSR, que va desplazando bit a bit el dato, sacndolo ordenadamente al
exterior al ritmo de los impulsos de reloj. En recepcin, los bits van entrando al ritmo de reloj
por una patita y se van desplazando en el SSPSR hasta que lo llenan, en cuyo momento la informacin se traspasa al SSPBUF, donde queda lista para su lectura. Este doble almacenamiento del dato recibido permite iniciar la recepcin de un nuevo dato antes de que se haya ledo el
ltimo.
Cuando se han recibido 8 bits durante la recepcin en SSPSR, se traspasa dicha informacin
a SSPBUF y entonces el bit sealizador BF (Buffer Full) se pone a 1, al igual que el flag de interrupcin SSPIF. Cualquier escritura en el SSPBUF se ignora durante una transferencia de informacin y se sealiza poniendo a 1 el bit WCOL, que advierte de este tipo de colisiones. Recae en
la responsabilidad del programador pasar el bit WCOL a O una vez completada la escritura en
SSPBUF.
En la Figura 8.1 se ofrece un esquema bsico sobre la estructura interna del mdulo
MSSP.

SALIDA DE
BITS DE DATOS
MSB

ENTRADA DE
BITS DE DATOS

Figura 8.1.

Estructura bsica del mdulo MSSP con los dos registros de trabajo (SSPBUF y SSPSR).

MDULO DE COMUNICACINSERIE S ~ C R O N AMSSP


:

155

8.2. MODO SPI


Permite la transferencia de datos de 8 bits en serie, que pueden ser transmitidos y recibidos de forma sncrona y simultnea. Para el establecimiento de la comunicacin se utilizan tres lneas:

Puede ser necesaria utilizar una cuarta lnea de control ms cuando el PIC que se utiliza trabaja
en modo esclavo. En este caso, la patita SS# (seleccin de esclavo) se debe activar a tierra. En la Figura 8.2 se ofrece un esquema de un sistema intercomunicado en modo SPI en el que un PIC acta
como maestro y otros dos como esclavos. Las 4 lneas que utilizan se corresponden con las patitas
multifuncin RC3/SDO, RC4/SDI, RCS/SCK y RAS/SS#.
La conexin habitual del PIC maestro se suele realizar con circuitos de memoria con el objeto
de ampliar su capacidad. Como se aprecia en la Figura 8.2, la lnea SDO del maestro se corresponde con las SDI de los esclavos y la lnea SCK por la que circulan los impulsos de reloj siempre parte del maestro, que es el encargado de generar y controlar la sincronizacin.
Si, por ejemplo, actuase como esclavo un chip de memoria RAM de 256x8 de tamao, la comunicacin SPI la iniciara el maestro enviando por la lnea SDO un byte con la direccin de la memoria a acceder, seguido de otro byte que especificara la operacin (lectura/escritura) y un tercero
que contendra el dato a escribir en caso de que se tratase de una operacin de escritura. En el caso
de que se tratase de una lectura, el maestro, despus de enviar los 2 bytes iniciales, quedara a la espera del byte que sacara el esclavo por su lnea SDO y que se introducira al Maestro por su lnea
SDI. Si fuese una memoria con ms posiciones, la direccin se tendra que especificar con ms de
un byte.
Cuando el PIC trabaja como maestro hay que programar la lnea RC3/SDO como salida, la lnea
RC4/SDI como entrada y la lnea RCS/SCK tambin como salida. Si actuase como esclavo, la lnea
RCSISCK debera configurarse como entrada y la RAS/SS# debera conectarse a tierra.

SDO
SDI
SCK

Figura 8.2. Comunicacin SPI entre un PIC maestro y otros dos esclavos

156

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

En la Figura 8.3 se muestra la estructura del mdulo MSSP cuando funciona en modo SPI.

DESPLAZAMIENTO

- - - - - - - - o

'

1 , -

DiF E Z

_1

.
SALIDA TMR2 / 2

DATO EN SSPSR A WRX


BIT DE DIRECCINDE DATO

Figura 8.3. Estructura interna del mdulo MSSP cuando trabaja en modo SPI.

MDULO DE COMUNICACINSERIE SNCRONA: MSSP

157

Al comenzar el funcionamiento en el modo SPI, es necesario establecer las condiciones de trabajo programando adecuadamente los bits <5-O> del registro SSPCON y los <7:6> del registro
SSPSTAT, para determinar las siguientes especificaciones:

En la Figura 8.4 se presenta la distribucin y nomenclatura de los bits del registro SSPSTAT, que
ocupa la direccin 94h y es uno de los que seleccionan las caractersticas mencionadas.
Se describe la misin de tres de los bits del registro SSPSTAT que participan en la configuracin
del modo SPI. Tambin estos bits participan en la configuracin del modo 12C junto a los restantes,
que se estudiarn al presentar dicho protocolo.

En la Figura 8.5 se presenta la distribucin de los bits del registro SSPCON, que est ubicado en
la direccin 14h y sirve para programar e1 mdulo MSSP en los dos modos que puede trabajar.

REGISTRO SSPSTAT

Figura 8.4.

Estructura interna del registro SSPSTATpara la configuracin del modo SPI e 12C

158

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES


REGISTRO SSPCON

Figura 8.5. Estructura interna del registro SSPCON

MDULO DE COMUNICACINSERIE SNCRONA:MSSP

159

El registro SSPSR no es direccionable directamente y en los programas hay que acceder a l a


travs del SSPBUF, tal como se expone en el siguiente programa de transferencia de informacin.

8.4.

MDULO MSSP TRABAJANDO EN MODO 12C

El protocolo de comunicacin serie I2C fue desarrollado por Philips para cubrir sus propias necesidades
en la implementacin de diversos productos electrnicos que requeran una elevada interconexin de circuitos integrados. El protocolo12C (Inter-Integrated Circuit) utiliza nicamente dos lneas para la transferencia de informacin entre los elementos que se acoplan al bus. Una de dichas lneas se dedica a soportar los datos, es bidireccional y se llama SDA; la otra lleva los impulsos de reloj para la sincronizacin, es
unidireccional y recibe el nombre de SCL. Los impulsos de reloj siempre los genera el maestro y tienen la
funcin de sincronizar las transferencias con todos los esclavos colgados a las dos lneas. (Figura 8.6.)

SDA

SCL

Figura 8.6. El maestro se conecta con todos los esclavos en el bus 12C con slo dos lneas. Por SDA circulan los datos en serie y por SCL el maestro enva los impulsos de reloj que genera.

( ' ~ ' 8v m % ~-sa.~opvlndu~o:,o.~:,p~


~)
o sa.~opv~o.quo:,o:,~ur
ap -eieli as aiuaur~vurro~
-snq la opuelo~luo:, opei:,auo3 odjsawzu un ap syur laqey apand .'o~isawzu-ylnzusnq un sa 321 13
.onwpsa un ~lapysuo3
as oAjsavzu un lod sopeuo!:,:,a~!p so~g~sods!p
sol ap e~a!nbl~n3
'f0la.r ap legas e1 elaua8 soiep ap e!:,ua~ajsw~ie1 e!:,!u! anb la sa oAjsawzu 13-(op
-epun:,as o a~iels)onwpsa o ( ~ e d p ~ !o~~aiseur)
d
oAjsavzu ua as~e:,g!s~~:,
uapand so~g!sodslp so?
..nqp:,sa e o laal e e e as
~
apand mva odg ap R!.rouraur eun anb seguarur aqr3a.1
anb ap uoI:,unj ua solep nq~3a.1o .r~l~ursueg
019s 'oldura@ lod 'a31ap ~ope~oliuo:,
u n -.nz!lvaJ e e e as
~ anb uor:,elado el ap opua~puadapl!q
-!:,al o ~ ! i ~ u r s w
apand
l ~ u?!:,:,a~!p e:,!up eun lod e:,g!luapT as o ~ q s o d s r pepe3 'snq le sopel:,auo:,
sog!sods!p saluaJajFp sol aliua UO!:,~UUOJU! e1 U B ~ O ~ S U E I'(rolal)
J
13s (soiep) vas 'seaujl s o a

'321 snq lap sauo!:,e:,gpadsa

se1 ua ue~duraluo:,as solda:,uo:, solsa s o p o ~


.opuyn:, snq lap 08.1~3
a3ey as o ~ y s o d
- s ~ ?nb
p appap as open:,ape o~o:,olo~d
Ia alwypam .sauor:,e:,y!pou~ o/ sauo!:,eqdure seminj nz!Ieal
~ a p o dap olarqo uo:, 'snq p sopel:,auo:, so~!i!sods!p sol ap alua~puadapu~
las aqap vuralsrs 13
.solla
sopo allua uo!:,e:,!unuro:,
e1 a:,yuele8 uo!:,eurlojur el ap oanbolq la a l p a anb olo:,olold
un aluelpaw js aaua as.~e:,!unuro:, uaqap apas snq le sopel:,auo:, s o ~ y ~ r s o d soluys!p
s~p
so?
'o1l!3uas syur oy:,nw sa a.IeMpley la opealqe:, souaur oy:,nur al
-a!nba~o ~ a d'ola1e~edsnq ap elnl:,nrisa eun uo:, sep!n8asuo:, s q e salel!uI!s sapep!:,ola~ I G Z U E : , ~ ~ap
-and ou snq ap odg alsg -a!las snq ap e~nl:,ruisaeun uo:, .reluauraldur! uapand as so~al!.~:,solsg

.so!~al!.r:, sova!:,.~a:,a-[qeisa
uaqap as 'dry:,-ouow sa.~opelo.~uo:,ol:,!u~uealdura anb se1 aluaurle!:,adsa 'sauo!:,e:,gde seun8le ug

MDULO DE COMUNICACIN SERIE SNCRONA: MSSP

?e

161

MICROCONTROLADOR B

Figura 8.7. Conexiones al bus.

Supongamos que en un momento dado el microcontrolador A acta como maestro:

Esta configuracin puede no ser permanente. En otro momento, puede ser el B quien acte de
maestro. Todo depende de la direccin del dato a transferir en un momento dado.
Dada la posibilidad de que existieran varios maestros, podra ocurrir que ms de uno inicie la
transferencia en un mismo instante de tiempo. Para evitar el caos que pueda producir esta situacin,
se ha desarrollado un sistema de arbitraje del bus. El procedimiento consiste en una conexin tipo
AND entre todos los dispositivos conectados al bus.
Cuando uno o ms maestros colocan informacin en la lnea SDA, verifican si el bit que ellos sacan coincide con el nivel lgico de dicha lnea. Si un maestro saca un 1 pero la lnea SDA est a
O coincidiendo con un pulso de reloj, pierde la posesin del bus cancelando desde ese momento
la transmisin. El nivel lgico O (bit dominante) presente en la lnea SDA proceder de un maestro distinto.

162

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Las seales de reloj durante el arbitraje del bus son una combinacin entre las seales de clock
de los distintos maestros conectadas entre s a la lnea SCL mediante una conexin tipo AND.

8.5.2. Terminologa del Bus 12C

8.6.

CARACTERISTICAS GENERALES

Tanto las lneas SDA como SCL son lneas bidireccionales que se conectan a +Vdd mediante resistencias de carga pull-up, tal y como se muestra en la Figura 8.8.
Cuando el bus est libre, ambas lneas estn a nivel lgico 1. Los transistores de salida conectados a las lneas del bus 12C deben ser de colector abierto para que todos ellos se puedan conectar entre s formando una conexin tipo AND.

RESISTENCIAS DE PULL-UP
DE DATOS SER
SDA (L~NEA
SCL(L~NEA
DE RELOJ)

Figura 8.8. Conexin de SDA y SCL al bus.

SDA

SCL

MDULO DE COMUNICACIN SERIE SNCRONA: MSSP

163

Los bits de datos sobre el bus pueden transferirse a una velocidad de 100 Kbitsls. La capacidad
mxima en el bus es de 400 pF y el nmero de dispositivos conectados no debe superarla.

8.6.1. Transferencia del bit


Debido a la variedad de tecnologas empleadas en los dispositivos diseados para conectarse al bus
12C (CMOS, NMOS, TTL, etc.,) los niveles lgicos O y 1 de los bits transferidos no tienen una
tensin fija, sino que dependen de la tensin Vdd de alimentacin. Cada bit que se transfiere por la
lnea SDA debe ir acompaado de un pulso de reloj por la lnea SCL.

Validez del bit


El bit de datos transferido por la lnea SDA debe mantenerse estable durante el perodo en que la seal de reloj est a nivel 1. La lnea de datos SDA slo puede cambiar de estado durante el perodo en que la seal de reloj est a O, tal y como se muestra en la Figura 8.9.

Condiciones de inicio (start) y parada (stop)


Existen dos situaciones nicas que son definidas como las condiciones de inicio (inicio) y parada
(parada), que determinan el inicio y final de toda transferencia de datos entre el maestro y el esclavo. (Figura 8.10.)
Una transicin de 1 a O (flanco descendente) en la lnea SDA al tiempo que SCL est a
nivel lgico <<1 ,determina la condicin de inicio. Una transicin de O a l (flanco ascendente) sobre la lnea SDA al tiempo que SCL permanece a nivel 1 determina la condicin de
parada.
Ambas condiciones son siempre generadas por el maestro que, en todo momento, inicia y finaliza toda transferencia. El bus se considera ocupado (BUSY) tras la condicin de inicio y, se considera libre, cierto tiempo despus de la condicin de parada.

SDA

I
I

---m -

I
- - - m

SCL

L~NEADE DATOS ESTABLE:


DATO VALIDO

Figura 8.9. Validacin del bit de datos

L~NEA
DE DATOS ESTABLE:
DATO VLIDO

164

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

i""
I

CONDICIN DE FIN

CONDICIN DE INICIO

Figura 8.10. Condiciones de inicio y parada.

8.6.2. Transferencia de datos


Formato del Byte
Todos los bytes colocados sobre la lnea SDA deben constar de 8 bits. Cada byte va seguido de un
bit de reconocimiento, ACK, y comienza siempre por el bit de ms peso (MSB), tal y como se muestra en la Figura 8.11.

SALIDA DE DATOS
DEL TRAE.JSMISOR

SALID^ DE DATOS
DEL PECEPTOR

'
1

I
I
I

m
I
I

I
I
I
I
I

PULSO DE CLOCK
PARA EL BIT ACK

Figura 8.11.

Formato del Byte.

MDULO DE COMUNICACINSERIE SNCRONA: MSSP

165

Entre un byte y el siguiente puede haber un tiempo t de espera que se puede aprovechar para,
por ejemplo, dar servicio a una interrupcin. En este caso, la lnea SCL se mantiene a O para forzar al transmisor a un estado de espera.
Un mensaje cualquiera puede finalizar mediante la generacin de la condicin de parada durante la transferencia de un byte. En este caso no se generar el bit de reconocimiento ACK.

Reconocimiento
El bit de reconocimiento ACK es obligatorio en la transferencia de cada byte. El pulso de reloj asociado a este bit n." 9 lo genera el maestro. El transmisor pone la lnea SDA a 1durante dicho pulso de reloj.
El receptor, por su parte, pone a O la lnea SDA durante el pulso de reloj correspondiente al
ACK y lo mantiene estable durante todo el perodo de dicho pulso.
En la lnea SDA prevalece por tanto el nivel O, como se aprecia en la Figura 8.12.
Normalmente, el receptor que ha sido direccionado est obligado a generar el bit ACK despus
de recibir cada byte. Cuando un receptor esclavo no genera el bit ACK (NACK) al ser direccionado (por ejemplo cuando est realizando una funcin interna y no est dispuesto a recibir), debe mantener la lnea SDA a nivel 1 durante el bit ACK (NACK). Esta situacin es detectada por el
maestro, que debe generar la condicin de parada y abortar as la transferencia.
Igualmente, si un esclavo receptor reconoce ser direccionado pero no est dispuesto a recibir ms
bytes, el maestro debe abortar la transferencia. Esta situacin se identifica porque el esclavo tampoco genera el ACK en el siguiente byte que recibe. En su lugar pone la lnea SDA a 1 (NACK)
y el maestro genera la condicin de parada.
Si un maestro est recibiendo debe generar ACK tras cada byte enviado por el esclavo excepto
en el ltimo, en el que el bit ACK lo mantiene a 1 (NACK) y genera la condicin de parada.

--

SALIDA DE DATOS
DEL TRA$dSMISOR

SALID4 DE DATOS
DEL RECEPTOR

SCL (C~OCK)DESDE
EL'MASTER

*
1

I
1
I

PULSO DE CLOCK
PARA EL BIT ACK

Figura 8.12. El reconocimiento.

166

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

8.6.3. Arbitraje sin sincronizacin de reloj


Es la tcnica necesaria por la cual, en un sistema donde existen varios maestros, se evitan conflictos en el bus y prdidas de informacin.

Sincronizacin
Todos los Maestros generan una seal de reloj sobre la lnea SCL para transferir mensajes sobre el
bus I2C. Los bits de informacin son vlidos cuando dicha seal de reloj est a nivel lgico 1 .
La sincronizacin del reloj se realiza mediante una conexin tipo AND de todos los maestros
existentes en el bus. (Figura 8.13.)
Cuando un maestro cualquiera, por ejemplo el 1, genera un flanco descendente en CLKl, la 1nea SCL pasa a O. Todos los dispositivos comienzan a temporizar sus respectivos perodos bajos
de reloj.
Sin embargo, un flanco ascendente en CLKl no cambia el estado de SCL, ya que en ese instante CLK2 est a O>>.
La lnea SCL se mantiene a O durante el perodo de aquel dispositivo cuyo nivel O sea ms
largo. El resto de dispositivos entran en estado de espera.
Cuando todos los dispositivos finalizan su perodo bajo, SCL pasa a el. De esta forma, todos
inician el perodo alto al mismo tiempo. El primer dispositivo en finalizar este perodo alto pone
SCL a O, y el proceso se repite.
INICIODEL PERIODO ALTO

TIEMPO DE ESPERA

CLK 1

CLK

SCL

Figura 8.13. Sincronizacin del reloj.

167

MDULO DE COMUNICACINSERIE SNCRONA: MSSP

La seal de reloj presente en la lnea SCL queda sincronizada y...


. ..
*elitsrn+yordw.ih.
r

w
W

t:

<

*'

L . .

hor aqued diqmsHitco cuyo pcerexfoatto @eael c&

Arbitraje
El arbitraje consiste en determinar qu maestro se hace cargo del bus en un sistema multi-maestro.
Cada maestro debe comparar si el bit de datos que transmite junto con su pulso de reloj en un momento dado, coincide con el nivel lgico presente en la lnea de datos SDA. De no ser as, pierde el
acceso al bus. Si un maestro saca un nivel lgico l al tiempo en que otro saca un O>>,en la lnea
SDA prevalece el segundo (bit dominante), por lo que el primero debe dejar el bus libre al menos
hasta que se detecte la condicin de parada generada por el maestro que se hizo cargo de dicho bus.
La Figura 8.14 muestra el caso de dos maestros. En el momento en que hay diferencia entre el
nivel lgico interno del maestro, que genera el DATO1 y el nivel actual presente en la lnea SDA,
ste pierde el derecho a usar el bus y su nivel interno pasa a 1,liberando as la lnea SDA.
La comparacin para determinar el arbitraje puede continuar en varios bits hasta que haya una
falta de coincidencia.
El maestro que pierde el arbitraje puede seguir generando pulsos de reloj hasta que finalice el byte en que lo perdi.

EL MAESTRO 1 PIERDE EL ARBITRAJE


DATO 1 < > SDA
-

DATO 1

Figura 8.14. Arbitraje del bus.

168

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Si un maestro pierde el arbitraje en el momento en que est direccionando a un esclavo, es posible que el maestro ganador lo estuviera direccionando precisamente a l. Es por ello que el
maestro perdedor se debe poner inmediatamente en modo receptor y como esclavo.

8.6.4. Formato
Los datos que se transfieren tienen el formato mostrado en la Figura 8.15.
Tras la condicin de inicio, el maestro enva la direccin del esclavo al que se quiere dirigir. Esta direccin es de 7 bits ms el bit R/W# que indica lectura (R/W# = 1) o escritura (R/W# = O) del
esclavo. Toda transferencia de datos finaliza con la condicin de parada, tambin generada por el
maestro. A pesar de todo, si un maestro an desea comunicar por el bus, puede generar otra condicin de inicio y direccionar a otro esclavo sin generar previamente la condicin de parada.
En las Figuras 8.16, 8.17 y 8.18 se muestran posibles forrnatos de transferencia.

SDA

'
I

INICIO

DIRECCI~N

RW
I

+-

+*-

ACK

DATO

ACK

DATO

'

. - m

ACK

FIN

Figura 8.15. Formato de los datos transferidos.

ESCRITURA

DATOS TRANSFERIDOS
(n BYTES ACK)

Figura 8.16. El maestro transmite al esclavo receptor. No cambia el byte de direccin.

LECTURA

1
DATOS TRANSFERIDOS
(n BYFES ACK)

Figura 8.17. El maestro recibe desde el esclavo despus de enviarle a ste la direccin.

MDULO DE COMUNICACIN SERIE SNCRONA: MSSP

169

ACK DESDE ESCLAVO

ACK DESDE ESCLAVO

DIRECCIN DE ESCLAVO 1

DIRECCIN DE ESCLAVO

= LECTURA

O = ESCRITURA

DATOS TRANSFERIDOS
(n BKES ACK)

= LECTURA DATOS TRANSFERIDOS

0 = ESCRITURA

("

Figura 8.18. El maestro cambia el byte de direccin y selecciona un esclavo distinto.

Tras el primer ACK enviado por el esclavo, el maestro transmisor se convierte en receptor y el
esclavo receptor en transmisor.

8.7. DIRECCIONAMIENTO
El proceso de direccionamiento del bus 12C consiste en que el primer byte que enva el maestro tras
la condicin de inicio es un cdigo que determina y selecciona a un determinado esclavo. Existe una
excepcin en el cdigo denominada llamada general. Cuando un maestro realiza una llamada general (cdigo 0000 000) todos los esclavos existentes deben responder con el bit ACK. Puede darse el caso de dispositivos que ignoren esta llamada. El siguiente byte tras la misma indicar la operacin a realizar.

8.7.1. Definicin del primer byte


Los 7 bits de ms peso del primer byte se emplean para direccionar a un determinado esclavo. El de
menos peso, el octavo enviado, determina si se realizar una operacin de lectura o de escritura
(R/W#)sobre el esclavo direccionado, tal y como se muestra en la Figura 8.19.
Cuando el maestro enva una direccin por el bus, todos los esclavos conectados la comparan con
la suya propia interna. Aquel en que coincida se considerar seleccionado por el maestro.
De los 7 bits que forman una direccin hay una parte que son fijos y ya estn definidos internamente por el propio dispositivo esclavo, y otra parte que son programables. De esta forma, es posible conectar al mismo bus dispositivos idnticos cuya parte fija de direccin es la misma pero la programable es diferente.
El nmero de dispositivos iguales que se pueden instalar a un mismo bus depende del nmero de
bits programables disponibles. Por ejemplo, si un determinado modelo de dispositivo recibe una direccin de 7 bits, 4 de los cuales son fijos y los 3 restantes programables, se podrn conectar al bus
un mximo de 8 dispositivos de ese mismo modelo.

170

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES


MSB

LSB

Figura 8.19. El primer byte.

El comit 12C creado al efecto coordina las direcciones asignadas a los diferentes dispositivos.
La direccin 1111 111 est reservada como extensin de direccin en el que el proceso de direccionamiento de un dispositivo continua en los siguientes bytes transferidos por el maestro. La direccin 1111 xxx est reservada tambin con propsitos de direccionamientos extendidos y la emplean ciertos dispositivos que tienen 10 bits de direccionado. La direccin 0000 xxx est reservada
para un grupo especial de dispositivos:

8.8. ESPECIFICACIONES ELCTRICAS


El bus 12C permite la comunicacin entre dispositivos fabricados con diferentes tecnologas y diferentes tensiones de alimentacin. Para conexiones con niveles de entrada fijos y alimentacin de +5
V, se definen los siguientes valores:

MDULO DE COMUNICACIN SERIE SNCRONA: MSSP

171

Para dispositivos capaces de trabajar con un rango variado de tensiones de alimentacin (por
ejemplo, CMOS), se definen los siguientes niveles:

En ambos casos, la mxima tensin de salida a O es:

La corriente mxima de entrada a O en las lneas SDA y SCL de un dispositivo compatible con
el bus es de -10 pA. A nivel 1, la corriente de entrada es de 10 pA. La capacidad de dichas lneas es de 10 pF mximo.
Los dispositivos con niveles fijos de entrada pueden alimentarse desde diferentes fuentes de alimentacin de +5 V, como se muestra en la Figura 8.20.
Los dispositivos 12C cuyos niveles lgicos de entrada estn en relacin a VDD.deben alimentarse conjuntamente segn la Figura 8.21.
Cuando se combinan ambos tipos de dispositivos, los de niveles fijos de entrada (NMOS, TTL)
y los dependientes de VDD(CMOS), estos ltimos deben conectarse a una alimentacin comn de
+5 V, como se muestra en la Figura 8.22.
La capacidad mxima del bus es de 400 pF, que incluye la capacidad entre cables y la de los dispositivos conectados.

SDA

SDA

SCL

SCL

Figura 8.20. Alimentacin de dispositivos con nivelesfijos de entrada.

172

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES


VD, = 3 v

SDA

SDA

SCL

SCL

Figura 8.21.

Alimentacin de dispositivos con niveles de entrada dependientes de VDD.

SDA

SDA

SCL

SCL

Figura 8.22. Alimentacin de dispositivos con niveles de entrada fijos junto con dependientes de VDD.

8.8.1. Tiempos
La seal de reloj en el bus 12C tiene un perodo a O de como mnimo 4,7 ms y a 1 de como
mnimo 4 ms. De esta forma, el maestro puede generar una frecuencia de hasta 100 KHz. La Figura 8.23 muestra el valor de cada tiempo.

MDULO DE COMUNICACIN SERIE SNCRONA: MSSP

TBUF

Tiempo en que el bus debe estar I ibre antes de


iniciar una nueva transmisibn

THDSTA

Tiempo entre el Inicio y primer pulso en SCL

TLOW

DuraciOn del perodo bajo del reloj

4,7

PS

THICH

Duracin del perodo alto del reloj

PS

TSU,STA

Tiempo antes de una nueva condicin de Inicio

4,7

PS

THDDAT

Tiempo de mantenimientodel dato

PS

TCUDAT

Tiempo de puesta del dato

TR

Tiempo del flanco ascendente para las lneas SDA y SCL

PS

TF

Tiempo del flanco descendente para las lneas SDA y SCL

300

ns

Tsu STO

Tiempo para la condicin de parada

173

4,7
4

PS

250

4,7

PS

PS

Figura 8.23. Valor y nomenclatura de los diferentes tiempos.

8.9. EL BUS 12C Y LOS PIC16F87X

En los PIC16F87x, el bus 12C est implementado en silicio tanto en el modo maestro (master) como en el esclavo (slave). Como en general es el modo maestro el ms usado, todos los ejercicios los
hemos realizado de esta forma y las explicaciones tambin se refieren a dicho modo.
Recurdese que en modo maestro es el dispositivo, en este caso el PIC16F87x, el que inicia y finaliza la transferencia y genera los impulsos de reloj. Tambin selecciona el esclavo al que se destina la informacin. (Figura 8.24.)
Como ya se ha comentado al hablar del bus I2C, en general, cada transferencia comienza con la
condicin de inicio (start) y termina con la condicin de parada (stop). Ambas condiciones las genera el maestro, y la primera consiste en un flanco descendente en SDA mientras SCL tiene nivel
alto. La condicin de parada es un flanco ascendente mientras SCL tiene nivel alto.
Los datos que se colocan sobre la lnea SDA son bytes de 8 bits, que comienzan con el MSB y
terminan con el bit de menos peso, al cual sigue en el noveno bit la condicin de Reconocimiento
(ACK). Para este caso, el transmisor pone SDA = 1, mientras que el receptor pone SDA = O en dicho impulso de reloj, prevaleciendo sobre la lnea el nivel bajo.
El primer byte que enva el maestro tras la condicin de inicio contiene la direccin del esclavo con el que se desea realizar la comunicacin. El cdigo O se usa para realizar una llamada general sobre todos los esclavos. La direccin en realidad consta de 7 bits, estando destinado el octavo a indicar la operacin a realizar (R/W#: Lectura/Escritura#). Tras este byte inicial
de direccionamiento se manda otro byte que especifica las caractersticas de la operacin a realizar.
Para activar el bus 12C hay que poner el bit SSPEN = 1 que es el bit 5 del registro SSPCON
(SSPCON<S>). A partir de ese momento las patitas SDA y SCL quedan configuradas para soportar el protocolo I2C. Previamente dichas patitas de la Puerta C (RC31SCL) y RC4JSDA) han de estar configuradas como entradas mediante la escritura de los bits correspondientes del registro
TRISC.
Como se aprecia en la Figura 8.24, hay seis registros para controlar el bus I2C.

174

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Figura 8.24.

Estructura general de los registros que controlan la transferencia por las patitas SDA y SCL en
el modo maestro del bus 12C.

Mediante el bit CKE se ponen a nivel alto las patitas SDA y SCL en el modo maestro y esclavo.
Cuando CKE = O los niveles de dichas patitas se configuran segn las especificaciones del bus I2C.
Los 4 bits de menos peso del registro SSPCON sirven para seleccionar el modo de trabajo entre
estos tres posibles:

MDULO DE COMUNICACIN SERIE SNCRONA: MSSP

175

El registro de Estado SSPSTAT contiene la informacin que representa el estado de la transferencia de datos. Detecta las condiciones de inicio y parada, as como la recepcin del byte de la direccin.
SSPBUF es el registro que acta como buffer y soporta el dato que se va a transmitir o que se ha
recibido. El registro de desplazamiento SSPSR realiza la conversin serie/paralelo y viceversa junto al SSPBUF. Cuando se ha completado la llegada del byte, que se recibe en el registro SSPSR, se
traspasa a SSPBUF y se activa el sealizador SSPIF. Si se recibe otro byte antes de haber ledo al
SSPBUF, se activa el sealizador de desbordamiento SSPOV (SSPCON<6>).
El registro SSPADD guarda la direccin del esclavo. Cuando se emplean direcciones de 10 bits,
el usuario debe escribir el byte alto de la direccin con el siguiente cdigo donde A9:A8 son los dos
bits de ms peso: 1-1-1-1-0-A9-A8-0.
En la Figura 8.25 se muestra la distribucin de los bits del registro SSPSTAT, que ocupa la direccin 94h de los registros especficos de la memoria RAM.
El bit SMP se SSPSTAT en el modo maestro es un bit de muestre0 que vale 1 cuando los bits de
datos se muestrean al final del perodo, o vale O cuando se hace en la mitad del perodo. El bit CKE
selecciona los niveles de las patitas SCL y SDA en el modo maestro o multi-maestro. El bit D/A#
(Dato/Direccin#)indica si el dato recibido es de informacin (1) o es una direccin (0). La llegada
del bit o condicin de Stop la detecta el bit P, que se pone a 1. El bit S detecta la condicin de Inicio
o Start. R/W# indica si se trata de una Lectura/Escritura#. El bit UA cuando vale 1 indica que la direccin es de 10 bits y que hay que cargar el byte alto, segn la codificacin antes expresada, en el
registro SSPADD. Si es O la direccin es de 7 bits. Finalmente, el bit BF acta como sealizador del
buffer de datos. Si BF = 1 indica que tiene un dato y la transmisin est en progreso sin terminar.
En la Figura 8.26 se muestra la estructura del registro de control SSPCON, que ocupa la direccin 14h del mapa de memoria.

REGISTRO SSPSTAT

Figura 8.25. Distribucin de los bits del registro de Estado SSPSTAT. Todos los bits son lebles, siendo slo escribibles los dos de ms peso. Tras un Reset todos se ponen a O.

REGISTRO SSPCON

Figura 8.26. Registro de Control SSPCON. Todos sus bits son lebles y escribibles y se ponen a O tras un
Reset.

176

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

El bit WCOL es un detector de colisiones en escritura y cuando vale 1 significa que se ha intentado escribir en SSPBUF en condiciones no vlidas para el protocolo. El bit SSPON si vale 1
indica desbordamiento, o sea, que llega un byte a SSPBUF sin haberse ledo el anterior. Si SSPEN
= 1 la Puerta Serie queda configurada con las patitas SCL y SDA. Si SSPEN = O las patitas
RC3/SCL y RC4/SDA funcionan como lneas de E/S digitales. El bit CKP sirve para activar el reloj en el modo esclavo, no usndose en el modo maestro. Mediante los 4 bits de menos peso de
SSPCON se selecciona la frecuencia de reloj. Se indican los cdigos ms interesantes para el modo maestro:

sm0~3~a
h

F R ~ U E N ~ I DAE ~ L Q ;,J

0000

Reloj = FosJ4

O001

Reloj = FosJl6

001O

Reloj = Fo~d61

O011

Reloj = Salida del TMR2/2

1 O00

Reloj = (SSPADD + 1 )

Fod4

En la Figura 8.27 se muestra la distribucin de los bits del registro de control 2 SSPCON2.
El bit GCEN slo se usa en el modo esclavo. Cuando se pone el bit ACKSTAT = 1 significa
que se ha recibido el bit de reconocimiento ACK del esclavo. ACKDT es el bit de reconocimiento en el modo maestro en recepcin. Si ACKDT = O el maestro ha transmitido el bit de Reconocimiento, pero si vale 1 no lo ha hecho. Cuando se pone ACKEN = 1 se inicia la secuencia
de generacin de la condicin de reconocimiento. Este bit se borra automticamente por hardware.
Para habilitar el modo de recepcin del maestro hay que poner el bit RCEN = 1. Para generar la
condicin de parada en las lneas SCL y SDA hay que poner PEN = 1. El bit RSEN cuando se pone a 1 inicia la repeticin de la condicin de inicio. Finalmente, para iniciar la condicin de inicio
hay que poner SEN = 1.

REGISTRO S S P C O N 2

Figura 8.27.

Registro de control 2 SSPCON2. Todos sus bits son lebles y escribihles y quedan a O tras un
Reset.

MDULO DE COMUNICACIN SERIE SNCRONA: MSSP

177

8.10. CHULETA-RESUMEN DE LOS REGISTROS USADOS


PARA EL BUS 12C

Figura 8.28. Tabla que recoge los principales registros que intervienen en el control del mdulo MSSP con
el protocolo bus I2C.

8.11. FUNCIONAMIENTO DEL MODO MAESTRO


El trabajo en el modo maestro se pone en marcha escribiendo los valores adecuados en los bits del
registro de control SSPCON y SSPEN = 1. Una vez puesto en funcionamiento este modo, el usuario tiene 6 opciones:

El maestro es el encargado de generar los impulsos de reloj y las condiciones de inicio y parada
en cada byte transferido. Cuando el maestro es receptor, el primer byte indica la direccin del esclavo (7 bits ms el bit R/W#). Por cada byte recibido por el maestro se transmite un bit de reconocimiento ACK.
A continuacin, se describe la secuencia de pasos que hay que realizar en una transmisin del
maestro:

178

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

En el modo maestro el valor usado en la generacin de la frecuencia se escribe en SSPADD, segn los 4 bits de menos peso. Despus, este valor se carga en el contador descendente BRG, que lo
va decrementando hasta llegar a O, donde se para hasta que se vuelve a recargar. El BRG se decrementa 2 unidades por cada ciclo de instruccin.

8.11.1. Condicin de inicio (start)


Para generar la condicin de start, el usuario debe escribir el bit SEN = 1 en SSPCON2. Si SDA y
SCL se mantienen a nivel alto, el contador BRG se carga con el valor de 7 bits de SSPADD. Cuando termina el contaje de BRG la lnea SDA pasa a nivel bajo. La condicin de inicio consiste en un
flanco descendente de SDA mientras SCL permanece con nivel alto. Pone el bit S = 1 del registro
SSPSTAT. Luego se recarga el BRG con el valor SSPADD <6-O> y vuelve a decrementarse. Al llegar a O el contador el bit SEN pasa a O automticamente.

8.11.2. Condicin de repeticin de inicio (start)


Esta situacin se produce cuando RSEN = 1. Entonces SCL pasa a nivel bajo y el contador BRG
se carga con los 7 bits de menos peso de SSPADD y comienza el contaje. Al finalizar el contaje
SCL pasa de nivel bajo a nivel alto mientras SDA sigue en nivel bajo. Luego nuevamente SCL = 1
y SDA = 1 y se vuelve a cargar BRG.

8.11.3. Modo maestro en transmisin


La transmisin de un byte de datos debe ir precedida de la transmisin de la direccin del esclavo,
la cual debe cargarse en el registro SSPBUF, en cuyo momento se pone el bit BF = 1 y se pone en
marcha el reloj y el inicio de la transmisin. Cada bit que sale por la lnea SDA lo hace en el flanco
descendente del impulso de reloj en SCL. Tras sacar los 8 bits se borra el bit BF y el esclavo debe
generar la condicin de reconocimiento en el noveno impulso de reloj. El bit ACK se coloca en el
bit ACKDT en el flanco descendente de SCL. Tras el noveno impulso SSPIF = 1 y se detiene el generador de frecuencia hasta que no se cargue otro dato en SSPBUF.

MDULO DE COMUNICACINSERIE SNCRONA:MSSP

179

En transmisin BF = 1 cuando la CPU escribe en el SSPBUF y BF pasa a O cuando han salido


los 8 bits. El sealizador WCOL vale 1 cuando el usuario escribe sobre el SSPBUF estando una
transmisin del dato previo en progreso. Este bit hay que pasarlo a O por software.
El bit ACLSTAT pasa a O cuando el esclavo ha enviado el bit de reconocimiento.

8.11.4. Modo maestro en recepcin


Para poner en marcha el modo maestro en recepcin, hay que poner el bit RCEN = 1 estando en reposo el mdulo MSSP. El generador de frecuencia empieza a funcionar y SCL cambia de estado en cada
perodo controlado por el decremento del contador BRG. Entonces el dato empieza a desplazarse sobre
el registro SSPSR. Al final del octavo clock se ponen BF = SSPIF = 1 y se transfiere el contenido de
SSPSR al SSPBUF, con lo que RCEN = O. El mdulo queda en estado de reposo a la espera de un nuevo comando. Cuando el buffer es ledo por la CPU BF se pone a O automticamente. El usuario puede
enviar un bit de reconocimiento al finalizar la recepcin, escribiendo ACKEN = 1 (SSPCON2 <4>).
Cuando un dato o una direccin se carga en SSPBUF desde SSPSR, el bit BF = 1 y este bit pasa a O cuando la CPU lee SSPBUF. El sealizador de desbordamiento SSPOV es 1 cuando se recibe un byte en SSPSR y an no ha ledo la CPU el dato anterior.
Si el usuario escribe en SSPBUF mientras hay una recepcin en progreso, el bit WCOL se pone
a 1 y el contenido del buffer no cambia.

8.11.5. Secuencia de reconocimiento


Se produce automticamente en cuanto se pone ACKEN = 1. Entonces la patita SCL pasa a nivel bajo
y aparece en SDA el bit de reconocimiento al finalizar el dato. Al poner ACKEN = 1 y ACKDT = O la
LA SECUENClA DE RECONOCIMIENTO
EMPIEZA AQU~:
ESCRIBE A SSPCON2
ACKEN = l . ACKDT = O

SDA

ACKEN BORRADO
POR HARDWARE
TBRG

TBRG

DO

SCL

iI

1
I

SSPlF

SE ACTNA SSPlF AL
DE IA RECEPCI~N

DESACTNADO
POR SOFTWARE

t
SE ACTIVA SSPlF AL FINAL DE
LA SECUENCIA DE RECONOCIMIENTO

Figura 8.29. Diagrama de tiempos de una secuencia de reconocimiento.

DESACTNADO
POR SOFTWARE

patita SCL queda a nivel bajo, mientras el generador de frecuencia cuenta un perodo (TBRG). Luego
SCL pasa a nivel alto y al completarse otro perodo SCL vuelve a pasar a nivel bajo y ACKEN = O. El
flag SSPIF = 1 cuando finaliza la secuencia de recono.cimiento.(Figura 8.29.)

8.11.6. Condicin de parada (stop)


Se genera la condicin o bit de stop al final de la transmisin/recepcin, poniendo el bit PEN = 1
(SSPCON2 <2>). En el flanco descendente del noveno impulso de reloj la lnea SCL queda a nivel
bajo. Entonces si PEN = 1 la lnea SDA pasa a nivel bajo y el generador cuenta un perodo, tras el
cual SCL pasa a nivel alto. Tras otro perodo TBRG, la lnea SDA pasa a nivel alto y P = 1. Tras otro
perodo PEN, se pone a O automticamente. (Figura 8.30.)
El impulso de reloj en SCL se produce cuando es muestreada dicha lnea cada ciclo Tosc*4,y est a nivel alto, en cuyo momento se carga el contador BRG con los 7 bits de menos peso de SSPADD
y comienza a contar otro perodo, pasando SCL a O al completarlo.

AL ESCRIBIR SSPCON2
SE ACTIVA PEN

FLANCO DESCENDENTE
DEL 9.O IMPULSO

SDA

1-

CUANDO SCL = 1 Y EL SEGUNDO SDA


SE ACTIVA EL BIT P

1 - - 1

ACKK

SCL PASA A NIVEL ALTO TRAS TBRG

SDA PASA A O ANTES DEL FLANCO ASCENDENTE


DEL RELOJ PAR,A CONFIGURAR
LA CONDlClONDE PARADA

Figura 8.30. Diagrama de tiempos de la condicin de parada.

1.

EL BIT PEN SE DESACTIVA POR HARDWARE


Y EL BIT SSPIF ES ACTIVADO

TBRG

-3la '1!ql3al '~!lfursueqap opeururra) ey 31d lap owaluf alempley


la opuyn3 laqes ap sowedn3oa.1d anb souraualolos x ~ g d 31d
9 ~ sol u03 'alemijos opol Iap uela seu
-pru seyxp als? ua anb sEl)ua!l/y ' ~ g d 9 ~ 3 1und e l ~ oqansal
d
0!3!3.1aP ows!w [a u03 u9!3e;redu103
ua '-3la O A E I ~leuo!33al!a
S~
'o!3p1 ap u g ~ p u o 3reflzup ap seuynuqns se1 ap peppqd
-w!s el asralz ypod eurel8o~dIap uoy3nlosa.1e1 u g .solep opuellsow A opuaAa1 ol!uyu! apnq un ua ep
-anb as 31d la anb eA 'epeled ap u?p!puo3 eun eyua as ou OSE^ alsa ua anb aslelzlasqo apand osou
-n3 olep owo3 .e,noal ua SE)S!A EA sosed ap epuan3as e1 ellsanw or3!3.rara alsa ap ewel8!ue810 13

'seauy
sews!w se1 ap uey8103 solla sopol 'solzepsa solzgrsodsrp seur uasealdma as anb ap ose:, la u g
('1 E-geln8g) -u?!srursuell ap omo3 uopda3a.1ap oluel 'sol
-ep ap eaug e1 ylas anb ' v a s / ~A3'ogsaew
~
lap alua!ualzold
ap legas e1 elas anb ' 7 3 ~ /
upe3!unu103 e1 eled seauy se31un SOP ez!lgn 321 o103010.1d la 'olnl~de:,alsa ua o l s ! ~ey as owo3

xau.zwdj 3 1 d ~ 0 ~ lap
3 . zag7
~ sopo!p lod ylellsour as A (slrq g ap s/g ap ouand)
~ ~ ~ g olzgfsods!p
d 3 d lap salolelz sol uylaal as 'ose3 alsa ug -32109.
ueuo!3unj anb solzylysodsrp A
31d un allua uo!3e3!unwo3 e1 ezgeal as o m p allsanur anb oldurap 011~3uasun Jezqeal apualald a s

'salual
-s!xa so3y.1?jpad ap pepylue3 uel8 el lod 321 opour ua osn ns ua ' a ~ u a u r e ~ a syur
~ ~ u'Aoouryqg
~
alsa ua
~ellua:,e sowelz sou o p e p d e alsa u g .sauo!~e3~~de
ap ujju~sun ua uezqin as dsspq olnpoux la our
-03 ~ ~ vlaso lnu e ~-uor3e3~unwo3
ap sosln3al so1 owrxyur [e ope!3uaod ey as ' x ~ g d 9 31d
1 sol ug

182

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

ln4148

RESET

i(

PIC16F873

L~NEA
DE DATOS

DISPOSITIVO 12C
MICRO'PIC TRAINER PLUS

Figura 8.31. Esquema elctrico del ejercicio propuesto.

PA ENTRADA
PB WlDA
RC3:RC4 ENTRADA

u
DIRECCONARESCLAVO
PARA LECTURA

Figura 8.32. Organigrama del ejercicio propuesto.

MDULO DE COMUNICACIN SERIE SINCRONA: MSSP

183

Programa comentado
Como puede verse, el programa mostrado a continuacin recoge todas la rutinas necesarias para la
transmisin y recepcin de datos por I2C. Aunque el ejemplo es sencillo, el modo de actuar en otros
casos sera similar.

184

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

MDULO DE COMUNICACIN SERIE SINCRONA: MSSP

BUCLE

clnvdt
cal1
movwf
goto

R-BYTE
PORTE3
BUCLE

185

;Refresca perro guardin


;Lee dispositivo PCF8574
; Visualiza dato sobre LEDs

END

Prueba del programa


Se van a utilizar el Micro'PIC Trainer para mostrar los valores ledos en los LEDs (RBO-RB7), y el
Micro'PIC Trainer Plus, que entre otros dispositivos12C incorpora el PCF8574, utilizado en este caso para la lectura de valores. Para una correcta configuracin de los perifricos utilizados:

1.O En el Micro'PIC Trainer Plus los jumpers J 1-J4 debern estar en la posicidn 2-3.
2." Durante la ejecucich, el jumper J7 del Micro'PIC 7rainer debe estar cerrado para habilitar los LEDs.

186

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

COMUNICACIN DE DATOS DIGITALES POR RADIO FRECUENCIA


La transferencia de informacin entre sistemas digitales usando la radio frecuencia es una de las ms
interesantes aplicaciones que puede utilizarse en cantidad de situaciones. La comunicacin de dos
sistemas sin conexin fsica alguna abre una extensa plataforma de mejora de productos.
En este apartado, se describen en forma resumida las principales caractersticas de las tarjetas,
que basadas en un PIC16F84 cada una, permiten la transferencia de informacin digital por R.F.
MSETX y MSERX son los nombres que asigna el fabricante Microsystems Engineering a la tarjeta emisora y receptora, respectivamente. La comunicacin entre ambas tarjetas es trasparente para el usuario, que nicamente tiene que encargarse de fijar los parmetros de configuracin y los datos que desea enviar.
En la fotografa de la Figura 8.33 se muestran las tarjetas MSETX y MSERX de transferencia de
informacin digital por R.F.

Figura 8.33. Fotografa de las tarjetas emisora y receptora basadas en un PIC16F84.

El emisor de radio frecuencia


La tarjeta MSETX es la encargada de transmitir los datos digitales por R.F. El emisor MSETX se
alimenta con una tensin de 12 VAC, que luego internamente rectifica, filtra y estabiliza para obtener 5 VDC para el circuito del PIC16F84, y 13 VDC para el mdulo transmisor de R.F.
El emisor se conecta al sistema digital desde el que se enva la informacin mediante comunicacin RS232 o niveles TTL. Dicho sistema digital puede tratarse de un ordenador personal, o bien,
de un sistema con microcontrolador, como puede ser un microbot. (Figura 8.34.)
En realidad, en el emisor MSETX existen dos bloques fundamentales: mdulo transmisor y circuito
del microcontrolador PIC16F84. Cuando el PIC del emisor se comunica con el Sistema del Usuario lo
hace en serie y de forma bidireccional. Recibe comandos y datos pero tambin puede enviar informacin sobre su configuracin interna. Por otro lado, el PIC se comunica en serie con el Mdulo Transmisor RT1-433, el cual enva la informacin bit a bit por R.F., segn se muestra en la Figura 8.35.

EMISOR
MSETX

Figura 8.34. Conexin del emisor con un PC

EMISOR MSETX
m

+rt-

RTI -433

8
I

:
8

Mdulo
Transmisor

1Usuario 1
Control

I
I

Figura 8.35. Comunicacin del PIC con el Sistema del Usuario y con el Mdulo Transmisor de R.F.

188

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

El emisor MSETX puede considerarse un subsistema que forma parte de un sistema principal
que lo requiere para enviar datos digitales por R.F.
El MSETX recibe desde el Sistema de Usuario los comandos y la informacin a enviar en formato RS232 o mediante niveles lgicos TTL. Despus, el PIC configura la transmisin y se encarga
de que el Mdulo Transmisor enve por R.F., la informacin deseada segn el protocolo utilizado.
Los elementos ms relevantes que componen el emisor MSETX son:

Receptor de radio frecuencia


En la Figura 8.36 se ofrece un esquema de adaptacin del Mdulo Receptor de R.F. MSERX con el
Sistema de Usuario, que en este caso se representa como un PC.
Aunque en la Figura 8.36 la aplicacin del usuario est representada como un PC, tambin el receptor podra entregar los datos digitales recibidos por R.F., a un terminal de datos o a un sistema
con microcontrolador o microprocesador.

u
MSERX

Figura 8.36, Interconexin del Mdulo Receptor de R.F. y el PC.

RECEPTOR MSERX
1

PIC

Mdulo
Receptor

4-

1Usuario 1

Control

Figura 8.37. El PIC hace de intermediario entre el Sistema de Usuario y el Mdulo Receptor de R.F.

El receptor MSERX es un subsistema que forma parte de un sistema principal y al cual le proporcio
la informacin digital que recibe por R.F. Se limita a recibir los datos, empaquetarlos, verificarlos y, fin
mente, entregarlos en serie al Sistema del Usuario para que los procese.
La Figura 8.37 ofrece un esquema ms detallado de la constitucin del Receptor de R.F.
El Sistema del Usuario comienza enviando al emisor MSERX datos para su configuracin, luego este I
timo le devuelve el estado de su configuracin interna, as como los datos digitales que ha recibido por R.
bit a bit.
Las caractersticas ms relevantes del Receptor MSERX son:

Los PIC16F87x contienen un mdulo MSSP con dos puertas para la comunicacin serie sncrona,
o sea, con seal de reloj. Adems, tambin disponen de un mdulo USART capaz de soportar la comunicacin serie sncrona y asncrona.
El USART, llamado SCI (Serial Comunications Interface), puede funcionar como un sistema
de comunicacin full duplex o bidireccional asncrono, adaptndose a multitud de perifricos y
dispositivos que transfieren informacin de esta forma, tales como el monitor CRT o el ordenador PC. Tambin puede trabajar en modo sncrono unidireccional o h a y duplex para soportar
perifricos como memorias, conversores, etc. En resumen, el USART puede trabajar de tres maneras:
1." AS~NCRUNA
(Full duplex, bidirecciunal).
2.' SNCRONA-MAESTRO (Half duplex, unieJireccion~1).
3." S~ICRONA-ESCLAVO
(Half duplex, unidirecciiona/).

En la Figura 9.1 se muestra un esquema del comportamiento del USART en modo asncrono y
sncrono. En el primero, las transferencias de informacin se realizan sobre dos lneas TX (transmisin) y RX (recepcin), saliendo y entrando los bits por dichas lneas al ritmo de una frecuencia
controlada internamente por el USART. En el modo sncrono, la comunicacin se realiza sobre dos
lneas, la DT que traslada en los dos sentidos los bits a la frecuencia de los impulsos de reloj que salen por la lnea CK desde el maestro. En ambos modos las lneas de comunicacin son las dos de
ms peso de la Puerta C: RC6/TX/CK y RC7/RX/DT.
Dada la importancia del protocolo asncrono del USART, segn la popular norma RS-232-C, se
dedica este captulo a estudiar este modo de comunicacin, proponiendo un ejercicio de manejo de
dicho protocolo en la seccin Programar PIC es fcil.
En esta forma de comunicacin serie, se usa la norma RS-232-C, donde cada palabra de informacin o dato se enva independientemente de los dems. Suele constar de 8 o 9 bits y van prece-

192

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

MAESTRO

ESCLAVO

Figura 9.1. En el modo asncrono, la comunicacin serie del USART en los PICl6F87x est soportada por
las lneas RCITXICK y RC7IRXIDT por las que se mueven los bits a la frecuencia interna de
reloj. En el modo sncrono, los bits de informacin circulan en ambos sentidos por la lnea DT
a la frecuencia de los impulsos que genera el maestro por la lnea CK.

didos por un bit de START (inicio) y detrs de ellos se coloca un bit de STOP (parada), de acuerdo
con las normas del formato estndar NRZ (NonReturn-to-Zero). (Figura 9.2.) Los bits se transfieren a una frecuencia fija y normalizada.
Los cuatro bloques que configuran la arquitectura del USART, en modo asncrono, son:
l." Circuito de mue~str@u.

2." C%nrpfad~rde b&@ie;9. .


3.' Transmisor asncronc>.
4.' Riac~ptor~ t s f n c r ~ w .

El circuito de muestre0 acta sobre la patita RC7/RX/DT, que es por donde se recibe el bit
de informacin o control y se encarga de muestrear tres veces su valor, para decidir ste por mayora.

BIT INICIO

BIT 8

BIT 1

BIT PARADA

DATO

Figura 9.2. En el protocolo de comunicacin asincrono, cada palabra de informacin o dato consta de 8 o
9 bits, estando precedidos por un bit de INICIO y les sigue un bit de PARADA. Los bits se transfieren al ritmo de la frecuencia de reloj establecida.

9.2. GENERADOR DE BAUDIOS


En el protocolo asncrono RS-232-C, la frecuencia en baudios (bits por segundo) a la que se realiza la transferencia se debe efectuar a un valor normalizado: 330, 600, 1.200, 2.400, 4.800,
9.600, 19.200, 38.400, etc. Para generar esta frecuencia, el USART dispone de un Generador de
Frecuencia en Baudios, BRG, cuyo valor es controlado por el contenido grabado en el registro
SPBRG.
Adems del valor X cargado en el registro SPBRG, la frecuencia en baudios del generador depende del bit BRGH del registro TXSTA<2>. En el caso de que BRGH sea O se trabaja en baja velocidad y si BRGH = 1 se trabaja en alta velocidad. Segn este bit se obtendr el valor de una constante K necesaria en la determinacin de la frecuencia de funcionamiento.
Frecuenca en Baudios = Fw

X es el valor cargado en el registro SPBRG


Si BRQH = O, baja velocidad y K = 64
Si BROH = I , alta velocidad y K = 16

/(K

(X + 7))

194

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

De donde se desprende que:

En la Figura 9.3 se presenta la estructura interna junto a otros datos de inters de los registros que
intervienen en la determinacin de la frecuencia en baudios a la que transfiere informacin el
USART.

Figura 9.3. Caractersticas relevantes de los registros que intervienen en la determinacin de la frecuencia
en baudios de la transferencia de informacin en el modo asncrono del USART.

b L USAKI': 'l'KANSMISOR/RECEPTOR SINCRONOIASNCRONOSERIE

195

9.3. TRANSMISOR ASINCRONO


En la Figura 9.4, se muestra un esquema simplificado de la comunicacin entre un USART transmisor y otro receptor, contenidos en sus respectivos microcontroladores.
El dato que se desea transmitir por el USART transmisor de la Figura 9.4 se deposita en el registro TXREG y a continuacin se traspasa al registro de desplazamiento TSR, que va sacando los
bits secuencialmente y a la frecuencia establecida. Adems, antes de los bits del dato de inforrnacin incluye un bit de INICIO y despus de sacar todos los bits aade un bit de PARADA. El
USART receptor recibe, uno a uno, los bits, elimina los dos de control y los de informacin una vez
que han llenado el registro de desplazamiento RSR los traslada automticamente al registro
RCREG, donde quedan disponibles para su posterior procesamiento.
En la Figura 9.5 se presenta el diagrama por bloques de la seccin transmisora del USART.
El ncleo est constituido por el registro de desplazamiento TSR, que obtiene el dato desde el

Figura 9.4. Esquema simplijicado del conexionado entre dos mdulos USARTfuncionando en modo asincrono.

BUS DE

Figura 9.5. Diagrama por bloques de la seccin de transmisin del USART en modo asncrono.

196

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

registro TXREG y luego lo va desplazando y sacando bit a bit, en serie, por la patita
RC6/TX/CK. El primer bit que sale es el de menos peso. El dato a transferir se carga por software en TXREG y se transfiere al TSR en cuanto se haya transmitido el bit de PARADA del
dato anterior. La transferencia entre los dos registros se realiza en un ciclo y entonces el sealizador TXIF se pone a l , para advertir que el registro de transmisin se ha vaciado. Tambin
en este momento puede producirse una interrupcin si se ha posibilitado programando el bit
TXIE = 1 en el registro PIE1<4>. Cuando se escribe otro dato sobre TXREG, el sealizador
TXIF se pone a O. El bit TRMT sirve para indicar el estado del registro TSR y vale 1 cuando
est vaco.
La secuencia de pasos a seguir para implementar una transmisin en el USART es la siguiente:

El siguiente ejemplo muestra una posible configuracin.

En la Figura 9.6, se ofrecen las caractersticas ms relevantes de los registros asociados con la
transmisin asncrona y en la Figura 9.7 se especifica la distribucin y asignacin de funciones de
los bits del registro TXSTA.

Figura 9.6. Caractersticas ms relevantes de los registros asociados con la transmisin asncrona.

Registro TXSTA

Figura 9.7. Asignacin de funciones de los bits del registro TXSTA para el control de la seccin transmisora del USART.

198

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Los datos se reciben en serie, bit a bit, por la patita RC7/RX/DT y se van introduciendo secuencialmente en el registro desplazamiento RSR (Figura 9.4), que funciona a una frecuencia 16 veces ms
rpida que la de trabajo. Cuando el dato consta de 9 bits hay que programar el bit RX9 = 1 y el noveno bit de informacin se colocar en el bit RX9D del registro RCSTA. Obsrvese en la Figura 9.8
el control sobre el noveno bit con las puertas de control y las seales que se aplican (ADDEN = 1).
Cuando CREN = 1 en el registro RCSTA<4>, se habilita la recepcin.
Cuando un procesador maestro intenta enviar informacin a uno de los esclavos, primero enva
un byte de direccin que identifica al destinatario. El byte de direccin se identifica porque el bit
RX9D que llega vale 1. Si el bit ADDEN = 1 en el esclavo se ignoran todos los bytes de datos. Pero si el noveno bit que se recibe vale 1, quiere decir que se trata de una direccin y el esclavo provocar una interrupcin, y se transferir el contenido del registro RSR al buffer de recepcin. Tras
la interrupcin, el esclavo deber examinar la direccin y si coincide con la suya poner ADDEN =
O para poder recibir datos del maestro.
Si ADDEN = 1 como los datos son ignorados, el bit de PARADA no se carga en RSR, por lo que
este hecho no produce interrupcin.

i""'"

CREN

MSB

REGISTRO DESPLAZAMIENTORSR

P"""

r"""
n

OERR

FERR

FlFO

BUS DE DATOS

Figura 9.8. Diagrama por bloques de la seccin receptora del USART.

xi\i.

i\i I r . u i r i i u v i \ , i w ~ u i

i v i \

LU L I
L \ I~L W

VL//

Los pasos a seguir en el modo de recepcin son los siguientes:

En la Figura 9.9 se muestra la estructura interna y la asignacin de funciones de los bits del registro RCSTA.

Registro RCSTA

200

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Figura 9.9. Registro RCSTA para el control de la seccin receptora del USART, en modo asincrono.

En la Figura 9.10 se ofrecen las caractersticas ms relevantes de los registros que intervienen en
la recepcin asncrona de datos en el USART.

Figura 9.10. Caractersticas de inters de los registros que intervienen en la seccin receptora del USART
en modo asncrono.

EL USART: TRANSMISOR/RECEPTOR SINCRONO/ASINCRONO SERIE

201

De los dos modos de funcionamiento del USART, la comunicacin serie asncrona es la ms utilizada. El PIC16F87x incorpora el hardware para comunicarse va RS-232 con un ordenador tipo PC.
Para ello, el PC deber emular un terminal con el software apropiado.

Enunciado
El programa que vamos a realizar va a hacer que el PIC se comunique va serie con un programa terminal que correr sobre un PC. El PIC esperar a recibir un carcter, lo visualizar en forma binaria sobre LEDs y lo volver a transmitir a modo de ECO. La recepcin del carcter se controlar mediante interrupcin.

Esquema elctrico
En este ejercicio se van a utilizar tres elementos, tal y como se muestra en la Figura 9.11.

202

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

CABLE PARA
COMUNICACION SERIE
xD
TxD

TxD

CIRCUITER~A,PARA
COMUNICACION SERlE
MICRO'PIC 110

ORDENADOR

Figura 9.11. Esquema elctrico del ejercicio propuesto.

Organigrama
Como se muestra en la Figura 9.12, el programa principal de este ejercicio es sencillo, ya que tras
configurar los registros a utilizar slo hay que dejar al USART en modo escucha y esperar en un bucle a que se genere una interrupcin al recibir un carcter desde el PC.

*
USART M ESCUCHA

Figura 9.12. Organigrama del ejercicio propuesto.

EL U ~ N 1
K: 1 KNlV 3lV113uK/KkLkY 1 U K SIN LKUN U/AY LNCKUNU

YbKlL:

5'
LEER DATO

SACAR DATO

P
REmANSMITlR DATO

u
VOLVER

Figura 9.13. Organigrama de tratamiento de interrupcin.

En el tratamiento de interrupcin se leer el dato recibido, se mostrar por la Puerta B y se volver a retransmitir hacia el PC a modo de ECO. Antes de volver se deber restaurar el sealizador
de interrupcin.

Programa comentado
El programa una vez terminado quedar as:

204

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

EL USART: TRANSMISORJRECEPTORSNCRONO/ASNCRONOSERIE

205

Prueba del programa


Adems de las conexiones ya comentadas en el esquema elctrico, se deber tener en cuenta
que:

Una vez hecho esto y grabado el programa en el PIC, se ejecutar el programa TERMINAL.EXE desde el PC. Cada tecla que se pulse ser recibida por el microcontrolador, que la
sacar por los LEDs y la devolver al ordenador de modo que pueda verse su eco en el monitor.

El programa de comunicaciones TERMINAL


Se trata de un programa de comunicaciones que funciona bajo MS-DOS o en Windows con ventana MS-DOS, en cualquier ordenador IBM PC/XT/AT o compatible, contenido en un nico fichero ejecutable llamado TERMINAL. Su ejecucin tiene lugar al teclear la siguiente lnea de comandos:

Al ejecutar el programa, aparece la pantalla de trabajo que se muestra en la Figura 9.14.


El programa hace que el PC emule a un terminal serie capaz de comunicarse con cualquier otro
dispositivo.
Pulsando las teclas Alt-X, se cancela el programa de comunicacin, devolviendo el control al
sistema. Con la tecla F1 se accede a una ventana de ayuda para el manejo del programa TERMINAL. Tras la Figura 9.14 se explica resumidamente la funcin de cada uno de los comandos ejecutable~.

10.1. ESTO ES OTRA HISTORIA


En Julio de 1999, Microchip anunciaba desde su sede central en CHANDLER, Arizona, la nueva familia PICl8Cxxxx. Se trataba de una familia de microcontroladores con arquitectura RISC de 8
bits, pero que inclua los mayores avances en hardware y software para simplificar y potenciar miles de aplicaciones centradas en las reas de la automocin, las comunicaciones, la ofimtica, los
productos de gran consumo y el control industrial.
El objetivo del fabricante era facilitar a sus usuarios la migracin de las familias PIC12C6xx,
PIC16Cxx y PIC l7Cxx a modernos dispositivos, que con una relacin precio/prestaciones muy
competitiva, integren la mayora de los recursos que posibiliten desarrollos eficientes, flexibles y de
elevado rendimiento. Pero esta migracin ser indolora porque se aprovecharn todas las inversiones que se han realizado en hardware y software para las anteriores familias de PIC.
Con la familia PIC 18Cxxx, Microchip ha intentado resolver dos grandes compromisos:

Inicialmente, la familia nace con cuatro modelos con memoria de programa EPROM, cuyas
principales caractersticas se reflejan en la tabla de la Figura 10.1. El fabricante planea que en un
par de aos esta familia dispondr de modelos con memoria FLASH, OTP y ROM. De los cuatro
modelos, dos estn encapsulados con 28 patitas y los otros dos con 40, como suceda con los
PIC16F87x.

208

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Figura 10.1. Tabla que muestra las principales caractersticas de los cuatro primeros modelos de la familia PICI 8Cxxx.

10.2. LAS GRANDES APORTACIONES


Para comprender las enormes expectativas potenciales de los PIC18Cxxx se exponen las aportaciones ms significativas, antes de pasar a describir la arquitectura, la organizacin de la memoria y las
instrucciones. En cuanto a los perifricos, existe una gran similitud con los estudiados en los
PIC1687x.

10.2.1. Espacio lineal de direccionamiento


El direccionamiento implementado en el chip permite manejar un espacio dedicado al programa
que puede alcanzar los 2 MB y hasta 4 KB para los datos. Esta posibilidad es capaz de satisfacer las

209

EL FUTURO EST AQU: LA FAMILIA PIC18CXXX

necesidades ms exigentes en cuanto a espacio de memoria se refiere. Los modos de direccionamiento se han potenciado extraordinariamente para la mejor operatividad del lenguaje C.

10.2.2. Completo juego de instrucciones


El repertorio consta de 77 instrucciones que tienen un tamao de 16 bits (palabra de 2 bytes). No
obstante, hay 4 instrucciones que tienen un tamao de 2 palabras de 16 bits. Todas las instrucciones
son similares a las empleadas en los PIC16Cxx y los PIC17Cxx con excepcin de dos nuevas instrucciones. Se resaltan los siguientes avances en el juego de instrucciones.

..

1.O instrucciones capaces de mover datos entre dos posiches de la mtmoria dta datos.

2,' Instruccones que permitep?el intercambio de informacin entre posiciones de la mernwja de prcp
grama y la de datos.
3." Multipiicacin de 8x8 Mts en un ciclo de instrucci&.
4." Potentes instrucciones de un solo ciclo qw ponen a -f o cambian el mbr de un bit en on mgistm
S en una Puerta de E/S.

..

;,

f"'"

10.2.3. Diseo optimizado para compilador C


Hasta que no se ha alcanzado la capacidad de memoria y los modos de direccionado de los
PIC 18Cxxx, los ingenieros de diseo han preferido en muchas ocasiones trabajar con lenguaje Ensamblador.
Con esta familia se facilita enormemente el empleo del lenguaje C. Algunas de las razones son
el enorme espacio lineal de la memoria, los diversos punteros de datos que permiten el direccionado con postincremento, predecremento, etc., la eficiencia en el manejo de la Pila, etc.
Microchip dispone de un interesante compilador de C denominado MPLAB-C18, del que se
puede obtener una versin de demostracin a travs de Internet.
Cualquier programa escrito en Ensamblador o en C para los PIC16Cxx y los PIC 17Cxx puede
transferirse directamente para ser ejecutado por los PIC18Cxxx.

10.2.4. Herramienta modular para la emulacin


Un emulador de gran exactitud se implementa mediante la combinacin de dos chips maestro-esclavo. El primero emula a la CPU y el acceso a la memoria (Figura 10.2). El esclavo emula a los
perifricos, poniendo a disposicin de los diseadores un sistema de validacin casi perfecto que
aade una gran seguridad a los productos en fase de desarrollo.

10.2.5. Otras ventajas


Al igual que otros PIC, los de esta familia admiten la Programacin Serie En Circuito (ICSP), que
permite la grabacin del programa sobre el microcontrolador una vez que se halle colocado en la
tarjeta del producto final.

210

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES


EMULADOR PIC1 8 C m
- 1 1 1 1 1 1 1 - 1 1 1 1 1 1 1 1 1 1 - - - - 1 - 1 -

Figura 10.2.

Esquema del emulador de los PIC18Cx.n formado por dos chips.

El perro guardin dispone de sus propios divisores de frecuencia y no comparte nada con el Timero. Es posible activarlo y desactivarlo por software, con lo que puede detenerse cuando se entra
en el modo de Reposo o en partes no crticas del programa.
Un circuito PLL da a los usuarios la opcin de multiplicar por 4 la frecuencia del cristal, consiguiendo 40 MHz a partir de una frecuencia de entrada de 10 MHz. En este caso, la configuracin
del oscilador ha de estar programado para funcionar en modo HS (Figura 10.3).

:""-";
I

CRISTAL
10 MHz

b;

PLL

40 MHz

I-

I - 1 - 1 - 1 - 1 I

Figura 10.3. Un circuito PLL optativo consigue multiplicar por 4 la frecuencia de entrada del cristal.

EL FUTURO EST AQU: LA FAMILIA PIC18CXXX

211

10.3. DIAGRAMA DE CONEXIONADO


Los dos modelos de PIC18C2x2 estn encapsulados con 28 patitas, mientras que la pareja PIC 18C4x2 tienen 40 patitas. La diferencia ms importante, al igual que suceda con
los PIC16F87x, es que los que tienen ms patitas disponen de 2 Puertas de E/S ms, la D
y la E.
En la Figura 10.4 se muestra el diagrama de conexiones de los PICl8Cxxx con el encapsulado
en doble hilera de patitas.

MCLR#/Vpp
RAO/ANO
RAl/ANl
RA2/AN2/VK,,
RA3/AN3/VK,,+
RA4/TOCKI
RA5/AN4/SS#/LV D IN
REO/RD#/AN5
REl/WR#/AN6
RE2/CS#/AN 7
VDD
vss
OSCl/CLKI
OSCZ/CLKO/RA6
RCO/Tl OSO/Tl CKI
R C l / T l OSI/CCP2
RC2/CCP1
RC3/SCK/SCL
RDO/PSPO
RDl/PSPl

MCLR#/Vp,
RAO/ANO
RA1/AN 1
RA2/AN2/VKFF
RA3/AN3/V,,F+
RA4/TOCKI
RA5/AN4/SS#/LVDI N
vss
OSC1/CLKI
OSC2/CLKO/RA6
RCO/Tl OSO/Tl CKI
RCl/TlOSl/CCP2
RC2/CCPl
RC3/SCK/SCL

Figura 10.4. Diagrama de conexiones de las patitas de los dos modelos de encapsulados en doble hilera de
los PICI 8Cxx.

10.4. ARQUITECTURA INTERNA


Aunque con mayor nmero de registros internos y ms capacidad de memoria y de Pila, la arquitectura interna de los PIC 18Cxxx recuerda mucho a la de los PIC16F87x. Los modelos de 40 patitas disponen de las Puertas de E/S D y E, que posibilitan la implementacin de una puerta paralela
esclava. (Figuras 10.5 y 10.6.)
En referencia a los perifricos, hay mucha analoga con los que tenan los PIC16F87x. La
nueva familia dispone de un Timer ms. El Contador de Programa es ms complejo y de mayor
tamao, lo mismo que ocurre con la Pila, que tiene 31 niveles de 21 bits cada uno. La direccin
de la memoria de programa tiene 21 bits y maneja 2 MB, y la direccin de la memoria de datos, con 12 bits, puede manejar 4 KB. Otros elementos destacables y nuevos de esta familia son
el multiplicador hardware 8x8 y las lgicas para el incremento y decremento de las direcciones.

Como ya se ha comentado, el Contador de Programa (PC), al disponer de 21 bits, puede manejar un


espacio de memoria de 2 MB para el programa. Sin embargo, los PIC18Cx52 slo tienen implementado 32 KB de memoria EPROM y los PIC18x42 16 KB. Como la mayor parte de las instrucciones tienen 16 bits, en los modelos citados en primer lugar caben 16 K instrucciones y en los segundos la mitad.
El Vector de Reset ocupa la direccin OOOOh y las interrupciones las direcciones 0008h y 001 8h.
(Figura 10.7.)
La Pila tiene 3 1 niveles de 21 bits cada uno y su puntero, con 5 bits, se pone a O despus de
un Reset. Tanto dicho puntero como la posicin de la cima de la Pila son lebles y escribibles
a travs de los registros FSR. Adems, hay sealizadores de Pila llena y Desbordamiento
de la pila y existen instrucciones PUSH y POP para introducir y salvar el PC de la cima de la
Pila.
El PC tiene depositados sus 21 bits en 3 registros. Los 8 bits de menos peso los contiene el
registro PCL, los 8 bits siguientes estn en el PCH y, finalmente, los 5 de ms peso <20-16>,
se ubican en el registro PCU. Slo los bits del registro PCL son directamente lebles y escribibles.

Existen 4 instrucciones de 4 bytes (MOVFF, CALL, GOTO y LFSR). Los 4 bits de ms peso
de la segunda palabra de estas instrucciones siempre son cuatro unos, que codifican una forma
especial de la instruccin NOP. Los 12 bits de menos peso de la segunda palabra de estas instrucciones direccionan el dato que maneja la instruccin codificada en la primera palabra. As,
mientras se ejecuta la primera palabra se busca el operando de la segunda. Adems, si se brinca
o salta la primera palabra, la segunda palabra al no ir precedida por la primera se interpreta por
una NOP.

EL FUTURO EST AQU: LA FAMILIA PIC 18CXXX

v
PUERTA SERIE
S~NCRONA
MAESTRA

Figura 10.5. Arquitectura interna de los modelos de 28 patitas de la familia PICl8Cxxx.

213

214

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

RAS/AN4/SS#/LVDIN

RCO/Tl OSO/Tl CKI


RCl/Tl OSI/CCP2

' , ,4 x,P,L LI w;
-1iii-iii.
' VOLTAJE DE REFERENCIA

- -

G;E&N;

DE PRECISIN
I

ii i

i i

MCLR#

V
,,

Vsr

Figura 10.6. Arquitectura interna de los modelos de 40 patitas de la familia PIC18Cxxx.

EL FUTURO EST AQu: LA FAMILIA PIC 18CXXX

215

2 Mbytes

Figura 10.7. Organizacin general de la memoria de programa de los PIC18Cx52

10.6. ORGANIZACIN DE LA MEMORIA DE DATOS


La memoria de datos puede alcanzar un tamao de 4 KB al estar manejada por direcciones de 12
bits. Es de tipo RAM esttica y los modelos PIC18Cx42 slo disponen de 512 bytes implementados
fsicamente en el chip, mientras que los modelos PIC 18Cx52 tienen 1.536 bytes. En los bancos de
la RAM hay posiciones que contienen Registros Especficos (SFR) y otros de Propsito General
(GPR).
El mapa de memoria puede dividirse en 16 bancos de 256 bytes cada uno. En este caso, la direccin se forma con dos campos. El primer campo de 4 bits sirve para seleccionar el banco y est
implementado en los 4 bits de menos peso del registro BSR (Registro de Seleccin de Banco). El
segundo campo tiene 8 bits, que se hallan contenidos en el formato de la instruccin.
En el direccionamiento directo, los 16 bits del formato de la instruccin INS<15-O> se reparten
en los siguientes campos. Los 6 bits de ms peso INS<15-10> contienen el cdigo OP que discrimina las instrucciones. El bit INS<9> indica el destino de la instruccin, de forma que si vale O es
el W y si vale 1 es el registro f, que maneja la instruccin. El bit INS<8> se denomina a y determina el tipo de acceso a la memoria de datos. Si a = 1 se accede al banco que determinan los 4 bits
de menos peso del registro BSR. Si a = O, se usa un direccionamiento especial de Acceso a Banco (Figura 10.8).
Por ejemplo, en la instruccin ADDWFf,d,a, en el caso de materializarse en ADDWF 004h,O,l,
el acceso a la memoria de datos sera al banco que estuviese contenido en los bits BSR<3-O> en la
posicin 004h y el registro destino sera el W (Figura 10.9).

216

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

CDIGO OP. INSTRUCCINC~-O>

1 1
I I

D I R E C C I ~ NDENTRO
DELBANCO

1
I

O000

BANCO O

BANCO

0001

BANCO 1

XXXX

lll?

BANCO x

BANCO 15

Figura 10.8. Direccionamiento directo a memoria, usando para la seleccin del banco los 4 bits de menos
peso del registro BSR.

Figura 10.9. Codijkacin en binario de la instruccin addwf 004h,0,1, que expresa un direccionado a la
memoria de datos usando los bits BSR<3-O> para seleccionar el banco accedido.

Cuando a = O el acceso especial consiste en que slo se emplean los 8 bits de la direccin, puesto que el banco al que se accede est formado por los 128 primeros bytes del Banco O y los 128 1timos bytes del Banco 15, en el que se hallan contenidos los registros SFR (Figura 10.10).

EL FUTURO EST AQU: LA FAMILIA PIC18CXXX

217

CDIGO OP. INSTRUCCINC~-O*

8 r

DIRECCIONES POSIBLES
DENTRO DE LOS BANCOS

O000

BANCO O

0001

BANCO 1

XXXX

1111

BANCO x

BANCO 15

Figura 10.10. Cuando a = O slo se accede con los 8 bits de direccionado contenidos en la instruccin. Los
256 bytes a los que se pueden acceder estn formados por los 128 primeros del Banco O y los
128 ltimos del Banco 15.

Para manejar de forma ptima la memoria de datos, se han construido instrucciones formadas
por dos palabras de 16 bits. La primera destina sus 4 bits de ms peso al cdigo OP de discriminacin y los 12 restantes a apuntar en el espacio de 4 KB al operando fuente (S). La segunda palabra
siempre tiene sus 4 bits de ms peso a 1 y los 12 restantes apuntan al operando destino (d). La instruccin MOVFF s,d transfiere el contenido de la direccin de la memoria de datos (S) a la posicin (d). (Figura 10.11.)
La segunda paiabra de una instruccin de dos palabras siempre empieza con cuatro u m , En caso
de no ejecutarse la primera palabra, por ejehpb como consecuencia de un brinco, ese cbdigo se
interpreta como una instruccin NOi?

Mediante el uso de varios punteros de datos indirectos (registros FSR), se accede a posiciones
de la memoria con preincremento, postdecremento, etc.
Una ltima posibilidad de los PICl8Cxxx es trasladar informacin entre la memoria de datos,
cuyas posiciones tienen tamao byte, y la de programa que tienen 16 bits de tamao. Para soportar
estas operaciones de lectura de tabla y escritura de tabla existen dos registros, uno de ellos es el

218

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES


INSTRUCCI~NMOVFF s,d
CDIGO OP. INSTRUCCIN<~-O>
1 PALABRA
15

."
7

CDIGO OP. INSTRUCCIN<~-O>


1~

BANCO 1

2."PALABRA

DlRECClONAMlENTODE
OPERANDO DESTINO

DlRECClONAMlENTODE
OPERANDO FUENTE

BANCO O

XXXX

1111

BANCO x

BANCO 15

Figura 10.11. La instruccin MOVFF s,d consta de dos palabras de 16 bits. En la primera, los 4 bits de ms
peso expresan el cdigo OP y los 12 restantes la direccin del operando fuente. En la segunda palabra, los 4 primeros bits siempre son 1 y los 12 restantes apuntan la direccin del operando destino.

TBLPTR, que consta de 21 bits y que sirve para apuntar una posicin de la memoria de programa.
El otro registro es el TABLAT, que soporta un Latch de Datos, que guarda los 8 bits que se leen o
que se van a escribir en la memoria de programa.
Como se aprecia en la Figura 10.12, en la operacin de lectura de tabla, el byte de la memoria de
programa apuntado por TBLPTR se carga en TABLAT, que representa una posicin de la memoria
de datos. En escritura de tabla, el byte procedente de la memoria de datos cargado en TABLAT se
escribe en el byte que apuntan los 21 bits de TBLPTR.

10.7. REPERTORIO DE INSTRUCCIONES


Aun manteniendo el parecido y la sencillez con las instrucciones de las gamas de PIC precedentes,
las 77 instrucciones del repertorio no slo aumentan el tamao a 16 bits, sino que potencian su actuacin y las adaptan al lenguaje C. Adems, cuatro de dichas instrucciones tienen una longitud de
dos palabras. (Figura 10.13.)

EL FUTURO EST AQUI: LA FAMILIA PIC18CXXX

219

EIIrl
LECTURA DE TABLA

G
ESCRITURA DE TABLA

20

PUNTERO TABLA

7 LATCHTABLA

Figura 10.12. Las operaciones lectura de tabla y escritura de tabla traspasan informacin entre las dos memorias de los PIC18Cxxx.

220

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

EL FUTURO ESTA AQUI: LA FAMILIA PIC 18CXXX

221

222

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

APENDICE A - LA FAMILIA PIC AL COMPLETO

225

EL = EE

ECCP =
/WN
EMA = EXbprptCd Memary Mdmcing

t2c= m
-

cmn

1CD = i&MDzcwg

LVD=LO(~V~MBCW~

M fC/SPI = Mastw L"C/SPI

M = - B W m R e M
PtVD = Prcgrmrn* LwLuctcge LMfxmt'
PSP=Parafkl C I M M
W M =Pulse W& dtfi*
SLAC= aqpe A/D m r f m up to la MS

SMB = S p
W=%a
U W =U
VHt = vuiiage Reemw
WT = Wa%cb&g Time

@cWmmRmm/Transrri~ttec

LIBROS

NMICROCONTROLADORESPIC. Diseo prctico de aplicaciones,


(1.varte: PIC16F84). Incluye un CD con aplicaciones y tutoriales multimedia.
Angulo, J. M." y Angulo, 1.
Editorial McGraw-Hill, 2." edicin, 1999.
MICROCONTROLADORES PIC. La solucin en un chip,
Angulo, J. M.", Martn, E. y Angulo, 1.
Editorial ITP Paraninfo, 4." edicin, 2000.
MICROB~TICA>>,
Angulo, J. M.", Romero, S. y Angulo, 1.
Editorial ITP Paraninfo, 2000.
REVISTAS

Revista Espaola de Electrnica*


Elektor
Electronics
~CircuitCellar
Electrnica Prctica Actual
Resistor
PC Hardware
Microbit
EMPRESAS

MICROCHIP TECHNOLOGY INC.


2355 West Chandler Blv., Chandler, AZ 85224-6199, EE.UU., Tel: 602.786.7200.
SAGITRON
Corazn de Mara, 80-28002 MADRID (Espaa), Tel: 91-4169261.
E-mail: sagitron@sagitron.es

230

BIBLIOGRAFIA Y DIRECCIONES DE INTERNET RELACIONADAS CON LOS PIC

aMICROSYSTEMS ENGINEERINGB
Gral. Concha, 39-48012 BILBAO (Espaa), Tel: 94-4223263
E-mail: msyseng@arrakis.es
INTERNET

MICROCHIP:
MICROSYSTEMS ENGINEERING:
PARALLAX, INC:
ITU TECHNOLOGIES:
SAGITRON:

http://www.microchip.com
http://www.arrakis.es/-msyseng
http://www.parallaxinc.com
http://www.itutech.com
http://www.sagitron.es

ADC, 86
ADCONI, 133
ADCS<l :O>, 131
ADRESL, 133
ADRESH, 133
Arbitraje, 166, 167
Bajo consumo, 74
Batera, 150
Baudios, 193
BGRH, 193
BOR#, 74
Bus I2C, 160, 173
Captura modo, 106, 108
CCP, 7, 105, 112
CCP1,108,110
CCPxCON, 105
Certamen, 127
Comparacin modo, 107,
108
Compilador C, 209
Configuracin, 150
Conversor A/D, 8, 129, 132,
136
CPO, 52
CP1,52
DAC, 86
DATAQUEST, 3
Direccionamiento, 169
EEPROM, 53
Emisor R.F., 186
Encapsulados, 33

Encoder, 66
E/S paralelo, 86
Familia PIC, 223
FLASH, 25,50
Fuente alimentacin, 103
FUTABA, 125
Gamas, 5
Generador de funciones, 63
HARVARD, 22
ICSP-LV, 10
IRP, 44
ITU, 230
I2C, 159, 177
LCD, 94,139,145
LCD-CON, 145
LCD-CON2,146
LCD Interface, 151
LDR, 18
LM35,19
Maestro, 149
MCLR#, 79
Microbtica, 124, 229
MICROCHIP, 3,229
MICRO'PIC IO,60,61,117,
137
MICRO'PIC TRAINER, 15,
38,60,117
MICRO'PIC TRAINER
PLUS, 83,85

MICROSYSTEMS
ENGINEEERING, 9,229,
230
Modo captura, 106
Modo comparacin, 107,
108
Modulacin anchura
impulsos, 109
Motores DC, 40,65
Motores PAP, 41
MPLAB-ICD, 9
MSETX, 186
MSERX, 186
MSSP, 153, 186
MSx84,100,102,125
Opto-triac, 65
Oscilador, 63
Palabra configuracin, 72
Palabras identificacin, 73
PARALLAX, 230
PCL, 29
PCLATH, 29
Perodo, 109
Perro Guardin, 77
PICBOT-2, 126
PIC16F87X, 7,21,31
PIC 16F84, 11
PIC 16F874/7,24
PIC18CXXX, 211
PIC18C2X2,211
PIC18C4X2,211
PICBUS, 62,84
Piezoelctrico, 63

POP, 212
POR, 44
Puerta A, 67
Puerta B, 69
Puerta C, 7 1
Puerta D, 71
Puerta E, 72
Puertas E/S, 67
PUSH, 212
PWM, 109,110
PWRT, 75
RAM, 26
Receptor asncrono, 198
Receptor R.F., 186
Registro
ADCONO, 130
ADCONI, 130
ESTADO, 43
EECON1,51
INTCON, 47
OPCIONES, 45
PIE1,47,48
PIE2,48,49
PIRI, 48,49
PIR2,48,49
RCSTA, 199

SSPBUF, 154
SSPCON, 158,175
SSPCON2,176
SSPSR, 154
SSPSTAT, 157,175
TXSTA, 197
Reinicializacin, 74,76
Rels, 65
Reloj calendario, 86, 149
Repertorio instrucciones, 34,
220
Reposo modo, 77,82
Reset, 74,76
Revistas, 229
Robots, 127
RS232-C, 149
SAGITRON, 229
SCK, 153
SCL, 162
SDA, 162
Sensores, 103
Sensores analgicos, 64
Sealizadores
C, 44
z,44
PD#, 44,74

TO#, 44,74
Serie sncrona, 153
Servomotor, 125
SPI, 153, 155, 156
Teclado, 84
Temporizador, 87,93
Terminal programa, 205
TMRI, 88,90,93,106
TMR2,90,92,109
Transmisor asncrono, 195
TUNABAL, 3
TlCON, 89
T2CON, 91
UNIVERSIDAD DE
DEUSTO, 127
USART, 19 1,201
Visualizacin, 86
WCOL, 176
WDT, 77
WRT, 52
Zcalos, 101
ZOC87X, 9,37

Segul&cr
, ..
parte: PZC 16F87x

Angulo Martnez