Está en la página 1de 328

Fernando E.

Valdés Pérez
Ramón Pallas Areny

MICROCONTROLADORES: FUNDAMENTOS Y APLICACIONES CON PIC


F e m a n d o E .Valdés Pérez
Universidad de O riente
Cuba

R am ón Pallas Areny
Universidad Politécnica de Cataluña
España

MICROCONTROLADORES:
FUNDAMENTOS Y APLICACIONES CON PIC

marcombo
e d i c i o n e s t é c n i c a s
T itu lo

M icrocon tro lado res: F u n d a m e n to s y aplicaciones con PIC

A u to re s

© Fern an d o E. V aldés Pérez


© R a m ó n Pallas A reny

E d ito re s
© M A R C O M B O , EDICIONES TÉCNICAS 2 0 0 7
MARCOMBO, S.A.
Gran Via de les Corts Catalanes 594
08007 Barcelona (España)

© ALFAO M EG A GRUPO EDITOR, S .A . 2 0 0 7


C/ P itá g o ra s 1139
C o lo n ia d e l V a lle - 03100
M éxico D.F. (M é xico )

IS B N (p o r M A R C O M B O ): 84 - 267 - 1414-5
IS B N -13 (p o r M A R C O M B O ): 978 - 84 - 267 - 1414-5
IS B N (p o r A L F A O M E G A G R U P O E D IT O R ): 9 7 0 - 15 - 1149-2
IS B N -13 (p o r A L F A O M E G A G R U P O E D IT O R ): 978 - 970 - 15 -1 1 4 9 -7

C o m p o s ic ió n y p re im p re s ió n : C a rie s P a r e e r is a s C iv il ( 3 Q E d ito ria l)

D .L .: B I - 3396-06
I m p r e s o e n G rá fic a s D ía z T u d u rí
(ndice gen eral — 5

ín d ic e g e n e ra l

P ró lo g o ...............................................................................................................................9

1 Introducción a los m icrocon tro la do res................................................................ 11


1.1 Microprocesadores y microcontroladores: caracterización...............................................................11

1.2 Componentes de un m icrocontrolador....................................................................................................14


1.2.1 Elp erro g u a rd iá n .............................................. - .................................... - ................................................................ - 17
1.2.2 Reset............................. . .......................................................................................................- ...... ...........
123 B ajo consumo .......... - ......... - ................................ 19
1.2.4 Protección d e l p ro g ra m a frente a c o p ia s.......................................................... - ....................................- ......71

1.3 Arquitecturas von N eum ann y H a rv a rd ...................................................................................................21

1 .4 Arquitecturas CISC y RISC.............................................................................................................................. 24

1.5 Microcontroladores, microprocesadores y sus fabricantes...............................................................24

2 Los microcontroladores P IC ...........................................................................................29


2.1 Características generales de los microcontroladores P IC ..................................................................29
2.1 .1 L a U n idad A ritm é tic a y Lógica y e l registro W en los m icrocontroladores PIC............................................................30
2 .1 .2 Ciclos d e m á q u in a y ejecución d e instrucciones.............................................................. 31
2 .1 .3 S egm entado (p ip e lin e ) e n la ejecución d e in stru ccio n e s........................................................................................... 33
2 .1 .4 Osciladores............................................. - ........................................................- ......................................... 3 4
2 .1 .5 B its d e configuración ....................... - ........................................ 36
2 .1 .6 fu entes d e reset........................................................ 38
2 .1 .7 M o d o de b a jo co n su m o ................................................ 42
2 .1 .8 P erro g u a rd iá n ............................. —..... .............. 43

2 .2 Familias de microcontroladores PIC...........................................................................................................45


2 .2 .1 M icrocontroladores d e g a m a b a ja .................................................................. 45
2 .2 .2 M icrocontroladores d e g a m a m e d ia ....................................... - ........................................... - ..................................... 47
2 .2 .3 M icrocontroladores d e g a m a a lta ................................................................................................................................ 51

3 La memoria en los m icrocontroladores.........................................................................55


3.1 Conceptos básicos............................................................................................................................................55
3.1.1 Organización lógica d e la m em oria..............................................................................................................................5 6
3 .1 .2 Tipos d e m e m o ria s ................................................. - ................................................................ — 38

3 .2 La m em o ria en los microcontroladores PIC de gam a m e d ia .............................................................61


3.2.1 La m e m o ria d e p ro g ra m a ......................... 62
3.2.1.1 D ireccionam iento d e la m e m o ria d e p ro g ra m a ....................................................... 62
3 .2 .1 .2 Lectura y escritura d e la m e m o ria de p ro g ra m a ........................................................ 64
6 — Microcontroladores PIC

3 .2 .2 La m e m o ria RAM d e d o lo s ................... - ......................6 8


3.2.2.1 D ireccionam iento d e ¡a m e m o ria d e dotos................................................................................................. 70
1 2 .2 .2 Registros d e funciones especiales...............................................................................................................72
3 .2 .3 La m e m o rio EEPROM d e da to s.............................................................................................................. 75

4 Repertorio de instrucciones y programación en lenguaje e nsam b lad o r 79


4.1 Conceptos básicos............................................................................................................................................79
4 . 1 .1 C ódigo d e m a q u in o y le nguoje ensam blodor..............................................................................................................79
4 .1 .2 Estructura d e la s instrucciones......................................... - .....— ......................................... 82

.
4 .1 .3 M odos d e direcc'ionar los d a to s ................................................................................................................... 84
4.1.4 L a p ila .................................................................................................................................................................. 85

4 .2 Repertorio de instrucciones de los PIC de gam a m e d ia ......................................................................88


4.2.1 Instrucciones d e transferencia d e datos............................. - ................................................. „....................................91
4.2 .2 Instrucciones aritm éticas y lógicas....»................................- ....................... - ............................................................ 92
4 .2 .3 Instrucciones d e transferencia d e c o n tro l.................................................................................................................... 95
4.2.3.1 Saltos incondicionales, lla m a da s o s u b ru tin o s y retornos ........................................................ 95
4 .2 .3 .2 Saltos condicionados...........................................- ................................. ..- ...........- ........................ 99
4.2 .4 Instrucciones q u e o p eran con b its — ................................................. - ...............- .................................-.... 102
4.2 .5 O tras in struccio n e s."............................... - .......................................................... - ..................................................... 103

4.3 Elem entos d el lenguaje ensam blador (para el ensam blador MPASM de Microchip) 103
4.3 .1 Introducción ...............................- ............................................................... 103
4 .3 .2 Expresiones, operaciones y operadores................ .................................................- ..................- ....................109
4.3.2.1 Operadores a ritm é tic o s ............................................................................................................................ 110
4 .3 .2 .2 Operadores lógicos y d e relación............................. - ...............................................................1 1 1
4 .3 .2 .3 Operadores lógicos que operan directam ente con b its .................................................. .........................112
4.3.2.4 Operadores d e a s ig n a ció n ........................................................................ 112
4.3.2.5 Operadores d e dirección..............................................................................................................................114
4.3.3 D irectivas................................................................................ 114
4.3.3.1 D irectivas d e uso general............................................................................ - ...................... ............116
4 .3 .3 .2 Directivas utilizadas en la codificación relocalizable............................................................................... 121
4 .3 .4 M acroinstrucciones...................................................................................................................................................... 127
4 .3 .5 Organización d e u n p ro g ra m a e n le n g u a je e n sa m b la d o r.................... 130

4 .4 Recursos disponibles para program ar en el len g u a je ensam blador de los


microcontroladores P IC .................................................................................................................................136
4 .4 .1 E l ensam blador MPASM...........................................................................- ......................................................... _.... 137
4 .4 .1 .1 ( eneración de código a bsoluto ................................................................................................................... 137
4 .4 .1 .2 (e n e ra ció n de código relocalizable................................................................ 138
4.4.1.3 Archivos involucrados e n e l ensam blaje....................... - ....................... ~..............................................139
4 .4 .2 E le n la za d o rM P U N K ................................. 142
4.4 .3 El gestor d e bibliotecas M P L IB ................................................................................................................................. 145

5 La entrada y salida en paralelo..................................................................................... 149


5.1 Conceptos básicos sobre entradas y salidas d ig ita le s ...................................................................... 149
5.1.1 M étodos d e transferencia de d a to s ........................................................................................................................... 150
5 .1 .2 Técnicas d e entra d a y s a lid a .......................................................................................................................................153
índice gen eral — 7

5.2 Los puertos paralelos en los PIC d e clase m e d ia .................................................................................155


52 . 1 El p u s íto /I ......,............................................................................................................ JS8
5.2.2 El p u e rto B.......... — ............... _ ..... ........... . . . . ....................................................................................159
5.2.3 El puerto C..................... - ..............7 6 7
5 .2 .4 Los puertos D ,E ,F y 6 ....................................— ......- .............................- .....................................— 161
5.2 .5 El Puerto P aralelo Esclavo..................................... . ............. - ................................................................................... 762

5.3 Conexión y tra ta m ie n to a periféricos com unes...................................................................................164


5.3.1 Interruptores y diodos LED........................ „..................................... 164
5.3.2 Teclados m a tricia le s ....................................................................................................................... 169
5.3 .3 Visuolizadores num éricos d e 7 segm entos...................................................................................................................777
5.3 .4 Visuolizadores a lfa num éricos d e c ris ta l líq u id o .......................... . ............................................

6 Los t e m p o r iz a d o r e s ..........................................................................................................................................1 8 9
6.1 Los tem porizadores en los microcontroladores.P IC ...........................................................................189
6 .1. 7 El m ó d u lo TimerO........................ ......................... 190
6 .1 .2 E l m ó d u lo T im e rl........................... 195
6.1.3 El m ó d u lo T¡m er2........................ ......................................... .......... — ............................................... 199

6 .2 El m ódulo CCP....................................................................................................................................................202
6 .2 .7 M odo d e c a p tu ra ............... — .................................................. 204
6 .2 .2 M odo com parador............... 208
6 2 .3 M o d o P W M ................................................................................. _ ....................................................... 210

7 Las i n t e r r u p c i o n e s ......................................................................................................................................... 2 1 7

7.1 Conceptos básicos sobre las interrup cio nes...................................................................................... 217


7.7.7 Las solicitudes d e in te rru p ció n y recursos asociados.- ..................................................................... ....................... 2 1 7
7 .1 .2 A te n d ó n a las solicitudes d e in te rru p ció n ............................................................................................. ................... 2 1 9
7.1.3 Interrup done s fija s y vectorizadas...................................................................................................................... 221

7.2 Las interrupciones en los microcontroladores P IC ...............................................................................224


7 2 .1 fue ntes d e inte rru p ció n y registros asociados..................................... 224
7.2 .2 Estructura d e l subprogram a d e otención a u n a in te rru p ció n .......................................... 230

7.3 Ejemplos de uso d e las interrupciones...................................................................................................234


7.3 .7 R eloj d e tie m p o real...................................................................................... 234
7.3 .2 Sincronización d e eventos a l reloj d e tie m p o r e a l.................................................... 239
7.3 .3 Protección c o n tra fa llo s d e h a rd w a re ..........— .................................................................................................243

8 La e n t r a d a y s a lid a e n s e r i e ...................................................................................................................... 2 4 7
8.1 Conceptos básicos sobre entradas y salidas en serie.........................................................................247
8.1.1 Introducción a la transm isión d e datos en serie...................... 247
8 .1 .2 C om unicación a sin cró n ica ...............................................................................................................................2 4 9
8 .1 .3 Comunicación sin cró n ica ..................................... 249
8 .1 .4 Conexión e n tre equipos: in te rfa z RS-232C................................................................................................................. .750
8 .1 .5 Elbus PC ...................................................... - ............................................................................................. 2 5 2
8 — Microcontroladores PIC

8.2 El p u e rto serie USART en los microcontroladores PIC.......................................................................258


8 2 .1 Descripción g e n e ra l .............................. „ ......— .................................... —
8 J .2 Funcionam iento e n m odo asincrónico............................................................................................ 259
8 .2 .3 Funcionam iento e n m o d o sincrónico................................... ........................................................................................ 2 6 2

.
8 .2 .4 Velocidad d e la comunicación........................................................................ - ............... - ....... 263

8.3 El pu erto serie SSP en los microcontroladores P IC ............................................................................265


8 .3 .1 In te rfa z SPI. _ .............................................. - ....... ............................ ................................ ......... 2 6 5
8 .3 .2 In te rfa z K 270

9 Las entradas y salidas analógicas. Adquisición y distribución de señales. . . . 275


9.1 Funciones y estructura d e un sistema de adquisición y distribución de señales....................275
9. 1. I Funciones básicas en los sistem as de m edida y co n tro l............................................................................................. 2 7 5
9 .1 2 M a rgen o rango d in á m ic o ................... - ................... 278
9 .1 3 A ncho d e banda — - _ . ............................................................................................- ............................ 2 8 0
9 .1 4 M uestreo d e señales........................ - ......................................................... ................................................. 2 8 2
9.1.5 A rquitecturas p a ra la adquisición d e señales. Sistemas d e a lto y b a jo n iv e l...................... 283

9 .2 La etapa fro n ta l para la adquisición de s eñ ale s................................................................................284


9.2.1 A tenuadores ............ 285
9.2.2 A m plificadores..............................................................................................................................................................2 8 9
9.2.3 Filtros y protecciones d e e n tra d a .................................. - ........... 293
9.2.4 M u ltip k x o re s analógicos.................................................................................. ......................................................... 2 9 6
9 2 .5 Filtros a n ti-a lia s ....- .......................... 298
9 .2 .6 A m plifica dor de m uestreo y retención.................................................... - .........................................................300
9 .2 .7 Convertidores A /D ............................................................... - .......................................... - ....... 302

9.3 El m ódulo d e conversión A/D de 1 0 bits e n los microcontroladores PIC......................................305


9.3.1 A rq u ite ctu ra d e l m ó d u lo d e conversión A /D ...............................................................................................................305
9 .3 .2 Tiempos d e u n a conversión A /D ................................................................................................................................... 309
9.3.3 Program ación d e l m ó d u lo d e conversión A /D ............................................ - ............................................................. 3 12

9 .4 C alibración.......................................................................................................................................................315

9 .5 Interfaces directas entre sensor y m icrocontrolador........................................................................316

9 .6 La eta p a d e salida para salidas an alóg icas.......................................................................................... 320


9.6.1 Convertidores D /A .. ......... - .......................................... ..................... - ............320
9.6.2 D esm ultiplexado a n a ló g ic o ...................................................................... — ...............321
9.6.3 M étodos d e e x tra p o la ció n ............................................................................................................................................321
9.6.4 Salidas P W M ................................................................................
9 .6 .5 Protecciones d e s a lid a ......................... 324

B ib lio g ra fía ...........................................................................................................................327

Anexo. Siglas y acrónimos utilizados en el libro...............................................................329

Indice alfabético...................................................................................................................335
Prólogo — 9

Prólogo
Los m icro co n tro lad o res están p resentes en m u ch o s d e los p rod u ctos
electrón icos q u e em p leam o s en n u e stra v id a cotid ian a. S u en señ an za es un
reto d eb ido a la v a rie d a d d e m od elos existen tes en el m e rca d o y a la gran
can tid ad d e ap licacio n es posibles. Sin em b arg o , a p e sa r d e su d iversid ad ,
hay u n idad en los p rin cip ios d e fu n cio n am ien to y en las arq u itectu ras d e
m u ch o s m icro co n tro lad o res. E ste libro a p ro v e ch a esa u n id ad p resen te en la
d iv ersid ad p ara e x p lica r los fu n d am en tos del d iseñ o y la p ro g ra m a ció n de
los m icrocon trolad ores.

El objetivo del libro es en señ ar la arq u itectu ra y la p ro g ra m a ció n d e los


m icro co n tro lad o res en gen eral, to m a n d o c o m o ejem plos los m icro co n tro la­
d o re s P IC d e M icrochip . L a d o cu m en tación que ofrecen los fabricantes e s tan
ab u n d an te q u e su m e ro acop io o cu p a ría v a rio s v o lú m en es. E n este libro se
han seleccion ad o los tem as d e fo rm a fu n d am en tad a, b u scan d o el rigor en las
descripcion es y la clarid ad en la exp osición d e los con cep tos. Se han incluido
figu ras q u e co m p lem en tan el texto d e form a su stan cial, e v ita n d o fotografías
u o tro m aterial gráfico q u e au m en ta el n ú m ero d e p ág in as y a p o rta in form a­
ción m en os útil, y p o r lo d em ás disponible en los sitios w eb d e los fab rican ­
tes. P ara a y u d a r a id entificar los co n cep to s, los térm in os n u ev o s está n en letra
cu rsiv a la p rim era v e z q u e ap arecen en el texto . D o n d e h a p arecid o o p o rtu ­
no, se h a incluido en tre parén tesis y en letra cu rsiv a , el térm in o equ ivalente
en inglés.

C a d a tem a e s tra ta d o co n u n en foq u e q u e v a d e lo gen eral a lo p articu ­


lar. P rim ero se exp lican las cu estio n es p ro p ias del te m a q u e so n co m u n e s a la
m ay o ría d e los m icro co n tro lad o res, y seg u id a m e n te se p articu lariza p ara los
m icro co n tro lad o res PIC . Las exp licacion es se ilu stran c o n ejem plos prácticos.
En el sitio w eb del libro, en www.marcombo.com, el lector in teresad o p o d rá
e n co n tra r o tro s ejem plos resu elto s y p rob lem as d e interés p ara estu d ian tes y
profesores.

El libro e s tá o rg a n iz a d o e n n u eve cap ítu los. E n el cap ítu lo 1 se estudian


las características gen erales y los recu rso s co m ú n m e n te disponibles e n los
m icro co n tro lad o res. El cap ítu lo 2 ofrece u n a visión p a n o rá m ica d e los m i­
cro co n tro lad o res P IC , en p articu lar los d e la g a m a m ed ia. E n el cap ítu lo 3 se
e stu d ia la o rgan ización y e stru ctu ra d e la m e m o ria en los m icro co n tro lad o res
1 0 — Microcontroladores PIC

e n gen eral y e n los P IC d e g am a m ed ia e n particu lar. El cap ítu lo 4 trata la


p ro g ram ació n e n el lenguaje en sam b lad or d e los m icro co n tro lad o res PIC d e
g a m a m ed ia. L a p ro g ram ació n e n lenguaje en sam b lad o r es la m ejor form a
d e p ro g ra m a r los p ro y ecto s co n m icro co n tro lad o res q u e so n p eq u eñ os, p o r
lo que e s esencial m in im izar la can tid ad d e m e m o ria utilizada, y d o n d e las
tareas que debe realizar el m icro co n tro la d o r son p o ca s y los alg o ritm o s son
relativam en te sim ples. L a p ro g ram ació n d e a lg o ritm o s com p lejos e s m ejor
h acerla c o n lenguajes d e alto nivel, y ello exige d isp on er del co rresp o n d ien te
co m p ilad o r (q ue n o e s gratu ito ). Los cap ítu lo s 5, 6, 7 y 8 exp lican c ó m o los
m icro co n tro lad o res p u ed en ad q u irir, p ro ce sa r y g e n e ra r señales digitales. Se
e stu d ian las técn icas disponibles para el tratam ien to d e la e n tra d a y salida
digital d e d a to s e n p aralelo, la co n exió n y tratam ien to d e periféricos d e a m ­
plio u so en sistem as c o n m icro co n tro lad o res, los re cu rso s disponibles p ara
trab ajar c o n la variab le tiem p o, las fuentes, re cu rso s y tratam ien to d a d o a las
in terru p cion es, y la transm isión d e in fo rm ación en serie, su s form atos, p ará­
m etro s e in terfaces u tilizad as e n los m icro co n tro lad o res PIC . E n el cap ítu lo 9
s e estu d ia c ó m o se p u ed en ad q u irir y g e n e ra r señales analógicas em p lean d o
m ó d u lo s o d isp ositivos in tegrad o s e n el p rop io m icro co n tro lad o r, o e n circu i­
tos periféricos, y se d an los criterios b ásicos p ara d iseñ ar el sistem a.

El libro in cluye u n am p lio índice alfabético d e térm in os técn icos utili­


zad o s, in clu yen d o los térm in os e n inglés, y , en u n a n e x o , u n a relación d e las
siglas y a cró n im o s em p lead o s en el texto. A l final, se d an referencias biblio­
g ráficas p ara quienes d eseen p ro fu n d izar e n los te m a s tra ta d o s e n el libro.

El libro está dirigid o esp ecialm en te a estu d ian tes y a profesion ales d e la
electrón ica, p ero tam bién resu ltará útil a los lectores in teresad o s en co n o cer
el fascinante m u n d o d e los m icro co n tro lad o res, en p articu lar d e los PIC, y
utilizarlos d e fo rm a eficiente en u n sinfín d e aplicaciones.

F e m a n d o E. V ald és P érez
R a m ó n P a lla s A re n y
Introducción a los microcontroladores — 11

1 In tro d u cció n a los m icrocontrolado res


E n este cap ítu lo se estu d ian las ca racterísticas gen erales co m u n e s a
m u ch o s m icro co n tro lad o res. P rim eram en te s e define lo que s e e n tien d e p o r
m icro co n tro lad o r y s e establece s u diferen cia c o n el m icro p ro ce sa d o r. Segui­
d am en te s e exp o n en los re cu rso s co m ú n m e n te d isp onibles e n u n m icrocon ­
trolad or, h acien d o énfasis e n aq u ellos re cu rso s prop ios d e estos d isp ositivos
y q u e n o se en cu en tran e n los m icro p ro ce sa d o re s e n gen eral. Se p resen ta ta m ­
bién las arq u ite ctu ra s v o n N e u m a n n y H a rv a rd e m p le a d a s e n el d iseñ o d e los
m icrocon trolad ores, a s í c o m o las arq u itectu ras C ISC y RISC, diferen ciad as
fu n d am en talm en te p o r la form a d e co n ceb ir e l rep ertorio d e in stru ccion es del
m icrocon trolad or. Finalm ente se e n u m e ra n los p rin cip ales m icro co n tro lad o ­
res existen tes y s u s fabricantes.

1.1 Microprocesadores y m icrocontroladores: caracterización


L a figu ra 1.1 m u estra el esq u em a general b ásico d e u n m icro co m p u ta -
dor. S e co m p o n e d e tres bloq u es fu n d am en tales: la C P U ( C en tral P ro cessin g
U n it), la m em o ria, y la en tra d a y salida. L o s bloq u es se c o n e cta n en tre sí m e ­
d ian te g ru p o s d e líneas eléctricas d en om in ad os b u ses. L o s b u ses pu ed en ser
d e d ireccio n es (si tran sp o rtan d ireccio n es d e m em o ria o d e e n tra d a y salida),
d e d a to s (si tran sp o rtan d ato s o in stru ccion es) o d e co n tro l (si tran sp o rtan
señales d e co n tro l diversas).

^ P e rifé ric o s

B u s d e C o n tro l

Figura 7.7 Esquema básico general de un microcomputador. l a CPU es el microprocesador.


12 — Microcontroladores PIC

La C P U e s el "c e re b ro " d el m icro co m p u ta d o r y actú a bajo el co n tro l del


p ro g ra m a a lm a ce n a d o en la m em o ria. La C P U se o cu p a b ásicam ente d e traer
las instru ccion es del p ro g ra m a d esd e la m em o ria, in terp retarlas y h a ce r que
se ejecuten. L a C P U tam bién incluye los circu ito s p ara realizar o p eracio n es
aritm éticas y lógicas elem en tales c o n los d a to s binarios, en la d en om in ad a
U n id ad A ritm ética y L ó gica (A L U : A rith m e tic a n d L o g ic U n it).

E n un m icro co m p u tad o r, la C P U n o e s o tra co sa q u e el m icrop rocesad or,


el circu ito in teg rad o c a p a z d e re a liz a r las funciones a n te s m en cion ad as. U n
m icro con trola d o r e s un m icro co m p u tad o r realizad o en u n circu ito in tegrad o
(chip). H istó ricam en te, los m icro co n tro lad o res ap areciero n co n posteriorid ad
a los m icro p ro cesad o res y h an tenido evo lu cio n es independientes.

L o s m icro p ro cesad o res se han d esarro llad o fu n d am en talm en te orien ­


ta d o s al m e rc a d o d e los o rd en ad o res p erso n ales y las estacion es d e trabajo,
d o n d e se req u iere u n a elev ad a p o ten cia d e cálcu lo , el m anejo d e g ra n c a n ­
tid ad d e m em o ria y u n a g ran v elocid ad d e procesam ien to. U n p a rá m e tro
im p o rtan te en los m icro p ro cesad o res e s el tam añ o d e su s registros internos
(8, 1 6 , 3 2 ó 6 4 bits), que d eterm in a la can tid ad d e bits que p u ed en p rocesar
sim ultán eam en te.

L o s m icro co n tro lad o res se han d esarro llad o p a ra cu b rir las m ás d iv e r­


s a s ap licacio n es. S e u san en au to m o ció n , en eq u ip os d e co m u n icacio n es y de
telefonía, en in stru m en tos electrón icos, en eq u ip os m éd ico s e in d u striales d e
to d o tipo, en electro d o m éstico s, en ju g u etes, etc.

L o s m icrocon trolad ores están co n ceb id o s fu n d am en talm en te p ara ser


u tilizad os en ap licaciones p u n tu ales, e s decir, ap licacio n es d o n d e el m icro­
co n tro la d o r d eb e re a liz a r un p eq u eñ o n ú m e ro d e tareas, al m en or co sto p o­
sible. E n estas ap licacio n es, el m icro co n tro la d o r ejecuta un p ro g ra m a a lm a ­
ce n a d o p erm an en tem en te en su m em o ria , el cual trabaja co n a lg u n o s datos
alm acen ad o s tem p o ralm en te e in teractú a co n el e x te rio r a tra v é s d e las líneas
d e en trad a y salid a d e q u e dispone. El m icro co n tro la d o r es p a rte d e la apli­
cación : e s un co n tro lad o r in cru stad o o em b eb id o en la ap licación (em bed d ed
con troller). En ap licacio n es d e cierta e n v erg a d u ra se utilizan vario s m icro co n ­
tro lad o res, c a d a u n o d e los cu ales s e o cu p a d e u n pequeño g ru p o d e tareas.

H ay varias características que son deseables en un microcontrolador:

1. Recursos d e entrada y salida. M ás que en la capacidad d e cálculo del m i­


crocontrolador, m uchas veces se requiere hacer énfasis en los recursos de
entrada y d e salida del dispositivo, tales co m o el manejo individual de líneas
de entrada y salida, el manejo d e interrupciones, señales analógicas, etc.
Introducción a los microcontroladores — 13

2. Esp acio op tim izad o. S e trata d e ten er en el m e n o r esp acio posible, y a un


coste razonable, los elem entos esenciales p ara desarrollar una aplicación.
D ad o que el n ú m ero d e term inales q u e p u ed e ten er u n circuito integrado
viene lim itado p o r las dim ensiones d e su en capsulado, el esp acio se p u e­
de op tim izar h acien d o que u n os m ism o s term inales realicen funciones
diferentes.

3. El m icrocon trolad or id óneo p a ra una aplicación. S e p ro cu ra que el dise­


ñ a d o r d isp on g a del m icrocon trolad or hecho a la m ed id a d e su aplicación.
P o r esto los fabricantes ofrecen fam ilias d e m icrocon trolad ores, com p u es­
tas p o r m iem bros que ejecutan el m ism o rep ertorio d e instrucciones pero
que difieren e n sus com p on en tes d e h ard w are (m ás o m en os m em oria,
m ás o m en os dispositivos d e en trad a y salida, etc.), perm itiendo así q u e el
d iseñ ad or d e aplicaciones p u ed a elegir el m icrocon trolad or id óneo para
c a d a aplicación.

4. Segu rid ad en el funcionam iento d el m icrocon trolad or. Una m edid a de


segurid ad elem ental es g aran tizar que el p rog ram a que esté ejecutando
el m icrocon trolad or sea el que corresp o n d e, e s decir, q u e si el m icrocon­
trolad or se " p ierd e", esto p u ed a ser ráp id am en te ad v ertid o y se tom e
alg u n a acción p a ra co rreg ir la situación. U n com p on en te co m ú n en los
m icrocon trolad ores y que con trib u ye a una operación segu ra e s el perro
gu ard ián (W D T: W a tch d o g T im e r ), dispositivo q u e no existe en los orde­
nad ores personales.

5. Bajo con su m o. D ado que h ay m u ch as aplicaciones d o n d e se desea utili­


zar baterías co m o fuente d e alim entación, es altam en te deseable que el
m icrocon trolad or co n su m a poca energía. Tam bién interesa que el m i­
cro co n tro lad o r co n su m a m u y p o co cu an d o n o está realizando ninguna
acción. P o r ejem plo, si está a la esp era d e que se pulse una te d a , el m i­
cro co n tro lad o r debería con su m ir m u y p o co d u ran te la esp era; para ello
conviene paralizar total o p arcialm en te al m icrocon trolad or, poniéndolo
a "d o rm ir" h asta q u e ocu rra la acción esperada.

6. Protección d e los p ro g ram as frente a cop ias. Se trata d e p roteger la in­


form ación alm acen ad a en la m em oria, es decir, el p rog ram a d e la apli­
cación , con tra lectu ras furtivas d e la m em o ria del m icrocon trolad or. Los
m icrocon trolad ores disponen d e m ecan ism os q u e les p rotegen d e estas
acciones.
14 — Microcontroladores PIC

1.2 Com ponentes d e un m icrocontrolador

U n m icrocon trolad or com bina los recu rsos fundam entales disponibles
e n un m icrocom p u tad or, es decir, la u n idad central d e p rocesam iento (C P U ),
la m em o ria y los recu rsos d e en trad a y salida, e n un ú n ico circu ito integrado.
I -a figura 1 .2 m u estra el d iag ram a d e bloques gen eral d e un m icrocontrolador.

XTA L

F igu ra 1.2 Esquema de bloques general d e un microcontrolador.

L o s m icro co n tro lad o res d isp on en d e u n oscilad or q u e gen era los pulsos
q u e sin cron izan to d as las op eracio n es in ternas. El o scilad o r p u ed e ser del
tip o RC, aun qu e gen eralm en te se prefiere q u e esté co n tro la d o p o r u n cristal
d e c u a rz o (X T A L ) d eb ido a su g ra n estabilidad d e frecuen cia. L a v elocid ad
d e ejecución d e las in stru ccion es del p ro g ra m a está en relación d irecta c o n la
frecu en cia d el o scilad o r d el m icrocon trolad or.

Igual q u e en u n m icro co m p u tad o r, la C P U es e l " cereb ro '' del m icrocon ­


trolad or. E sta u n id ad tra e las in stru ccion es d el p ro g ra m a , u n a a u n a, d e sd e la
m em o ria d o n d e están alm acen ad as, las in te rp re ta (d escod ifica) y hace q u e se
ejecuten. En la C P U s e in cluyen los circu ito s d e la A L U p ara realizar o p e ra ­
cion es aritm éticas y ló gicas elem en tales c o n los datos binarios.

L a C P U d e u n m icro co n tro lad o r d isp o n e d e d iferentes reg istro s, algu­


n o s d e p rop ósito gen eral y o tro s p ara p rop ósito s específicos. E n tre estos úl­
tim os están el R eg istro d e In stru cción , el A cu m u la d o r, el R eg istro d e E stado, el
C on ta d or d e P rogram a, el R eg istro d e D ireccion es d e D a to s y el P u n tero d e la Pila.

El R egistro d e Instrucción (RI) alm a ce n a la in stru cción q u e está siend o


ejecu tad a p o r la C P U . El RI es invisible p ara el p ro g ra m a d o r.
Introducción a los microcontroladores — 15

El A cu m u la d o r (A C C : A cc u m u la to r) es el re g istro aso ciad o a las o p e ra ­


cion es aritm éticas y ló gicas q u e s e pu ed en realizar en la A L U . E n cualq uier
o p eració n , u n o d e los d ato s d eb e estar e n el A C C y el re su lta d o se obtiene
e n el A C C . El A C C n o existe e n los m icro co n tro la d o re s PIC , q u e tienen en
ca m b io el reg istro W (W ork in g R eg isler), c o n características m u y p a re cid a s a
las del A C C .

El R egistro d e E sta d o (STA TU S) ag ru p a los bits in d icad o res d e las c a ­


racterísticas del resu ltad o d e las op eracio n es aritm éticas y ló gicas realizad as
en la A L U . E n tre estos in d icad o res están el sig n o el re su lta d o (si e s p o sitiv o o
n egativo), si el resu ltad o e s ce ro , si hay aca rre o o p réstam o , el tipo d e p arid ad
(p ar o im p a r) del resu ltad o , etc.

El C o n ta d o r d e P ro g ra m a (P C : P ro g ra m C ou n ter) e s el reg istro d e la C PU


d o n d e s e alm acen an d ireccion es d e in stru ccion es. C a d a v e z q u e la C P U bus­
ca u n a in stru cción en la m em oria, el P C s e in crem en ta, a p u n ta n d o así a la
siguiente instrucción. E n u n in stan te d e tie m p o d a d o , el P C co n tien e la d ire c­
ción d e la in stru cció n q u e será ejecu tad a a con tinu ación. L as in stru ccion es d e
tran sferen cia d e control m odifican el v a lo r del PC.

El R egistro d e D irecciones d e D atos (R D D ) a lm a ce n a d ireccion es d e d a­


tos situ ad o s en la m em oria. Este re g istro es indispensable p ara el d ireccion a-
m iento in d irecto d e d ato s en la m em o ria. El R D D to m a diferentes nom bres
segú n el m icro co n tro lad o r. E n los PIC , el R D D e s el registro FSR ( File S elect
R eg ister).

El Pu n tero d e la Pila (SP: S tack P o in ter ) e s el reg istro q u e alm a ce n a d irec­


ciones d e datos en la pila. E n el cap ítu lo 4 s e estu d ian co n detalle la pila y el
reg istro SP. L o s m icro co n tro lad o res PIC carecen d e reg istro SP.

La m em o ria d el m icro co n tro lad o r es e l lu g a r d o n d e son alm acen ad as


las in stru ccion es del p ro g ram a y los d ato s que m anip ula. En un m icro co n tro ­
lad or siem p re h a y d o s tipos d e m em o ria: la m em o ria R A M (R a n d o m A ccess
M em ory ) y la m em o ria R O M (R e a d O n ly M em ory ). L a m em o ria R A M es una
m em o ria d e lectu ra y escritu ra, q u e ad e m á s e s volátil, es decir, p ierd e la in­
form ación a lm a ce n a d a cu a n d o falta la en ergía q u e alim en ta la m em o ria. L a
m em o ria R O M e s u n a m em o ria d e solo lectu ra y n o volátil. L a s diferentes
tecnologías p ara realizar las m em o rias d e so lo lectu ra (RO M , EP R O M , E E -
PR O M , O T P, FL A S H ) se e s tu d ia n en el cap ítu lo 3. T a n to la m em o ria R A M
c o m o las m em o rias ROM so n d e a c ce s o aleato rio , p e ro la co stu m b re h a d e ­
jado el n om b re d e R A M p a ra las m em o ria s d e lectu ra y escritu ra. El térm ino
"a c c e s o aleato rio " s e refiere a q u e el tiem p o n ecesario p ara lo calizar u n dato
n o d e p e n d e del lu g ar d e la m em o ria d o n d e esté a lm a ce n a d o . E n las m em o-
16 — Microcontroladores PIC

rías d e acceso secu en cial, en cam b io , cu a n d o m ás alejado esté un d a to d e la


p osición a la q u e se h a a cce d id o p o r ú ltim a vez, m ás se ta rd a e n localizarlo.

L a m em o ria R O M s e u sa p ara a lm a ce n a r p erm an en tem en te el p ro g ra ­


m a que d eb e ejecu tar el m icro co n tro lad o r. E n la m e m o ria R A M s e alm acen an
tem p o ralm en te los d ato s co n los q u e trabaja el p ro g ra m a . U n n ú m e ro c re ­
ciente d e m icro co n tro lad o res d isp o n e d e a lg u n a m e m o ria n o volátil d e tipo
E E P R O M p a ra alm acen ar d ato s fijos o q u e só lo sean ca m b ia d o s e sp o rá d ica ­
m ente.

L a c a n tid a d d e m em o ria ROM disponible e s n o rm a lm e n te m u y su p e ­


rio r a la can tid ad d e m em o ria R A M . E sto ob ed ece a d o s ra z o n e s: la prim era
e s que la g ran m a y o ría d e las ap licacio n es requieren p ro g ra m a s que m anejan
p o co s d ato s; en ton ces basta u n a m em o ria R A M en la q u e se p u ed a a lm a ce n a r
a lg u n as d ecen as d e d ato s. L a seg u n d a ra z ó n es q u e la m em o ria R A M o cu p a
m u ch o m á s esp acio en el circu ito in tegrad o q u e la m e m o ria ROM , d e m od o
q u e es m u ch o m á s co sto sa q u e ésta.

L a en tra d a y salid a es p articu larm e n te im p o rtan te e n los m icro co n tro ­


lad ores, p u es a través d e ella el m icro co n tro la d o r in teraccio n a c o n el exterior.
F o rm an p arte d e la en trad a y salida los p u e rto s p aralelo y serie, los tem pori-
z a d o re s y la gestión d e las in terru pcion es. El m icro co n tro la d o r p u e d e incluir
tam bién en riad as y salid as an aló g icas aso cia d a s a co n v ertid o res A / D y D /A .
Tienen p articu lar im p o rtan cia los recu rsos q u e g a ra n tiz a n un fu n cion am ien ­
to se g u ro del m icro co n tro lad o r, c o m o el d en o m in ad o p e rro gu ard ián .

L o s p u e rto s p aralelos se o rg an izan en g ru p o s d e h a sta 8 líneas d e e n ria ­


d a s y salid as digitales. N o rm alm en te es posible m an ip u lar in d ividu alm ente
las líneas d e los p u e rto s paralelos. L o s p u erto s serie p u ed en s e r d e varios
tipos, se g ú n la n o rm a d e co m u n ica ció n q u e im p lem en ten : R S -232C , I2C , USB,
Eth ern et, etc.

U n requisito gen eral p a ra q u e u n m icrocon trolad or s e p u e d a u tilizar en


u n g ran n ú m e ro d e ap licaciones e s q u e te n g a m u ch o s re cu rso s d e e n ria d a y
salid a. E ste requisito está relacion ad o c o n el n ú m ero d e term in ales del circu i­
to in tegrad o . A la v e z se d esea ten er esos recu rso s en u n circu ito in tegrad o lo
m ás p eq u eñ o posible. Si c a d a bloque d e e n ria d a y salid a tu v iera term inales
exclu siv os en el m icro co n tro lad o r, p o sib lem en te n o alcan zarían los term i­
nales o habría q u e fab ricar m icro co n tro la d o re s c o n m u y p ocos re cu rso s d e
en tra d a y salid a, e n c o n tra del interés gen eral. L a solu ción p a ra este proble­
m a es q u e u n n ú m e ro im p o rtan te d e term in ales del circu ito in tegrad o sean
co m p a rtid o s p o r u n id ad es d e en trad a y salid a d iferentes. Es d ecir, u n m ism o
term inal p u ed e estar co n e cta d o in tern am en te a m ás d e u n bloque d e en riad a
Introducción a los microcontroladores — 17

y salid a. P o r ejem plo, las líneas d e en trad a y salida d e u n p u erto serie pu ed en


ser p a rte d e las lineas d e u n p u e rto p aralelo, etc.

1.2.1 El perro guardián

El p erro g u ard ián (W D T: W a tc h d o g T im er) es u n recu rso disponible en


m u ch o s m icro co n tro lad o res. L a figura 1.3 m u estra el esq u em a básico d e un
perro g u ard ián . C on sta d e u n o scilad o r y u n c o n ta d o r binario d e N bits. El
oscilad or p u ed e s e r el oscilad or prin cipal d el m icro co n tro la d o r, au n q u e se
prefiere u n o scilad o r in depen dien te. L a salid a d e la ú ltim a etap a d el co n ta d o r
va c o n e cta d a al circu ito d e reset d el m icro co n tro lad o r. El co n te o n o s e p u ed e
d eten er d e n in g u n a fo rm a, p ero el c o n ta d o r s e p u e d e b o rrar (p o n e r a 0 ) desde
el p ro g ram a.

B o rra r d e s d e
e l p ro g r a m a

Figura 1.3 Esquema básico de un perro guardián. La salida del perro guardián va a algún
punto del circuito interno que tiene el microcontrolador para realizar la acción de
reset. .

El funcionam iento del p e rro g u ard ián es c o m o sigu e. El o scilad o r envía


su s pulsos periódica y p erm an en tem en te a la e n tra d a d e reloj del co n tad o r.
Si e l co n ta d o r llega a c o n ta r los N p u lsos, s e d esb o rd a, s u salid a s e activ a y
p ro d u ce el reset del m icrocon trolad or.

El objetivo del p ro g ra m a d o r e s e v ita r el d esb o rd am ien to del perro


gu ard ián . D ad o q u e u n a v e z in iciad o el co n te o , el p e rro g u ard ián n o s e pue­
de detener, la ú n ica form a d e e v ita r su d esb o rd am ien to , y c o n ello el reset
del m icro co n tro lad o r, e s p o n er a 0 el c o n ta d o r del p e rro g u ard ián d e sd e el
p ro g ra m a , y h acerlo a in tervalos d e tiem p o m ás co rto s q u e el tiem p o q u e se
ta rd a en c o n ta r los N pulsos. P ara co n seg u irlo , el p ro g ra m a d o r d eb e distri­
b uir a lo larg o del p ro g ra m a las in stru ccion es q u e b o rran el p e rro gu ard ián .
Si el p ro g ra m a se ejecuta co rrectam en te, el p e rro gu ard ián n u n ca se desbord a
p u es a n tes d e h a ce rlo h a sid o b o rra d o o p o rtu n a m e n te d e s d e el p ro g ra m a . En
cam b io, si el m icro co n tro lad o r s e p ierd e y el p ro g ra m a deja d e s e r ejecutado
en la secu en cia co rrecta, el p e rro g u ard ián n o es b o rra d o a tiem po, se d esb o r­
d a y p ro d u ce el reset del m icro co n tro lad o r, c o n lo q u e es posible re to m a r el
co n tro l y reco n d u cir el p ro g ra m a p o r el ca m in o correcto.
18 — Microcontroladores PIC

El p e rro g u ard ián es u n elem en to m u y im p o rta n te e n u n m icro co n tro ­


lad or, p u es g aran tiza la seg u rid ad d e su fun cion am ien to, p o rq u e cu alq u ier
fallo e s d etectad o a tiem p o y s e p u e d e n to m a r las m ed id as n e ce sa ria s para
evitar situ acion es q u e p o d rían s e r catastró ficas.

1 .2 .2 Reset

El reset e s u n a a cció n c o n la cu al s e "in icia " el trabajo d e los m icro p ro ce­


sa d o re s y m icrocon trolad ores. Esta acción s e ejecuta cu a n d o se ap lica u n a se­
ñal — d e n o m in ad a d e r e s e t— a u n term in al, d esig n a d o tam b ién c o m o reset. El
e fe cto p ráctico d e la señ al e s p o n er el c o n ta d o r d e p ro g ra m a (PC ) e n u n v a lo r
p re d e te rm in ad o (p o r ejem plo, P C = 0 ), h a cien d o así q u e el m icro p ro ce sa d o r
o m icro co n tro lad o r co m ien ce a ejecu tar las in stru ccion es q u e está n a p a rtir d e
esa posición d e m em o ria a p u n ta d a p o r el PC.

En u n m ic ro c o m p u ta d o r, la señ al d e reset s e g e n e ra m a n u a lm e n te al
p u ls a r u n b o tó n (reset m a n u a l) o cu a n d o s e p o n e en m a rch a el siste m a (reset
p o r en cen d id o). L a fig u ra 1 .4 m u e stra u n circu ito u tilizad o c o m ú n m e n te p ara
e x c ita r el term in al d e reset d e u n m ic ro p ro c e s a d o r o m ic ro c o n tro la d o r, y
q u e facilita el reset m an u al y e l reset p o r e n ce n d id o . E n el e sq u e m a m o stra ­
d o , VM^A e s la ten sión a p lica d a e n el term in al R ES ET y VUMBRALe s l a tensión
u m b ra l d e d ich o term in al. Si VRtSET < P UMBRAL, el m icro co n tro la d o r in terp reta
q u e en el term inal h a y u n v alo r ló g ico " 0 " (R E S E T = 0 ); si P RBSFr > P UMBRAL/ se
in te rp reta q u e e n el te rm in a l h a y u n v a lo r ló gico " 1 " (R E S E T = 1 ). Tal c o m o
s e in d ica e n la figu ra, la a c ció n d e reset tiene lu g a r c u a n d o el term in al to m a
el v a lo r ló gico " 0 " . E l circu ito fo rm a d o p o r la re siste n cia R y el co n d e n sa d o r
C tiene u n a co n s ta n te d e tiem p o r = RC.

+5 V

R eset
m anual Vrcset

(b)

Figura 1.4 Reset manual y reset por encendido, (a) Circuito de reset típico en un microcon­
trolador. (b) Comportamiento temporal de las tensiones.
Introducción a los microcontroladores — 19

C u a n d o se p o n e en m arch a el sistem a, la tensión d e alim entación d e 5 V


va c a rg a n d o C a trav és d e R . Si r es suficien tem en te g ra n d e , VRE5CT es inferior
a V'L|MBRA, d u ra n te el tiem p o q u e la tensión d e alim en tación ta rd a en alcan zar
el v a lo r a d e cu a d o para q u e el m icro co n tro lad o r trabaje d e form a confiable.

En un m icro co n tro lad o r h ay o tra s posibles fu entes d e reset c o m o son


el reset p o r fa llo d e alim en tación (p ow er-g litch reset, b ro w n -ou t reset) y el reset p o r
d esb ord am ien to d el p e rr o g u ardián .

El reset p o r fallo d e alim entación s e p rod u ce cu a n d o la tensión d e alim en­


tación cae m om en tán eam en te p o r debajo d e u n cierto valor um bral, d e m od o
que C se d escarg a parcialm ente y s e alcan za la condición V < P UMBRAL.

El reset p o r d esb o rd am ien to d el perro g u ard ián s e p ro d u ce cu a n d o por


alg u n a razón n o se h a refrescad o (b orrad o) a tiem p o el p e rro g u a rd iá n . G e­
neralm ente ello significa que el m icro co n tro la d o r se h a "p e rd id o " en la ejecu­
ción del p ro g ra m a , es decir, s e h a salid o d e la secu encia correcta.

E s m u y im p o rtan te q u e el m icro co n tro la d o r efectú e una acción d e reset


cu a n d o se p rod u cen fallos d e este tipo. Ello g a ran tiza q u e en situ acio n es com o
éstas, en las q u e el m icro co n tro lad o r p erd ería in exorab lem en te la secu encia
co rre cta d e instru ccion es del p ro g ra m a , no salte a u n a d irección aleatoria sino
que v ay a a u n a d irección d e term in ad a (la d el v e c to r d e reset) d o n d e se pue­
d en e fe ctu a r accion es q u e co n trarresten el fallo que se h a p rod ucido.

A u n q u e en u n m icro co m p u ta d o r gen eral p u ed e q u e n o sea necesario,


en un m icro co n tro lad o r es m u y im p o rta n te y co n v en ien te q u e p u e d a reac­
cio n a r c o n u n a acción d e reset an te los posibles fallos antes m en cio n ad o s y
ad e m á s que deje co n stan cia d e cu ál fue la ca u sa d el reset.

En alg u n o s m icro co n tro lad o res (co m o los PIC ), se señaliza la ca u sa del
reset m ed ian te alg u n o s bits d e u n reg istro del m icro co n tro lad o r. En tonces, en
el p ro g ra m a s e p u ed e in d a g a r sob re la ca u sa d el reset y realizar las accion es
corresp on d ien tes.

1.2.3 Bajo consumo

U n p a rá m e tro im p o rtan te en los m icro co n tro la d o re s es s u co n su m o de


corrien te. H ay un g ran n ú m ero d e ap licaciones (p o r ejem plo, la telefonía m ó ­
vil) q u e req uieren q u e el disp ositivo sea alim en tad o m ed ian te baterías. U n
bajo co n su m o d e co rrien te con lleva una m a y o r d u ració n d e la batería.

El co n su m o d e co rrien te en un circu ito in tegrad o d ep en d e fu n d am en tal­


m e n te d e tres factores: la tecn ología d e fabricación, la frecuencia d el oscilad or
y la tensión d e alim en tación. E n la fabricación d e los m icro co n tro la d o re s se
2 0 — Microcontroladores PIC

usa tecnología C M O S p recisam en te p o r el bajo nivel d e c o rrie n te q u e necesita


p ara fu n cio n ar. E n con d icion es estáticas (frecu en cia ce ro ), las p u e rta s C M O S
p rá ctica m en te n o co n su m en co rrien te. C u a n d o la p u erta p e rm a n e ce estática
en u n o d e los e sta d o s ló g ico s " 0 " ó " 1 " , la corrien te q u e circu la p o r ella es en
teo ría ig u al a cero y e n la práctica e s m u y pequeña y se d eb e a la corrien te
d e fuga d e los tran sistores. El co n su m o d e c o rrie n te significativo tiene lu gar
sólo d u ra n te la co n m u tació n en tre los n iveles lógicos. P o r lo tan to, d a d o que
al a u m e n ta r la frecu en cia d el o scilad o r au m en ta la frecu en cia d e las co n m u ­
taciones, a u m e n ta tam bién el co n su m o d e co rrien te d el dispositivo.

M u ch as veces la tarea q u e d eb e realizar el m icro co n tro la d o r con siste


fu n d am en talm en te en esp e ra r la o cu rren cia d e u n e v e n to extern o , c o m o la
p u lsación d e una tecla, u n a in terru pción , etc. y en to n ces re a liz a r una d e te r­
m in ad a tarea y v o lv er a esp e ra r la o cu rre n cia d e un n u e v o e v e n to extern o .
M ien tras d u ra la espera co n v ien e p aralizar total o p arcialm en te al m icro co n ­
tro lad o r p a ra d ism in uir así su co n su m o d e corrien te.

U n a form a práctica d e p aralizar al m icro co n tro la d o r es d e te n e r el oscila­


d o r prin cipal y h acer q u e los d iferentes bloq u es del d isp ositivo p erm an ezcan
en u n e sta d o estático, a la e sp era d e q u e o cu rra la a cció n extern a q u e sa q u e al
m icro co n tro lad o r d e ese "le ta rg o ". C u a n d o el m icro co n tro la d o r se h a p a ra ­
lizado total o p arcialm en te p a ra d ism in u ir su co n su m o d e co rrien te, se dice
q u e h a e n tra d o a u n m o d o d e con su m o red u cid o o d e b a jo c o n su m o (p o w er dozun,
idle, sleep m ode). L a form a d e e n tra r en el m o d o d e co n su m o re d u cid o varía
segú n el m icro co n tro lad o r. En alg u n o s se m odifica a lg ú n bit d e u n o d e sus
registros, que se d ed ica a este p rop ósito ; o tro s tienen una in stru cción especial
p ara este fin d e n tro d e su repertorio. N o rm alm en te el m icro co n tro lad o r sale
del e sta d o d e bajo co n su m o cu a n d o h a y u n a in terru p ción extern a o un reset.

E jem plo 1.1

En lo s m icrocontroladores d e la fam ilia d e l 8051, hay dos m odos d e bajo consum o denom inados (en
inglés) id le y p o w e r dow n. La entrada a cualquiera d e e stos m odos se realiza al p o n e r a 1 determ inados
bits del registro P C O N (P ow er C ontrol) d e l m icrocontrolador.
E n el m odo idle, se paraliza la CPU pero continúan fu n cio nand o el oscilador principal y los restantes
bloques d e l m icrocontrolador. S e sale d e e s te m odo por cualquier interrupción interna o exte m a o por
reset.
En e l m odo p o w e r dow n, el oscilador, y con él todo el m icrocontrolador. se paraliza. S e sale d e este m odo
solam ente p o r reset.
Introducción a los microcontroladores — 21
---------------------------------------------------------------------------------------------------------

1.2 .4 Protección d el program a fre n te a copias

La protección d e la in fo rm ación alm acen ad a p erm an en tem en te e n la


m em o ria del m icro co n tro lad o r es u n asp ecto m u y im p o rtan te q u e tienen en
cu e n ta los fabricantes d e m icro co n tro lad o res. E n gen eral, cu a n d o s e d esa­
rrolla u n a ap licació n , s e d esea im p ed ir q u e el p ro g ra m a p u e d a s e r co p iad o
o e x tra íd o d e la m em o ria del d isp ositiv o, u n a v e z q u e el d isp ositivo h a sido
p ro g ram ad o .

L o s m icro co n tro lad o res d isp on en d e recu rso s p ara p ro teg er, en g en e­
ral d e fo rm a op cion al, el p ro g ra m a alm acen ad o en la m em oria. E n algunos
m icro co n tro lad o res, c o m o los P IC , se p u ed e con fig u rar el d isp ositivo para
que la m em o ria d e p ro g ra m a n o s e p u e d a leer u n a v e z h ay a sid o p ro g ra ­
m ada. E n o tro s m icro co n tro lad o res, p articu la rm e n te aquellos que tienen una
arq u itectu ra d e m em o ria abierta, e s d ecir, q u e ad m iten la ad ició n d e m em oria
de p ro g ra m a ex te rn a al dispositivo, y d o n d e p o r con sig u ien te el p rog ram a
p u ed e ser visible y co p iad o , lo q u e se h ace e s en crip tar la in fo rm ación que se
in tercam bia c o n la m em o ria extern a, p u d ién d o se h a ce r esto c o n diferentes
n iveles d e seg u rid ad . E ste es el ca so , p o r ejem plo, d e los m icrocon trolad ores
d e la fam ilia d el 8051.

E jem plo 1.2

Protección del program a alm acenado e n la m em oria d e l m icrocontrolador 8051. Los m icrocontroladores
de la fam ilia d e l 8051 poseen una arquitectura d e m em oria abierta, e n el sentido d e q u e es posible aña dir
m em oria exte m a al m icrocontrolador. S e pueden u sar dos niveles de protección:
N ivel 1. L a inform ación alm acenada en la m em oria se encnpta con una cad e n a d e encriptación form ada
por entre 16 y 64 b ytes que se program an, m ediante una operación Ñ O R exclusivo (XN O R ) e n tre la
cadena y lo s contenidos que se desea alm acenar e n la m em oria. C uando la CPU le e e l co n tenido d e la
m em oria, se hace una operación X N O R e n tre el byte direccionado y uno de lo s bytes d e encriptación, y
esto recupera el valor original desencriptado. Si n o se cono ce la cadena d e encriptación, resulta práctica­
m ente im posible co n o ce r la inform ación real alm acenada e n la m em oria interna o extem a.
Nivel 2. S e im pide e l acceso total o parcial a la m em oria de program a interna, m ediante la program ación
de algunos bits de seguridad disponibles e n un registro del dispositivo.

1.3 A rquitecturas von N eum ann y Harvard

E n la m em o ria d e u n o rd e n a d o r, un m icro co m p u ta d o r o un m icro co n ­


trolad or, s e alm acen an in stru ccion es y datos. Las in stru ccion es d eb en pasar
secu en cialm en te a la C P U p ara su descod ificación y ejecución, en tan to que
algu n os d ato s e n m em o ria so n leídos p o r la C P U y o tro s so n escrito s en la
m em o ria d esd e la C P U . P u ed e in tu irse q u e la o rgan ización d e la m em o ria
2 2 — Microcontroladores PIC

y s u co m u n icació n c o n la C P U so n d o s a sp e cto s q u e influyen en el nivel d e


p restacion es d el ord en ad or.

L as arq u itectu ras v o n N eu m an n y H a rv a rd so n m od elos g e n erales del


h a rd w a re d e los o rd en ad o res q u e rep resen tan d o s solu cion es d iferentes al
prob lem a d e la co n exió n d e la C P U c o n la m em o ria y a la o rg a n iz a ció n d e la
m em o ria c o m o alm acén d e in stru ccion es y datos.

La arq u itectu ra v o n N eu m an n to m a el n om b re del m a te m á tico John


v o n N e u m an n q u e p ro p u so la id ea d e u n o rd e n a d o r co n el p ro g ra m a a lm a ­
c e n a d o (slored -p rog ram Com puter). J. v o n N e u m a n n trabajó en el eq u ip o d e
d iseñ ad ores d e la co m p u ta d o ra E N IA C (E lectron ic N u m erica l ín teg ra to r a n d
C alcu lator) d iseñ ad a e n la U n iversid ad d e P en n sylvan ia d u ra n te la Segunda
G u e rra M undial.

El térm in o arq u itectu ra H a rv a rd s e d eb e al n o m b re del lu g a r d o n d e


H o w a rd A iken d iseñ ó los o rd e n a d o re s M ark I, II, III y IV. E sto s o rd en ad o res
fueron los p rim ero s e n u tilizar m em o rias s e p a ra d a s p ara in stru ccion es y d a­
tos, u n a co n cep ció n d iferen te a l o rd e n a d o r d e p ro g ra m a alm acen ad o.

I-a figu ra 1.5 m u e stra e sto s d o s m od elos d e ord en ad o res. L a arq u itec­
tu ra v o n N eu m an n utiliza u n a m em o ria ú n ica p a ra in stru ccion es y datos.
E sto significa q u e c o n u n m ism o bus d e d ireccion es se lo calizan (direccion an)
in stru ccion es y d ato s y que p o r u n ú n ico b u s d e d a to s tran sitan tan to in stru c­
ciones co m o d ato s. I-a m ism a señal d e co n tro l q u e e m ite la C P U p ara leer un
d ato, sirve p a ra leer u n a instrucción. N o h a y señales d e control diferentes
p a ra d a to s e in stru ccion es. D ebe q u ed ar cla ro q u e au n q u e se use m em o ria
ROM p ara alm acen ar el p ro g ra m a y RAM p ara los d ato s, p ara la C P U n o hay
tal distinción, sino q u e R O M y R A M fo rm an u n conjunto ú n ico (u n a m em o ria
d e lectu ra y escritu ra) p ara el cu al la C P U e m ite señales d e con tro l, d e d irec­
ció n y d e datos.-

L a arq u itectu ra H a rv a rd utiliza m em o rias s e p a ra d a s p ara instru ccion es


y d ato s. E n este c a so la m em o ria d e p ro g ra m a (q ue alm a ce n a instrucciones)
tiene su bus d e d ireccio n es (d e instru ccion es), su p rop io b u s d e d a to s (m ás
bien es u n bus d e in stru ccion es) y su bus d e con tro l. P o r o tra parte, la m e m o ­
ria d e d ato s tiene su s p ro p io s b u ses d e direccion es, d a to s y con tro l, in d ep en ­
d ientes d e los buses d e la m em o ria d e p ro g ram a. L a m em o ria d e p ro g ra m a es
só lo d e lectu ra, m ien tras q u e en la d e d ato s se p u ed e leer y escribir.

L a arq u itectu ra v o n N eu m an n req u iere m en os líneas que la H arv ard


p a ra co n e cta r la C P U c o n la m em o ria, lo cu al significa u n a co n e x ió n m ás
sim p le en tre am b as. P ero co n esta arq u itectu ra e s im posible m an ip u lar si­
Introducción a los microcontroladores — 23

m u ltán eam en te d ato s e in stru ccion es, d eb ido a la e stru ctu ra d e buses únicos,
algo que sí es posible en la a rq u itectu ra H a rv a rd , q u e tiene b u ses sep arad os.
E sto confiere a la arq u itectu ra I la rv a rd la ven taja d e u n a m a y o r velocidad de
ejecución d e los p ro g ram as.

B D IR

(a)

B D IR - 1 B D IR - D

(b)

Figura 1.5 Arquitecturas (a) von Neumann y (b) Harvard. La arquitectura von Neuniann
utiliza una memoria única que se conecta a la CPU mediante los buses d e direc­
ciones (BDIR), datos (BDAT) y control (BCON). La arquitectura Harvard utiliza
memorias separadas para instrucciones y datos, las cuales se conectan a la CPU
mediante los buses de direcciones de instrucciones (BDIR-I) y de direcciones de
datos (BDIR-D), los buses d e instrucciones (BINST) y de datos (BDAT) y los
buses de control d e instrucciones (BCObl-I) y d e datos (BCON-D).

E n los m icro co m p u tad o res, la C P U es u n circu ito in teg rad o : el m icro-


p rocesad or. E s ob vio q u e la arq u itectu ra v o n N e u m a n n requiere m en os ter­
m inales e n el m icro p ro cesad o r que la a rq u ite ctu ra H a rv a rd . E s ta fue u n a ra­
zó n decisiva p ara q u e d esd e su s inicios los m icro co m p u ta d o re s b asad o s en
un m icro p ro ce sa d o r s e h ay an d iseñ ad o utilizad o casi e x clu siv a m e n te la a r­
qu itectu ra v o n N e u m a n n . E n los m icro co n tro la d o re s la situ ación e s diferen­
te. A l e star tod os los co m p o n en tes del sistem a d e n tro del circu ito integrado,
d esap arece la n ecesid ad d e m in im izar el n ú m e ro d e term in ales d e la C P U , de
m od o q u e en ellos ha p red o m in ad o la arq u itectu ra H a rv a rd . Los m icrocon ­
trolad ores P IC so n u n ejem p lo d e sistem as co n arq u itectu ra H a rv a rd .
24 — Microcontroladores PIC

1.4 A rquitecturas CISC y RISC

C IS C (C o m p lex In stru ctio n S et C om p u ter) y RISC (R ed u c ed In stru ctio n Set


C om p u ter) son d o s m o d elo s gen erales d e o rd e n a d o re s, d e sd e e l p u n to d e vis­
ta d e la co n cep ció n d e su rep erto rio d e in stru ccion es, lo c u a l re p e rcu te d irec­
tam en te sob re la arq u itectu ra d e la C P U . U n o rd e n a d o r C ISC tiene u n re p e r­
torio d e in stru ccion es com plejo y u n o rd e n a d o r RISC tiene un rep ertorio d e
in stru ccion es red u cid o.

AI a p a re ce r los m icro p ro cesad o res y los m icro co n tro lad o res, la ten den­
cia inicial fu e p rov eerlos d e un rep erto rio d e in stru ccion es lo m ás p o ten te
posible, d e m o d o q u e el m o d elo p red o m in an te fue el CISC . La com p lejid ad
d e las in stru ccion es fue en au m en to ; en u n m ism o rep ertorio había in stru ccio­
nes q u e hacían op eracio n es m u y sim ples, c o m o p o r ejem plo m o v e r un dato
d esd e la m em o ria al a cu m u la d o r, ju n to a o tra s q u e efectuaban o p eracio n es
tan com plejas c o m o m o v e r una c a d e n a d e d a to s d e u n lu g a r a o tro en la m e ­
m oria. Las in stru ccion es tenían d iferen te longitud y los m od o s d e d ireccion a-
m iento s e h icieron c a d a v e z m ás elab orad os. E ste a u m e n to e n la com p lejid ad
d e las in stru ccion es s e reflejó, p o r su p u esto , e n la com p lejid ad del h a rd w a re
d e la C P U , en el q u e se hacía necesario d e d ica r u n g ra n esp acio d el circu ito
in tegrad o a la descod ificación y ejecución d e las in strucciones.

En la a rq u itectu ra RISC, la C P U d isp o n e d e u n rep ertorio co rto d e ins­


tru ccion es sencillas. C a d a in stru cción p u e d e re a liz a r u n a o p eració n m uy
sim p le, c o m o m o v er u n d a to en tre la C P U y la m em o ria, p ero a alta veloci­
d a d . Se p u e d e lo g rar q u e to d as las in stru ccion es ten gan la m ism a longitud.
H ay p o co s m od o s d e d ireccio n am ien to d e los d a to s y so n aplicables a todas
las celd as d e la m em o ria d e d ato s. L a com p lejid ad d e la C P U d ism in u ye, d e
m o d o que e s fácil a u m e n ta r la frecu en cia del o scilad o r d e la C P U y c o n ello la
v elocid ad d e las in strucciones. C o m o tienen m en os tran sistores, so n m á s ba­
ra ta s d e d iseñ ar y p ro d u cir. D esde m ed iad o s d el o cta v o d ecen io d el siglo X X ,
ésta h a sid o la ten d en cia p red o m in an te en el d iseñ o d e m icro p ro ce sa d o re s y
m icro co n tro lad o res. L o s m icro co n tro lad o re s PIC so n u n ejem plo d e d isp osi­
tivos co n arq u itectu ra RISC.

1.5 M icrocontroladores, m icroprocesadores y sus fabricantes

L o s m icro co n tro lad o res d e u n m ism o tipo form an u n a fam ilia, q u e se


ca ra cte riz a , en gen eral, p o r ten er la m ism a C P U y ejecu tar el m ism o re p e r­
torio d e in stru ccion es. Es lo q u e s e co n o ce c o m o "n ú c le o " (core) del m icro­
co n tro la d o r. Los m iem b ro s d e u n a fam ilia d e m icro co n tro la d o re s tienen el
m ism o n ú cleo, p ero se d iferen cian en la en tra d a y salid a y e n la m em o ria. P o r
Introducción a los microcontroladores — 25

ejem plo, to d o s lo s m icro co n tro lad o res d e la fam ilia del 8 051 (M C S51) tienen
una C P U sem ejante, c o n u n g ru p o d e registros co m u n e s a to d o s los m iem ­
bros d e la fam ilia, y ejecutan el m ism o rep ertorio d e in stru ccion es. E n cam b io,
los distintos m iem b ro s d e la fam ilia tienen p u erto s d e e n tra d a y salida y m e­
m oria diferentes, e n can tid ad y tipo.

L o s m icro p ro cesad o res y m icro co n tro la d o re s s e fabrican c o m o circu itos


in tegrad os in d ep en d ien tes (stan d -alon e d ev ices), q u e con tienen e x clu siv am en ­
te al m icro co n tro lad o r o m icro p ro cesad o r. P e ro tam b ién el n ú cle o del p ro ce ­
s a d o r p u ed e estar em b eb id o (em b ed d ed -p rocessor core) en u n circu ito in tegrad o
d e alta escala d e in tegración , c u y a fu n ción es, e n gen eral, configu rab le p o r el
usuario. T al e s el c a so d e los d en o m in ad o s D isp ositivos L ó g ico s P ro g ra m a -
bles (P LD : P r o g ra m m a b le L o g ic D ev ices), en tre los que está n los F P G A (Field
P ro g ra m m a b le G a te A rra y ). L o s PLD en gen eral y los FP G A e n p articu lar, son
circu itos d e alta escala d e in tegración que d isp onen d e u n con ju n to d e elem en­
tos, c u y a in terco n exió n es p ro g ram ab le p o r el u su ario . U n o d e e sto s elem en­
tos p u e d e ser el n ú cle o d e un m icro co n tro la d o r o u n m icro p ro ce sa d o r, cu y a
con exión a cierta can tid ad d e m em o ria y a d isp ositiv os d e e n tra d a y salida
disponibles en el P L D , e s p ro g ram ab le p o r el u su a rio . A sí s e p u e d e configu­
rar u n m icro co n tro lad o r " a la m e d id a " d e la n e ce sid a d de la ap licación, con
la ven taja d e s e r com p atib le c o n u n m icro p ro ce sa d o r o u n m icro co n tro lad o r
"e s tá n d a r", c o m o el 8051 o u n PIC , p u e s tiene su m ism o núcleo.

H ay u n n ú m ero e le v a d o d e co m p añ ía s que fab rican m icro co n tro lad o res


y m icro p ro cesad o res e n alg u n a d e las form as m en cio n ad as an terio rm en te. A
co n tin u ación se p resen ta u n a relación d e fab rican tes d e m icrocon trolad ores
y m icro p ro cesad o res (o d e d isp ositiv os q u e utilizan la arq u itectu ra d e un d e ­
term in ad o m icro co n tro lad o r o m icro p ro ce sa d o r), c o n el co rresp o n d ien te co­
m en tario a cerca d e los d isp ositivos que fabrica.

• A ctel. FP G A con nú cleos 8051 y A RM 7.

• A d van ced M icro D evices (A M D ). M icroprocesadores com patibles co n


xx86.

• A ltera. FP G A co n núcleos N ios II.

• A n alog Devices. A rqu itecturas p ara p rocesam ien to digital d e señales ba­
sa d as en núcleos 8 0 5 2 , A R M 7 y otros p rocesadores.

• A pplied M icro C ircuits C orp. (A M C Q . A rqu itecturas basad as en el mi­


cro p ro cesad o r Pow erPC .

• A R C International. A rqu itecturas basadas en los p rocesad ores A R C 600,


A RC 7 0 0 , etc.
2 6 — Microcontroladores PIC

• A R M . A rqu itecturas basadas e n los núcleos d e los procesad ores A RM 7,


A R M 9, A R M 10, etc.

• A tm el. A rq u itectu ras basadas e n M arc 4, A V R, 8 0 5 1 , A R M 7, ARM 9,


A R M 11, P o w erP C y SPARC.

• B roadcom . Procesad ores p ara red es d e d a to s y com unicaciones c o n a r­


q u itectu ra MIPS.

• C am b ridge Consultants. A rqu itecturas basad as en los núcleos d e los p ro­


cesad ores X A P 1, X A P 2 y X A P3.

• C av iu m N etw ork s. A rquitecturas basad as en M IPS.

• C irrus Logic. A rqu itecturas basad as e n ARM .

• C rad le T echnologies. P rocesad ores digitales d e señales: CT34Ü0 y


C T 3600.

• C y an T ech nology. M icrocon trolad or eC O G lk .

• C y b em etic M icro System s. A SICs co n m icrocon trolad or P-51.

• C y p ress M icrosystem s. D ispositivos c o n arq u itectu ra P S oC ( P rogram m a-


ble Systetti-on-Chip).

• D allas Sem iconductor. M icrocontroladores com patibles c o n 8051.

• EM M icroelectronics. M icrocontroladores EM 6812 d e m u y bajo consum o.

• Freescale S em icon ductor (p ro ced e d e M otorola). M icrocontroladores d e


las fam ilias 6 8 H C 0 5 ,6 8 H C 0 8 ,6 8 H C 1 1 , 6 8 H C 1 2 y 6 8 H C 1 6 . Procesad ores
digitales d e señales (DSP: D igital S ign al P rocessor). Procesad ores C oldFire
y P ow erQ uicc co n núcleo Pow erPC .

• Fujitsu M icroelectronics A m erica. M icrocontroladores FR 80, M B9140x,


F 2M C -8F X , etc.

• G oal Sem iconductor. A rq u itectu ras basadas e n 8051.

• H vperstone. Procesad ores digitales de señales E 1-32X S R /X S R U ,


H yN et32S , etc.

• H oltek Sem iconductor. M icrocon trolad or HT8.

• Infineon T echnologies (antes Siem ens). M icrocontroladores C 500, C 800,


0 6 6 , T riC ore, etc.

• Infrant T echnologies. M icrocontroladores para red es d e datos.


Introducción a los microcontroladores — 27

• Integrated D cvice Technology (IDT). P rocesad ores p ara com unicaciones


d e d ato s basados en arq uitectura MIPS.

• Intel. M icrocontroladores d e las fam ilias M C S51, M C S151, M C S251,


M C S96, M C S 296, etc. M icrop rocesad ores x x 8 6 , IX P4xx, etc.

• M icrochip T echnology. M icrocontroladores PIC (PIC m icro) y controla­


d o res digitales d e señales dsPIC.

• M IPS Technologies. Procesad ores M IPS (M icroprocessor w ith o u t ¡nterloc-


k ed P ip elin e Stages).

• N ational Sem iconductor. M icrocon trolad ores C O P 8, C R 1 6 y m icrop ro­


cesad ores N S 32000.

• N E C Electronics A m erica. M icrocontroladores 78K 0, V 8 5 0 y otros.

• NetSilicon. Procesad ores basad os en núcleos A R M 7 y A RM 9.

• N X P (antes Philips Sem iconductors). M icrocontroladores c o n núcleo


8 0 5 1 , A R M 7 y A RM 9.

• Oki Sem iconductor. M icnxron trotadores co n núcleo ARM .

• PM C -Sierra. Procesad ores basad os en MIPS.

• Rabbit S em icon ductor. P rocesad ores Rabbit 2 000 y 3000.

• R enesas Tech. C orp. (antes H itachi). M icrocontroladores R 8, H 8 y otros.

• S h arp M icroelectronics. M icrocontroladores BlueStreak co n núcleo A R M 7


y A RM 9.

• Silicon Laboratories. M icrocontroladores co n núcleo 8051.

• Silicon S torage T ech nology. M icrcxrontroladores c o n núcleo 8051.

• STM icroelectronics. M icrocontroladores co n núcleos 8 051 y A RM 7.

• T e x as Instrum ents (TI). P rocesad ores digitales d e señales T M S370 y


TM S470, m icrocon trolad ores M SP430.

• Toshiba A m erica Electronic C om p o n en ts. M icrocontroladores CISC y


RISC.

• U bicom . M icrocontroladores SX, IP2CXX) e IP3000.

• X em ics. M icrocontroladores co n núcleo Cool R1SC.

• Xilinx. FPG A c o n núcleos PowerlXZ.

• ZiLO G. M icrocontroladores d e 8 bits con arquitecturas Z 8 y Z80.


Los microcontroladores PIC — 29

2 Los m icro co n tro lad o res PIC


E ste cap ítu lo d a u n a v isión p an o rá m ica d e los m icro co n tro lad o res PIC.
P rim eram en te se e stu d ian las características gen erales d e s u arq u itectu ra, que
so n co m u n e s a la m ay o ría d e los m iem b ro s d e las diferentes fam ilias PIC.
P a ra ello s e an alizan vario s elem en tos d e la arq u itectu ra, b a sa d a en el u so del
registro d e trabajo W . E n p articu lar, s e ab o rd an los sigu ien tes tó p icos: la eje­
cu ción seg m en tad a d e las in stru ccion es, los tipos d e oscilad ores disponibles,
los bits d e con fig u ració n d e los disp ositivos, el reset y su s fuentes, el m o d o de
bajo co n su m o y el p erro g u ard ián . Fin alm en te s e exp o n en las características
d e las d iferentes fam ilias d e m icro co n tro la d o re s PIC existen tes en el m ercad o
en el m o m en to d e escrib ir este libro.

2.1 Características generales d e los m icrocontroladores PIC

La arq u itectu ra d e los P IC re sp o n d e al e sq u em a d e bloques d e la figura


1.2. T o d o s están b a sa d o s e n la arq u itectu ra H a rv a rd , c o n m e m o ria s d e p ro­
g ra m a y d e d ato s sep arad as. C o m o en la m ay o ría d e los m icro co n tro lad o res,
la m em o ria d e p ro g ram a e s m u ch o m a y o r q u e la d e d ato s. L a m em o ria d e
p ro g ra m a está o rg an izad a en p alab ras d e 1 2 ,1 4 ó 16 bits m ien tras q u e la m e­
m o ria d e d ato s está co m p u e sta p o r registros d e 8 bits. El a cce so a los d iversos
d isp ositivos d e en trad a y salida s e realiza a través d e a lg u n o s reg istro s d e
la m em o ria d e d ato s, d en o m in ad o s registros d e fu nciones especiales (SFR:
Sp ecial F u n ctio n R eg isters). M u ch o s m icro co n tro la d o re s P IC cu en tan co n una
cierta can tid ad d e m em o ria E E P R O M p ara el alm acen am ien to n o volátil de
datos.

P o r o tra p arte, to d o s los PIC so n m icro co n tro la d o re s RISC q u e cu en tan


co n u n p eq u eñ o n ú m ero d e in stru ccion es: en tre 3 3 y 7 7 . T od as las in stru ccio­
nes so n del m ism o tam añ o : u n a p alab ra d e 12, 14 ó 1 6 bits. D esd e el p u n to
de vista d el p ro g ra m a d o r, el m o d elo gen eral d e los m icro co n tro la d o re s PIC
con sta d e un registro d e trabajo (registro W ) y los reg istro s d e la m e m o ria de
datos. P ara las op eracio n es aritm éticas y lógicas, uno d e los o p e ra n d o s debe
estar e n el registro W y el resu ltad o se ob tien e en W o en cu alq u ier registro
d e la m em o ria d e d ato s. L as transferen cias d e d a to s s e realizan en tre alg ú n
registro d e la m em o ria d e d ato s y el registro W , au n q u e e n los PIC d e la g a m a
alta se p erm iten tran sferen cias directas en tre d o s registros d e la m e m o ria d e
datos, sin necesid ad d e p a s a r p o r el reg istro W . S e d isp o n e d e instru ccion es
para a c ce d e r a cu a lq u ier b it d e cu alq u ier reg istro d e la m em o ria d e datos.

T od o s los m icro co n tro lad o res PIC ap lican la técn ica del se g m e n ta d o (pi-
p elin e) e n la ejecución d e las in stru ccion es, en d o s eta p a s, d e m o d o q u e las ins­
3 0 — Microcontroladores PIC

tru ccion es s e ejecu tan en u n ú n ico ciclo d e in stru cción , eq u ivalen te a cu a tro
pulsos d el o scilad o r principal d el m icro co n tro lad o r, e x c e p to las instru ccion es
d e tran sferen cia d e co n tro l q u e to m a n d o s ciclos d e instrucción.

O tra característica co m ú n a los m icro co n tro la d o re s PIC e s la fo rm a en


q u e e s tá im p lem en tad a la pila. L a pila n o form a p a rte d e la m em o ria d e datos
sino q u e o cu p a u n esp acio in d epen dien te y tiene a d e m á s una p rofu n d id ad
lim itada, segú n el m o d elo d e PIC. E n e sto s m icro co n tro lad o res n o h ay un
p u n tero d e pila (registro SP: S tack P o in ter), tan co m ú n e n la m a y o ría d e ios
m icro p ro ce sa d o re s y en m u ch o s m icrocon trolad ores.

L o s m icro co n tro lad o res PIC cu en tan c o n u n a a m p lia g a m a d e disposi­


tivos d e e n tra d a y s a lid a D isp onen d e p u e rto s p aralelos d e 8 bits, tem p oriza-
d o res, p u e rto s serie sin crón icos y asin crón ico s, co n v e rtid o re s A / D d e a p ro x i­
m acion es su cesiv as d e 8 , 1 0 ó 1 2 bits, co n v ertid o res D /A , m o d u la d o re s d e
a n ch o d e p u lso (P W M : P u lse W id th M o d u la tio n ), e tc. E x c e p to en los P IC de
g a m a baja, que n o d isp on en d e un sistem a d e in terru pcion es, los d isp ositivos
d e e n tra d a y salida g en eran solicitu d es d e in terru p ció n al m icrocon trolad or,
q u e se pu ed en e n m a sca ra r in dividu alm ente.

T od o s los m icro co n tro lad o res PIC cu e n ta n c o n u n te m p o riz a d o r que


trabaja c o m o perro g u a rd iá n y tienen u n cie rto n ú m e ro d e bits p a ra confi­
g u ra r el d isp ositivo, a los que s e a c ce d e a l p ro g ra m a r el m icrocon trolad or.
M ed ian te a lg u n o d e los b its d e con fig u ración , s e p u e d e p ro teg er la m em o ria
d e p ro g ra m a fren te a co p ias n o au torizad as.

M u ch o s m icro co n tro lad o res PIC p u ed en ser p ro g ra m a d o s en el propio


circu ito d e la ap licació n (ICSP: In -C irc u it S erial P ro g ra m tm n g ), u tilizan d o un
p eq u eñ o n ú m e ro d e líneas.

2.1.1 La Unidad A ritm ética y Lógica y el registro W en los microcontroladores PIC

U no d e los co m p o n e n te s fu n d am en tales d e la C P U d e u n m icro co n tro ­


la d o r es la u n idad aritm ética y lógica (A L U : A rith m etic a n d L o g ic U n it). Tal
c o m o indica su n om b re, la A L U realiza las op eracio n es aritm éticas y lógicas
p rev istas e n el rep erto rio d e in stru ccion es d el m icro co n tro lad o r. L a A L U tie­
n e aso ciad o u n reg istro q u e alm acen a tem p o ralm en te uno d e los d a to s que
in tervien en e n la o p eració n d e la A L U y even tu alm en te el re su lta d o d e la
o p e ra ció n realizada. T am b ién se a so cia n a la A L U a lg u n o s bits que indican
d e term in ad as características del resu ltad o d e la o p e ra ció n (si el resu ltad o es
cero , si se h a p ro d u cid o a c a rre o o p réstam o , si el resu ltad o e s positivo o nega­
tivo, e tc.). E sto s bits in d icad o res u su alm en te form an p a rte d el llam ad o regis­
tro d e e s ta d o (STA TU S).
Los m icrocontroladores PIC — 31

E n m u c h o s m ic r o p r o c e s a d o r e s y m ic ro c o n tro la d o re s , el r e g is tro a s o c ia ­
d o a la A L U recib e e l n o m b re d e A c u m u la d o r (A C C : A c c u m u la to r ). E n los m i­
c ro c o n tr o la d o r e s P IC s e d e n o m in a R e g is tro d e T ra b a jo (W : W o r k in g R eg is te r )
y h a c e fu n cio n e s s e m e ja n te s al A c u m u la d o r d e los m ic ro p ro c e s a d o re s y m i­
c ro c o n tr o la d o r e s tra d icio n a le s , p e r o su p o sició n re s p e c to a la A L U e s d istin ta
a la q u e tien e el A C C , s e g ú n m u e s tra la fig u ra 2 .1 , y p o r lo ta n to lo s re g is tro s
A C C y W n o s e c o m p o r ta n d e fo rm a e x a c ta m e n te igual.

Figura 2.7 La unidad aritmética y lógica (ALU ) y su relación con el registro de trabajo y la
memoria de datos, (aj Estructura tradicional empleada en muchos microproce­
sadores. (b) Estructura empleada en los microcontroladores PIC.. la diferencia
fundamental entre ambas estructuras es la ubicación del registro de trabajo, que
en las arquitecturas tradicionales recibe el nombre de Acumulador (ACC) y en los
PIC es el registro W,

E n las a rq u ite c tu ra s tra d icio n a le s , el A C C e s tá a la sa lid a d e la A L U , d e


m o d o q u e el re s u lta d o d e c u a lq u ie r o p e ra c ió n a r itm é tic a o ló g ica s ie m p r e e s
d e p o s ita d o e n el A C C . E n los P IC , e n c a m b io , el re s u lta d o d e u n a o p e ra c ió n
a ritm é tica o ló g ic a p u e d e d e p o s ita rs e e n W o p u e d e lle v a rs e d ire c ta m e n te a
c u a lq u ie r re g is tro d e la m e m o ria d e d a to s , y e s to les p ro p o r c io n a g r a n flexi­
b ilid ad y p o te n c ia .

2 .1 2 G d o s d e m á q u in a y ejecución d e instrucciones

C o m o to d o s lo s m ic ro c o n tr o la d o r e s , los P IC tie n e n u n o s c ila d o r p rin ci­


pal q u e d ic ta la c a d e n c ia d e s u s o p e ra c io n e s in te rn a s. L o s p u ls o s g e n e ra d o s
p o r e s te o s c ila d o r (Q 5 C 1 ) s o n d iv id id o s in te r n a m e n te p a r a g e n e r a r c u a tr o
señ ales d e n o m in a d a s Q l , Q 2 , Q 3 y Q 4 , q u e s in c ro n iz a n to d o el trab ajo in ter-
3 2 — Microcontroladores PIC

n o d el m icro co n tro lad o r. C a d a cu a tro p u lsos del o scilad o r principal s e tiene


u n ciclo d e m áquina (C M ). L a figu ra 2 .2 m u e stra la relación en tre el oscilad or
principal, las señales in tern as y la d u ra ció n d e los C M .

01 I Q2 I Q3 I 0 4 I Q1 I Q2 I Q3 I Q4 l Q1 | Q2 I Q3 I Q4 I
U „ _ „ I

PC í PC+1 ¡ PC+2 j
f ir r ................ t

B ú s q u e d a In s t (P C ) B ú s q u e d a In s t (P C + 1 ) B ú s q u e d a In s t (P C + 2 )
Pipeline
E je c u c ió n In s t (P C -1 ) E je c u c ió n In s t (P C ) E je c u c ió n In s t (P C + 1 )

r CMi Tc M2 Tc M3

Figura 2.2 Señales de reloj en los microcontroladores PIC. 0S C 1 es la señal del oscilador
principal, de la cual se derivan las señales intim as Q l, Q2, Q3 y Q4, que sin­
cronizan la búsqueda, descodificación y ejecución de las instrucciones. es el
tiempo que dura un ciclo de máquina, y equivale a cuatro pulsos del oscilador
principal.

D u ran te el tiem p o Q l d e c a d a ciclo d e m áq u in a, el C o n ta d o r d e P ro g ra ­


m a (PC ) s e in crem en ta, ap u n tan d o h acia la in stru cción q u e d eb e ser bu scad a,
lo cu al o c u rre d u ra n te el tiem p o Q 4. P aralelam en te, d u ra n te to d o el C M (d es­
d e Q l a Q 4) se está ejecu tan d o la in stru cció n anterior.

L a ejecución d e una in stru cción cu alq u iera se realiza e n tres fases: bú s­


qu ed a, descod ificación y ejecu ción p ro p iam en te d ich a. E n la fase d e bú sq ued a
(fetch ), el m icro co n tro lad o r lee la in stru cción q u e está en la m em o ria d e p ro­
g ra m a y la lleva a la C P U . E n la fase d e d escodificación , la C P U determ in a
cuál e s la o p eració n in d icad a en la in stru cción . E n la fase d e ejecución, se
ejecuta la o p eració n p rev ista p o r la instrucción.

L a ejecución d e una in stru cció n s e realiza e n d o s ciclos d e m áquina.


En el p rim er C M s e busca la in stru cción e n la m em o ria d e p ro g ra m a y en
el se g u n d o C M se d escod ifica y ejecuta la in stru cción . E n realid ad , d eb ido
al m ecan ism o d e seg m en tad o (pipeline) (a p a rta d o 2 .1 .3 ), ese se g u n d o C M se
Los microcontroladores PIC — 33

solapa, e n el tiem po, c o n el p rim er C M d e la sigu ien te in stru cción , segú n se


puede a p re cia r en la figura 2 .2 , resu ltan d o q u e, en p rom ed io, se ejecute una
instru cción p o r ciclo d e m áquina.

2.1.3 Segm entado (pip eline) e n la ejecución d e instrucciones

El seg m en tad o o p ip elin e es una técnica m ed ian te la cual s e consigue


que d o s o m á s in stru ccion es se so lap en d u ra n te su ejecución. Esto in trodu ce
un cierto nivel d e p aralelism o en la ejecución d e las in stru ccion es y re d u ce el
tiem po p ro m ed io d e su ejecución. E l seg m e n ta d o es tran sp aren te al p ro g ra ­
m ador.

El prin cipio e n que se basa el seg m e n ta d o es sim ilar al d e una línea d e


p rod u cción e n cad en a, c o m o las u tilizad as p a ra p ro d u cir au to m ó v iles, televi­
sores y m u ch o s o tro s artícu lo s d e co n su m o . L a p ro d u cció n tran sita p o r una
serie d e etap as, en c a d a una d e las cu ales s e realiza a lg u n a o p e ra ció n que
co n trib u y e a o b ten er el p ro d u cto final. E n u n a línea d e p ro d u cció n en cadena
d e n eta p as, h ay sim u ltán eam en te n p ro d u cto s en p ro ceso d e fab ricación . Los
p rod u ctos p erm an ecen u n cierto tiem p o T . en cad a una d e las eta p a s. C ad a
p ro d u cto tran sita p o r las n e tap as d e la línea, lo cu al o cu p a u n tiem p o n x 7\
C o m o cad a T segu n d o s sale un p ro d u cto diferente, e l tiem p o p rom ed io de
fabricación d e u n artícu lo es T .

En el c a so d e u n p ip elin e d e in stru ccion es q u e ten ga n eta p a s, c a d a ins­


trucción p erm an ece un tie m p o TCM e n c a d a eta p a y el tiem p o q u e le to m a
tran sitar p o r tod as las etap as es n x Tc;m segu n d o s. C a d a TCMsegu n d o s "sale"
una instru cción del p ip elin e, p o r lo q u e el tiem p o p ro m e d io d e ejecución d e
una in stru cció n cu alq u iera será d e TCM seg u n d o s. TCMe s el tiem p o que d u ra
u n ciclo d e m áq u in a. D ad o q u e h ay in stru ccion es, c o m o las d e transferencia
d e con tro l, que req uieren ciclos d e m áquina adicionales en el p ip elin e, e n la
práctica el tiem p o p ro m e d io d e ejecución d e una in stru cción resu lta a lg o m a-
y o r q u e TCM.

E n los m icro co n tro lad o res P IC , las instru ccion es se ejecu tan a través d e
un p ip elin e d e d o s e ta p a s, seg ú n m u estra la figura 2.3. C a d a in stru cción se
ejecuta e n d o s etap as: la p rim era etap a co rre sp o n d e a la b ú sq u ed a, p ara lo
cual se requiere el tiem p o co rresp o n d ien te a u n C M ; e n la seg u n d a eta p a se
descodifica y ejecuta la in stru cción , lo cu al to m a o tro ciclo d e m áq u in a, m ien ­
tras se b u sca la in stru cció n siguiente. Es decir, q u e e n c a d a ciclo d e m áquina
se b u sca u n a in stru cción y a la v e z se ejecuta la in stru cción an terior. En tonces,
co n c a d a n u ev o C M se ejecuta co m p letam en te u n a n u e v a in stru cción , e x ce p ­
3 4 — Microcontroladores PIC

to cu a n d o haya in stru ccion es d e tran sferen cia d e con tro l, que req uieren d o s
ciclos d e m áq u in a, c o m o ilustra el ejem plo 2.1.

1 in s tru c c ió n /C M

Figura 2.3 Pipeline de dos etapas. En la primera etapa se busca la instrucción, que se ejecuta
en la segunda etapa. Cada etapa dura un ciclo de máquina (CM). En el pipeline
hay simultáneamente dos instrucciones en etapas diferentes. Cada instrucción
permanece en el pipeline durante dos CM, pero como promedio, sale del pipeline
una instrucción por cada CM.

E jem plo 2.1

La figura 2.4 m uestra la operación d e un pipeline d e d o s etapas, al e je cu ta r u n segm ento d e program a


que incluye una instrucción d e transferencia de control.
Durante e l prim er ciclo de m áquina (CM ), se busca la instrucción 11, m ientras se ejecuta la anterior
instrucción (10, n o m ostrada). En e l segu ndo C M se busca la instrucción 12 m ientras se ejecuta 11. En el
terce r C M se busca la instrucción d e transferencia de control 13 m ientras se ejecuta 12. E n e l cuarto CM se
busca la instrucción 14, m ientras se ejecuta la instrucción 13. La ejecución d e 13, que e s una instrucción d e
llam ada a una subrutina que com ienza en la instrucción 110, consiste e n pon er e l contador d e program a
en la p ila y colocar en e l P C la dirección d e la instrucción 110, q u e será buscada e n e l siguiente CM . E n el
quinto C M se busca la instrucción 110, pero la 14. que ya está e n el p ipeline, no debe se r ejecutada y por
lo ta n to se saca virtualm ente del pipeline, ejecutando e n su lugar una instrucción d e “nop’ (no operación).
E n e l se xto CM se busca la instrucción 111 d e la subrutina (no m ostrada e n la fig u ra ) y se ejecuta 110. La
instrucción d e transferencia d e control tom a, pues, d o s CM.

2 .1 .4 Osciladores

L o s m icro co n tro lad o res PIC d isp on en d e las siguientes op cion es p a ra el


oscilad or principal: o scilad o r d e cristal (d e cu a rz o ), o scilad o r RC y oscilad or
e x te rn o . A lgu n os d isp ositiv os d isp on en d e u n o scilad o r RC in terno d e unos
4 M H z. Al a u m e n ta r la frecuencia d el o scilad o r principal, se a co rta la d u ra ­
ció n d e los ciclo s d e m áq u in a y co n ello el tiem p o d e ejecución d e las in stru c­
cion es, p ero au m en ta el co n su m o d e energía.

El tipo d e oscilad or a u tilizar se seleccion a m ed ian te los bits d e con figu ­


ra ció n del PIC . E n e sto s bits se especifican v a ria s con fig u racion es d e oscila­
d o re s (LP, X T , HS) d e cristal d e c u a rz o o re so n a d o r cerám ico . La op ción L P se
seleccion a en ap licacio n es d e m u y baja potencia, e n el ra n g o d e frecu en cias d e
Los microcontroladores PIC — 35

3 2 kH z a 2 0 0 k H z, a p ro x im a d a m e n te ; la op ción X T s e ajusta a las ap licaciones


a frecu en cias m edias, d e 1 0 0 kl Iz a 4 M H z; y la op ción H S es a p ro p ia d a en
ap licaciones d e alta frecu en cia, en tre 8 M H z y 2 0 M H z. La figura 2 .5 m u estra
una con fig u ració n típ ica d el o scilad o r d e cristal.

E ta p a 1 E ta p a 2
P ro g ra m a
(B ú s q u e d a ) ( E je c u c ió n )

-- 0

I cm

27 cm

37"cm

4Tcm

5 r CM

T ie m p o

Figura 2.4 Ejemplo de flu jo d e instrucciones a través de un pipeline de 2 etapas. La instruc­


ción 13 se ejecuta en dos ciclos de máquina (CM), lo cual ocurre con todas las
instrucciones de transferencia de control. El resto de las instrucciones se ejecutan
en un CM. TCMes el tiempo que dura un CM.

jj* OSC1

j_ X T A L :
„ w SLEEP A la ló a ic a
< ‘ Y in te rn a
f T 0 3 0 ,
\7 II 1 u > ►

P IC 1 6 C x x x

Figura 2.5 Oscilador de cristal. C , C2 = 75 pF a 68 p F para un cristal (X'l'AL) de 4 MHz.

El o scilad o r R C e s u n a op ción d e bajo co ste p a ra el o scilad o r principal


del m icro co n tro lad o r, ap ro p iad a cu a n d o la precisión y la estabilidad en el
valor d e la frecu en cia n o so n esenciales. L a figura 2 .6 m u e s tra e s ta con fig u ra­
ció n en u n PIC d e g a m a m edia. El fabricante n o ofrece fórm u las p ara d e te r­
m in ar la frecu en cia d e oscilación en función d e los v alores d e RKXT y CfXT. En
36 — Microcontroladores PIC

su lu g a r se o frecen c u rv a s p a ra c a d a d isp ositivo q u e relacion an la frecuencia


c o n VDD, y CEXT, a una tem p eratu ra d e te rm in a d a (25 °C ).

VdO

Figura 2.6 Oscilador RC. Rfxr 3 k O a 100 k íl; Ctx r > 20pF-

L a te rce ra o p ció n e s u tilizar u n o scilad o r e x te rn o c o m o fuente d e reloj


del m icro co n tro lad o r. L a figu ra 2 .7 m u estra esta con fig u ració n en u n P IC d e
g a m a m edia.

R e lo j
e x te r n o

A b ie rto

P IC 1 6 C x x x

Figura 2 .7 Uso d e un oscilador externo como reloj en un PIC.

2 .1 .5 Bits de configuración

T o d o s los PIC d isp on en d e u n cierto n ú m ero d e bits p ara con fig u rar el
m icrocon trolad or. E s to s bits d e configuración están d isp onibles e n m em o ria
n o volátil (E EPR O M ) cu a n d o s e p ro g ra m a el dispositivo, p ero n o so n a c ce ­
sibles d u ran te e l fu n cion am ien to n o rm al del m icrocon trolad or. Es d ecir, una
v e z estos bits h an to m a d o alg ú n v a lo r d u ra n te la p ro g ram ació n d el PIC , ya
n o pu ed en ser m odificad os p o r el p ro g ra m a d e la ap licación.

Los bits d e configuración p erm iten q u e el u su ario p ro g ra m e ciertas c a ­


racterísticas del d isp ositivo p a ra a d a p ta rlo m ejor a las n ecesid ad es d e la apli­
ca ció n . C u an d o s e p o n e en m a rch a el dispositivo, el e sta d o d e estos bits d e te r­
m in a la form a en q u e o p e ra rá el m icrocon trolad or. A u n q u e estos bits n o rm al­
m e n te fo rm a n p arte d e la m em o ria d e p ro g ra m a , o c u p a n u n a d ire cció n q u e
n o e s accesib le d u ra n te el funcionam iento n orm al del m icro co n tro lad o r. Sólo
se p u e d e a c ce d e r a ellos d u ra n te la p ro g ra m a ció n d el m icrocon trolad or.
Los microcontroladores PIC — 37

L as características q u e s e p ro g ram an e n los bits d e con fig u ració n so n las


siguientes:

• El tipo d e oscilador.
• L a habilitación o n o del p erro gu ardián.
• L a protección d e la m em oria d e p rog ram a.
• L a protección d e la m em o ria EEPR O M d e datos, si existe e n el
dispositivo.
• L as características del reset y la alim entación d el dispositivo.
S e g ú n el disp ositivo co n creto , p u ed e q u e a lg u n a d e e sta s características
no sea p ro g ram ab le. A co n tin u ació n s e p resen tan v a rio s ejem plos q u e ilus­
tran c ó m o s e p resen tan esas características en los bits d e con figu ración .

E jem plo 2.2

Los bits d e configuración e n lo s m icrocontroladores de gam a m edia se agrupan en una "palabra" de


configuración que ocupa la dirección 2007h d e la m em oria d e program a. Esta dirección sólo s e alcanza
durante la program ación d e los dispositivos, pero n o durante la ejecución norm al d e l program a d e la
aplicación. L a figura 2.8 m uestra, a m odo d e ejem plo, lo s b its d e configuración en el m icrocontrolador
PIC16F873.

Vi 12 11 10 9 0 f 6 5 * i 3 1 0

CP1 CPO D E B lK i - W RI CPD LVP BODEN CP1 CPO P W R TE# W D TE FOSC1 FO SCO

C P 1. C P O P r o le c c ió n d e la m e m r ia F L A S H d e p ro g ra m a
1 1 - m e m o r ia s in p ro te c c ió n
1 0 - s e p r o t e g e n s ó l o la s ú lt im a s 2 5 6 c e ld a s (F O O h a F F F h )

0 1 - s e p r o te g e s ó lo ia p á g in a 1 (8 0 G h a F F F h )

0 0 - to d a la m e m o r ia s e p ro te g e (C O O h a F F F h )
D E B U G : M o d o d e d e p u r a c i ó n e n c irc u ito :
1 in h a b ilit a d o ( R B 6 y R B 7 s o n t e r m in a le s d o p r o p ó s it o g e n e r a l)

0 - h a b i l i t a d o ( R B 6 y R B 7 s e u s a n p a r a la d e p u r a c i ó n )

W R T : E s c r it u r a o n la m e m o n a F L A S H v ía E E C O N :

1 •habitada
0 - in h a b ilit a d a
C P D : P ro te c c ió n d e la m e m o r ia E E P R O M d e d a lo s
1 - s in p ro te c c ió n
0 •p ro ie g ld a
L V P : H a b i l i t a c i ó n d e la p r o g r a m a c i ó n s o r l e c o n b a j o v o l t a j e :

1 • h a b ilita d a
0 - in h a b it a d a
B O O E N : R e s o l p o r f a llo d e a lim e n t a c ió n :
1 - habilitada
0 - in h a b ilit a d a
P W R T6 # H a b ilita c ió n d e l t e m p o r i z a d i x d e a r r a n Q u a d o e n c e n d id o ( P W R T )
1 - in h a b ilit a d o
0 - habitado
W O I E : H a b ilita c ió n d e l p e n o g u a r d a n < W D T )

1 - habilitado
0 - in h a b ilit a d o
F O S O . FO S O S e l e c c i ó n d e l U p o d e o s c ila d o r :

11 -R C
1 0 - HS
0 1 -X T
0 0 -L P

Figura 2.8 Bits de configuración del microcontrolador PIC16F873.


38 — Microcontroladores PIC

2.1 .6 Fuentes de reset

E n gen eral, el reset d e u n m icro co n tro la d o r h a c e q u e el d isp ositivo vaya


a u n e sta d o co n o cid o . M ien tras se en cu en tra tran sitoriam en te e n e sta d o d e
reset, el d isp ositivo está v irtu alm en te d eten id o, es decir, n o se ejecuta ninguna
in stru cción d el p ro g ra m a . C u a n d o sale d el e sta d o d e reset, el d isp ositivo va
a u n e sta d o co n o cid o . E n p articu lar, en los m icro co n tro lad o res PIC , la salida
del e sta d o d e reset h ace q u e el co n ta d o r d e p ro g ra m a s e p o n ga en el v a lo r 0,
d e m o d o que la in stru cción q u e se ejecuta d esp u és d e u n reset e s la q u e está en
esa d irección d e la m e m o ria d e p ro g ra m a , in d ep en d ien tem en te d e cu alq u ier
situación an terio r al reset.

El reset en los m icro co n tro lad o res PIC s e p u e d e p ro d u cir p o r diferentes


c a u sa s, d en om in ad as fuentes d e reset. El n ú m ero d e las fu entes d e reset puede
v a ria r seg ú n el tipo d e m icro co n tro lad o r, p ero las sigu ien tes so n co m u n e s a
casi to d o s los m icro co n tro lad o res PIC:

1. R eset externo.

2. R eset p o r encendido (p uesta en m archa).

3. R eset p o r desbord am iento del perro guardián.

4. R eset p o r fallo d e la alim entación.

L a figura 2 .9 m u estra el esq u em a lógico del circu ito in terno q u e p ro­


d u ce el reset d e los m icro co n tro lad o res PIC y las posibles fuentes d e reset
en u n ciad as an teriorm en te. El circu ito d eb e g a ra n tiz a r q u e, en el m om en to d e
ab an d o n ar el esta d o d e reset, el m icro co n tro la d o r se en cu en tre e n con d icion es
estables q u e p erm itan su c o rre c to fun cion am ien to. E n p articu lar, el circu ito
d eb e a s e g u ra r q u e la salid a del estad o d e reset se p ro d u zca sólo si la fuente d e
alim entación h a alcan zad o u n v a lo r estable y suficientem ente alto. Es d ecir, el
m icro co n tro lad o r n o d eb e salir del estad o d e reset m ien tras la ten sión d e ali­
m e n ta ció n n o sob rep ase cierto um bral. D e ello se e n c a rg a el bloque asociad o
al term inal V0D e n la figu ra 2 .9 , q u e a c tú a d u ra n te el reset p o r encendido.

El circu ito in terno d e reset tam bién d eb e g a ra n tiz a r q u e el m icro co n tro ­


la d o r ab an d o n e el estad o d e reset só lo si el o scilad o r principal está en régim en
estable. Esta es la fu n ción del bloque aso ciad o al term inal O S O en la figura
2.9. D esde el m o m e n to en que arran ca el oscilad or principal del m icro co n tro ­
la d o r hasta q u e ese o scilad o r alcan za su o p e ra ció n estable, tra n scu rre u n cier­
to tiem po. M ientras la am p litu d y frecu en cia del o scilad o r n o sean estables,
el m icro co n tro lad o r d eb e p erm an ecer e n el e sta d o d e reset. El o scilad o r prin­
cip al a rra n ca cu a n d o s e p o n e en m a rch a el m icro co n tro lad o r, cu a n d o éste
Los microcontroladores P IC — 39

sale d el m o d o d e bajo co n su m o , o cu a n d o h a y u n fallo e n la alim en tación del


m icrocon trolad or. Estas situ acion es co rre sp o n d e n , resp ectiv am en te, al reset
p o r en cen d id o , a l reset (e x te m o o p o r d esb o rd am ien to del p e rro gu ard ián)
m ien tras el m icro co n tro la d o r está e n m o d o d e bajo co n su m o , y al reset por
fallo d e la alim entación.
M CLR #

Figura 2.9 Diagrama de bloques simplificado del circuito interno que controla el reset en un
microcontrolador PIC, que muestra las principales fuentes de reset. Im operación
d e algunos de estos bloques se puede program ar mediante los bits d e configuración
(BODEN, PWRTE, etc.).

El bloque O S T /P W R T d e la figura 2 .9 co n tien e d o s te m p o rizad o res: el


T em p o rizad o r d e A rran q u e del O scilad o r (OST: O scilla to r S tart-u p T im er) y
el T em p o rizad o r d e A rran q u e d e E n cen d id o (P W R T : P o w e r -u p T im er). Estos
circu itos trabajan d e la sigu iente form a. U n o scilad o r R C interno, indepen­
diente del oscilad or principal, g aran tiza u n re ta rd o d e u n os 7 2 m s p ara la
señal P W R T , co n tad o s a p artir del m o m en to en q u e s e alim en ta el oscilador.
El te m p o riz a d o r O ST p ro p o rcio n a u n re ta rd o ad icion al d e 1 024 p u lsos del os­
cilad or principal, tiem p o suficiente p ara q u e el oscilad or alcan ce cond icion es
d e o p e ració n estables. El te m p o riz a d o r O ST co m ie n z a a trab ajar sólo cu a n d o
el tem p o rizad o r PW R T s e h a d esb ord ad o.

La figura 2.10 m u estra la secu encia e n q u e s e p rod ucen las señales asocia­
d as a l bloque O ST /P W R T en dos situaciones diferentes: d u ran te un reset p o r
encendido (los term inales M C L R # y V1M) están unidos) y en u n reset m anual.
40 — Microcontroladores PIC

VDD
-A
M CLR#
4 w - .
PW RT#
+-Tos<-+
OST#

RESET#

(a)
v'od y
M CLR# /*
Tpv,R|—♦ “
PW RT# 1■
O ST# | ¡

RESET#

(b )

Figura 2.10 Diagramas d e tiempo que ilustran la secuencia en que se producen las señales
asociadas al bloque OST/PWRT. (a) Reset por encendido (el terminal M CLR#
está conectado a Vnn). (b) Reset manual.

El reset e x te rn o o c u rre cu a n d o s e p o n e a 0 el term inal M C L R #. El term i­


nal M C L R # d eb e estar a 1 d u ran te el fu n cion am ien to n o rm al del m icro co n ­
trolad or. El reset e x te rn o p u ed e o cu rrir d u ra n te el fu n cion am ien to n orm al
del m icro co n tro lad o r o m ien tras el m icro co n tro la d o r e s tá e n m o d o d e bajo
co n su m o (m o d o S L E E P ). E n a m b o s caso s, cu a n d o el m icro co n tro la d o r sale
d el e sta d o d e reset ejecuta la in stru cción situ ad a e n la d ire cció n d e la m em o ria
d e p ro g ra m a . A este term in al se p u ed e c o n e c ta r u n in te rru p to r p a ra p ro d u cir
u n reset m an u al, u tilizan d o u n esq u em a c o m o e l d e la figu ra 1.4a.

El reset p o r en cen d id o (PO R : P o w e r -o n R eset) o c u rre si se co n e cta el ter­


m inal M C L R # al term inal VDD d e alim en tación d el m icro co n tro lad o r, utili­
z a n d o uno d e los esq u em as d e la figura 2 .1 1 . E l m icro co n tro la d o r d e te cta la
ap arició n del tensión d e alim en tación VDD (flan co d e subida en VDD), p ro v o ­
ca n d o c o n ello u n reset q u e garan tiza el co rre cto inicio d el trabajo d el m icro ­
co n tro la d o r. D e esta form a n o e s n ecesario co lo ca r circu itos extern o s p ara
c o n se g u ir el reset, basta c o n unir los term in ales M C L R # y V DDd irectam en te o
a tra v é s d e una resisten cia (figu ra 2.11 a).

Si la fuente d e alim en tación tiene u n tiem p o d e estab lecim ien to eleva­


d o , h ay q u e g a ra n tiz a r q u e la ten sión e n el term in al M C L R # p erm an ezca p o r
debajo d el u m b ral h asta que VDDalcan ce u n v a lo r a d e cu a d o . E n e sto s ca so s se
utiliza el circu ito d e la figu ra 2.11fr.
Los microcontroladores PIC — 41

Voo Vdd

'— Vbo

M CLR#

P IC 1 6 C x x x

(a)
Figura 2.11 (a) Circuito para garantizar el reset por encendido: los terminales M CLR# y VpDse
pueden unir directamente o mediante una resistencia, (b) Circuito para el reset por
encendido si lafuente de alimentación tiene un tiempo de estableámiento elevado.

El reset p o r d esb o rd am ien to del p e rro g u ard ián o cu rre cu a n d o se d es­


b o rd a el te m p o riz a d o r d en o m in ad o p erro g u ard ián (W D T : W a tc h d o g T im er).
El d esb o rd am ien to se p ro d u ce si, d esd e el p ro g ra m a q u e e s tá ejecu tan d o el
m icrocon trolad or, n o se b o rra a tiem p o el re su lta d o del co n te o q u e realiza
este tem p o rizad o r. El reset p o r d esb o rd am ien to d el p e rro d e g u a rd ia p u ed e
o cu rrir d u ra n te el fu n cio n am ien to n orm al del m icro co n tro lad o r. Si el W D T
s e d esb o rd a m ien tras el m icro co n tro lad o r está en el m o d o d e bajo co n su m o ,
el m icro co n tro lad o r sale d e d ich o m o d o , p ero n o se p ro d u ce u n reset. E n el
a p a rta d o 2 .1 .8 s e estu d ia c o n m ás d etalle el fu n cio n am ien to del W DT.

El reset p o r fallo d e la alim en tación (BOR: B rcrw n-out R eset) o c u rre c u a n ­


d o h ay u n a d ism in u ción b ru sca y tran sito ria d e la ten sión d e alim entación.
El m icro co n tro lad o r in clu y e u n circu ito q u e p ro d u ce u n reset en e sta s co n ­
diciones y m an tien e d ich o esta d o m ien tras la ten sión d e alim en tación VDD
esté p o r deb ajo d e u n cierto u m bral (figu ra 2 .9 ). C u a n d o V0D se recu p era,
el e sta d o d e reset se m an tien e d u ra n te un tiem p o adicional d e u n os 7 2 m s,
p ro p o rcio n ad o p o r el te m p o riz a d o r PW R T . D e esta form a s e g a ran tiza q u e el
oscilad or prin cipal y V0D estén e n su s valores n o m in ales cu a n d o se sa lg a del
esta d o d e reset. L a figu ra 2 .1 2 m u e stra v aria s situ acion es d e reset p o r fallo d e
la alim entación.

L a s características d e a lg u n a s fu entes d e reset se p u ed en p ro g ra m a r m e ­


d ian te la palabra d e con fig u ració n del d isp ositivo. U n detalle im p o rtan te es
q u e el p ro g ra m a d o r p u ed e d eterm in ar, si fuese n ecesario, la fuente del reset
que h a a ctu ad o , co n su ltan d o d eterm in ad o s bits d e a lg u n o s reg istro s d e fun­
cion es especiales, tales c o m o los reg istro s ST A T U S y PC O N .
42 — Microcontroladores PIC

Voo
7 2 ms
R ES ET#

Voo
<72 m s 72 ms
R ES ET#

V«>
-----------------
72 m s
R ESET#

Figura 2 .1 2 Comportamiento del reset por fallo de la alimentación en varias situaciones. El


temporizador PW RTgarantiza que VD0 esté en su valor nominal cuando se salga
del estado de reset.

PCON
4 3 2 1

POR# BOR#

P O R # : In d ic a d o r d e r o s e t p o r e n c e n d id o ( P O R ) .

1 - n o ho ocurrido reset por encendido,


0 - h a o c u r rid o u n re s e t p o r e n c e n d id o
B O R # : I n d ic a d o r d e r e s e t p e r ta llo d e a lim e n t a c ió n ( B O R )
1 - n o h a o c u r r id o u n r e s e t p o r (a lio d e a lim e n ta c ió n

0 - h a o c u r rid o u n re s o t p o r ta llo d e a lm e n t o o O n

Figura 2.13 El registro de funciones especiales PCON (Poioer Control) en el PIC16F873 tiene
dos bits que permiten identificar el origen del reset que ha actuado.

E jem plo 2.3

La figura 2 .13 m uestra e l registro PC O N d e un m icrocontrolador d e gam a m edia: el P IC 16F873. Se pue­


d e ver q u e tie n e d o s b its co n lo s que se pue de identificar s i e l reset ha tenido lu g a r p o r encendido o por
fa llo d e alim entación. Según haya ocurrido u n re se t p o r encendido (P O R ) o por fa llo d e la alim entación
(B O R ), e l bit correspondiente se activa (se pone a 0). Los b its P O R # y BO R # deben se r puestos a 1 por
program a después d e que ha ya ocurrido e l reset.
P o r o tra parte, en la figura 3.14 se m uestra el registro STATUS, q u e dispone del b it T O # q u e se activa (se
pone a 0 ) cua n d o se desborda e l perro guardián.

2.1 .7 M odo de b ajo consumo

En el m o d o o esta d o d e bajo c o a s u m o o d e re p o so (m o d o sleep ), el m i­


cro co n tro la d o r su sp en d e casi tod as su s funciones, in clu so el o scilad o r p rin ci­
p al, q u e deja d e funcionar. E n esas con d icion es, el m icro co n tro lad o r co a su m e
m uy p o ca co rrien te d e la fuente d e alim en tación: m en os d e 1 |.iA en algu n os
m odelos.
Los microcontroladores PIC — 43

E n el m o d o d e bajo co n su m o s e en tra c o n la in stru cción sleep. M ientras


el m icro co n tro lad o r p erm an ece e n este m o d o , los v a lo re s alm acen ad o s e n los
registros d e la m em o ria d e d ato s n o s e alteran . D ad o q u e cu a n d o s e ejecuta
la instru cción sleep, la in stru cció n q u e le sig u e y a h a en trad o al p ip elin e d e la
C P U , cu a n d o el m icro co n tro lad o r d esp ierta, s e ejecuta esa instrucción. P o r
ello se re co m ien d a co lo ca r u n a in stru cción nop (no op eració n ) a con tin u ación
d e Sleep. L a in stru cción sleep tam bién b o rra (p on e en 0 ) el co n ta d o r del perro
gu ard ián .
Se sale o s e "d e sp ie rta " del m o d o d e bajo co n su m o cu a n d o o c u rre alg u ­
no d e estos tres even tos:
• U n reset.
• U n desbord am iento del perro gu ard ián (si está habilitado).
• U na interrupción e x te m a o proceden te d e alg u n o d e los m ódulos
periféricos internos.
Si s e d esp ierta p o r reset, el m icro co n tro lad o r v a d ire cto a ejecu tar la ins­
tru cció n q u e está en l a d irecció n 0 d e la m em o ria d e p rog ram a.
Si s e d esp ierta p o r d esb o rd am ien to d el p e rro g u ard ián , co n tin ú a la eje­
cución del p ro g ra m a co n la in stru cción q u e sigu e a la in stru cció n sleep.
Si se h a d esp ertad o p o r in terru p ción y el siste m a d e in terru p ción está
habilitado, e s d ecir, el b it IN T C O N < 7> es 1 (bit 7 del reg istro d e funciones
especiales 1N TCO N , d en o m in ad o G IE : G lo b a l In terru p t E n ab le bit), s e ejecuta
la in stru cción q u e sigu e a la in stru cción sleep y s e salta a la d irección 4 d e la
m em o ria d e p ro g ram a e n b u sca d e la ru tin a d e aten ció n a la interrupción.
Si o cu rre u n a interrupción m ientras el m icrocon trolad or está en el m odo
d e bajo co n su m o y las in terrupciones n o están habilitadas (bit G IE = 0), el m i­
cro co n trolad or despierta, ejecuta la in stru cción q u e sig u e a la instru cción Sleep
y continúa la secuencia d e instrucciones d el p rog ram a, pero n o salta a la direc­
ción 4 d e la m em o ria d e program a.

2 .1 .8 Perro guardián

El p erro g u ard ián (W D T: W a tc h d o g T im er) e s tá realizad o m e d ia n te un


o scilad or in d epen dien te del o scilad o r prin cipal d el m icro co n tro lad o r, d e
m o d o q u e funciona incluso d u ran te el m o d o d e bajo co n su m o , y u n co n ta ­
d o r d e los pulsos q u e p ro d u ce ese o scilad o r in depen dien te. Si el co n ta d o r se
desbord a m ien tras el m icro co n tro lad o r está o p e ra n d o n o rm alm en te, e s decir,
n o en m o d o d e bajo co n su m o , se gen era u n reset al m icro co n tro lad o r. Si el
d esb ord am ien to o c u rre m ien tras el m icro co n tro la d o r está e n el m o d o d e bajo
co n su m o , el m icro co n tro lad o r d esp ierta y ejecu ta la in stru cció n q u e está a
co n tin u ación d e la in stru cción sleep.
4 4 — Microcontroladores FIC

L a figura 2 .1 4 m uestra el diagram a d e bloques del perro gu ard ián en un


PIC d e gam a m edia. El perro gu ard ián se p u e d e habilitar m edian te el bit W D T E
d e la p alabra d e configuración. U na v e z habilitado, n o se p u ed e inhabilitar p o r
softw are d u ran te el funcionam iento n orm al del m icrocontrolador.

Figura 2.14 Diagrama de bloques d e los circuitos asociados a l perro guardián (WDT) en los
PIC de gam a media. PSA y PS2:PS0 son bits del registro de funciones especiales
OPTION. W DTE es el bit de. configuración del microcontrolador que habilita la
operación del perro guardián.

El d esb o rd am ien to del p erro g u ard ián o c u rre c a d a 1 8 m s, ap ro x im a ­


d am en te. P ara ev itarlo h ay q u e p o n er a 0 el co n ta d o r d el p e rro g u ard ián a n ­
tes d e q u e tran scu rra ese tiem p o. E sto se h ace co n la in stru cción clrwdt. Estos
18 m s se p u e d e n am p liar hasta 2,3 s m ed ia n te la a sig n a ció n d e u n co n ta d o r
adicional (p o st-d ivisor) al p erro gu ard ián . 1.a tabla 2.1 m u e stra los tiem pos
q u e s e p u ed en co n seg u ir c o n diferentes asign acion es e n el post-divisor. L a
asign ación y p ro g ra m a ció n del p o st-d iv iso r s e realiza c o n los bits P S A , PSO,
PS1 y PS2 del reg istro O PT IO N . El bit PSA d eb e ser 1 p ara q u e el p ost-divisor
sea a sig n ad o al p erro g u ard ián (figura 2.14).

T iem po a p ro x im a d o de
F a c to r d e d iv is ió n de!
PS2:PS0 d e s b o rd a m ie n to d e l perro
p o s t-d iv iso r
a u a rd lá n ím s l
000 1:1 18 T a b la 2.1
001 1:2 36
010 1:4 72 Factores de división del post-di­
011 1:8 144 visor y los correspondientes tiem­
100 1:16 288 pos aproximados de desborda­
101 1:32 576 miento del perro guardián. PS2,
110 1:64 1152 PS1 y PSO son bits del registro de
111 1:128 2304 funciones especiales OPTION.
Los microcontroladores PIC— 45

2 .2 Fam ilias de m icrocontroladores PIC

L o s m icro co n tro lad o res P IC se p u e d e n clasificar, aten d ien d o al tam añ o


d e su s in strucciones, en tres g ra n d e s g ru p o s o gam as:

• G am a baja: m icrocon trolad ores co n instru ccion es d e 1 2 bits.

• G am a m ed ia: m icrocon trolad ores c o n instru ccion es d e 14 bits.

• G am a alta: m icrocon trolad ores c o n instrucciones d e 16 bits.

L o s m icro co n tro lad o res PIC tam bién se a g ru p a n e n cin co g ran d es fam i­
lias: PICIO, P IC l 2, PIC16 , PIC17 y PIC 18. L o s PICIO son , b ásicam en te, m icro­
co n tro lad o res d e 6 term inales. L a fam ilia d e los P1C12 a g ru p a a los m icro co n ­
trolad ores disponibles e n e n cap su lad o d e 8 term inales. A lgu n as d e e sta s cin co
fam ilias tienen n u m ero sas subfam ilias, c o m o su ce d e co n los PIC 16. A d em ás,
algu n as d e estas fam ilias in cluyen d isp ositivos d e m ás d e una g a m a , c o m o
los P I O 6 y PIC 12, que tienen d isp ositivos d e g a m a baja y m ed ia. Los P IC 17 y
P I C l8 so n d e g a m a alta. El criterio em p lea d o p ara clasificar un PIC d e n tro de
una fam ilia es, pues, u n tan to com plejo. L a tabla 2 .2 e s u n a a y u d a para ubicar
los PIC.
Tabla 2.2 Tabla resumen de la relación fam ilia - gam a en los microcontroladores PIC.

G am a
Fam ilia R a sg o d is tin tiv o
■Baia
* J ---------- M edia A lta
PIC10 X 6 terminales
PIC12X5 X 8 terminales
PIC12 (excepto P IC l 2X5) X 8 terminales
PIC 16X5 X -

PIC16 (excepto PIC16X5) X -

PIC17 X -

PIC18 X G am a alta mejorada

2.2.1 Microcontroladores de gam a baja

L o s m icro co n tro lad o res PIC d e gam a baja d isp on en de un rep ertorio
de 3 3 in stru ccion es d e 1 2 bits c a d a una. La m em o ria d e p ro g ra m a tiene una
ca p a cid a d d e hasta 2k (2048) p alab ras d e 1 2 bits y e s tá o rg a n iz a d a e n páginas
d e 5 1 2 p alab ras cad a una. 1.a m em o ria d e d a to s está fo rm ad a p o r registros de
8 bits y se o rg an iza en b an co s d e hasta 3 2 registros c a d a uno.

L o s PIC d e g am a baja tienen una pila (stack) d e d o s niveles, p ara g u ar­


d a r d ireccion es d e la m em o ria d e p ro g ra m a . N o tienen in terru p cion es. Su
en trad a y salid a tiene u n p eq u eñ o n ú m e ro d e disp ositivos, que co m p re n d e
hasta tres p u e rto s d e en tra d a y salid a d e hasta 8 bits c a d a u n o, un tem p o riza­
d o r y u n co m p a ra d o r (segú n el m o d e lo d e PIC ).
4 6 — Microcontroladores PIC

L o s m icro co n tro lad o res P IC d e g am a baja son d e tres fam ilias:

• Los PIC 16X 5xx

• Los P lC 12X 5x x

• Los PICIO

Los P IC 1 6 X 5 x con stitu y en la prin cipal fam ilia d e los PIC d e g a m a baja.
Estos m icro co n tro lad o res s e p resentan co n m em o ria d e p ro g ra m a EPR O M ,
D T P o F L A S II, segú n el m o d elo , su co n su m o e n con d icion es n o rm ales es
m e n o r d e 2 m A a 5 V, y en el m o d o d e bajo co n su m o e s m e n o r d e 3 \xA a 3 V.
Su e n ca p su lad o es d e 18, 2 0 ó 2 8 term inales. L a figu ra 2 .1 5 m u e stra su arq u i­
te ctu ra interna.

Figu ra 2.15 Arquitectura interna de la fam ilia PIC16X5x

L a fam ilia P IC 12X 5x s e c a ra cte riz a p o r su e n ca p su la d o d e 8 term inales.


D ad o el p eq u eñ o n ú m ero d e term in ales disponibles, los recu rsos d e en trad a
y salid a s e red u cen a u n p u e rto paralelo d e 6 bits, un te m p o riz a d o r y co n ­
v e rtid o r A / D , segú n el m od elo. L a m em o ria d e p ro g ra m a e s O T P o FL A S H ,
tam b ién seg ú n el m odelo. A lg u n o s m o d elo s tienen m e m o ria E E P R O M d e d a ­
Los microcontroladores PIC — 47

tos. El co n su m o d e c o rrie n te e s m enos d e 2 m A a 5 V , y m enos d e 2 nA a 3 V


en el m o d o d e bajo co n su m o . L a figura 2 .1 6 m u estra su arq u itectu ra interna.

G P 5 -G P 0

VSS

Figura 2.16 Arquitectura interna de la fam ilia PlC12X5xx.

L a fam ilia P IC lO F xxx se d istin g u e p o r su p eq u eñ o tam añ o , p u es se p re ­


senta e n en cap su lad os d e 8 ó 6 term inales. T o d o s e sto s P IC tienen m em o ria
d e p ro g ra m a d e tipo FL A S H , au n q u e n o d isp o n e n d e m em o ria E E P R O M de
datos. S u s recu rso s d e en tra d a y salid a s e lim itan a un p u e rto paralelo d e 4
bits, u n te m p o riz a d o r y u n co m p a ra d o r (segú n el m o d elo ). E n cond icion es
n o rm ales d e op eració n , el co n su m o e s m e n o r d e 3 5 0 jí A a 2 V, y en el m od o
d e bajo co n su m o es m e n o r d e 1 0 0 n A a 2 V. L a fig u ra 2 .1 7 m u e stra s u arqui­
te ctu ra interna.

2 .2 .2 Microcontroladores de gam a m edia

La figura 2 .1 8 m u estra la a rq u itectu ra gen eral d e los P IC d e g a m a m e ­


d ia. Estos d isp ositivos tienen u n rep ertorio d e 3 5 in stru ccion es d e 1 4 bits cada
u n a. La m em o ria d e p ro g ra m a p u ed e llegar a las 8k (8192) p alab ras d e 1 4 bits
y se o rg a n iz a en p ág in as d e 2 k (2048) p alab ras c a d a u n a. L a m em o ria d e datos
4 8 — Microcontroladores PIC

está fo rm ad a p o r reg istro s d e 8 bits y está o rg a n iz a d a en b an co s d e 1 2 0 re g is­


tro s c a d a u n o , c o n u n m á x im o d e cu a tro bancos. E n gen eral, los P IC d e g a m a
m ed ia p oseen alg o d e m em o ria E E P R O M d e d ato s. T o d o s tienen una pila de
8 niveles, d o n d e se alm acen an d ireccion es d e la m em o ria d e p ro g ram a.

B D IR -ln s t 9 -1 1 B D A T 8
PC

C
U
í
(2 iw o t o s )
M em oria G PIO G F 3 -G P 0

FLASH P ile

de M e m o ria
P ro g ra m a de
Datos

B IN S T
ERl
B D IR D at

J L
¡_MOX |
C o m p a ra d o r

! O ire c o ó n D ire c c ió n
precia
FSR

D a lo

l Í |
<MÜxy ~"l
D escodificación
y control d e T l8
instrucciones
l \S r %
O s cila d o r S TA TU S
R C interno

W DT
B is d e
conspiración Tim erO

r r
M CLR » Voo

Vss
Figura 2.17 Arquitectura interna d e los PIClOFxxx, microcontroladores d e gam a baja con
encapsulado de 6 l em ú nales y memoria de programa FLASH.

E sto s PIC p o seen u n sistem a d e in terru p cion es fijas p ara a te n d e r inte­


rru p cio n es internas y una in terru p ción extern a. L as in terru pcion es internas
p rov ien en d e su s d isp ositivos d e en tra d a y salid a. E n gen eral, c a d a bloque de
en trad a y salid a p u ed e g e n e ra r u n a solicitu d d e in terru p ción a la C P U . l od os
los P IC d e g a m a m ed ia tienen u n term inal p a ra recibir las solicitudes d e inte­
rru p ció n p rov en ien te d e alg ú n d isp ositivo externo.

L o s m icro co n tro lad o res PIC d e la g a m a m ed ia tienen u n a a m p lia varie­


d ad d e d isp ositivos d e en tra d a y salid a. C u en tan c o n vario s p u e rto s p aralelos
(p u erto s A , B, C , etc.) p ara la co m u n icació n paralela c o n d isp ositivos e x te r­
n o s, au n q u e c a d a p u erto tiene su s especificidades. D isp onen tam bién d e h as­
ta tres tem p o rizad o res, d o s m ód u los d e ca p tu ra , co m p a ra ció n y m odu lación
Los microcontroladores PIC — 4 9

de a n ch o d e p u lso (P W M ), d en om in ad os m ó d u lo s C C P , v a rio s tipos d e p u er­


tos serie p a ra la co m u n ica ció n serie asin crón ica y sin crón ica, un co n v e rtid o r
A / D d e 10 bits a so cia d o a u n m u ltip lexo r c o n v a ria s e n tra d a s an alógicas, etc.
La figura 2 .1 9 m u estra la arq u itectu ra d el P IC 16F 873, q u e se usa am p liam en te
en los ejem plos d e este libro.

Figura 2.18 Arquitectura interna de los microcontroladores PIC de gam a media.


5 0 — Microcontroladores PIC

Figura 2.19 Arquitectura interna del PIC16F873, utilizado como ejem ploile microcontrolador
PIC d e gam a media.

L o s P IC d e g a m a m ed ia co m p ren d en la s sigu ien tes fam ilias:

• Ix is P I O 6, excep to los PIC 16X 5xx q u e so n d e g a m a baja.


• L o s P IC 12X 6xx, co n en cap su lad o d e 8 terminales.

Los PIC d e g a m a m ed ia co n en cap su lad o d e 8 term in ales s e caracterizan


p o rq u e p u e d e n fu ncionar co n ten siones p eq u eñ as (2 V) y c o n u n co n su m o de
co rrien te d e sólo u n os 1 0 0 n A en fu n cion am ien to norm al, y 1 n A a 2 V en el
m o d o d e bajo co n su m o . La figura 2 .2 0 m u estra la arq u itectu ra in tern a d e un
PIC d e g a m a m ed ia c o n e n cap su lad o d e 8 term inales.
Los microcontroladores PIC — 51

Figura 1 2 0 Arquitectura interna de los microcontroladores PIC12CE67x, que son de gatna


media con encapsulado de 8 terminales.

2.2.3 Microcontroladores de gam a alta

L o s m icro co n tro lad o res d e g am a alta s e d istin gu en p o r su s in stru ccion es


d e 1 6 bits, m a y o r profu n d id ad en la pila y u n sistem a d e in terru p cion es m ás
elab orad o q u e incluye, a d e m á s d e las in terru p cion es in tern as d e los d isp osi­
tivos in tegrad o s en el m icro co n tro lad o r, v a ria s e n tra d a s p a ra in terru p cion es
extern as. A lgu n os PIC d e la g am a alta tienen una arq u itectu ra abierta, que
a d m ite la am p liación d e las m em o rias d e p ro g ra m a y d e d ato s. Finalm ente,
el n ú m e ro d e d isp ositiv os d e en trad a y salida es b astan te m á s am p lio q u e el
de los P IC d e g a m a m edia.

L o s PIC d e gam a alta están disponibles en d o s fam ilias, que com prenden:

• L o s PIC17
• Los P IC 18

L o s P IC 17 tienen u n rep ertorio d e 5 8 in stru ccion es d e 16 bits c a d a una.


La m em o ria d e p ro g ra m a p u ed e s e r d e h a sta 64k (65 5 3 6 ) p alab ras d e 1 6 bits
cad a u n a y la m em o ria d e d ato s p u ed e llegar a te n e r h a sta l k (1 0 2 4 ) registros
5 2 — Microcontroladores PIC

d e 8 bits. L a m em o ria d e p ro g ra m a d e los PICT 7 e s EPR O M , R O M u O T P . La


pila tiene 1 6 n iveles d e p rofu n d id ad . Su sistem a d e in terru pcion es in cluye el
tratam ien to d e priorid ad es.

U n a característica in teresan te d e los P 1C 17 es su arq u itectu ra abierta.


E sto s m icro co n tro lad o res p u ed en trab ajar e n cu a tro m o d o s diferentes: co m o
m icro co n tro lad o r, m icro co n tro lad o r p ro teg id o , m icro co n tro la d o r am pliado
y m icro p ro cesad o r. E n los m o d o s m icro co n tro la d o r y m icro co n tro lad o r p ro ­
te g id o sólo s e tiene acce so a la m em o ria d e p ro g ra m a in terna del m icro co n ­
trolad or. E n los m o d o s m icro co n tro lad o r a m p lia d o y m icro p ro ce sa d o r, es p o ­
sible a c ce d e r a am p liacion es e x te rn a s d e la m em o ria d e p ro g ram a.

Estos m icro co n tro lad o res d isp on en d e una am plia g a m a d e d isp ositivos
d e e n tra d a y salid a: p u erto s paralelos, p u e rto serie, tem p o rizad o res, co n v e rti­
d o r A / D , etc. L a figura 2.21 m u estra la arq u itectu ra interna d e los P IC 1 7.

L o s m icro co n tro lad o res P IC 18 co n stitu y en u n a n u m e ro sa fam ilia de


m icro co n tro lad o res, q u e en s u g ran m a y o ría tienen m em o ria d e p ro g ra m a d e
tipo FL A S H . T ienen u n rep erto rio d e 7 7 in stru ccion es d e 1 6 bits. L a m em o ria
de p ro g ra m a p u ed e s e r d e hasta 2 M B (220 b y te s o 2 lü p alab ras d e 1 6 bits), y
la m em o ria d e d ato s p u ed e llegar a los 4 k (4096) registros d e 8 bits c a d a uno.
A lg u n o s m iem b ros d e la fam ilia P IC 18 a d m ite n una exp an sión extern a d e
la m em o ria d e p ro g ra m a . P o seen una pila d e 31 n iveles d e p rofu n d id ad , así
c o m o un sistem a d e in terru p ción m u y elab orad o, c o n in terru pcion es in tern as
proven ien tes d e los d isp ositiv os d e en tra d a y salid a in tegrad o s e n el m icro ­
co n tro lad o r, y tres in terru p cion es extern as. P oseen u n g ran n ú m e ro y v a rie ­
d ad d e d isp ositivos d e en tra d a y salida in tegrad o s.

V arios d isp ositivos P1C18 están diseñ ad os para trab ajar c o n tensiones
bajas (2 ,0 V a 3 ,6 V) y c o n co rrien tes inferiores a 2 m A. La figura 2 .2 2 m u estra
la arq u itectu ra d e la fam ilia P1C18.
Los microcontroladores PIC — 53

BDAT

R A W tA O

- IN I
3 § ~ O s c ila d o r I P ít O f 'íl )

intemoOonas
internas

M ódulos
Tem pori/adore s de
Captura

_ _ L
Convertidor
R E i
Módulos Puertos
A 'D d e 10
PW M
bus

Figura 2.21 Arquitectura interna de los PIC l 7. Destaca la posibilidad de ampliar externamen­
te la memoria de programa.
54 — Microcontroladores PIC

BDAT

f U -T t a b ie p t r
B D lR -m * 21 x ! 1------------
8 P u e rto A R A S -R A O

í r
M em oria M em oria
de de P u e rto B -R B 7 -R B 0
P ila (3 1 n iv e le » )
D a lo s
P ro gram a
________
T A 8 L E L A T O H 'l 1 ’ B D IR -O a i

P u e rto C ■ R C 7 -R C 0
B IN S T
*
16 D ire c c ió n

í
FSRO
n d «re c ta

DJCCdOnanecia 1? FSR 1_

D a lo « r m c m o
FSR2 J P u e rto D •R O 7 - R D 0

Descodificación
y control d e
1J
instrucciones
1 í\ t *-► Puerto E R E T -R E O

Reset ALU / »5
osc2 * “* j O s cila d o r

STATUS
W DT

configuración
r r IN I
MOR» 3.
«-*■ Interrupciones ¡ IN T 1
V ss
IN T 2
(e x le m a s )

_r
in ie o u p c lo n e s
m íe i r a s

C onvertid or M em oria
I
USART A /D d e 10 EEPROM USB
bits d e datos

Figura 2.22 Arquitectura interna de los PIC18. Estos tnicrocvntroladores superan notable­
mente las prestaciones de los PIC de gam a media.
La m em oria e n los m icrocontroladores— 55

3 La m e m o ria en los m icrocontrolado res


E n este cap ítu lo se estu d ia la o rg a n iz a ció n y e stru ctu ra d e la m e m o ria en
los m icro co n tro lad o res en gen eral y en los PIC d e g a m a m ed ia en particu lar.
P rim ero s e definen alg u n o s co n cep to s b ásicos tales c o m o p alab ra, dirección,
ca p a cid a d d e la m em o ria y u n id ad es e n q u e s e m ide. A co n tin u ación se es­
tu d ian d o s form as d e o rg a n iz a r la m em o ria e n los m icro co n tro lad o res: lineal
y p o r p áginas. S e e x p o n e n lu ego las tecn ologías em p lead as e n la fabricación
d e la m em o ria. Fin alm en te s e d escrib e la o rg an izació n y características d e la
m em o ria en los PIC d e g am a m edia.

3.1 Conceptos básicos


L a m em oria d e u n m icro co n tro lad o r e s el lu g a r d o n d e están alm acen ad o s
el p ro g ra m a q u e se ejecuta y lo s d a to s o variab les u tilizad os p o r el p ro g ram a.
L a m e m o ria es u n conjunto d e celd as o localizacion es q u e se identifican por
su dirección. E n c a d a celd a s e alm acen a u n a palabra.

U n a p a la b ra e s la u n id ad lógica d e inform ación a lm a ce n a d a e n u n a cel­


d a d e la m em o ria. S e utilizan p alab ras d e 1 , 8 , 1 2 , 1 4 ó 1 6 bits d e longitud. U n a
p alabra d e 8 bits e s u n o cteto o b y te (B) (figu ra 3.1).

B it n ú m e r o 7 6 5 4 3 2 1 0

0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1

t t
Bit M S B it m s

Figura 3.1 Una palabra de S bits u octeto o byte. Se indican las posiciones de los bits más sig­
nificativo (MS) y tnetws sigtiificatiiK) (ms) (o LS, least significant) en la palabra.

La c a n tid a d d e celd as d e la m e m o ria define su cap acid ad . L a ca p a cid a d o


tam añ o d e la m em o ria se m id e e n palab ras, y a s e a n bits, b ytes o p alab ras d e
1 2 , 1 4 o m á s bits. El Sistem a Internacional (SI) d e u n id ad es estab lece prefijos
p ara in dicar factores d e m u ltiplicación q u e s o n p o ten cias d e 1 0 , co m o , p o r
ejem plo, kilo, m eg a, g ig a y tera. Sin e m b a rg o , e n co m p u ta ció n y electrónica
e s co m ú n u s a r estos m ism o s prefijos p a ra in d icar facto res d e m ultiplicación
que so n p o ten cias d e 2. Para ev itar confusiones, la C om isión Electrotécn ica
Internacional (C EI) introdujo en 1 9 9 8 o tro s prefijos p a ra in dicar facto res d e
m ultiplicación q u e s o n p o ten cias d e 2. E n la tabla 3.1 se d an algu n os d e los
5 6 — Microcontroladores PIC

prefijos in d icad o res d e p o ten cias d e 1 0 y d e 2. S in e m b a rg o , d a d o q u e es una


co stu m b re m u y exten d id a u tilizar los prefijos q u e in d ican p otencias d e 1 0
c o n el sign ificad o d e s e r p o ten cias d e 2, e n este libro s e sig u e esa costu m b re.
E s d ecir, u tilizarem os p o r ejem plo 1 kB p a ra in d icar una ca p a cid a d d e m e­
m oria d e 1024 bytes, en lu g ar d e escrib ir 1 KiB, q u e sería lo co rre cto segú n la
C E L L a diferen cia es im p o rtan te só lo cu a n d o s e trata d e g ra n d e s can tid ad es
de m em oria.
T a b la 3. í A lgunos tle los prefijos , sím bolos y factores d e m ultiplicación definidos en el Sistem a Inter­
nacional d e Unidades y p o r la C om isión Electrotécnica Internacional.

P refijo S ím b o lo Factor P re fijo Sím bolo F actor


kilo k 103 kibi Ki 2 ’°
mega M 10® mebi Mi 2»
G 10» gibi Gi 2»
giga
tera T 10,J tebi Ti 2*0

L a dirección d e u n a celd a e s el en te q u e identifica la c e ld a e n la m e m o ­


ria . L a fo rm a m á s sim ple d e id entificar las ce ld a s e s asig n ar a c a d a u n a un
n ú m ero e n te ro co n secu tiv o . E n to n ces, la d irección e s el n ú m ero b inario que
d e n o ta la p o sición d e la c e ld a en la m em o ria (figu ra 3.2). Si D e s la d irección
d e una celd a cu alq u iera, los v alores d e las d ireccion es en una m em o ria d e N
celd as son:

D = 0,1,2, (N - 1) (3.1)

L ógicam ente, la cantidad n d e bits necesarios p ara fo rm a r la dirección de


u n a celd a e s función directa d e la cap acid ad d e la m em o ria y está d a d a por

N = 2" (3.2)

P o r ejem plo, e n u n a m em o ria d e N = 1 kB se n ecesitan n = 1 0 bits p ara


fo rm a r la d irección d e u n a c e ld a cu alq u iera, p u es 2 10 = 1 0 2 4 , q u e e s la ca n ti­
d a d d e celd as q u e co m p o n en la m em o ria . Las d ireccion es posibles so n D = 0,
1, 2 , . . . , 1 0 2 3 . E xp resan d o e sto s n ú m ero s e n e l sistem a d e n u m eració n h exa-
d ecim al, tal co m o e s co stu m b re, s e tiene D = 0 , 1 , 2 , . . . , 3F F h .

3.1.1 Organización lógica de la m em oria

L a m em o ria d e los m icro co n tro lad o res s e o rg an iza n o rm alm en te co m o


u n to d o ú n ico (o rg an izació n lineal) o p o r bloques llam ad o s p ág in as. E n la o r­
g an izació n lineal, las d ireccion es d e las ce ld a s so n n ú m eros binarios co n se ­
cu tiv o s. En e s te ca so , c a d a c e ld a s e identifica p o r su d ire cció n lineal (D ), for­
m ad a p o r u n n ú m e ro binario ú n ico. Las d ireccion es lineales tienen la form a
d a d a p o r la exp resión (3.1).
La m em o ria en los microcontroladores — 57

D ire c c ió n

P a la b r a d e
8 b its

N- 1

D ire c c io n e s
Figura 3.2 Direcciones en una memoria de N celdas de 8 bits caita una.

U n a p ág in a e s una p o rció n d e m em o ria d e ta m a ñ o fijo. L a s págin as


están u n a a co n tin u ación d e la o tra sin so lap arse. C a d a p ág in a se p u e d e id en­
tificar p o r u n n ú m e ro co n secu tiv o d en o m in ad o n ú m e ro d e p ág in a. D en tro
d e u n a p á g in a cu alq u iera, las celd as se identifican p o r su posición resp ecto al
co m ie n z o d e la p ág in a, llam ad a desplazam ien to.

E n u n a m em o ria o rg an izad a en págin as (figu ra 3.3), la d ire cció n d e una


celd a s e co m p o n e d e d o s elem entos: el n ú m ero d e la p ág in a (n pag) y el d es­
p lazam ien to (desp). El con ju n to d e estos d o s elem en tos con stitu y e la dirección
ló gica (D log) d e la celd a en el esq u em a p a g in a d o d e la m em oria. L a dirección
lógica d e u n a celd a se rep resen ta en to n ces así:

D log = n pag : d esp (3.3)

n+1

D ire c c ió n L ó g ic a
M e m o r ia p a g in a d a

Figtira 3.3 Organización d e la memoria en páginas. Se muestran los dos elementos que con­
forman la dirección lógica de una celda de memoria: el número de la página y el
desplazamiento.
58 — Microcontroladores PIC

L a d irección lineal se p u ed e o b ten er d e la d irección lógica. M ed ian te un


sencillo razo n am ien to s e p u ed e v e r q u e la d irección lineal d e una c e ld a s e ob ­
tiene m u ltip lican d o el n ú m ero d e la p ág in a p o r su tam añ o (tp ag ) y su m an d o
a este resu ltad o el d esp lazam ien to q u e tiene la ce ld a d e n tro d e la página. Es
decir:

D = n p a g x tpag + d esp (3.4)

P o r ejem plo, en u n a m em o ria o rg a n iz a d a en p ág in as d e 2 5 6 B (lOOh


b ytes), una celd a q u e se en cu en tre en la p ág in a 2 c o n d esp lazam ien to A 5h
(figu ra 3 .4 ), tiene una dirección lineal D = 2 x 100h + A 5 h = 2A5/7.

0 1 L2 J 3
100h 200h 300h

•Ha í k !
m

FFh 1F F h 2F F h 3F F h
7 0 7 0 7 C 7 0
P á g in a
t
D e s p la z a m ie n t o D ir e c c ió n lin e a l

Figura 3.4 Paginado de una memoria de 1 kB en páginas de 256 B. Obsérvese la relación


entre la dirección lineal y ¡a lógica. La celda que se encuentra en la página 2 con
desplazamiento A5h, tiene dirección 2A5 en un esquema de organización lineal.

O b sérv ese en (3.4) q u e si el ta m a ñ o d e las p á g in a s es u n a p o ten cia d e 2,


es d ecir, si tp a g = 2k, en ton ces k e s el n ú m ero d e bits necesarios p ara rep resen ­
tar cu a lq u ier d esp lazam ien to d e n tro d e la p ág in a; es d ecir, d esp es un n ú m ero
binario d e k bits. E n este ca so , si se o p era en el sistem a d e n u m eració n binaria,
el p ro d u cto n p a g x tpag ag re g a k cero s a la d erech a del n ú m e ro n p a g . Al rea­
lizar la su m a in d icad a en (3.4), el v alo r d esp ocu p a el lu gar d e esos cero s, de
m o d o q u e la dirección lineal resu ltan te tiene en su s bits m ás significativos el
v a lo r d e n p a g y en los m en os significativos, el v a lo r d e d esp , (figu ra 3.5). (Si se
em p leara el sistem a d e n u m eració n d ecim al, su ced ería lo m ism o si el tam añ o
de las p ág in as fuera u n a p o ten cia d e 10).

3.1.2 Tipos de m em orias

La m em o ria d e p ro g ra m a d e los m icro co n tro lad o res es n o volátil y bási­


ca m e n te d e sólo lectu ra. En su fabricación s e utilizan v a ria s tecnologías: ROM
(R ea d -O n ly M em ory ), E P R O M (E ra sab le P ro g ra m m a b le R O M ), O T P (O n e T im e
P rog ram m ab le) y FLA SH .
La m em o ria en los microcontroladores — 59

D ir e c c i ó n lin e a l

n b its —

n pag desp

n -k b it s k b it s

Figura 3.5 Formación de ¡a dirección lineal a partir de los componentes de ¡a dirección lógica
en un sistema paginado, si el tamaño de las páginas es una potencia de 2. El des­
plazamiento (desp) ocupa los k bits menos significativos y el número de la página
(npag) ocupa los n-k bits más significativos de la dirección lineal de n bits.

L a m em o ria d e d ato s, en cam b io , es fu n d am en talm en te d e lectu ra y es­


critu ra , y n o h a c e falta q u e la in form ación p e rm a n e z ca en ella a l in terru m p ir
el su m in istro d e en erg ía al m icro co n tro la d o r; e s d ecir, la m em o ria e s volátil.
S e utilizan m em o rias RAM (R a n d o m A ccess M em o ry ) estáticas. M u ch o s m i­
cro co n tro lad o res utilizan cierta can tid ad ad icion al d e m em o ria (extern a) d e
lectu ra y escritu ra, n o volátil, c o m o p arte d e la m em o ria d e d ato s. S e trata
d e m em o ria E E P R O M (E lectrically E ra sa ble P ro g ra m tn ab le R ea d -O n ly M em ory ),
c u y o objetivo es p erm itir el alm acen am ien to d e d a to s fijos o p o co variables.

RAM

L a m em o ria R A M e s una m e m o ria d e lectu ra y escritu ra. H ay d o s v a ­


riantes: la estática y la d in ám ica. En la m em o ria R A M estática la inform ación
a lm a ce n ad a p erm an ece estable in d efinidam ente m ien tras n o s e su p rim a la
ten sión d e alim en tación. E so las diferen cia d e la m e m o ria s R A M d inám icas,
q u e req u ieren u n refrescam ien to p erió d ico d e la in fo rm ación alm acen ad a.
Las R A M d in ám icas se u san p ro fu sam en te en los o rd e n a d o re s personales,
p ero n o en los m icrocon trolad ores.

IDM

E n los m icro co n tro lad o res q u e utilizan m em o ria R O M , la inform ación


se g ra b a d u ran te el p ro ce so d e fabricación del d isp ositivo y n o p u e d e ser alte­
rada ulteriorm en te. P o r ello, la in form ación q u e s e d e se a g ra b a r en la m e m o ­
ria, que p u ed e s e r el p ro g ra m a y alg u n o s d ato s, d eb e h a b e r sid o co m p ro b ad a
y d e p u ra d a m in u cio sam en te an tes d e e n c a rg a r la fabricación del m icrocon -
trolad or. L a m em o ria R O M e s la m á s b arata d e tod as la s op cion es, siem pre
60 — Microcontroladores PIC

q u e el v o lu m en d e d isp ositivos fab ricad o s sea suficientem ente alto p a ra que


el p ro ceso sea rentable.

En los m icro co n tro lad o res P IC , las letras 'C R ' en el n om b re d el d isp o­
sitivo in d ican que la m em o ria d e p ro g ra m a e s ROM . Ejem p los: PIC 16C R 65,
P IC 16C R 72.

EPROM y OTP

E stas m em o rias s o n m u y sim ilares p ero s e diferencian e n su e n cap su -


lado. L o s d isp ositiv os c o n m em o ria E P R O M tienen u n a v e n ta n a d e cristal d e
c u a rz o p ara p o d erlo s b o rrar m asiv am en te c o n lu z ultravioleta. L o s disp ositi­
v o s O T P u san la m ism a m em o ria interna q u e las EPR O M , p ero sin la v en tan a
d e cristal, p o r lo q u e u n a v e z p ro g ra m a d o s n o s e p u e d e b o rra r ni alterar su
inform ación.

E n los m icro co n tro lad o res PIC , la letra 'C ' e n el n o m b re d el disp ositivo
indica q u e la m em o ria es O T P o EP R O M . El P 1 C 1 6 C 7 4 B /J W e s u n disp ositivo
c o n m em o ria EPR O M , p o rq u e el sufijo JW indica que el en cap su lad o d isp on e
d e u n a v en tan a d e cu a rz o p a ra el b o rrad o . L o s d isp ositiv os P I C 1 6 C 7 2 A /P y
P IC 1 6 C 7 4 B /S O so n O T P co n e n cap su lad o plástico D IP y SO IC p a ra m ontaje
e n superficie, resp ectivam en te.

EEPROM

L a m em o ria E E PR O M e s una m em o ria n o volátil d e lectu ra y escritu ­


ra. L a e scritu ra d e la m em o ria se realiza p o r m ed io s eléctricos. L as celd as
pu ed en s e r escritas in d ivid u alm en te sin u n a o p eració n p re v ia d e b o rrad o . La
m em o ria se p u ed e re p ro g ra m a r u n n ú m e ro finito, au n q u e m u y g ra n d e , de
v e ce s (del o rd e n d e 1 0 6).

FLASH

E n las m em o rias F L A S H s e p u e d e n leer y escrib ir celd as in d ivid u al­


m en te, au n q u e, en gen eral, p ara escrib ir e n u n a ce ld a h a y q u e b o rra r prim ero
s u inform ación. El b o rra d o d e estas m em o ria s s e realiza p o r bloques d e celdas
d e m em o ria, n o celd a a celd a. E sto las diferencia d e las m em o rias EEPR O M .
B o rra r e s p o n e r tod os los bits d el bloqu e d e ce ld a s e n 0 . L a o p e ra ció n d e es­
critu ra con siste e n p o n er selectiv am en te a 1 los bits d esead o s. C o n una ope­
ración d e escritu ra s e p u ed e p o n er a 1 un bit q u e está e n 0, p ero p ara p o n er
en 0 u n bit q u e está en 1 h ay q u e b o rrar el bloque d e ce ld a s corresp on d ien te.
En ton ces, a m en u d o , una o p eració n d e escritu ra d e in fo rm ación e n u n a celda
d e m em o ria flash s e co n v ierte en u n a o p e ra ció n de lectu ra - b o rrad o - escri­
La m em oria en los microcontroladores — 61

tu ra del bloqu e d e celd as d o n d e s e d esea escrib ir la in form ación. T o d a s las


op eracio n es d e b o rrad o , le ctu ra y escritu ra s e realizan c o n la ten sión d e fun­
cion am iento n o rm a l del d isp ositivo, sin necesid ad d e una tensión m ay o r. La
m em oria s e p u ed e b o rrar o escrib ir u n n ú m ero finito, au n q u e m u y gran d e,
de v e ce s (del o rd en d e 105). P o r ejem plo, en u n P IC 1 6 F 8 7 3 A , la m em o ria flash
d e p ro g ram a s e p u ed e escrib ir un as 1 0 0 0 0 0 veces.

El u so d e m em o ria F L A S H e n los m icro co n tro lad o res PIC se in d ica co n


la letra ' F en el n o m b re d el dispositivo. Ejem plo: P IC 16F873.

3.2 La m em o ria en los m icrocontroladores PIC d e gam a m edia

L a m em o ria d e los m icro co n tro lad o re s P IC s e o rg an iza, se g ú n la arq u i­


tectu ra H arv ard , en d o s esp acio s in d epen dien tes: u n o p ara la m em o ria de
p rog ram a y o tro p ara la m e m o ria d e datos.

L a m em o ria d e p ro g ram a es b ásicam ente d e sólo lectu ra y p u e d e ser


ROM , O T P, EPR O M o FLA SH . E n ella s e alm acen an las in stru ccion es del
p rog ram a q u e ejecuta el m icro co n tro lad o r. E n a lg u n o s m o d elo s d e PIC , la
m em o ria d e p ro g ra m a se p u ed e leer d esd e el p ro g ra m a q u e s e está ejecu­
tan d o, p o r lo que e n ellos e s posible alm ace n a r d a to s fijos e n d ich a m em oria.
En algu n os m o d elo s d e P IC co n m em o ria FL A S H , s e p u ed e in cluso escribir
d atos en la m e m o ria d e p rog ram a.

La m e m o ria d e d ato s e s tá realizad a sob re m e m o ria R A M estática, de


m o d o q u e e s u n a m em o ria volátil d e lectu ra y e scritu ra , au n q u e e n algu n os
m od elos d e P IC p u ed e existir, ad icion alm en te e n u n e sp a cio sep arad o , cierta
can tid ad d e m e m o ria EEPR O M , d en o m in ad a m em o ria E E PR O M d e datos.
En esta E E P R O M s e pu ed en a lm a ce n a r d a to s fijos o q u e v a ría n p o co . L a tabla
3.2 m u e stra, a m o d o d e ejem plo, la can tid ad d e m em o ria disponible e n alg u ­
nos m od elos d e m icro co n tro lad o res PIC d e g a m a m edia.

T ab la 3.2 Tamaño de la memoria de programa y de datos en algunos microcontroladores


PIC de gam a media,

M e m o ria de Program a M em oria D a to s (en bytes)


PIC (en pa la bra s de 14 bits )
RAM EEPROM
FLASH
PIC18F83 512 36 64
PIC16F84/84A 1024 68 64
PIC16F873/874 4096 192 128
PIC16F876/877 8192 368 256
62 — Microcontroladores PIC

3.2.1 La m em o ria de program a.

L a m e m o ria d e p ro g ra m a se o rg a n iz a en p ág in as. E n los PIC d e g a m a


m edia p u ed e h ab er hasta 4 p ág in as d e 2k p alab ras c a d a u n a. P o r tan to , la c a ­
p acid ad d e la m e m o ria p u ed e llegar a s e r 8 k palab ras. Las p alab ras d e estos
PIC so n d e 1 4 bits.

L a figu ra 3 .6 ilustra c ó m o está o rg a n iz a d a e s ta m em oria. E n la p ág in a 0,


la d irección Oh está re se rv a d a al reset, m ien tras que la dirección 4 h s e reserv a
p a ra el v e c to r d e in terru p cion es. E n esas d ireccion es se co lo ca n las in stru ccio­
n es d e salto a los p ro g ram as corresp on d ien tes.

------- ► 0 1 2 3
0 800h 1000h 1800h

3F F h
400h

7FFh FFFh 17FFh 1FFFh


13 13 13 13

Figura 3.6 Paginado de la memoria de programa en los microcontroladores PIC de gama media. Pue­
de haber hasta 4 páginas de 2k palabras cada una, para un total de 8k palabras en la me­
moria. Las palabras son de 14 bits. En el P1C16F873 la parte sombreada no está realizada,
pues este microcontrolador dispone de 4k celdas distribuidas en las páginas 0 y 1. En el
PIC16F84 sólo existen las primeras 1024 celdas de memoria (direcáones 0 a 3FFft de la
página 0).

3.2.1.1 D lre c cio n a m ie n to d e la m em o ria d e program a

El c o n ta d o r d e p ro g ra m a (PC : P ro g ra m C ou n ter) e s el reg istro d el m i­


cro co n tro la d o r cu y a fu n ción es d ireccio n a r la m e m o ria d e p ro g ram a. El PC
a lm a ce n a d ireccion es d e in stru ccion es; m ás p recisam en te, e n el PC está la
d irección d e la sigu iente in stru cción q u e h ay q u e ejecutar. E n o tra s palabras,
el P C "a p u n ta " a la instru cción del p ro g ra m a q u e se ejecu tará a con tin u ación
d e la in stru cción actual.

E n los m icro co n tro lad o res d e g am a m ed ia, el P C es d e 1 3 bits, d e m o d o


q u e p u ed e d ireccio n ar el esp acio d e 8 k p alab ras d e la m e m o ria d e p ro g ra m a .
C o m o la m em o ria está p ag in ad a, los bits 1 2 y 11 del P C d an el n ú m e ro d e la
La m em oria e n los microcontroladores — 63

p ág in a, m ien tras q u e los bits del 1 0 al 0 d a n la d ire cció n d en tro d e la p ág in a


o d esp lazam iento.

El P C se relacion a c o n d o s registros d e funciones esp eciales situ ad o s en


la m em o ria d e d ato s: P C L A T H (P C L a t c h H ig h ) y P C L (P C L o iv ). Los 8 bits
m enos significativos del P C con stitu y en el reg istro P C L , el cual p u e d e s e r leí­
do y escrito p o r el p ro g ra m a d o r. L o s 5 bits m á s significativos del P C o PCH
no s e pu ed en leer, p ero s e pu ed en m od ificar a tra v é s del reg istro PC LA T H .
E n particu lar, el n ú m ero d e la p ág in a se c a rg a d esd e los bits 4 y 3 d e PC L A T H
(P C L A T H < 4:3> ) (figu ra 3 .7 ). A sí p u es, e n todo m o m e n to es posible co n o ce r
el co n te n id o del b y te d e m en o r peso del P C al leer el registro P C L , pero n o se
p u ed e co n o ce r el v a lo r d e los 5 bits m á s significativos del PC , p o rq u e P C L A ­
T H n u n ca s e actu aliza d esd e el PC.

N ú m . de
página

D e s p la z a m ie n to

12 1 1 j 10: 9 |8 7 I i PC

PC L

PCLATH

Figura 3 .7 Contador d e programa (PC) y componentes de una dirección a i la memoria de


programa: número de página (2 bits) y desplazamiento (11 bits). El número de
página se carga desde ¡os bits PCLATH<4:3>. Los 8 bits menos significativos
del PC constituyen el registro PCL. PCLATH y PCL son registros de fundones
espedales situados en la memoria de datos del microcontrolador.

D u ran te la ejecución d e u n p ro g ra m a , el P C se in crem en ta en 1 c o n cada


in stru cció n que se ejecute, e x ce p to c o n aquellas q u e m od ifican el con tenid o
d el PC.

Las instru ccion es d e salto (goto), llam ad as a su b ru tin as (cali) y retorn os


(retum , retfie y retlw ), y aquellas in stru ccion es cu y o d estino es el reg istro P C L ,
m od ifican el con tenid o del PC. E n estos caso s, la relació n en tre el P C y los
registros P C L A T H y P C L e s la siguiente:

• Si se ejecuta una instrucción cu y o destino e s el registro P C L (salto indi­


recto a la dirección apu ntad a p o r P C L A T H y P C L ), los 8 bits m en os sig­
nificativos del P C se carg an c o n el resultado d e la instrucción, m ientras
q u e los 5 bits m ás significativos del PC se c a rg a n co n los 5 bits m enos
significativos del registro P C L A T H (figura 3 .8 a).
6 4 — Microcontroladores PIC

Si se ejecuta una instru cción goto o cali, los 11 bits d e m en or peso d el P C


son ap o rtad os p o r la instrucción, m ientras q u e los 2 bits m ás significa­
tivos del PC , q u e rep ortan el n ú m e ro d e la página a la q u e s e salta, se
ca rg a n d esd e los bits 4 y 3 del registro P C L A T H (figura 3 .8 b).

Si se ejecuta una instrucción d e re to m o desde una subrutina, los 1 3 bits


del P C se carg an d esd e el tope d e la pila. N o interviene PC L A T H .

N ú m . de
p á g in a

D e s p la z a m ie n to

------- :-------
(a ) 12 i 11 = 1 0 l
9 i 8 7 i
i 0 PC

PCL

i I i 3 j 2 j 1 ft
D r, ATU R e s u lta d o (d e 8 b its ) d e la
1M in s tr u c c ió n

D e s p la z a m ie n to d e 11 b its d a d o e n la
in s tr u c c ió n g o to o c a li
N ú m . de
p á g in a
V
D e s p la z a m ie n to

(b) 1 2 ;1 1 i 1 0 i •o PC

l
PCL

! i r u b i
i
PCLATH

Figura 3.8 Contador de programa (PC) y registros de funciones espaciales PCLATH y PCL. Se
muestra lo que ocurre cuando (a) se ejecuta una instrucción cuyo destino es PCL o
(b) se ejecuta una instrucción goto o cali.

Si el p ro g ra m a o cu p a m á s d e u n a p ág in a, en to n ces h ay que p re sta r es­


pecial aten ción a los saltos en tre págin as y llam ad as a su b ru tin as q u e estén
en u n a p ág in a diferente a la actu al, a ctu a liz a n d o con v en ien tem en te los bits
P C L A T H < 4:3> antes d e re a liz a r el salto.

3 .2.1.2 L ectu ra y e scritu ra d e la m em oria d e program a

E n el rep ertorio d e in stru ccion es d e los m icro co n tro lad o res PIC d e gam a
m ed ia, n o existen in stru ccion es p ara leer la m em o ria d e p ro g ra m a . E sto hace
La m em o ria en los microcontroladores — 65

que, e n principio, esta m em o ria sea p ara a lm a ce n a r solam en te instru ccion es


y n o d a to s fijos. Sin em b arg o , p u e d e resu ltar co n v en ien te y útil te n e r la p o­
sibilidad d e leer d ato s a lm acen ad o s p erm an en tem en te en esta m e m o ria , en
form a d e tablas, textos en c a ra cte re s A SCII, etc. A lgu n os PIC d an esta posi­
bilidad al p erm itir la le ctu ra d e la m em o ria d e p ro g ra m a e n fo rm a in directa,
es d ecir, a trav és d e alg u n o s reg istro s d e funciones especiales d e la m em o ria
d e d ato s. M ás aú n , algu n os m icro co n tro la d o re s c o n m e m o ria d e p ro g ra m a
F L A S H p erm iten tam b ién escrib ir e n e s ta m em o ria, u san d o igu alm en te alg u ­
n o s reg istro s d e funciones especiales. P o r ejem plo, e n los m icrocon trolad ores
P IC 16C 781 y P IC 1 6 C 7 8 2 es posible leer la m em o ria d e p ro g ra m a . E n la fam i­
lia P IC 1 6 F 8 7 x , c u y a m em o ria d e p ro g ra m a e s d e tipo FL A S H , e s posible leer
y escrib ir en la m em o ria d e p ro g ra m a .

E n la tab la 3 .3 s e m u estran los registros d e fu nciones especiales utiliza­


d o s en la lectu ra y le c tu ra /e s c ritu ra d e la m em o ria d e p ro g ra m a . En los re­
gistros P M D A T H :P M D A T A o E E D A T H . E E D A T A s e lee y / o escrib e el dato
d e 14 bits; en P M A D R H :P M A D R o E E A D R H :E E A D R s e p o n en los 1 3 bits d e
la dirección del d ato y los registros P M C O N 1 o E E C O N 1 y E E C O N 2 s o n los
registros d e control.
T a b la 3.3 Registros de funciones especiales (SFR) utilizados en la lectura o lectura/escritu ra
de la memoria d e programa, en aquellos PIC que tienen implementada esta posibi­
lidad.
SFR utilizados en los dispositivos que per­ SFR utilizados en los dispositivos que per­
m iten solam ente la lectura de la m em oria de m iten la lectura y escritura de la m em oria de
programa programa
PMADRH Dirección (13 bits): EEADRH Dirección (13 bits):
PMADR PM ADRH :PMADR EEADR EEADRH:EEADR
PMDATH Dato (14 bits): EEDATH Dato (14 bits):
PMDATA PMDATH:PMDATA EEDATA EEDATH: EEDATA
PM C0N1 Control EEC0N1
Control
EEC 0N 2

El procedim iento para leer la m em oria d e p rogram a es co m o sigue:

1. C o lo car la dirección d e la celd a d e m em oria en los registros d e funcio­


n es especiales P M A D R H :P M A D R (o E E A D R H .E E A D R , segú n el tipo de
dispositivo). E n los P IC q u e perm iten la le ctu ra /e scritu ra , hay q u e poner
el bit EEPG D del reg istro E E C O N 1 a 1, p ara in dicar q u e se a cced erá a la
m em o ria d e p ro g ram a y n o a la EEPR O M d e datos.

2. P o n er el bit RD del registro PC O N 1 (o E E C O N 1) a 1. C o n esto se inicia la


lectu ra d e la celd a d e la m em oria d e p ro g ram a. L a lectu ra tiene lu g a r en
d o s ciclos d e instrucción, d u ran te los cuales, aun qu e el P C s e increm enta
en 2, n o s e buscan instrucciones. P o r lo tan to, en el p rog ram a h ay que p o­
66 — Microcontroladores PIC

n er d o s instrucciones a continuación d e la q u e p o n e el bit RD a 1, aunque


no se vay an a ejecutar. Se recom ienda utilizar d o s instrucciones d e n o
op eración (nop).

3. C u an d o s e com pleta la op eración d e lectura, el bit RD se p o n e au tom áti­


cam en te a 0. A d em ás, el bit E E IF del registro P IR 2 s e p one a 1, indicando
el fin d e la op eración d e lectura.

4. El d ato con tenid o en la celda leída p u ed e tom arse d e las registros PM D A -


T H iPM D A T A (o EED A T H .EED A T A ).

E jem plo 3.1

A continuación se m uestra e l listado d e un segm ento d e program a que ilustra la le c tu ra de la m em oria


de program a d e u n m icrocontrolad or PIC 16F673, e n e l cu a l se pue de le e r y e scrib ir la m e m o ria d e p ro -
gram a:

bsf STATUS, RP1 ; S eleccionar el banco 2.


bcf STATUS, RPO
m ovf D IR .H , W ; E scrib ir la dirección en
m ovw f EEADR H ; EEAD R H :EEAD R .
m ovf DIR _L, W
m ovw f EEADR
b sf STATUS, RPO ; S eleccionar el banco 3.
bsf EE C O N 1, EEPG D ; S eleccionar m em oria d e program a.
bsf EE C O N 1, RD ; C om enzar la lectura.
nop ; Secuencia requerida.
nop
bcf STATUS, RPO ; S e leccionar el banco 2 pues
; el d ato está listo en EEDATH:EEDATA.
m ovf EEDATH, W ; Leer el dato.
m ovw f DATO H
m ovf EEDATA, W
m ovw f DATO_L

El program a tom a la dirección d e la celda d e m em oria d e program a en lo s registros D IR _H :D IR _L y la


coloca en EE AD R H :EE AD R , usando co m o tram polín el registro W. L a lectura se activa poniendo el b it RD
d e EECO N1 a 1. L a lectura s e realiza en d o s ciclo s d e instrucción; p o r eso se incluyen la s d o s in struccio­
nes nop. Finalm ente, el d ato le íd o se to m a d e lo s registros d e funciones especiales EED ATH .EED ATA y
se coloca en lo s registros DATO _H:DATO_L.

O bsérvese que a n te s de a cce d e r a lo s registros d e funciones especiales hay que seleccionar el banco
corre cto m ediante lo s bits RP1 y RPO del S FR STATUS.
En dispositivos d e s ó lo lectura, hay q u e utilizar lo s registros d e funciones especiales P M y e lim in a r la
instrucción b sf EE C O N 1, EEPGD.
La m em oria en los microcontroladores — 67

P a ra escrib ir en la m e m o ria d e p ro g ra m a d e tip o FL A S H , el p ro ced i­


m iento es el siguiente:

1. C o lo car la dirección d e la celd a d e m em o ria e n los registros d e funciones


especiales E E A D R H :E E A D R y el d ato q u e se d e se a escribir en EED A TH :
EED A TA .

2. Poner el bit EEPG D del registro E E C O N 1 a 1 , para in dicar que se accede­


rá a la m em o ria d e p rog ram a y n o a la EEPR O M d e datos.

3. P o n er el bit W R E N d el SFR E E C O N 1 a 1 para habilitar la escritu ra d e la


m em oria d e p ro g ram a.

4. Inhabilitar tod as las interrupciones.

5. Escribir 55h en EEC O N 2.

6. Escribir A A h en EE C O N 2.

7. Poner el bit W R d e EC O N 1 a 1. C o n esto com ien za la escritura, q u e tiene


lu gar en los siguientes d o s ciclos d e instrucción.

8. C o lo car en el p ro g ra m a d o s instru ccion es d e n o operación (nop).

9. Poner el bit W R E N del SFR E E C O N 1 a 0 p ara inhabilitar la escritu ra d e


la m em o ria FLA SH . Esto evita escritu ras accidentales n o d e sead as d e la
m em o ria d e p ro g ram a.

10. AI finalizar la escritu ra, el bit W R d e EEC O N 1 se p one au tom áticam en te


a 0 y el bit E E IF del SFR PIR2 se p one a 1, in d ican d o que ha finalizado la
escritura.

1 1 . H abilitar las interrupciones.

L o s p asos del 5 al 7 constituyen una secu encia d e cin co in stru ccion es que
deben ser ejecu tad as sin in terru pción . El p a so 1 0 e s una m ed id a d e segurid ad
que evita escritu ras accid en tales n o d esead as en la m em o ria d e p ro g ra m a .

E jem plo 3.2

A continuación s e m uestra e l listado de u n segm ento d e program a que ilu stra e l procedim iento recom en­
dado p a ra e scrib ir e n la m em oria F LA S H d e program a d e u n m icrocontrolad or PIC16F873.

bsf STATUS, RP1 ; Seleccionar el banco 2.


bef STATUS. RPO
m oví D IR _H , W ; E scribir la dirección en
m ovw f E E AD R H ; EE AD R H :EE AD R .
m oví DIR_L, W
m ovw f EEADR
6 8 — Microcontroladores PIC

m ovf D A T O .H , W ; E scribir el dalo en


m ovwf EEDATH ; EEDATH:EEDATA.
m ovf D ATO _Lt W
m ovwf EEDATA
bsf STATUS. RPO : S eleccionar el banco 3.
bsf E E C 0 N 1 , EEPGD ; S eleccionar m em oria d e program a y
bsf E E C 0 N 1 , W REN ; H abilitar la escritura d e la flash.
bef IN TC O N , GIE ; Inhabilitar to d a s la s interrupciones.
m ovlw 55h ; Secuencia requerida.
m ovw f E E C 0N 2
m ovlw AAh ; S e cuencia requerida.
m ovw f E E C 0N 2
bsf E E C 0N 1, W R ; C om enzar escritura e n la flash.
nop ; Secuencia requerid a m ientras
nop ; se escrib e e n la flash.
bef E E C 0 N 1 , W REN ; Inhabilitar escritura d e la m em oria.
bsf IN TC O N , GIE ; H abilitar la s interrupciones (opcional).
O bsérvese que , antes d e acceder a lo s registros d e funcio nes especiales, hay q u e seleccionar el banco
corre cto m ediante lo s bits RP1 y RPO del S FR STATUS. Las interrupciones s e habilitan o inhabilitan con
el bit G IE d e l S FR INTCON.

3 .2 .2 La m em oria RAM de datos

La m em o ria R A M d e d ato s (o sim p lem en te la m em o ria d e d atos) d e


los m icro co n tro lad o res P IC e s tá o rg a n iz a d a e n p alab ras d e 8 bits. D el m ism o
m o d o q u e la m em o ria d e p ro g ra m a , la m em o ria d e datos tam b ién está p ag i­
nada, au n q u e a las págin as d e la m em o ria d e datos se las llam a b an co s. C ad a
b an co (bank) con tien e h a s ta 1 2 8 localizacion es d e m em o ria o registros, cu y a s
direccion es v an d esd e OOh a 7F h d en tro d e c a d a banco.

T o d o s los m icro co n tro lad o res d e g a m a m ed ia tienen al m enos 2 ban cos


d e reg istro s, e s d ecir, h asta 2 5 6 registros c o n las d ireccion es absolutas OOh a
FF h . A lgu n os m icro co n tro lad o res p u e d e n te n e r h a sta 4 ban cos d e registros,
c o n u n total d e 5 1 2 posibles registros, c o n las d ireccio n es absolutas OOOh a
lF F h .

L o s registros d e la m em o ria d e d ato s se clasifican en registros d e funcio­


nes especiales (SFR: S pecial Function R e g is te r s ) y registros d e p rop ósito general
(GPR: G en era l P u rp o se R egisters). Los SFR son los registros a través d e los cuales
se con trola el m icrocon trolad or y s e acced e a su s diferentes periféricos, se p ro­
gram an su s fu n d on es, etc. (ap artad o 3.2.2.2). Ixis G P R constituyen la m em oria
d e d a to s prop iam en te dicha, disponible p ara el libre u so del usuario en sus
p rog ram as.
La m em oria en los microcontroladores — 6 9

B a nco — ► 0 1 2 3
B0n 100h 180ti
SFR SFR SFR SFR

GPR GPR GPR GPR

FFh 1 7F h 1FFI »
7 0 7 0 7 0 7 0

Figura 3.9 Paginado de la memoria de datos en los microcontroladores PIC de gam a media.
Puede haber hasta 4 bancos de 128 registros cada uno, con un total de 512 registros.
En cada banco hay registros de funciones especiales (SFR) y de propósito general
(GPR). Cada registro es de 8 bits.

L a cantidad d e SFR y G P R varía segú n el m o d elo d e m icrocon trolad or


PIC. C o m o ejem plo, en las figu ras 3 .1 0 y 3.11 se m uestran los registros d e la m e ­
m oria d e datos d e los m icrocon trolad ores P IC 16F84 y P IC 16F873, q u e cu en tan
co n 1 4 FSR y 6 8 G P R el p rim ero, y 50
SFR y 1 9 2 G PR e l segu n d o. O b sérve- Banco 0 Banco 1
seq u e para facilitar la program ación ,
IN D F Q IN D F O
se p u ed e acce d e r a m u ch o s registros O P T IO N
TM RO
de funciones especiales d esd e cual­
quier b an co d e m em oria. STATUS STATUS

PORTA T R IS A
PORTB T R IS B

EECON1
E E C O N 2 (‘ )
PC LATH PC LATH
IN T C O N IN T C O N

GPR
Figura 3.10 Registros de la memoria de datos m apeados
del microcontrolador PIC16F84. e n el
Está organizada en dos bancos, banco 0
cotí 68 registros de prerpósito ge­
neral (GPR) a los que se puede
acceder indistintamente desde
cuahjuiera de los dos bancos y 14
registros de fimeiones especia­
les (SFR). Algunos SFR como
STATUS, PCLATH, PCL, FSR
e INTCON son accesibles desde
cualquier banco. La primera cel­
da de cada banco (INDF) se usa
en el direccionamiento indirecto
de datos y no es un registro real O C o l o a s n o im o te m e rw a a a s . s e lo e n e n O.

del microcontrolador. (') N o e s u n re g is tro físico


70 — Microcontroladores PIC

Banco O Banco 1 B anco 2 Banco 3

00h 80h iN D F ñ 100h IN D F Q I8 0 h I N D F (-)


O lh
- ' TMRO
ÍS S ? — 81h O P T IO N 101h TWEo 181 h Ó P T IO N
02h ~PCL 82h PCL 102h Peí 182h
03h St At ü S 83h S TA TU S 103h STA TU S 183h
04h FSR 84h FSR 04h1 I8 4 h FSR
05h P O R TA 85h T R IS A 105h 185h
06h PÓ RTfe 86h TR IS B I0 6 h 186h T R IS B
07h PÓ R TC 87h T R lS C 107h I8 7 h
08h E ü s a i i l M I 88h T R IS D (') 108h vm m m is a h
09h 89h . T R I S E (‘) 109h w m & sz® . 189h
OAh PCLA TH 8Ah PCLA TH j 10 Ah P C LA TH 18A h P C LA TH
OBh IN T C O N 8Bh ~ I Ñ t C W ' lO Bh 1Ñ TC 5FT 18B h IÑ T C Ó Ñ
OCh " P ¡R i 8Ch PIE1 10Ch TE 5 X TJT l8 C h EECOÑ1
ODh> PIR2 8Dh PIE2 10Dh EESbTTI l8 D h ~ E T C O N 2
OEh TM R1L 8Eh PCON, . 10Eh " f fd a tm l8 E h . .^4aI
OFh TM R 1H , 8Fh lO Fh 18Fh
10h 90h m m z m . 110h 190h -m á m m .
11h ■M H/ ~ ' 9 lh
12h T2CO N 92h PR2
I3h SSPBüF 93h SSPADD
14h ” 5 5 P C 5 R r 94hi S S P S T A T
15h CCPR1L 95h m ssm m
16h CCPR1H 9 6 ti
17h C C f»1 C Ó N 97h ; ¿ Y e & V t T i i f r -
18h R O STA 98h TX S TA
19h TX R EG 99h SPBRG
1Ah 9Ah — .---------
iB h w & r & m 9Bh
1Ch C C P ÍC 'Ü 9Ch
1Dh C C P 2 C O Ñ T 9Dh
1Eh Á D ífé S ñ 9Eh a6r e§l
iF h ADCÓÑO 9Fh ADCON1 11Fh 19Fh
20h AQh 120h. lA O h

GPR GPR
96 96 mapeados mapeados
GPR GPR en en
Banco 0 Banco 1

7Fh FFh 17Fh IF F h

Q Cflhfc» po impiern&^i&jas. se le«n en 0 {') N o irT p (» in « rtt* > 3 e n n i P IC 1 6 F 8 7 3

<*) N o o í u n re g istro físico (') RMorvMO


Figu ra 3.11 Registros de la memoria de datos en el PIC.16FS73. Está organizada en 4 bancos,
con 7 92 registros d e propósito general y 50 registros de funciones especiales.

3 .2 .1 1 D ireccionam iento de la m em oria d e datos.

P ara fo rm ar la d irección d e un d ato a lm a ce n a d o en la m em o ria d e datos


se n ecesitan 9 bits d e d irección . C o m o la m em o ria está p ag in ad a, los bits 8 y
7 d e la d irección d an el n ú m ero del b an co, y los bits 6 al 0 d a n la dirección
d en tro del b an co (d esp lazam ien to ), seg ú n m u e stra la figura 3.12. Los d o s bits
q u e identifican el banco los a p o rta el reg istro d e fu nciones especiales STA -
1XJS, m ien tras q u e el d esp lazam ien to p u e d e e star e n la in stru cció n (d ireccio­
n am ien to d irecto) o e n el reg istro d e fu nciones especiales FSR (d ireccion a­
m iento indirecto).
La m em oria en los microcontroladores — 71

m -------------------------------------- 9 b its ------------------------------------ ►


banco d e s p la z a m ie n to
a

— 2 b its ------- -------- 7 b its -----------------------


Figura 3.12 Componentes de una dirección en ¡a memoria de datos. Se requieren 9 bits: los 2
bits más significativos dan el número del banco y los 7 bits d e menor peso consti­
tuyen el desplazamiento o dirección dentro del banco.

A tod os los registros d e la m em o ria d e d a to s se acced e utilizando direc-


cionam iento directo o indirecto (figura 3.13). Si s e utiliza direccionam iento di­
recto, el banco co n el que se está trabajando se selecciona co n RP1 y RPO, que
son los bits 6 y 5 del registro d e funciones especiales STA TU S, respectivam ente.
En la instrucción se m aneja el desp lazam ien to d e 7 bits, es decir, una dirección
desde OOh a 7Fh . Si el m icrocon trolad or dispone d e sólo 2 bancos, en ton ces bas­
ta con m an ip u lar el b it RPO, pu es en este c a so s e ig n ora el bit RP1.

Si se usa d ireccio n am ien to in directo, los 8 bits m en os significativos de


la d irección se to m an d el reg istro d e fu nciones especiales FSR (F ile S elect R e-
g ister) y el n o v en o bit e s IRP, es decir, el bit 7 del reg istro STA TU S. En este
caso el d esp lazam ien to d e 8 bits está en el registro FSR. E n los dispositivos
que tienen sólo 2 b an co s, el bit IRP d eb e m an ten erse a 0. E n los d isp ositivos
co n 4 b a n co s d e registros, IRP = 0 seleccion a los b a n co s 0 y 1, m ien tras que
IRP = 1 selecciona los ban cos 2 y 3. A efectos d el d ireccion am ien to indirecto,
se p u e d e co n sid erar q u e la m em o ria d e d a to s está p ag in ad a en d o s bancos
d e 2 5 6 d ireccion es c a d a u n o, e n lu g ar d e los cu a tro b an co s d e 128 direccion es
utilizados en el d ireccion am ien to d irecto .

D ire ccionam iento d ire cto D ire ccionam iento indirecto

STATUS D e s p t a z a r i f c e i U o e n la
STATUS
e n s lru c c tó n ( 7 b its )
RP1 RPO IR P 7 FSR o

□ 1 1 1 1 1 1 1 1 1
\ 1 ^ /
B ancos
► 00 01 10 11 ^ —I
o

7Fh

Figura 3.13 Direccionamiento de la memoria de datos. Se puede acceder a todos los registros de
la memoria mediante direccionamiento directo o indirecto.
72 — Microcontroladores PIC

3 .2 .1 2 R egistros d e funcion es especiales

Los reg istro s d e fu nciones especiales (SFR: S p ecial F u n ctio n R eg isters) son
reg istro s situ ad o s en la m e m o ria d e d ato s q u e tienen fu nciones específicas in­
fo rm a tiv as o d e con tro l. E stas fu nciones p u ed en e s ta r a so cia d a s al funciona­
m ien to p rop io del m icro co n tro lad o r o a s u s periféricos. L o s SFR c u y a función
está aso ciad a al n ú cleo del m icro co n tro lad o r s o n m ás o m en os ig u ales e n to­
d o s los m icro co n tro lad o res; en cam b io, los S F R relacio n ad o s c o n el trabajo de
los periféricos d ep en d en m u ch o del d isp ositivo co n cre to d e q u e s e trate.

L a tab la 3.4 m u e stra los n o m b res d e los SFR a so cia d o s a d iferentes fun­
cion es y periféricos d e m icro co n tro lad o res P IC d e g a m a m ed ia. L o s registros
ST A T U S, P C L A T H , P C L , FSR , O PT IO N , IN T C O N , P O R T A , PO RTB, TR ISA ,
TRISB Y TMRO están p resen tes en la m ay o ría d e ellos. E n aq u ellos disp ositi­
v o s e n los q u e n o está im p lem en tad o u n d e te rm in a d o periférico, n o e x iste el
SFR corresp on d ien te.
T a b la 3.4 Registros defunciones especiales asociados a funciones del microcontrolador o de
sus periféricos.

F u n c ió n o d is p o s itiv o SFR

Selección d el banco de m em oria. Indicadores relacionados


con las operaciones aritm éticas y lógicas. Desbordamiento STATUS
del perro guardián. Indicador de bajo consumo

Valor del pre-divisor. Flancos de los pulsos de reloj. Flanco


de la solicitud de interrupción externa. Pull-up interno del OPTION
puerto B
Indicadores de error de paridad en memoria. Tipo de reset.
PCON
Bajo consumo

Contador de programa PCLATH, PCL

Direccionam iento indirecto FSR

INTCON
Interrupciones P IR 1.PIE1
PIR2, PIE2
PORTA. TR ISA
PORTB, TRISB
Puertos paraleles PORTC, TRISC
PORTO, TRISO
PORTE. TRISE

TimerO TMRO. OPTION, INTCON

Tim erl TM R1H, TMR1L, T1CON, PIR1


La m em oria en los microcontroladores — 73

Timer2 TMR2, PR2. T 2C 0N , PIR1

CCPRxH, CCPRxL,
Módulos C C P x (x = 1. 2. 3)
CCPxCON

Puerto serie USART o SCI TXREG. TXSTA. RCREG, RCSTA

Puerto serie sincrónico SSP SSPSTAT, SSPCON, SSPBUF, SSPADD

Convertidor A/D ADRESH. A D R E S L ADCONO. ADC0N1

EEADRH, EEADR, EEDATH, EEDATA.


M emoria EEPROM de datos y FLASH de programa
EE C 0N 1, EECON2

□ registro STATUS

El reg istro ST A T U S con tien e b ásicam en te los bits d e e sta d o asociad o s


a las o p e racio n es aritm éticas y los bits d e selecció n d el b an co d e m e m o ria d e
datos q u e se va a utilizar. C on tien e a d e m á s d o s bits in d icad o res d el e sta d o
del p e rro g u ard ián y el m o d o d e bajo c o a s u m o . A este reg istro d e fu nciones
especiales s e p u ed e a c ce d e r d esd e cu alq u ier b an co d e m em oria. L a presencia
del re g istro ST A T U S e n to d o s los b an co s se d e b e a q u e con tien e los bits co n
los q u e s e seleccion a el b an co d e la m e m o ria d e d a to s, p o r lo q u e d e b e e star
accesible d esd e cu alq u ier banco.

STATUS
(dirección 03h de todos los bancos)
7 6 5 4 3 2 1 0
IRP RP1 RPO TO# PD# Z DC
R/W -0 R /W -0 R/W -0 R -1 R-1 R/W -x R /W - x R/W-x
Figura 3.14 Registro STATIIS. A este registro se puede acceder en la dirección 03h d e cual­
quier banco de la memoria de datos. Se muestran los valores que toman los bits del
registro después d e un reset, y si se pueden leer y escribir (R/W) o si son de sólo
lectura (R).

L a figura 3 .1 4 m u estra los bits q u e co m p o n en el reg istro ST A T U S. Su


fignificado e s el siguiente:

IRP. Selección del b an co d e m em o ria d e d a to s en direccionam iento indirecto.


C o n este bit s e selecciona el b an co d e m em o ria d e datos e n el direcciona­
m iento indirecto. 0: ban cos 0 y 1 ,1 : ban cos 2 y 3.

R P1, RPO. Selección del b an co d e m em o ria d e datos en d ireccion am ien to d irec­


to. C o n estos bits se selecciona el banco d e m em o ria d e d a to s en el d irec­
cion am iento directo. 00: b an co 0 ,0 1 : b an co 1 ,1 0 : b an co 2 y 11: b an co 3.
7 4 — Microcontroladores PIC

T O # . In d icad or d e desbord am iento del perro gu ard ián (W D T: W atchdog T i-


m er). Este bit se p one a 0 cu an d o se desbord a el W D T. S e pone a 1 co n un
reset p o r en cen d id o y co n las instrucciones clrwdt y sleep.

P D # . In d icad or d e m o d o d e bajo co n su m o (pow er-d ou m ). Este bit se p one a 0


cu a n d o el m icrocon trolad or en tra e n m o d o d e bajo con su m o co n la ins­
trucción sleep. Se p one a 1 c o n el en cen d id o y c o n la instrucción clrwdt.

Z. In dicad or d e cero . Se p one a 1 si el resu ltad o d e una o p eració n aritm ética


o lógica e s cero ; e n caso contrario s e pone a 0.

D C . Indicador d e aca rre o auxiliar. Se p o n e a 1 cu a n d o h ay u n a ca rre o d el bit 3


al 4 en una o p eració n aritm ética d e su m a binaria y a 0 si n o h ay acarreo.
En una op eración d e resta, se p one a 0 si hay p réstam o del bit 4 al 3 y a 1
si n o lo hay.

C. Indicador d e acarreo. Se pone a 1 cuando h ay un acarreo del bit 7 al 8 en una


operación aritmética d e sum a binaria y a 0 si no hay acarreo. E n una opera­
ción d e resta, se pone a 0 si hay préstam o del bit 8 al 7 y a 1 si n o lo hay.

Si el reg istro STA TU S e s el d estin o d e una instrucción, el v a lo r resu ltan ­


te e n ST A T U S p u ed e n o coin cid ir c o n el v a lo r q u e se su p o n e será e scrito por
la instrucción. H a y que ten er en cu e n ta que los bits T O # y PD # so n d e sólo
lectu ra y p o r tan to n o so n m odificables p o r escritu ra. L o s bits Z , D C y C , to­
m arán el valor q u e co rre sp o n d a segú n la ló gica d e la in stru cción y n o el valor
q u e s e su p o n e será escrito p o r la instrucción.

P o r ejem plo, la in stru cción clrf STATUS n o p o n e OOh en STA TU S, sino


q u e dejará T O # y PD # sin m od ificar; ig u alm en te q u e d a rá n sin m od ificar los
bits D C y C , y el bit Z irá a 1 sigu ien d o la ló gica d e la instrucción. E s decir, el
v a lo r resu ltan te en S T A T U S será OOOuuluu, d o n d e u significa q u e ese bit no
se altera.

Si se quiere m odificar bits del re g istro ST A T U S, se reco m ien d a utilizar


in stru ccion es que n o alteren los bits Z , D C o C , c o m o so n las in stru ccion es bcf,
bsf, sw apf y movwf.

El registro 0PTI0N

E n el registro O P T IO N (tam b ién d en o m in ad o O P T IO N _R E G ) (figura


3.15) están los bits p a ra co n tro la r fu nciones relacion ad as c o n la habilitación o
n o del p u ll-u p interno del p u erto B, la selección del flanco c o n que se re co n o ­
c e rá la in terru p ción extern a, la fuente d e pulsos del TimerO, la selección del
v a lo r del p re-d iv iso r del TimerO y del p e rro g u ard ián (W D T ).
La m em o ria en los microcontroladores — 75

O P T IO N
(d ire c c ió n 01 h d e lo s b a n c o s 1 y 3 )
6 5 4 3 2 1

RBPU# IN T E D G TO C S TOSE PSA PS2 PS1 PSO


R/W -1 RAV-1 R/W-1 R/W-1 R/W -1 RAV-1 RAV-1 R/W-1
Figura 3.15 Registro OPTÍON. Se muestran los valores que toman los bits del registro después
de un reset. Todos los bits se pueden leer y escribir (R/W).

R B P U # . P u ll-u p in terno del p u erto B. Un 1 en este bit inhabilita el p u ll-u p inter­


no del p u e rto B. C o n u n 0 se habilita la puesta individual d e los pull-up
p ara c a d a bit del p u erto B.

IN T ED G . Flanco d e la in terrupción externa. C o n un 1, la in terrupción externa


se p ro d u ce co n el flanco d e subida, m ientras q u e co n u n 0 se p rod u ce con
el flanco d e caída.

TO CS. F u en te d e reloj del TimerO. C o n este bit s e selecciona la fuente d e los


pulsos d e reloj del TimerO. U n 1 selecciona c o m o fuente los pulsos q u e lle­
gu en por el term inal TOCKI y u n 0 selecciona c o m o fuente el reloj interno
(dividido p o r 4).

TOSE. Flanco del reloj del TimerO. Un 1 h ace q u e el TimerO se increm ente co n
los flancos d e caída d e los pulsos d e reloj y un 0 hace que s e increm ente
co n los flancos d e subida.

P S A . A sign ación del pre-divisor. U n 1 asigna el pre-divisor al W D T y u n 0 lo


asigna al TimerO.

P S 2 , P S 1 , P S O . V alor del pre-divisor:

P re -d iv is o r asignado P re -d iv is o r a s ig n a d o al
PS2 PS1 PSO
al TimerO, d iv id e entre: WDT, d iv id e entre:
0 0 0 2 1
0 0 1 4 2
0 1 0 8 4
0 1 1 16 8
1 0 0 32 16
1 0 1 64 32
1 1 0 128 64
1 1 1 256 128

3.2.3 La m em o ria EEPROM de datos.

M u ch o s d e los m icro co n tro lad o res P IC d e g a m a m ed ia que utilizan m e­


m oria d e p ro g ra m a FLA SH , ofrecen tam b ién hasta un m á x im o d e 2 5 6 bytes
d e m em o ria n o volátil d e datos o m em o ria E E P R O M d e datos. Esta m em o ria
se en cu en tra en u n esp acio sep arad o d e la m em o ria R A M d e d a to s y se a c ce ­
7 6 — Microcontroladores PIC

d e a ella a trav és d e alg u n o s registros d e fu nciones especiales, los m ism os que


se utilizan p a ra leer y escrib ir en la m e m o ria F L A S H d e p ro g ram a. L a tabla
3 .5 m u estra e sto s reg istro s y s u función en el m anejo d e la m em o ria E E PR O M
d e datos.
T a b la 3.5 Registros defunciones especiales utilizados en el manejo de la memoria EEPROM
de datos.

R e g istro Función
EEADR Contiene la dirección del dato (8 bits)

EEDATA Contiene el d a lo (8 bits)


EECON1
Control
EECON2

El p ro ced im ien to p a ra leer u n d a to a lm a ce n a d o en la m em o ria E E PR O M


d e d a to s es el siguiente:

1. C o lo car la dirección d e la celd a d e m em o ria en EEA D R .

2. P o n er el b it E E P G D d el registro E E C O N 1 a 0, p a ra in dicar que se acced e­


rá a la m em o ria E E PR O M d e d ato s y n o a la m em o ria d e program a.

3. P o n er el bit R D del registro EEC O N 1 a 1. C on esto se inicia la lectura. El


d a to estará disponible en el registro E E D A T A en el siguiente ciclo d e ins­
trucción.

4. Al com pletarse la op eración d e lectura, el bit RD s e p o n e au tom áticam en ­


te a 0. A d em ás, el bit E E IF del registro P IR 2 se p one a 1, indicando el fin
d e la op eración d e lectura.

E jem plo 3.3

A continuación se m uestra el listado d e un segm ento d e program a que ilustra e l procedim iento recom en­
d a d o para le e r un d ato e n la m em oria EE PR O M d e datos d e u n m icrocontrolador PIC 16F873

bsf STATUS. RP1 ¡ S eleccionar e l banco 2.


bcf STATUS. RPO
m oví D IR E C . W ; La d ire cció n d e la E E P R O M está en DIREC
m ovw f EEADR ; y se coloca e n EE AD R .
bsf STATUS, RPO ; S eleccionar el banco 3.
bcf EE C O N 1. EEPGD ; S eleccionar m em oria d e datos y
bsf E E C O N 1, RD ; com enzar la lectura.
bcf STATUS. RPO ; S eleccionar banco 1 p ue s el d ato está listo
movf EEDATA, W ; en EEDATA. M overlo a W.
El program a tom a la dirección d e la ce lda d e la m em oria E E P R O M d e datos e n el registro DIR EC (q u e ha
78 — Microcontroladores PIC

m ovw f EEDATA EEDATA.


bsf STATUS, RPO S eleccionar el banco 3.
bcf EECO N1, EEPGD S eleccionar m em oria EE PR O M d e datos y
bsf EECO N1, W REN habilitar la escritura d e la flash.
bcf INTCON, GIE Inhabilitar todas la s interrupciones.
m oviw 55h Secuencia requerida.
m ovw f EECO N2
m oviw AAh ; Secuencia requerida.
m ovw f EE C O N 2
bsf E E C O N 1.W R ; C om enzar escritura en la flash d e program a.
bcf EECO N1, W REN ; Inhabilitar escritura e n la E E P R O M d e datos.
esperar:
btfsc EECO N1, W R ; ¿ W R = 0 ? s i - continuar,
goto esperar ; no - esperar.
bsf INTCON, GIE ; H abilitar la s interrupciones (opcional).
A n tes d e a cce d e r a lo s registros d e funcio nes especiales hay que seleccionar el banco corre cto m ediante
lo s bits RP1 y RPO de! S FR STATUS. Las interrupciones se habilitan o inhabilitan con el bit G IE d e l SFR
INTCON.
Repertorio de instrucciones y program ación en lenguaje ensam blador — 79

4 R e p e rto rio d e instrucciones y p ro g ra m a c ió n en


le n g u a je e n s a m b la d o r
Este cap ítu lo trata sob re el diseñ o d e p ro g ra m a s e n el lenguaje en sam ­
blador d e los m icro co n tro lad o res PIC . P rim e ro s e exp o n en a lg u n o s co n ce p to s
rúsicos tales c o m o lenguaje d e m áq u in a, len gu aje en sam b lad or, p ro g ra m a
fuente, p ro g ra m a objeto, e tc. A co n tin u ación s e estu d ia el re p e rto rio d e in s­
trucciones d e los m icro co n tro lad o res P IC d e g a m a m edia y se exp lican los
elem entos d e la p ro g ra m a ció n en el lenguaje en sam b lad or, utilizando n u m e ­
rosos ejem plos. Fin alm en te s e d escrib e el funcionam iento d e a lg u n o s re cu r­
sos disponibles p a ra d esarro llar p ro g ra m a s en lenguaje en sam b lad o r u san d o
un o rd e n a d o r personal.

4.1 Conceptos básicos

4.1.1 Código de m áquina y lenguaje ensam blador

C u alq u ier m icro p ro cesad o r o m icro co n tro lad o r ejecuta las instru ccion es
de un p ro g ra m a e n su len g u aje d e m áq u in a. El lenguaje o có d ig o d e m áquina es
el con stitu id o p o r los có d ig o s binarios d e las in stru ccion es q u e p u e d e ejecutar
el m icro co n tro lad o r; es, p o r tan to , u n lenguaje b in ario, d e "u n o s " y "c e ro s ".
En el lenguaje d e m áq u in a, c a d a in stru cción d e u n p ro g ra m a está form ad a
p o r un gru p o d e d ígitos binarios. P o r ejem plo, tod as las in stru ccion es del
lenguaje d e m áquina d e los m icro co n tro la d o re s PIC d e g a m a m ed ia tien en 14
bits d e longitud. P o r lo tan to , u n p ro g ra m a e n lenguaje d e m áq u in a p ara estos
m icrocon trolad ores está fo rm ad o p o r p a la b ra s d e 14 bits c a d a una.

O b viam en te, elab o rar p ro g ra m a s d irectam en te en el lenguaje d e m á­


quina es difícil. P a ra re d u cir el nivel d e dificultad d e la p ro g ra m a ció n a este
'b a jo n iv el", se cre a ro n los len g u ajes en sam b lad ores, en los cu a le s las in stru c­
ciones q u e en el lenguaje d e m áq u in a s e re p re se n ta n p o r g ru p o s d e bits, son
rep resen tad as p o r sím bolos m n em otécn ico s.

E jem plo 4.1

La instrucción “ poner 0 en el registro W e n el lenguaje d e m áquina se representa p o r la palabra

00 0001 Oxxx xxxx


donde x puede se r indistintam ente 0 ó 1.
En lenguaje ensam blador, e s ta operación se representa con e l m nem otécnico “c lrw " (c le a r W re g isle r),
que e s m ucho m ás fá cil d e recordar que e l núm ero binario d e l lenguaje d e m áquina.
8 0 — Microcontroladores PIC

E jem plo 4 2

La instrucción 'p o n e r el valor K e n el registro W ’ f siendo K u n núm ero binario d e 8 bits, se representa en
el lenguaje d e m áquina por la palabra binaria:

11 OOxx kkkk kkkk


don de k son lo s dígitos binarios d e l d ato y x puede se r indistintam ente 0 ó 1.
E n lenguaje ensam blador, la operación “p o n e r un dato d e 8 b its (dado e n la propia instrucción) en el
registro W se representa con el m nem otécnico “m o v iw ' (m o v e lite ra l to W). L a instrucción com pleta es
entonces:
m oviw K
q u e es m ucho m á s fácil d e m anejar que la instrucción en lenguaje d e m áquina.

L o s len guajes en sam b lad ores, c o m o lo s lenguajes d e m áq u in a, so n m uy


p articu lares d e c a d a m icro p ro cesad o r o m icrocon trolad or. C a d a tipo d e m i­
cro co n tro la d o r tiene su p rop io lenguaje en sam b lad or. Los P IC d e g a m a m e­
d ia tienen u n lenguaje en sam b lad or co m p u e sto p o r 3 5 instrucciones.

U n p ro g ra m a e scrito en lenguaje e n sa m b la d o r n o s e p u e d e ejecu tar


d ire cta m e n te e n el m ic ro c o n tro la d o r; es n e ce sa rio " tra d u c ir lo " a l len gu a­
je d e m áq u in a. E ste p ro ce so s e d en o m in a e n s a m b la je y lo re a liz a u n p ro ­
g ra m a d e n o m in a d o en s a m b la d o r, au n q u e p u e d e n p a rticip a r, ad e m á s, o tro s
p ro g ra m a s , s e g ú n s e e x p lic a a co n tin u a ció n . El p ro g ra m a o rig in al escrito
e n lenguaje e n sa m b la d o r se d en o m in a p r o g r a m a f u e n t e y el re su lta d o del
en sam b laje es el p r o g r a m a o bjeto . El p ro c e s o s e re a liz a n o rm a lm e n te e n un
o rd e n a d o r p erso n al.

L a ob tención d el có d ig o d e m áq u in a a partir del p ro g ra m a fuente escri­


to en lenguaje en sam b lad o r s e p u ed e realizar d e d iferentes form as. E n princi­
pio, la o p eració n del en sam b lad o r d ep en d e d e la form a en q u e h a sid o escrito
el p ro g ram a fu en te. E n p articu lar, es d eterm in an te si en el p ro g ra m a fuente
se p recisan o n o las d ireccion es reales d o n d e se deben u b icar las in stru ccio­
nes y los datos. Si en el p ro g ra m a fu en te se p recisan las d ireccion es reales d e
in stru ccion es y d ato s, el en sam b lad o r g e n e ra c ó d ig o a b so lu to a p a rtir d el p ro­
g ra m a fuente; en caso co n trario , g e n e ra c ó d ig o relativ o o relocalizable. L a figura
4 .1 ilustra am b as m od alid ad es d el p ro ce so d e ensam blaje.

Si en el p ro g ra m a fuente está to d a la in fo rm ación n ecesaria para la tra ­


d u cció n al lenguaje d e m áq u in a, es d ecir, si están d efin idas las direccion es
reales d e las in stru ccion es d el p ro g ram a y las variab les u tilizad as y las d ire c­
cion es q u e ellas v an a o c u p a r e n la m em o ria d e d ato s, en ton ces el en sam b la­
d o r p u ed e g e n e ra r d irectam en te el p ro g ra m a objeto en có d ig o d e m áquina,
p u es d isp on e d e to d a la in fo rm ación necesaria. E n este ca so , el en sam b lad or
Repertorio d e instrucciones y program ación e n lenguaje ensam blador — 81

realiza u n a cod ificación ab solu ta del p ro g ra m a fu en te, p ro d u cien d o d irecta­


m en te el p ro g ra m a en lenguaje d e m áquina.

(b )

Figura 4.1 Proceso ele traducción al lenguaje d e máquina de un programa escrito en lenguaje
ensamblador. En (a) el ensamblador genera directamente el programa objeto en
lenguaje d e máquina. En (b) el ensamblador realiza una codificación intermedia
del programa fu en te y es el enlazador el que genera el programa objeto en lenguaje
de máquina a partir de los diferentes módulos.

L a escritu ra d e p ro g ra m a s p a ra su cod ificación ab solu ta p o r el e n sa m ­


b lad or resu lta relativ am en te sim p le c u a d o s e trabaja en p ro y e cto s co rto s y
p oco com plejos. P e ro si los p ro g ra m a s so n exten so s y com plejos, esta form a
d e p ro g ra m a r n o resu lta ni flexible ni p ráctica.

En trab ajos d e cierta e n v e rg a d u ra , e s co n v en ien te trabajar p o r m ód u los,


lo q u e significa d esarro llar los p ro g ra m a s d e la ap licación e n m ó d u lo s sep a­
rados q u e lu eg o se un en p ara ob ten er el p ro g ra m a objeto. A l escrib ir cad a
m ód u lo en lenguaje en sam b lad o r, p u ed e s e r co n v en ien te n o p re cisa r las di­
recciones reales o absolutas d e las in stru ccion es y d ato s. E n ton ces, el en sam ­
blador só lo p u e d e realizar una cod ificación parcial e in com p leta d e cad a m ó ­
d u lo fuente, p u e s falta la in form ación d e las direccion es; en este c a so s e dice
que el en sam b lad o r gen era có d ig o relocalizab le. El p ro g ra m a q u e s e ocu p a
d e e n la z a r los m ó d u lo s en treg ad o s p o r el en sam b lad or, p o n e r las direccion es
reales d e c a d a in stru cción o d a to y g e n e ra r fin alm en te el p ro g ra m a objeto en
cód igo d e m áq u in a, s e d en om in a en la za d o r (lin ker).
E sta form a d e o rg a n iz a r la p ro g ram a ció n , m u ch o m ás flexible y p o tente
que la p rim era, exig e q u e el p ro g ra m a fuente en lenguaje en sam b lad o r sea
8 2 — Microcontroladores PIC

escrito d e form a diferente a c o m o se escribiría si se qu isiera g e n e ra r có d i­


go ab solu to. C u an d o se escrib e el p ro g ra m a fuente e n lenguaje en sam b lad or
p ara cod ificación ab solu ta, la trad u cció n al lenguaje d e m áq u in a req u iere sólo
el p ro g ra m a en sam b lad or. Si el p ro g ra m a s e escrib e sin p recisar direccion es
reales, el en sam b lad or p ro d u cirá u n a cod ificación in co m p leta y el en la z a d o r
com p letará esta tarea p o n ien d o las d ireccion es reales d e d a to s e in stru ccio­
n es. E n e s te caso , la trad u cció n al lenguaje d e m áq u in a s e realiza en d o s p asos
y requiere el en sam b lad o r y e l en lazad o r.
L a o rgan ización m o d u la r d e la p ro g ram ació n y el u so d e un en la z a d o r
en el p ro ceso d e ob tención del p ro g ra m a objeto e n lenguaje d e m áq u in a p ro ­
p o rcio n an ven tajas adicion ales. U n a d e ellas e s q u e se p u ed en e n la z a r m ó ­
d u los escrito s origin alm en te e n lenguajes d e p ro g ra m a ció n d iferentes (en ­
sam b lad o r, C , etc.). A lg u n o s m ód u los p u ed en con stitu ir una biblioteca d e
p ro g ra m a s. P o r ejem plo, las su b ru tin as p ara op eracio n es aritm éticas en co m a
flotante, p a ra u n tipo d e m icro co n tro lad o r, se p u ed en a g ru p a r en u n m ódu lo.
Al en lazar c o n o tro s m ó d u lo s, el en lazad o r to m a d e la biblioteca só lo las su­
b ru tin as solicitad as y las in co rp ora e n el p ro g ra m a objeto. T o d a s e sta s facili­
d a d e s confieren a la o rgan ización m o d u la r d e la p ro g ram ació n una potencia
extraord in aria.
4 .1 .2 Estructura d e las instrucciones
E n principio, las instrucciones d e cualquier m icrop ro cesad or o m icrocon ­
trolad or tienen d o s com p on en tes: el cód ig o d e o p e r a á ó n y los operatuios. E n el
cód igo d e operación está codificada la ord en p ara q u e el disp ositivo ejecute la
acción indicada p o r la instrucción. L o s op eran d o s so n los d a to s necesarios para
realizar esa acción y , en general, p u ed en rep resen tar direcciones o datos.

En los m icrocontroladores PIC d e gam a m edia, u n op eran do pueden ser:

• U na dirección (d e 7 bits) d e la m em o ria d e datos.

• U na dirección (d e 11 bits) d e la m em o ria d e p rog ram a.

• Un d ato d e 8 bits.

• L a dirección (d e 3 bits) d e u n bit d e u n registro cu alq u iera d e la m em oria


d e datos.

• L a indicación (con 1 bit) d e cu ál e s el destino del resu ltad o d e la instruc­


ción: si es el registro W o u n reg istro d e la m em oria d e datos.

En gen eral, e n los m icroprcxresadores y m icro co n tro lad o res h a y instruc­


ciones q u e n o n ecesitan o p e ra n d o s y o tra s q u e trab ajan co n m á s d e u n o p e ­
ran d o. E n los m icro co n trola d o res P IC d e g a m a m ed ia h ay in stru ccion es sin
Repertorio de instrucciones y program ación en lenguaje ensam blador — 83

op eran d o s e instru ccion es c o n u n o o d o s o p e ra n d o s. E n las in stru ccion es que


tienen uno o d o s o p eran d o s, las situ acion es posibles s o n (figu ra 4.2):

• En las instrucciones q u e realizan operaciones co n los registros d e la m e m o


ria d e datos, h ay d o s operandos: uno es la dirección d e 7 bits del registro y
el otro e s el bit que indica cuál es el destino del resultado d e la operación: el
registro W o el registro cu y a dirección se d a en la instrucción.

• L as instrucciones q u e incluyen u n dato d e 8 bits en la propia instrucción,


tienen co m o único o p eran d o ese dato.

• Las instrucciones q u e incluyen en la p rop ia instrucción una dirección d e


11 bits d e la m em o ria d e p ro g ram a, tienen co m o único o p eran d o esa di­
rección.

• En las instrucciones q u e o p eran c o n bits d e los registros d e la m em o ria de


d ato s, h ay dos op eran dos: uno es la dirección del bit d en tro del registro,
lo cual requiere 3 bits, y el o tro es la dirección d e 7 bits del registro d e la
m em o ria d e datos.
13 8 7 6 0
.

»
O
O.

(a) d f
«

13 8 7 0
ib) CO k

13 1110 0
—ii—ii— i— i— i—i— i k
-o -
.O

(c) a
.

13 10 9 7 6 0
(d) CO b f

—i—i—i—i—

Figura 4.2 Formatos de las instrucciones en los microcontroladores PIC de gama media. Las
instrucciones tienen un código de operación de 3 a 6 bits de longitud y hasta 2 ope­
randos. (a) Formato de las instrucciones que operan con registros d e la memoria de
datos, (b) Instrucciones que operan con datos inmediatos de 8 bits, (c) Instruccio­
nes que contienen direcciones de la memoria de programa, (d) Instrucciones que
operan sobre un bit determinado de un registro de ¡a memoria de datos. CO: códi­
g o de operación, f dirección de 7 bits del registro de la memoria d e datos, k: dato de
8 bits, a: dirección de 11 bits, b: número del bit (0 a 7), d: destino del resultado de
la instrucción: si d = 0, el destino es W ; si d = l , el destino es f.

E n los P IC d e g am a m ed ia, tod as las instru ccion es tienen 1 4 bits, q u e es


el tam año d e las celd as d e la m em o ria d e p ro g ra m a , d e m o d o q u e c a d a ins­
84 — Microcontroladores PIC

tru cció n o c u p a una ú n ica celd a d e m em o ria. Esta característica e s p ro p ia d e


los m icro co n tro lad o res y m icro p ro cesad o re s RISC.

4 .1 .3 Modos de direccionar los datos

L o s m o d o s d e d ireccio n ar los d ato s s e refieren a las distintas fo rm a s en


que, d e sd e u n a in stru cción , se p u e d e h a c e r referencia a un dato. B ásicam ente
h ay d o s ubicaciones p a ra u n d ato: la p ro p ia in stru cción o la m e m o ria d e d a­
tos. E n este últim o caso , la instru cción h a c e referen cia al d ato a tra v é s d e su
dirección.

E n gen eral, los m icro p ro cesad o res y m icro co n tro lad o res co n stru y e n la
dirección d e un d a to d e form as d iv ersas, relacio n ad as c o n su arq u itectu ra. E n
s u fo rm a m á s sim ple —q u e es la u tilizad a p o r los m icro co n tro lad o res P IC d e
g a m a m ed ia —, la d irecció n d e u n d a to p u e d e e s ta r e n la in stru cción o en un
reg istro del dispositivo. A l re g istro q u e alm acen a d ireccion es d e d a to s se le
llam a, g e n é rica m e n te ," reg istro d e d ireccion es d e d a to s " (RD D ). P o r ello hay
tres form as b ásicas d e h acer referencia a u n d ato: co n el d a to e n la instrucción,
c o n la d irecció n d el d a to en la in stru cción o c o n la d irección d el d a to e n el
reg istro R D D . E sto d a lu g ar a tres m od o s d e d ireccio n ar los datos: d ireccion a-
m ien to in m ediato, d ireccion am ien to d irecto y d ireccion am ien to indirecto.

E l d ireccion am ien to e s in m ed iato cu a n d o e l d ato form a p a rte d e la ins­


trucción . El o p e ra n d o d e la in stru cción e s el p ro p io dato.

El direccionam iento e s directo cu a n d o la dirección del d ato s e d a en la


instrucción. El o p eran d o d e la instrucción es la dirección del dato.

El d ireccion am ien to e s indirecto cu a n d o la in stru cción to m a la dirección


del d a to en R D D . El o p eran d o d e la in stru cció n e s la d ire cció n del RDD.

E n los m icro co n tro lad o res PIC d e g a m a m ed ia, el reg istro d e funciones
esp eciales FSR (F ile S elect R eg ister) actú a c o m o RDD. E n e sto s m icro co n tro la­
d o re s s e p u ed e acce d e r a to d o s los registros d e la m em o ria d e d a to s utilizan­
d o d ireccio n am ien to d irecto o in directo. A l u tilizar lo s m od o s d e d ireccion a­
m iento d irecto e in d irecto, h ay que ten er e n cu en ta q u e la m e m o ria d e datos
se en cu en tra o rg an izad a e n págin as o ban cos d e reg istro s. P o r ello, co m o
p a s o p rev io , h a y q u e seleccio n ar el b an co en el q u e se en cu en tra e l registro
q u e s e quiere d ireccion ar. L a selección del b a n co se realiza m edian te los bits
IRP, R P1 y RPO d el reg istro d e fu nciones especiales ST A T U S (figu ra 3 .1 3 ). En
el d ireccion am ien to d irecto , el b an co d e registros s e seleccion a co n los bits
RP1 y RPO. E n el d ireccio n am ien to in d irecto, el b an co s e seleccion a c o n el bit
IRP y el bit m á s sign ificativo del reg istro d e funciones esp eciales FSR , donde
d eb e e s ta r la d irección d el reg istro q u e s e q u iere d ire ccio n a r (a p a rta d o 3 .2.2.1
Repertorio de instrucciones y program ación en lenguaje ensam blador — 85

y figura 3.13). L a lectu ra o escritu ra d el d a to en el re g istro a p u n ta d o p o r FSR


s e realiza al leer o escrib ir el d a to e n el falso reg istro IN D F.
L o s sigu ien tes ejem plos ilu stran c ó m o d ireccio n ar d a to s u sa n d o d irec-
d o n a m ien to d ire cto o in d irecto, en u n P IC d e g a m a m ed ia.
E jem plo 4.3

En un PIC16F84, colocar e l v a lo r 0x3 5 e n e l registro IV.


Solución:
m ovlw 0x35
3 m odo d e direccionam iento utilizado es inm ediato pues e l d ato e s tá e n la propia instrucción.

E jem p lo 4.4

=n un m icrocontrolad or PIC 16F873, colocar e l v a lo r 0x3 5 en el registro 0x2 0 d e l banco 1. M o stra r la


solución a l u tiliza r direccionam iento directo e indirecto.
Solución utilizan do direccionam iento directo. En este c a s o se selecciona el banco 1 y se escrib e e l dato
e n el registro m edíante la instrucción que tiene co m o ope ran do la dirección (0x20) del registro:

bef STATUS, RP1 ; S eleccionar el banco 1.


bsf STATUS, RPO
m ovlw 0x35 ; C o locar el valor 0x3 5 e n W y
m ovwf 0x2 0 ; copiarlo e n el registro con dirección 0x 20
; e n e l banco seleccionado.

Solución utilizan do direccionam iento indirecto. S e seleccio na el banco 1 al hacer IR P = 0 y colocar en


=SR la dirección del registro (0x20) co n el bit m ás significativo de F S R en 1, es decir, OxAO. El dato
jx 3 5 se coloca e n e l registro apuntado p o r FS R cuando se ejecuta la instrucción que escrib e e n el falso
-egistro INDF:

bef STATUS, IRP S eleccionar los bancos 0 y 1.


m ovlw OxAO C o locar la dirección del registro en W y
m ovw f FSR co p ia d a e n el registro FSR.
m ovlw 0x35 C o locar e l v a lo r 0x3 5 en W y
m ovw f INDF co p ia rlo e n el re g istro apuntado p o r FSR,
lo cu a l se indica m ediante la escritura
en el falso registro INDF.

4 .1 .4 La pila.

L a p ila e s u n tip o d e e stru ctu ra d e d a to s c o n o rg an izació n U F O (L a s t In


F irst O u t): lo últim o q u e e n tra en la pila e s lo p rim e ro q u e sale d e ella.

L a p ila tiene u n a b a s e y u n tope. E n la base d e la pila está el elem en to


m ás an tigu o, m ien tras q u e e n el to p e está el elem en to g u a rd a d o m á s recien-
8 6 — Microcontroladores PIC

teniente. E stá claro q u e cu a n d o h ay m ás d e u n elem en to en la pila, to d a s las


op eracio n es d e alm acen am ien to o extracció n s e h acen so b re s u to p e. L a p ro­
fund idad d e la pila es el tam añ o q u e tiene la pila en u n m o m e n to dad o.

La pila d e m u ch o s m icro p ro cesad o re s y m icro co n tro la d o re s se ubica


en su m em o ria d e datos. Enton ces el crecim ien to d e la pila es p rácticam en te
ilim itado, pu es s e rea liz a en una z o n a d e m em o ria R A M . Estos d isp ositivos
tienen u n reg istro p a ra d ireccio n ar la pila: el d en o m in ad o p u n tero d e la pila
o reg istro S P (S tack P oin ter). El S P con tien e siem p re la d irección d el to p e d e
la pila. L as op eracio n es d e alm acen am ien to o e x tra cció n d e d a to s d e-la pila
m od ifican el con ten id o del registro SP. P o r ejem plo, al g u a rd a r u n d ato en la
pila, el v alo r d el S P se p u ed e in crem en tar (o d e cre m e n ta r); a l e x tra e r el d ato
g u a rd a d o , el S P s e d ecrem en ta (o in crem en ta). L a figu ra 4 .3 ilu stra la e stru c­
tu ra gen eral d e la pila en u n m icro p ro cesa d o r o m icrocon trolad or.

L a pila s e u sa p a ra alm acen ar d ireccion es d e in stru ccion es y , en c o n ­


creto , p a r a "re c o r d a r " la dirección d e r e to m o al p ro g ra m a p rin cip al d esd e
u n a su b ru tin a. C u a n d o se llam a a u n a su b ru tin a m e d ia n te u n a instrucción
cali o sim ilar, el v alo r d el c o n ta d o r d e p ro g ra m a (P C ), q u e n o es o tro q u e la
d irección a la que s e d eb e re to m a r a l term in ar la ejecución d e la subrutina,
se g u a rd a en la pila. Al finalizar la su b ru tin a c o n u n a instru cción return u o tra
sim ilar, ésta to m a el v a lo r situ ad o en el to p e d e la pila, q u e n o es o tro q u e la
d irección co lo ca d a p o r la in stru cción d e llam ad a, y lo d e v u e lv e a l P C , co n lo
q u e se p rod u ce, en efecto, el salto d e reto rn o al p ro g ra m a d e sd e el c u a l se lla­
m ó a la subrutina, e x actam en te en el p u n to co rresp o n d ien te a la instru cción
q u e sigu e al cali.

E x tra e r
DIR1 B ase
t D IR 2
l
D IR 3 Tope
T

SP
i
G u a rd a r P IL A

Figura 4.3 Estructura general de la pila en un microprocesador o microcontrolador. La pila


se encuentra en una zona de la memoria RAM. El puntero de la pila (registro SP),
apunta siempre al tope de la pila. El tope de la pila es variable pues la pila crece
Repertorio d e instrucciones y program ación e n lenguaje ensam blador — 87

cuando se guarda algún dato y disminuye cuando se extrae un dato. DÍR1, DIR2
y DIR3 son direcciones almacenadas en la pila.

E ste m ecan ism o d e lla m a d a -re to m o funciona m u y bien g ra cia s a la o r­


gan ización L1FO d e la pila. A d e m á s d e s e r m u y útil e n el m anejo d e subru-
tinas e in terru pcion es, la o rgan ización L IF O d e la pila h ace posible el an id a-
m iento d e su b ru tin as, e s d ecir, la llam ad a a u n a su b ru tin a d e s d e o tra su b ru -
tina (figu ra 4.4).

pp SR1 5R2
P ILA
DIR1
E xtra e r
D IR 2
c a lfs R I «ifsR2 ca ltsR 3
D IR 1 :- DIR2: D IR 3; • D IR 3 t
t
G u a rd a r
T »
re lu m re lu m

Figura 4.4 La pila y el anidamiento de subru tinas. Desde el progratna principal (PP) se llama
a la subrutina SR1, desde ésta a la subrutina SR2 y asi sucesivamente. Con cada
instrucción cali, se guarda en la pila la dirección de retomo. Cada dirección de re­
tom o (D IRl, DIR2, DIR3, ...) e s e l valor que tiene el contador de programa (PC)
m ando se ejecuta la instrucción cali correspondiente. La instrucción retum con la
que termina cada subrutina, extrae de la pila la dirección de retom o y la coloca en
el PC. La última dirección almacenada en la pila es la primera en ser extraída, lo
cual se acomoda perfectamente a la organización LIFO de la pila.

En los m icro co n tro lad o res PIC d e g a m a m ed ia, la pila tiene u n as c a ra c ­


terísticas m u y particu lares:

1. L a pila se encuentra en u n esp acio d e m em oria sep arad o d e los espacios


d e m em o ria d e p rog ram a y datos.

2. N o existe el registro SP.

3. E n la pila sólo se p u ed en g u a rd a r direcciones.

4. El tam año d e la pila es limitado: se pueden alm acenar hasta 8 direcciones.

T enien do e n cu e n ta estas características, la pila e n los m icro co n tro la d o ­


res P IC d e g a m a m ed ia p u ed e rep resen tarse p o r u n conjunto d e 8 reg istro s de
13 bits c a d a u n o, a los q u e s e tiene acce so co n u n a o rg an izació n L IF O y en los
que se alm acen an d ireccio n es d e la m em o ria d e p ro g ram a.

Las in stru ccion es q u e m an ip u lan la pila so n cali, retum , retfie y retlw. T am ­


bién s e g u a rd a en la pila u n a d irección c u a d o s e p ro d u ce u n a in terru pción .
88 — Microcontroladores PIC

D ad o el ta m a ñ o d e la pila, se p u ed en a n id a r hasta 8 su b ru tin as; e s d e­


cir, d e sd e el p ro g ra m a prin cipal se p u e d e llam ar a una p rim era su b rutina
y d e sd e esta a u n a seg u n d a su b ru tin a, y d e sd e ésta a u n a tercera, y así su­
cesiv am en te h asta c o m p le ta r u n total d e 8 llam ad as. E sta p ro fu n d id ad de
a n id am ien to e s m ás q u e suficiente p a ra la m ay o ría d e la s ap licacio n es. N o
ob stan te, es resp onsabilid ad del p ro g ra m a d o r n o e x ce d e rse e n el n ú m e ro de
llam ad as an id ad as. E sto s m icro co n tro lad o res n o tienen n ingú n in d ica d o r d e
d esb o rd am ien to d e la pila.

0
JX R T D IR 9

X U R T" D IR 1 0

£U R 3" D IR 1 1

D IR 4

D IR 5

____________ D I R 6 _____________

D IR 7

D IR 8

F igiira 4.5 La pila en los microcontroladores PIC de gam a media está form ada por 8 registros
o celdas de 13 bits, de modo que se desborda si se anidan más de 8 subrutinas.

4 .2 Repertorio de instrucciones de los PIC d e g am a m edia

El m o d elo d e p ro g ram ació n d e los m icro co n tro la d o re s P IC d e g a m a


m ed ia co n sta d el reg istro d e trabajo W ( W ork in g R eg ister), que h ace la función
del tradicional a cu m u la d o r d e los m icro p ro cesad o res, y d e los registros d e la
m em o ria d e d ato s, y a sean d e fu nciones esp eciales (SFR: S p ecial F u n ction R e ­
g is te is ) o d e p ro p ó sito gen eral (GPR: G en era l P u r p o s e R eg isters) (figu ra 4.6).

D esd e el p u n to d e vista del p ro g ra m a d o r, las ca racterísticas m ás rele­


v an tes del rep ertorio d e in stru ccion es d e los m icro co n tro lad o res PIC d e gam a
m e d ia son:

1. T od as las iastruedones son del m ism o tam añ o , es decir, 1 4 bits.

2. L a m ayoría d e las instrucciones son ejecutadas e n u n só lo ciclo d e ins­


trucción que d u ra cu atro períodos del oscilad or prin ripal del m icrocon­
trolad or. Sólo las iastru ccion es d e salto to m an d o s ciclos, si se p ro d u ce el
Repertorio d e instrucciones y program ación en lenguaje ensam blador— 89

salto. T am b ién d u ran d o s ciclos aquellas instrucciones que m od ifican el


registro PCL.
3. C u alquier registro del m icrocon trolad or p u ed e ser fuente o destino en
op eraciones d e transferencia d e datos, aritm éticas o lógicas.

4. Se p u ed e acceder individualm ente a cualquier bit d e cualquier registro d e la


m em oria d e datos del m icrocontrolador.

5. N o es posible hacer transferencias d e m em oria a m em oria en una única ins­


trucción; h ay q u e u s a r el reg istro W co m o puente.

6. N o h ay instrucciones para g u a rd a r o e x tra e r datos e n la pila (com o PU SH


y P O P , instru ccion es que so n co m u n es en m u ch o s m icrop rocesad ores).
L a pila sólo alm acen a direcciones d e instrucciones y c o n la pila o p eran
sólo las instrucciones d e llam ad as a subrutinas o re to m o d esd e ellas.

j
SFR G PR

W
... •••

1--
M e m o r ia d e d a to s

Figura 4.6 Modelo de programación délos microcmfroladores PIC d e gam a media. Por un lado
está el registro de trabajo W y por otro lado están los registros de la memoria de da­
tos: registros de funciones especiales (SFR) y registros de propósito gm eral (CPR).

L a tab la 4.1 re su m e las in stru ccion es d e los m icro co n tro la d o re s PIC d e


g a m a m ed ia, que se estu d ian a con tin u ación . P a ra su m ejor co m p ren sió n y
estud io, aten d ien d o a la fu n ción q u e realizan , las in stru ccion es se h an clasi­
ficado en:
• Instrucciones d e transferencia d e datos.
• Instrucciones aritm éticas y lógicas.
• Instrucciones d e transferencia d e control.
• Instrucciones d e op eraciones co n bits.
• O tras.
90 — Microcontroladores PIC

T a b la 4.1 Repertorio de instrucciones de los microcontroladores PIC de gam a media. W:


registro de trabajo, f : registro de la memoria de datos, k: constante de 8 bits, a:
constante d e 11 bits, b: bit, d: destino; si d = 0, el destino es VZ; si d = l , e l destino
es f C, DC, Z, 7 0 # y PD3 son bits específicos del registro STATUS.

M nem otécnico Significado A fecta Ciclos


1. Transferencia de datos.
m ovf f,d f =>d Z 1
m ovwf f W =>f • 1
m ovlw k k => W - 1 •
clrf f 0 =>f Z 1
clrw 0=> w z 1
sw a pf f, d fL fH => d “
2. A ritm éticas y lógicas.
addw f f,d f + W =>d C. DC , Z 1
addlw k k + W => W C. DC , Z 1
subw f í.d f - W =>d C. DC , Z 1
sublw k k - W => W C , DC , Z 1
in cf f.d f + 1 => d Z 1
decf f.d f-1 = > d Z 1
andwf f.d f and W => d Z 1
andlw k k and W Z 1
iorw f f, d f or W Z 1
¡oriw k k or W z 1
xorw f f.d f xo r W z 1
xorlw k k xo r W z 1
rlf f. d ro ta r f izquierda a tra vé s d e C => d c 1
rrf f,d rotar f derecha a través d e C c 1
com í f, d #f => d z 1
3. T ransferen cia de control.
goto a saltar a la dirección a - 2
btfsc f.b salta si f<b> = 0 - 1(2)
btfss f,b salta si f<b> = 1 - 1(2)
incfsz f. d f + 1 = > d . salta si 0 - 1(2)
decfsz f. d f - 1 => d, salta si 0 - 1(2)
cali a llam ar subrutina en dirección a - 2
retum re to m a r d e subrutina . 2
Repertorio de instrucciones y program ación en lenguaje ensam blador — 91

retfie re to m a r de interrupción - 2
retlw k retornar de subrutina co n k e n W - 2

4. O peraciones con bits.


bef f, b 0 => f<b> - 1
b sf f, b 1 => f< b > - 1

5. Otras.
nop n o operación - 1
clrw dt 0 => W D T TO #, P D # 1
sleep ir a m odo bajo consum o TO #, PD # 1

4.2.1 Instrucciones de transferencia de datos.

L as in stru ccion es d e transferencia d e datos s e m u e stra n en la tabla 4.2.


Para e sta s in stru ccion es, cualq uier registro del m icro co n tro la d o r p u e d e ser
fuente o destino, p ero n o e s posible h a c e r tran sferen cias d e m em o ria a m e ­
m oria en una ú n ica instrucción; h ay que u sar el re g istro W c o m o puente. Si el
registro esp ecificad o e s IN D F, en ton ces se e s tá u tilizan d o d ireccion am ien to
indirecto y la o p eració n se realiza c o n el reg istro a p u n ta d o p o r el re g istro de
funciones especiales FSR.

T ab la 4.2 Instrucciones de transferencia de dalos. TV: registro de trabajo, f : registro de la


memoria de datos, k: dato de 8 bits, b: bit, d: destino. Si d = 0, el destino es YJ;
si d = 1, el destino e s f . Z e s un bit específico del registro STATUS.

M nem otécnico Significado A fecta


m ovf f.d f => d Z
m ovwf f W => f -
m ovlw k k => W -
—•»

clrf f z
II
V
o

clrw o => w z
sw apf f.d { + ~ * fH => d -

L as in stru ccion es m ovf, c lrf y d rw afectan al in d ica d o r o b an d era del cero


(bit Z del reg istro ST A T U S), m ien tras q u e m ovwf, m ovlw y sw apf n o afectan a
ninguna b an dera. T o d as las in stru ccion es d e este g ru p o s e ejecutan e n u n
ciclo d e instrucción.
O b sérvese q u e m ovw f f co p ia el con ten id o del re g istro d e trabajo W en
el reg istro f d e la m em o ria d e d ato s, sin a lte ra r n ingú n in d icad o r o b an dera.
En cam b io, la in stru cción m ovf f, 0 realiza la o p eració n inversa, es decir, cop ia
el con ten id o del registro f e n el registro d e trabajo, sin m odificar el re g istro f,
92 — Microcontroladores PIC

p ero afectan d o a la b an d era del ce ro ; m oví f, 1 sim p lem en te cop ia el reg istro f
e n sí m ism o, p ero afecta a la b an d era Z . Se p u e d e u sar p ara d e te rm in a r si el
v a lo r en f es c e ro o no.

A l p ro g ra m a r en lenguaje en sam b lad o r, el p a rá m e tro d , q u e d e n o ta cuál


e s el d estino d e la o p eració n d e transferencia, p u ed e ser in d icad o e n la ins­
tru cció n d e v arias form as, tod as ellas ig u alm en te ace p ta d a s p o r el en sam b la­
d or. L a instru cción m ovf f, d, p o r ejem plo, se p u e d e escrib ir d e v arias form as.
S u p o n g am o s q u e el reg istro c o n el q u e s e v a a o p e ra r e s uno d e p rop ósito
gen eral q u e h a sid o id entificado c o m o el re g istro X . E n ton ces, si d = 0/ las
form as m ovf X, 0 y m ovf X, W so n eq u ivalentes. Si d = 1 , se p u e d e escribir indis­
tin tam en te m ovf X, 1 o m ovf X, f.

E jem plo 4.5

S e dispone de dos registros de p ro pósito g e n e ra l ubicados e n u n m ism o b a n co d e la m em oria d e datos,


que han sid o designados com o R E G 1 y R E G 2. D ise ñ a r u n program a que in tercam bie sus contenidos.
Para resolver este problem a se necesita un terce r registro — que denom inarem os T E M P — para utilizar­
lo com o alm acén tem poral en lo s m ovim ientos de datos, p ue s n o basta con e l registro de tra b a jo W. Si
R E G 1, R EG 2 y TE M P e stá n e n e l m ism o banco d e m em oria, un posible program a es el siguiente:

m ovf R E G 1 .W
m o vw f TE M P
m ovf R E G 2, W
m o vw f REG1
m ovf TEM P, W
m ovf REG2

4.2 .2 Instrucciones aritm éticas y lógicas.

L as in stru ccion es aritm éticas y ló gicas se m u estran en la tabla 4 .3 . Este


g ru p o d e in stru ccion es in cluye, d en tro d e las op eracio n es aritm éticas, la su m a
y la resta, y , c o m o caso s p articu lares d e esta s o p eracio n es, el in crem en to y d e ­
crem en to . I-as op eracio n es lógicas so n la n eg ació n ló gica o co m p lem en to , la
su m a lógica (or), el p ro d u cto ló gico (and), la se m isu m a u o r e x clu siv o (xor),
ro ta cio n es d e 1 bit a la d erech a o a la izq uierda y el in tercam b io d e cu arteto s
(g ru p o s d e 4 bits con tigu os).
Repertorio de instrucciones y program ación e n lenguaje ensam blador — 93

T ab la 4.3 Instrucciones aritméticas y lógicas. W: registro de trabajo, f : registro de la memo­


ria de datos, k: dato d e 8 bits, b: bit, d: destino. Si d = 0, el destino es VJ; si d = 1,
el destino es f C, D C y Z son bits específicos del registro STATUS.

M nem otécnico S ig nificado A fecta C iclos


addw f f,d f + W => d C , D C ,Z
addlw k k + W => W C, DC , Z
subw f f.d f-W => d C , DC , Z
sublw k k - W => W C . DC , Z
incf f.d f+ 1 =>d Z
decf f. d f -1 => d z
andwf f.d f and W = > d z
andlw k k and W => W z
io rw f f.d fo rW = > d z
iorlw k k or W => W z
xorw f f.d f xo r W = > d z
xorlw k k xo r W => W z
di f.d rotar f izquierda a través de C => d c
rrf f.d rotar f derecha a través de C => d c
com í f.d # f= > d z
swapf f.d ft ~ f H= > d *

L as in stru ccion es aritm éticas afectan a las b an d eras C D C y Z d el re g is­


tro ST A T U S; tod as las in stru ccion es ló gicas afectan a la b an d era Z , excep to
las d e ro tació n q u e afectan a la b an d era C , y la d e in tercam bio d e cu artetos,
que n o a fecta a n in gu n a bandera.

E n las op eracio n es aritm éticas y lógicas co n d o s o p eran d o s, u n o debe


estar en el reg istro W , m ien tras q u e el o tro p u e d e e star en W o e n cualq uier
o tro reg istro d e la m em o ria d e datos. El resu ltad o d e la o p eració n p u e d e c o ­
locarse e n W o e n cualq uier o tro registro.

Al cod ificar la in stru cción , el d estino se in d ica m e d ia n te el p a rá m e tro


binario d: si d = 0, el d estin o es W ; si d = 1, el d estin o es el reg istro esp ecificad o
en la instrucción.

E n to d as las in stru ccion es q u e trabajan c o n u n re g istro d e la m em o ria


de d a to s, s e a d m ite d ireccio n am ien to d irecto o in directo. Si el reg istro e sp e­
cificado e s IN D F, en to n ces se está u tilizan d o d ireccion am ien to in d irecto y la
o p e ra ció n in d icad a p o r la in stru cción se realiza con el reg istro a p u n ta d o p o r
el registro d e funciones especiales FSR.
94 — Microcontroladores PIC

A diferen cia d e lo q u e ocu rre c o n in stru ccion es sem ejan tes e n o tro s m i­
cro p ro ce sa d o re s o m icro co n tro lad o res, el bit d e a c a rre o (bit C d el registro
ST A T U S) n o interviene d irectam en te e n la o p e ra ció n in d icad a p o r la in stru c­
ción aritm ética, au n q u e sí resu lta afectad o p o r el re su lta d o d e la instrucción.
E s d ecir, n o existe la in stru cción q u e, p o r ejem plo, su m e d o s reg istro s tenien­
d o en cu e n ta el v alo r del a c a rre o (o p era ció n f + W + C ), la cual es u n a o p e­
ración co m ú n e n la s u m a d e n ú m e ro s e n te ro s d e v a rio s bytes. El ejem plo 4 .7
ilustra c o m o p ro ced er e n este caso.

L as in stru ccion es d e ro tació n rlff, d y rrf f, d , ro ta n el co n te n id o d el registro


in d icad o en la instrucción, u n bit a la izq uierda o a la d e re ch a resp e ctiv a m e n ­
te. E n la ro tació n interviene el acarreo , es d ecir, el bit C d el registro STA TU S,
q u e a to d o s los efectos funciona c o m o exten sión d el reg istro f y o cu p a la p o­
sición d e u n su p u esto bit 8 d e ese registro. El resu ltad o se d ep o sita e n W sin
m od ificar f (si d = 0 ) , o se d ep o sita e n f (si d = 1 ) , m o d ifican d o su v a lo r ante-
r io r .

E je m p lo 4.6

A lguna s operaciones aritm éticas y lógicas co n e l registro d e trabajo W.


Increm entar W:
ad d lw 1
D ecrem entar W;
ad d lw Oxff
N egación lógica (com plem ento 1) d e W;
lo rlw Oxff
C om plem ento 2 d e W:
xorlw Oxff
addlw 1
P o n e r varios b its d e W a 0, por ejem plo, lo s b its 3 , 2 , 1 y 0:
andlw OxfO
P o n e r varios bits d e W a 1, p o r ejem plo, lo s b its 3, 2 ,1 y 0:
iorlw OxOf

E je m p lo 4.7

A l sum ar o re s ta r núm eros e n te ro s d e m ás de u n byte, h a y q u e te n e r e n cuen ta e l acarreo producido en


e l pa so anterior. Uno d e lo s b ytes p u e d e e s ta r e n e l re g istro de tra b a jo W, e l o tro e n u n registro cualquiera
que denom inarem os RE G y e l acarreo d e l pa so a n te rio r es e l b it C d e l registro STATUS. S i se desea tener
e l resultado en W, la operación que h a y que re a liz a r es R E G + W + C = > W .

El siguiente segm ento d e program a ilustra cóm o realizar esta sum a


Repertorio de instrucciones y program ación e n lenguaje ensam blador— 95

btfsc STATUS, C ; ¿C = 0 ? Sí - sa lta r sin in crem en tar W.


addlw 1 ; N o - in crem en tar W.
addwf R E G .W ;W + R E G =>W .

4.2.3 Instrucciones de transferencia de control.

L a s in stru ccion es d e tran sferen cia d e co n tro l se m u e stra n e n la tabla 4.4,


e in cluyen los saltos incondicionales y los co n d icio n ad o s al e sta d o d e u n bit
de u n registro, y las llam ad as a su b ru tin as y retorn os.

T ab la 4.4 Instrucciones de transferencia de control. W : registro de trabajo, f : registro de la


memoria de datos, k: dato d e 8 bits, a: dirección de 11 bits, b: bit, d: destino. Si d =
0, el destino es V/; si d = 1, el destino es f.

M nem otécnico S ig nificado A fecta Ciclos


goto a sa lta r a la dirección a 2
btfsc f,b salta si f< b > = 0 1(2)
btfss f,b salta s i f< b > = 1 1(2)
incfsz f.d f + 1 = > d , salta s i 0 1(2)
decfsz f,d f -1 = > d . salta si 0 1(2)
cali a llam ar su b rutina e n dirección a 2
retum re to m a r d e subrutina 2
retfie re to rn a r de interrupción 2
retlw k retornar d e su b rutina con k en W - 2

4.2.3.1 S altos in con dicionales, llam ad as a s ubrutinas y retornos.

L a in stru cción goto a p ro d u ce u n salto in condicional a la in stru cción si­


tuada en la d irección a. E n o tras p alab ras, esta in stru cció n c a rg a el v a lo r a en
el co n ta d o r d e p ro g ra m a (PC ) del m icro co n tro lad o r.

La instrucción cali a p rod u ce una llam ada a la subrutina o subp rogram a si­
tuado en la dirección a. Esta instrucción gu ard a en la pila el valor del PC y a con­
tinuación coloca el valor a en el PC , produciendo con ello el salto a la subrutina.

L as in stru ccion es goto y cali o p e ra n co n el esq u em a d e m em o ria d e p ro­


gram a o rg an izad a e n páginas. El o p eran d o a d e e sta s instru ccion es es u n nú­
m ero d e 11 bits q u e rep resen ta la d irección d e n tro d e u n a p ág in a. L o s d o s bits
restan tes d el PC, es decir, los bits P C < 1 2 :1 1 > s e to m a n d e los bits 4 y 3 del re­
gistro P C L A T H (a p a rta d o 3.2.1.1 y figura 3.7). E n principio, si n o s e m odifica
p reviam en te el re g istro P C L A T H , las in stru ccion es goto y cali ejecu tan saltos
d en tro d e la m ism a p ág in a d e m em o ria d e p ro g ra m a e n la q u e se en cu en tran
ellas; p o r ello, el o p eran d o d e estas in stru ccion es e s u n n ú m e ro d e 11 bits.
96 — Microcontroladores PIC

P a ra ejecu tar saltos en tre p ág in as o realizar llam ad as a su b ru tin as q u e estén


en una p á g in a diferente a aq u ella en la q u e se en cu en tran e sta s in strucciones,
h ay q u e p o n er el n ú m ero d e la p ág in a a la q u e s e quiere sa lta r en los bits 4 y
3 del reg istro P C L A T H y en to n ces realizar el salto o la llam ad a. M ediante el
o p e ra d o r HIGH del lenguaje en sam b lad o r, este p ro ceso e s m u y sim ple, según
ilustran los ejem plos siguientes.

E jem p lo 4.8

E l segm ento d e program a siguiente ilustra cóm o e fe ctu a r e l s a lto a una dirección que esté e n una página
diferente d e la actual.

Prog:
m o vlw H IG H P roglO
m ovw f PCLATH
g oto P roglO

ProglO :

; P ro g lO puede se r cualquier dirección d e la m em oria d e program a.

HIG H e s un o p e ra d o r del ensa m blado r que hace que lo s bits <15:8> de la dirección representada por
la etiqueta P ro g lO se tom e n com o e l d ato d e la instrucción m ovlw. d e m odo que el núm ero d e la página
de destino es colocado en lo s b its PC LATH<4:3>. C uando se ejecuta la instrucción goto, lo s b its PCLA-
TH <4:3> son cargados e n los bits 12 y 11 del PC,

E jem plo 4.9

E l segm ento de program a siguiente ilu stra cóm o e fe ctu a r la llam ada a una subrutina q u e está e n una
pág ina diferente a la pág ina desde la que se ha ce la llam ada.

m ovlw HIG H S ubrutina ; Los bits <15:8> d e la dirección don de com ie nza la
m o vw f PCLATH ; subrutina se cargan e n PCLATH.
cali S u bru tina ; S e hace una llam ada a la subrutina.

Subrutina
A quí com ie nza la subrutina, que puede e sta r e n cualquier dirección
d e la m em oria d e program a.

E l núm ero de la página d e destin o e s cargado en lo s bits PC LATH<4:3>. C uando se ejecuta la instrucción
cali, lo s b its PC LATH<4:3> son cargados e n los b its 12 y 11 del PC.
Repertorio de instrucciones y program ación en lenguaje ensam blador — 97

La instru cción goto p ro d u ce un salto in condicional d irecto, p u es la d ire c­


ción d e la m eta d el salto s e d a en la p rop ia instrucción. Este n o es el ú n ico tipo
d e s a lto in condicional p o sible en los m icro co n tro la d o re s P IC d e g a m a m ed ia.
C u alquier instru cción que m od ifiq u e el reg istro d e fu nciones especiales P C L
prod u ce u n salto incondicional, en este ca so , in directo, pu es la dirección d e la
m eta del salto está en u n re g istro y n o en la p ro p ia instrucción. C o m o el re g is­
tro P C L es d e 8 bits, el salto s e p ro d u ce en u n entorn o d e 2 5 6 direccion es. P ara
producir saltos m ás allá d e este en torn o, h ay que c a rg a r ap ro p ia d a m e n te el
registro P C L A T H . El sigu ien te ejem plo ilustra u n salto in d irecto c o n estas
características.

E jem plo 4.10

Se quiere p ro g ra m a r un salto in condicion al a la dirección denotada p o r la etiqueta Prog20, p e ro s in u sar


a instrucción goto. L o s ope radores H IG H y L O W d e l ensa m blado r facilitan notablem ente la program a­
ro n . E l siguiente segm ento d e p ro g ra m a ilustra e l procedim iento:
m ovlw HIG H Prog20
m ovw f PCLATH
m ovlw LO W Prog20
m o vw f PCL
*ro q20:

; P rog20 puede se r cualquier dirección de la m em oria d e program a.

HIG H y LO W so n ope radores d e l ensam blador. HIG H hace que los bits <15:8> de la dirección represen-
a d a por la etiqueta P rog2 0 se tom e n com o e l operando d e la instrucción m ovlw, de m odo que la parte
alta de la dirección que es m eta del salto se coloca e n el registro W y a continuación e n PC LATH. LO W
nace que lo s bits <7:0> d e la dirección representada por la etiqueta P rog20 se tom en com o e l operando
de la instrucción m ovlw, con lo que la parte baja d e la dirección que es m eta d e l salto se coloca e n el
registro W y a continuación en PCL.
Al m odificarse PCL, los contenidos de PCLATH y P C L pasan al contado r d e program a, con lo que se
oroduce e l salto a Prog20.
La instrucción m o vw f PC L se ejecuta e n d o s ciclos d e m áquina porque m odifica el v a lo r d e l PC.

T am b ién e s posible re a liz a r u n salto relativ o al v a lo r d el P C L . En P C L se


puede te n er u n a dirección base, a la q u e s e le p u e d e a ñ a d ir un v a lo r m ed ian ­
te la instru cción addwf PCL, F, fo rm an d o así la dirección d e salto. El siguiente
ejem plo ilu stra el u so d e saltos relativos en el m anejo d e tablas alm acen ad as
e n la m e m o ria d e p ro g ram a.
98 — Microcontroladores PIC

E jem plo 4.11

La subrutina Tabla contiene una tabla d e caracteres ASCII. En un registro d e propósito general d e la m em o­
ria d e datos, que se ha identificado com o INDICE, está la posición que ocupa u n carácter ASCII cualquiera
dentro d e la tabla, relativa al inicio. S e quiere retornar en W el carácter AS C II apuntado p o r INDICE. El
segm ento d e program a siguiente ilustra la solución, que utiliza u n salto indirecto m ediante PCL.

P rogram a principal:

m o vlw H IG H Tabla Los bits <15:8> d e la dirección don de com ienza la


m ovw f PCLATH tabla se cargan en PCLATH.
m ovf INDICE, W E l registro IN D IC E apunta h a cia el in terio r d e la tabla.
cali Tabla S e hace una llam ada a la subrutina Tabla.
E n W reto rna el valor apuntado p o r INDICE.

; Subrutina Tabla. Puede estar en cualquier página de la memoria de programa, siem pre que su
; extensión no exceda las 256 palabras y quede com prendida completamente en un ám bito de 256
; direcciones, es decir, que cualquiera d e sus instrucciones pueda se r ubicada con solo m over el
; valor de PC L sin alterar el valor de la parte alta del PC.
; Entradas: en W la posición del carácter ASCII
; Salidas: e n W el carácter ASCII solicitado.

Tabla:
addwf PCL, f
retlw •E‘
retlw T
retlw ’e'
retlw ‘m’
retlw 'P'
retlw T
retlw ’o ’
E n p rim e r lugar, el ejem plo m uestra la form a corre cta d e llam ar una subrutina ubicada en una pág ina di­
ferente a la actual, lo cual se realiza cargando convenientem ente los bits 4 y 3 d e PCLATH con el núm ero
d e la página. El operador HIG H hace que lo s b its <15:8> d e la dirección d e la subrutina se tom en com o
e l d ato d e la instrucción m ovlw , que lo s coloca e n el registro W ; a continuación W se copia en PCLATH,
d e m odo que el núm ero d e la pág ina d e destino es colocado en lo s bits PC LATH<4:3>. Al e je cu ta r la
instrucción cali, e l valor actual del P C se guarda en la pila y lo s b its P C LATH <4:3> son cargados en los
bits 12 y 11 d e l PC, con lo q u e se salta a la subrutina.
U na vez en la subrutina, la instrucción a d d w f PCL, f adiciona a PC L el v a lo r que trae W, guardando el
resultado en el propio PCL, con lo que se produce un salto a la instrucción retlw que tiene com o operando
el código A S C II solicitado. P o r ejem plo, si W = 4, se retorna en W el código AS C II d e l carácter ‘p \
La subrutina Tabla puede e sta r e n cualquier página d e la m em oria de program a, siem pre que su exten­
sión no exceda la s 256 palabras y quede com prendida com pletam ente en un ám bito d e 256 direcciones,
e s decir, que cualquiera d e su s instrucciones pue da ser ubicada con solo m over el valor d e PCL
Repertorio de instrucciones y program ación en lenguaje ensam blador— 99

La instrucción a d d w f PCL, f m odifica el valor d e l PC, y por e llo se ejecuta e n dos ciclos de instrucción. La
instrucción retlw tam bién dura 2 ciclos de instrucción. Por lo tanto, la ejecución de la subrutina Tabla dura
4 ciclos de instrucción, es decir, 16 ciclos del oscilador principal del m icrocontrolador.

L as in stru ccion es retum , retfie y retlw k s e co lo ca n d e n tro d e una su b rutina


p ara reto rn ar al p ro g ram a d esd e d o n d e fue llam ad a la subrutina.

4.2.3.2 S a lto s c ondicionados

Las in stru ccion es d e salto co n d icio n ad o son btfsc f, b (b it test f i l e a n d skip


ifc le a r ) y btfss f, b (b it test f i l e a n d s k ip ifs e t ) . E n e s ta s in stru ccion es, el salto se
efectúa si se cu m p le una con d ición : q u e el v a lo r del bit b, del reg istro f sea 0 ó
1, resp ectivam en te. El salto q u e p ro d u ce n e s m u y co rto : si s e cu m p le la co n ­
dición, se "b rin c a ", e s d ecir, n o s e ejecuta la in stru cción sigu ien te; si la co n d i­
ción n o s e cu m p le, n o s e brinca, es decir, se ejecuta la in stru cción siguiente.

P a ra esclarece r el m o d o d e fu n cion am ien to d e e sta s in stru ccion es, an a­


licem os el sigu ien te bloque d e in strucciones:
btfsc f. b
instrucción 1
instrucción 2

L a con d ición p ara el salto es q u e f<b> sea 0. Si se cu m p le esta con d ición ,


se salta d irectam en te a la instru cción 2; si n o s e cu m p le, s e ejecuta la in stru c­
ción 1. L a in stru cción btfss funciona d e m o d o sim ilar. El d ia g ra m a d e bloques
de la figura 4 .7 ilustra la sem án tica d e esta s in strucciones.

E jem plo 4.12

Increm entar e l registro d e trabajo W s i la b an dera d e l acarreo e s 1.


El siguiente segm ento de program a ilustra la solució n d e l problem a:
btfsc STATUS, C
addlw 1
Sigue: ...
La bandera d e acarreo es el bit C d e l registro STATUS. Si el acarreo es 1, n o se cum ple la condición
requerida para el salto y p o r lo tanto se ejecuta la instrucción ad d lw 1, que increm enta e n 1 e l valor de W.
Si el acarreo es 0. se cum ple la condición d e salto y se ejecuta directam ente la instrucción m arcada con
la etiqueta Sigue, sin in crem en tar W.

L as instru ccion es b tfsc y btfss son m u y útiles p u es c o n ellas s e p u ed en


p ro g ra m a r decision es segú n el esta d o d e cu a lq u ie r bit d e cu alq u ier registro
d e la m em o ria d e d a to s del m icro co n tro la d o r, y a sea u n reg istro d e funciones
100 — Microcontroladores PIC

especiales o uno d e p rop ósito gen eral. C o m b in an d o e sta s in stru ccion es c o n la


in stru cció n d e salto incondicional goto, e s posible to m a r m ú ltiples decisiones.
El ejem p lo sigu iente ilustra u n caso.

b tfs c f, b b tfs s f, b
In s tru c c ió n 1 In s tru c c ió n 1
In s tru c c ió n 2 In s tru c c ió n 2

Figu ra 4.7 Semántica de las instrucciones d e salto condicionado. En la parte superior de la


figu ra se muestran segmentos de programas con las instrucciones b tfs c y b tfs s y
debajo los diagramas d e bloques con la semántica de las instrucciones. El salto se
produce según el valor del bit b del registro f que puede ser cualquier registro de
la memoria d e datos.

E jem plo 4.13

La figura 4.8 m uestra e l diagram a d e bloques d e la situación q u e s e d e se a program ar. S i s e cum ple la
condición f<b> = 1 se debe re a liz a r la acción 1 ; e n caso contrario, se ejecuta la acción 2; después de
cualquiera de e stas dos acciones, debe ejecutarse la acción 3. La program ación d e ca d a acción requiere
un núm ero indeterm inado d e instrucciones.
La siguiente estru ctura d e l program a resuelve la situación planteada:
btfss f, b
goto Acción2
Acción 1:

; A q u í van las instrucciones que im plem entan la A cción 1.

goto Acción3
A cd ón2:
Repertorio de instrucciones y program ación en lenguaje ensam blador— 101

; A q u í van la s instrucciones que im plem entan la A cción 2.


i
Acción3:
i
; A quí van la s instrucciones que im plem entan la A cción 3.
i

Figura 4.8 Diagrama d e bloques con el algoritmo que se desea program ar en el ejemplo 4.13.

L as in stru ccion es incfsz f, d y decfsz f, d com bin an el in crem en to o d e cre ­


m ento d e u n reg istro cu alq u iera c o n u n salto co n d icio n ad o a l resu ltad o d e la
op eración aritm ética realizad a. E s ta s in stru ccion es in crem en tan o d ecrem en -
tan el reg istro f y si el resu ltad o d e esta o p eració n e s cero , se p ro d u ce el salto;
en c a so co n trario , se ejecu ta la in stru cción siguiente. El re su lta d o se p u ed e
co lo ca r e n W (no se m odifica f) o en el prop io registro, q u e q u ed a así m od i­
ficado, lo c u a l se especifica c o n el p a rá m e tro d d e la instrucción. El salto que
p rod u cen e s m u y co rto , al estilo d e las in stru ccion es btfsc y btfss y a estu d iad as.
El salto e s sim p lem en te un brinco sob re la instru cción siguiente, q u e deja de
ejecutarse si se cu m p le la con d ición d e que el re su lta d o d el in crem en to o d e ­
crcm en to del reg istro sea cero . E stas in stru ccion es no a lte ra n las b an d eras del
registro S T ATUS.

Estas d o s instru ccion es so n m u y útiles p u es, co m b in ad as c o n la in stru c­


ción goto, sirven p a ra p ro g ra m a r lazos o iteracion es en los q u e el n ú m ero de
iteraciones se con trola p o r el v a lo r del reg istro f utilizad o p o r la instrucción.

E jem plo 4 .14

Este ejem plo ilustra la form a d e p ro g ra m a r un lazo.


m o viw veces
102 — Microcontroladores PIC

m ovw f CO NTADO R
Lazo:

; A quí van la s instrucciones del lazo

d e cfsz CO N TAD O R , f ; ¿C O N TADO R = 0?, Sí - sa lta r a Fin.


g oto Lazo ; N o - ir a una nueva iteración.
Fin:
i
f
E n el segm ento d e program a m ostrado, el registro que ha sido identificado con el nom bre CONTADOR,
alm acena inicialm ente la cantidad de iteraciones que se desea realizar. El núm ero d e iteraciones ha sido
representado por la constante designada com o “veces". La instrucción decfsz decrem enta y actualiza el
valor d e CO NTADO R: m ientras el valor d e CO NTADO R n o sea cero, se ejecuta la instrucción goto Lazo y
com ienza una nueva iteración: cuando CO NTADO R llegue a cero, se salta a la dirección con etiqueta Fin,
con lo cual term ina la ejecución del lazo.

4 .2 .4 Instrucciones que operan con bits

L as in stru ccion es q u e o p eran c o n bits s o n só lo d os, au n q u e m u y p o ten ­


tes, pu es p erm iten p o n er en 0 o en 1 cu alq u ier bit d e cu alq u ier reg istro del
m icrocon trolad or. La tabla 4.5 m u estra e sta s in stru ccion es y su s principales
características d e in terés p ara el p ro g ra m a d o r. El ejem plo 4 .1 5 ilustra cóm o
utilizarlas.

T a b la 4.5 Instrucciones lie operaciones con bits.


M nem otécnico S ignificado A fe cta C iclos
bcf f,b 0 => f<b> - 1
bsf f, b 1 = > f< b> - 1
E jem plo 4.15

S eleccionar e l banco 1 d e la m e m o ria d e datos.


E l banco d e la m em oria d e d a to s que va a ser utilizado se selecciona m ediante lo s b its RP1 y RPO del
registro STATUS. El banco 1 s e selecciona haciendo RP1 = 0 y RPO = 1, lo cual pue de hacerse con el
siguiente segm ento d e program a:
b cf STATUS, RP1
bsf STATUS, RPO

O tras in stru ccion es q u e o p eran co n bits so n btfsc y btfss, que realizan


saltos co n d icio n ad o s p o r el esta d o d e u n bit, y se han incluido en el g ru p o de
in stru ccion es d e tran sferen cia d e control.
Repertorio d e instrucciones y program ación en lenguaje ensam blador— 103

4 .2 .5 Otras instrucciones

L a tabla 4 .6 m u estra las in stru ccion es q u e n o p erten ecen a n in gu n o de


los g ru p o s anteriores. L a in stru cción nop, tal c o m o indica s u n om b re, n o rea­
liza ninguna op eració n , salvo la d e o c u p a r tiem p o del m icro co n tro la d o r: u n
ciclo d e instrucción.

T ab la 4.6 Otras instrucciones de con trol general del microcontrolador.


Mnemotécnico Significado Afecta Ciclos
nop no operación - 1
clrwdt 0 => W DT TO#, PD# 1
sleep ir a modo bajo consumo TO#, PD# 1

1.a instru cción clrwd ejecuta u n "reset" del p e rro g u a rd iá n , es decir, borra
(pone e n 0) el te m p o riz a d o r d el p erro g u a rd iá n y borra tam bién el pre-d ivi­
sor. L o s bits T O # y P D # del registro STA TU S son p u e sto s am b os a 1. T O # es
el in d icad o r d e d esb o rd am ien to del p erro g u ard ián y PD # e s el in d ica d o r d e
que el m icro co n tro lad o r h a e n tra d o en el m o d o d e bajo con su m o.

La tercera in stru cción d e este g ru p o , sleep, p one al m icro co n tro lad o r en


el m o d o d e bajo co n su m o , p ro d u cien d o a d e m á s un resel d el p e rro g u ard ián y
poniendo a cero el v alo r d el p re-d iviso r. El bit T O # e s p u esto a 1 y el bit PD #
es puesto a 0.

4.3 Elem entos del lengu aje ensam blador (para el ensam blador
MPASM de Microchip)

C o m o to d o lenguaje d e p ro g ram ació n , el lenguaje en sam b lad or tiene


sus p ro p ias reglas p ara escrib ir las p alab ras y com b in arlas p ara fo rm a r ins­
trucciones. E stas reglas con stitu y en la sin taxis del lenguaje. E n este a p a rta d o
s e estu d ia la sin taxis d el lenguaje en sam b lad o r d e los m icro co n tro la d o re s PIC
de g a m a m edia.

4.3.1 Introducción

Un p ro g ra m a en lenguaje en sam b lad o r e s u n a secu encia d e líneas d e


texto, c a d a una d e las cu ales p u ed e ser:

• Una instrucción del repertorio d e instrucciones del m icrocontrolador.

• U na directiva del ensam blador.

• U na m acroinstrucción, o sim plem ente " m a cro ".

• Un com entario.
104 — Microcontroladores PIC

• U na etiqueta.

• U na línea e n blanco.

U n a d irectiv a e s u n a instru cción q u e se escrib e en el p ro g ra m a fuente


y está dirigid a al p ro g ra m a en sam b lad o r. E s una o rd e n p a ra el p ro g ra m a
en sam b lad or, n o p a ra el m icro co n tro lad o r. E n u n p ro g ra m a e scrito e n len­
guaje en sam b lad or se m ezclan las in stru ccion es p a ra el m icro co n tro la d o r c o n
las instru ccion es p ara el p ro g ram a en sam b lad or o d irectiv as. L a s d irectivas
tran sm iten al en sam b lad o r d iversas in dicacion es, co m o , p o r ejem plo, la d e­
finición d e sím bolos variab les y con stan tes, la ubicación del p ro g ra m a en la
m em o ria, la u b icación d e variab les e n m e m o ria d e d ato s, etc., se g ú n se estu­
d ia m ás ad elan te en este capítulo.

U n a m a c r o in s tm c d ó n o m acro e s u n a in stru cción definida p o r el usuario.


E n la definición d e una m a cro se utilizan in stru ccion es d el rep ertorio d el m i­
cro co n tro la d o r y d irectiv as del en sam b lad or. U n a v e z definida una m acroin s-
tru cción , basta c o n citarla e n el te x to del p ro g ra m a p a ra q u e el en sam b lad or
su stitu y a la llam ad a a la m a cro p o r el con ju n to d e in stru ccion es y d irectivas
que la definieron.

U n com en tario es u n texto c u y o objetivo e s in fo rm ar, h a cien d o c o n ello


m á s fácil la le ctu ra y co m p ren sió n del p ro g ra m a fuente. V a p reced id o p o r el
ca rá cte r p u n to y co m a (;). El en sam b lad or, cu a n d o e n cu e n tra este carácter,
ig n ora to d o lo q u e sig u e hasta el final d e la línea.

U na etiqu eta (label) e s el sím b olo que identifica a u n a línea d e p ro g ra m a


fuente y q u e rep resen ta la d irección d e una in stru cción . L a s etiq u etas deben
co lo carse a p artir de la co lu m n a 1 p ara q u e e l en sam b lad o r las identifique
co m o tales y p u ed en ser seg u id as p o r el ca rá cte r d o s p u n to s (:).

E jem plo 4.16


— - - - - - - - - - - - - - - - §

En e l se g m e n to d e program a que se m uestra a continuación, h a y dos instrucciones: una dirigid a a l e n ­


sam blador y o tra a l m icrocontrolador
d a to _ 5 equ 0xA 8 ; S e define el sím bolo dato_5 y se le asigna un valor,
p ro g l:
m ovlw dato. 5 ; L a instrucción carga e l registro W con e l valor
; del sím bolo dato_5.

El sím bolo dato_5 representa un d ato constante cuyo valor s e asigna m ediante la directiva equ. E l sím bo­
lo p ro g l es una etiqueta y representa la dirección d e la m em oria d e program a donde se u b ica la instruc­
ción m ovlw dato_5. La prim era lín e a es una instrucción a l program a ensa m blado r m ientras que la tercera
es una instrucción dirigida al m icrocontrolador. O bsérvese que la segunda y la cuarta lín e a s contienen,
respectivam ente, sólo una etiqueta y un com entario.
Repertorio de instrucciones y program ación en lenguaje ensam blador— 105

L as líneas q u e con tien en in stru ccion es p a ra el m icro p ro ce sa d o r s e es­


tructu ran en v ario s c a m p o s, alg u n o s d e ellos o p cion ales, co n la sin taxis si­
guiente:

[etiqueta[:]] m nem otécnico [operando1][, operando2] [; com entario]

L o s c a m p o s in d icad o s en tre c o rch e te s s o n op cion ales. Los c a m p o s d e


una in stru cción se se p a ra n en tre sí c o n uno o m ás esp acio s en b lan co, o co n
ca ra cte res d e tabulación. Si la in stru cció n tiene d o s o p eran d o s, e sto s se sep a­
ran p o r una c o m a (,). En el c a m p o d e los o p e ra n d o s se utilizan con stan tes,
sím bolos y expresion es.

Las d irectiv as y el m n em o técn ico d e las in stru ccion es s e p u ed en escribir


co n letras m ay ú scu las o m in ú scu las. P o r ejem plo, m ovlw y MOVLW so n d o s for­
m as co rre cta s y sim ilares d e escribir u n m ism o m n em otécn ico.

L as con stan tes so n v alores n u m érico s q u e s e utilizan en el p ro g ra m a .


U na co n stan te p u ed e s e r n u m érica o A SCII. A l escrib ir una co n sta n te n u m é­
rica se p u ed en em p lear los sistem as d e n u m eración d ecim al, h exad ecim al,
octal o binario. U n a co n stan te ASCII s e form a c o n el có d ig o binario d e u n c a ­
rácter ASCII. Las co n stan tes son tra ta d a s p o r el en sam b lad o r c o m o núm eros
binarios d e 3 2 bits. El v alo r d e la co n stan te e s tru n cad o si se in tenta co lo carla
en u n c a m p o d e m en o r longitud. L a tabla 4 .7 d a ejem plos d e la sin taxis d e las
co n stan tes en el lenguaje en sam b lad o r d e los PIC.

T ab la 4 .7 Tipos de constantes permitidas en la programación en lenguaje ensamblador y su


sintaxis. Las letras D, H, O y B usadas para indicar el tipo de constante, pueden
ser mayúsculas o minúsculas.

C o n s ta n te S in ta x is E je m p lo V a lo r d e la co nstan te
D’dígitos_decim ales’ D’ 167
Decim al OxOOOOOOA7
'dígitos_decimales' .167'
H’digitos_hexadecimales' H’A7'
H exadecim al Oxdígitos_hexadecima!es 0xA7 OxOOOOOOA7
dígitos_hexadecimatesH 0A7H
Odígitos_octales 0 ’247'
O ctal 0x000000A7
dígitos_octalesO 2470
Binaria B'digitos .binarios’ B’ 10100111’ 0x000000A7
A'carácter_ASCir A’Z'
ASCII 0x0000005A
' carácter^ASC ir ‘Z

E je m p lo 4.17

Las siguientes instrucciones ejem plifican la escritura d e constantes d e diferentes tipos. Todas ellas hacen
o m ism o: pon er el valor decim al 167 en el registro W.
106 — Microcontroladores PIC

m oviw .167
m oviw 0a7h
m o viw 2470
m oviw b ' 10100111'

O bsérvese q u e la s constantes hexadecim ales e scritas en e l form ato dígitos ^hexadecim alesH deb en co­
m enzar por un d íg ito para n o se r confundidas con etiquetas.

L a s co n stan tes n u m éricas p u ed en ir preced id as p o r los signos m á s (+ ) o


m en os (-) para in d icar can tid ad es p o sitiv as o n eg ativ as, resp ectivam en te. Si
n o s e co lo ca ningún sign o, se su p o n e q u e la co n sta n te e s positiva.

E n los p ro g ra m a s en en sam b lad o r se utilizan tam b ién sím b olo s. U n sím ­


bolo es una cad en a d e c a ra cte re s alfan u m érico s (letras y n ú m e ro s) d e hasta
3 2 caracteres, q u e co m ien za siem p re c o n una letra o c o n el c a rá c te r g u ió n bajo
(_ ). L o s sím bolos s e u san p a ra nom inar:

• I.as direccion es d e instrucciones. E n este caso el sím bolo recibe el nom bre
d e etiqueta.
• L o s datos constantes.
• L o s registros d e la m em o ria d e datos, y a sean registros d e funciones espe­
ciales o d e p rop ósito general.
• L o s bits d e los registros d e la m em o ria d e datos.

E xcep to las etiquetas, los sím bolos d eb en defin irse a n te s d e ser utili­
z a d o s en el p ro g ra m a fuente. P ara defin ir los sím bolos se usan, en tre otras
fo rm a s, las d irectiv as equ y set o los o p e ra d o re s d e asig n ació n q u e se estudian
e n el a p a rta d o 4.3.2.4.

E n realid ad , los sím bolos q u e se em p lean p ara n o m in ar registros rep re­


sen tan d ireccion es d e la m em o ria d e d ato s. E sto e s así p o rq u e en las in stru c­
cion es se h a c e referencia a los reg istro s a tra v é s d e la d irección q u e tienen
en la m e m o ria d e datos. El en sam b lad o r cod ifica el n o m b re d e la variable
u san d o la d irecció n que d ich o n om b re rep resen ta. A sí, en el ejem plo 4 .1 8 , si
en una in stru cción ap a re ce la variab le R E G I, el en sam b lad o r la codifica uti­
lizan d o el v a lo r 20h . Ix)s sím bolos q u e d an n o m b re a bits d e registros, deben
defin irse c o n v alores del 0 al 7 (p u es los registros d e los PIC so n d e 8 bits).

E jem plo 4.18

E n e l segm ento d e program a que se m uestra a continuación, s e usa n lo s sím bolos CONST, R E G 1 VAR
y p r o g l.

CONST1 equ 0xA 5 ; S e define el sím b o lo C O N S T 1 y se le asigna e l valor A5h.


REG1 equ 20h ; S e define el sím b o lo REG1 y se le asigna el valor 20h.
Repertorio de instrucciones y program ación en lenguaje ensam blador — 107

equ 3 ; S e define el sím b o lo B IT 3 y se le asigna el valor 3.

org 0x10 ; D irección de m em oria don de com ienza el program a

m ovlw CONST1 ; S e carga el registro W con el valor A5h.


m ovw f REG1 ; El v a lo r de W se guarda en el registro REG1.
bef R E G 1 .B IT 3 ; S e p o n e a 0 el bit 3 d e REG1

Por la form a e n q u e se usa en e l program a, el sím bolo CO NST1 representa un d ato constante d e 8 bits
que valen A5h.

REG1 designa el registro de propósito general situado en la dirección 20h d e l banco de m em ona activo;
el valor del sím bolo REG1 es 20h.

BIT3 es una constante que vale 3 y, p o r la form a en que se usa, e s e l nom bre del bit 3 del registro
R E G I.

El sím bolo p ro g l es una etiqueta y representa la dirección donde com ienza el program a. S u valor es 10h,
dado p o r la directiva o rg 0x 10 que le precede.

E n el lenguaje en sam b lad o r d e los m icro co n tro lad o res PIC , los nom bres
de los registros d e funciones especiales, así co m o los n o m b res d e bits d e esos
registros, n o con stitu y en sím bolos pred efin id os o re se rv a d o s del lenguaje en ­
sam blador. E s decir, el p ro g ra m a d o r d eb e definir en el p ro g ra m a fuente los
sím bolos q u e u tilizará p a ra n o m in ar eso s registros y su s bits, so p e n a d e ten er
que u tilizar su s d ireccion es n u m éricas p a ra referirse a ellos. P ara facilitar la
p rog ram ación , M icroch ip su m in istra p a ra c a d a d isp ositivo su arch iv o d e d e ­
finición. E s u n a rch iv o d e texto co n los sím bolos que utiliza el fabricante p ara
nom inar to d o s los reg istro s d e funciones especiales y bits d e aquel d isp osi­
tivo. A sí, p o r ejem plo, p ara el m icro co n tro lad o r P IC 1 6 F 8 7 3 , está el arch iv o
P 1 6 F 8 7 3 .IN C c o n las definiciones d e los n o m b res d e los registros y bits d e ese
dispositivo. P a ra c a d a m icro co n tro lad o r se ofrecen los arch iv o s respectivos.
En el p ro g ra m a fuente en lenguaje en sam b lad o r, el p ro g ra m a d o r sólo tiene
que "in clu ir" el a rch iv o del d isp ositivo, p a ra así p o d e r u tilizar e n el p ro g ra ­
m a los sím bolos definidos en ese arch ivo . E s ta inclusión s e hace m ed ian te la
directiva #include, tal co m o ilu stra el ejem plo 4 .1 9

E jem plo 4.19

Al trabajar con el m icrocontrolador PIC16FS4. se dispone del archivo P16F84.IN C , q u e contiene la de­
n tic ió n d e lo s nom bres d e to d o s lo s registros d e funcio nes especiales y b its de dichos registros de ese
microcontrolador.

^a ra incorporar to d o s esos nom bres al program a fuente, basta co n escrib ir una línea con la indicación
al ensam blador de que incluya el co n tenido d e l archivo en el program a fuente. Esto se hace m ediante la
¿rectiva in d u d e , así:
108 — Microcontroladores PIC

#include P16F84.INC

E sta línea d e b e escribirse antes d e utilizar lo s nom bres d e los registros d e l m icrocontrolador e n el progra­
m a. U na ve z dada esta indicación al ensam blador, se pue de hacer referencia a lo s registros d e funciones
especiales y a su s bits, m ediante lo s nom bres definidos en el archivo incluido.

A continuación se m uestra e l listado (parcial) d e l archivo P16F84.IN C . M icrochip sum inistra archivos
sem ejantes a este para ca d a m icrocontrolador PIC.

; P16F84.INC Standard Header File, Versión 2.00 M icrochip Technology, Inc.


; This header file defines configurations. registers, and cther useful bits oí
; Inform ation for the PIC16F84 microcontroller. These ñam es are taken to match
: the data sheets as cio se ly as possible.

Register Definitions

w EQU H'0000’
F EQU H'ooor
,—
• DrtfiíctAr rPw
rcegibier í Iqcr-

INDF EQU H'0000'


TMRO EQU H'ooor
PCL EQU H'0002’
STATUS EQU H'0003’
FSR EQU H’0004‘
PORTA EQU H’0005'
PORTB EQU H‘0006’
EEDATA EQU H'0008'
EEADR EQU H'0009’
PCLATH EQU H’OOOA’
INTCON EQU H'OOOB'
OPTION_REG EQU H'0081'
TRISA EQU H’0085’
TRISB EQU H'0086’
EECON1 EQU H'0088’
EECON2 EQU H'0089'
i RTATl
O 1r\1UIRü Rite
IXto ■
IRP EQU H'0007'
RP1 EQU H'0006'
RPO EQU H'0005’
N O T .T O EQU H'0004’
NOT PO EQU H'0003’
Z EQU H'0002’
DC EQU H’0001’
C EQU H’0000'
, nINTCON Rite
i i w v i* Dita
GIE EQU H’0007’
EEIE EQU H'0006
T0IE EQU H'0005'
INTE EQU H'0004’
RBIE EQU H’0003'
Repertorio de instrucciones y program ación en lenguaje ensam blador— 109

TQIF EQU H’0002'


NTF EQU H ro o o r
RBIF EQU H’0000’
OPTION Bits -
NOT_RBPU EQU H ‘0007'
KTEDG EQU H’0006’
TOCS EQU H’0005'
TOSE EQU H'0004’
=>SA EQU H’0003'
=>S2 EQU H’0002'
^1 EQU H'OOOV
^SO EQU H'0000'
— EECON1 Bits -
EEIF EQU H0004-
i YRERR EQU H’0003’
iVREN EQU H’0002'
tVR EQU H’o o o r
RD EQU H’0000’

4.3 2 Expresiones, o p e racione s y operadores

L as ex p resion es so n com b in acion es d e co n stan tes y sím bolos m ezclad o s


con o p e rad o res aritm ético s y lógicos. En su e scritu ra s e p erm ite u sar p arén te­
sis c o n u n a función sim ilar a la q u e tienen en las exp resio n es alg eb raicas del
lenguaje m atem ático com ú n .
L as exp resio n es s e p u ed en u tilizar en el ca m p o d e los o p e ra n d o s d e
instru ccion es y d irectiv as, y s e ev alú an siem p re d u ra n te el ensam blaje. El re ­
su ltado d e la evalu ación d e una exp resión p asa a s e r el v a lo r del o p e ra n d o a
los efectos d el ensam blaje.

E je m p lo 4.20

Las expresiones se evalúan durante e! ensam blaje, n o durante la ejecución del program a. En el siguiente
segm ento de program a, REG1 es el registro de la m em oria de datos situad o en la dirección 20h de uno
de lo s bancos d e m em oria de d a to s del m icrocontrolador:
REG1 equ 20h
m o vw f REG1 + 1

La expresión REG1 + 1, N O increm enta e l contenido d e l registro RE G 1, sin o el valor del sím bolo REG1.
por lo que e l resultado d e la expresión es 21 h. Este resultado se obtiene durante el ensam blaje del
program a. P o r lo tanto, 21 h es entonces el operando d e la instrucción m ovw f. C uando se ejecute e l pro­
grama, la instrucción m ovw f copiará el contenido d e l registro W e n el registro 21 h d e l banco de m em oria
activo.

L o s o p era d ores so n los sím bolos q u e d en otan las op eracio n es aritm éticas
y lógicas definidas en el lenguaje en sam b lad or.
110 — Microcontroladores PIC

4.3.2.1 O p erad ores aritm éticos

L a tab la 4 .8 m u e stra los o p erad o res aritm ético s y las op eracio n es que
rep resen tan . Los o p erad o res aritm éticos indican la realización d e o p eracio ­
n es aritm éticas b ásicas co n sím bolos y con stan tes. S e p u ed en u tilizar p ara
co n stru ir exp resion es q u e form en p arte d e los o p e ra n d o s d e in stru ccion es, o
en d irectiv as del en sam blad or. L as op eracio n es aritm éticas se realizan en 3 2
bits, au n q u e el resu ltad o p u ed e q u e d a r tru n ca d o al n ú m e ro d e bits q u e tenga
el registro o la dirección a la q u e sea asig n ad a la expresión .

T a b la 4.8 Operadores y operaciones aritméticas.

O p e ra d o r O p e ra ció n E je m p lo
+ Sum a A1+A2
- Resta A 1 -A 2
• M ultiplicación A1 * A 2
/ D ivisión A 1 /A 2
% M ódulo (resto en una división) A1 % A2

E je m p lo 4.21

El siguiente segm ento d e program a ilustra el uso d e lo s ope radores aritm éticos, en particular la operación
módulo.
D AT01 equ .18
D AT02 equ .7

m oviw D A T 01 % D A T 02

A l e n sa m b la r el program a se evalúa la expresión D AT01 % D A T 0 2 con lo s valore s d e lo s sím bolos


D AT01 y D A T 0 2 . La operación m ódulo entrega co m o resultado el residuo d e la división entre los argu­
m entos de la ope ración. E n este ejem plo, al d ividir 18 entre 7 el residuo es 4. Ese será el valor que se
depositará en el registro W cuando se ejecute el program a. Aunque el ensam blador calcula la expresión
usando aritm ética d e 3 2 bits, e n W se guardan sólo lo s 8 bits m enos significativos.

L o s o p erad o res d e su m a y resta tam b ién sirven p ara in dicar si u n a co n s­


ta n te e s p ositiva o n eg ativ a. E n p articu lar, el o p e ra d o r co lo ca d o delante
d e u n sím b olo o una co n stan te, gen era el co m p lem en to a 2 del v a lo r d el sím ­
bolo o co n stan te e n 3 2 bits. Si s e intenta asig n ar ese v a lo r a un registro d e m e­
n o r tam añ o , el v alo r s e tru n ca y sólo s e to m a n los bits m e n o s significativos.

E je m p lo 4.22

E n el siguiente segm ento d e program a se define el sím bolo DATO y se le asigna el valor decim al 3.
¿Q ué valor to m a la expresión - DATO? ¿Q ué valor se alm acena en el registro W cuando se ejecute el
program a?
DATO equ .3
Repertorio de instrucciones y program ación en lenguaje ensam blador — 111

m ovlw - DATO
La evaluación d e la s e xpresiones se ha ce con aritm ética d e 32 bits, y por e llo la expresión - D A TO tom a
el valor FFFFFFFD h, que e s la representación d e -3 e n com plem ento 2 usando 3 2 bits. Al codificar la
instrucción m ovlw, el ensam blador tom a sólo los 8 b its m enos significativos d e ese valor, pues s e trata
de un operando de 8 bits. Es decir, la instrucción m ovlw se codifica con e l valor FDh com o su operando.
C uando s e ejecute e l program a, e n W s e dep ositará ese valor, que es la representación d e -3 e n com ­
plem ento 2 usando 8 bits.

1 3 .2 .2 O peradores lógicos y d e relación

L a tabla 4 .9 m u e stra los o p erad o res ló g ico s y d e relación . L o s sím bolos


v co n stan tes q u e in tervien en e n las op eracio n es lógicas y d e relación sólo
p u ed en to m ar u n o d e d o s v alores lógicos posibles: V E R D A D ER O o FA L SO .
U n sím b olo o co n stan te tiene valor lógico V E R D A D ER O si su v a lo r n u m érico
es diferente d e c e ro y tiene v alo r ló gico F A L S O si s u v a lo r n u m érico e s cero .

T a b la 4.9 Operadores lógicos y de relación.

O p e ra d o r O p e ra c ió n , E je m p lo
i N egación lógica (NOT) !A 1
&& P roducto ló q ico (AN D ) A1 & & A 2
1) S um a ló g ica (OR) A11| A2
> M ayor gue A1 > A 2
< M enor que A1 < A 2
>= M ayor o ig ual que A1 >= A2
<= M e n o r o iqual gue A1 < = A 2
Iqual a A1 == A 2
1= No iqual a A1 != A2

A l ev a lu a r una e xp resió n lógica o d e relación , sólo p u ed e to m a r los va­


lores V E R D A D E R O o FA L SO . Si el v alo r lógico e s V E R D A D ER O , la e x p re ­
sión to m a el v alo r n u m é rico 1 y si e s FA L S O , to m a el v a lo r 0.

E je m p lo 4.23

Si lo s sím bolos A1 y A 2 tienen lo s valore s 20h y 21 h respectivam ente, ¿qué valor to m a la expresión que
lo s utiliza? ¿Q ué valor se deposita e n el registro W cuando se ejecuten la s instrucciones indicadas? La
tabla siguiente responde a e stas preguntas.
I
V a lo r ló g ic o a l se r V a lo r e n W c u a n ­
E x p re s ió n ló g ic a In s tru c c ió n q u e em p le a
e v a lu a d a , s i A 1=20h d o se e je c u ta la
! o d e re la c ió n la e x p re s ió n ló g ic a
i_y A2=21h in s tru c c ió n
!A1 IF A L S O m ovlw ! A1 OOh
A1 & & A 2 VE R D A D E R O m ovlw A1 & & A 2 01h
A1 IIA 2 VERDADERO m ovlw A 1 IIA 2 01h
A1 > A 2 FALSO m ovlw A1 > A 2 OOh
A1 < A 2 VE R D A D E R O m ovlw AKA2 01h
A1 > = A 2 FALSO m ovlw A1 >= A2 OOh
112 — Microcontroladores PIC

A1 <= A2 VE R D A D E R O m ovlw A1 < = A 2 01h


A1 == A2 FALSO m ovlw A1==A2 OOh
A1 != A2 VE R D A D E R O m ovlw A l != A 2 01h

4 .3 2 .3 O p erad ores ló g ico s q u e operan d irectam en te con b its

La tabla 4 .1 0 m u estra los o p erad o re s lógicos q u e trabajan d irectam en te


co n bits. E sto s o p erad o res realizan las o p eracio n es ló gicas in d icad as co n los
bits d e sím bolos y con stan tes. E n las op eracio n es A N D , O R y X O R , q u e se
realizan en tre d o s sím bolos o con stan tes, la op eración ló gica tiene lu g a r en tre
bits d e igu al p o sición d e am b os sím bolos. El re su lta d o d e una o p eració n lógi­
ca d irecta c o n bits es u n n ú m e ro binario.
T a b la 4.10 Operadores lógicos que trabajan directamente con bits.

O perador O peración Ejem plo


- NOT ~A1
& AN D A1 & A 2
| OR A1 IA 2
A
O r e xclusivo (XO R) A1 A A2
» D e splaza r a la derecha A1 » 1
« D esplazar a la izquierda A1 « 2
E jem plo 4.24

Si los sím bolos A1 y A 2 tienen lo s valore s 3 y 5 respectivam ente, ¿ qué valor tom a la expresión que los
utiliza? ¿Q ué valor se deposita en el registro W cuando se ejecuten la s instrucciones indicadas? La tabla
siguiente d a respuesta a e stas preguntas.

V alo r num éri­


I
Expresión co resultante
Instrucción que em plea V alo r en W cu an d o se
lógica o de de la evalu a­
la exp resió n lógica ejecuta la instrucción
relación ción, si A1=3
y A2=5
~ A1 FFFFFFFC h movlw —A1 + 1 FDh (es decir, -3)
A1 & A 2 00000001h m ovlw A1 & A 2 01h
A1 | A2 00000007h m ovlw A1 | A2 Ó7h
A1 A A2 00000006h m ovlw A1 AA2 06h
A1 » 1 00000001h m ovlw A1 » 1 01h
A1 « 2 OOOOOOOCh m ovlw A1 « 2 OCh

4 .3 2 .4 O p erad ores d e asignación

L o s o p era d ores d e asig n ació n p erm iten a sig n a r un v a lo r a un sím bolo. El


va lo r a sig n ad o p u ed e s e r el resu ltad o d e la evalu ación d e una exp resión a rit­
m ética o lógica. C on e sto s o p erad o res s e p u ed e defin ir u n sím bolo a la v ez
q u e se le asign a un v alo r inicial, o se p u e d e m odificar el v a lo r d e un sím bolo
ya definido. E n este últim o c a so e s n ecesario q u e el sím b olo sea m odificable
Repertorio de instrucciones y program ación e n lenguaje ensam blador — 113

p o r el e n sam b lad o r, p u es d e lo co n trario e l en sam b lad o r em itirá u n m ensaje


d e e rro r al in ten tar ca m b ia r su valor.

P a r a definir sím bolos c u y o v alo r p u e d e ser m od ificad o e n el tran scu rso


del ensam blaje, h ay q u e h acerlo co n la d irectiv a set o m ed ian te o p e ra d o re s de
asignación; n o se debe u s a r la d irectiv a equ p o rq u e esta d irectiv a d a al sím ­
bolo definido el atrib u to d e co n stan te (su v a lo r n o se p u e d e m odificar). E n
cam b io, la d irectiv a set y los o p erad o res d e asig n ació n definen sím bolos co n
atrib utos d e variables. l-a tabla 4 .1 1 m u estra los o p e ra d o re s d e asignación.

T a b la 4.11 Operadores de asignación.

O perador O peración Ejem plo Significado


A siqnación aritm ética o lóqica va r = 0 va r = 0
++ Increm entar v a r+ + va r = va r + 1
— D ecrem entar v a r- va r = va r - 1
+= S um ar y asiqnar va r += k va r = va r + k
R estar y asiqnar v a r-= k va r = v a r - k
»—
M ultip lica r v asiqnar va r *= k va r = va r * k
/= D ividir y asiqnar v a r /= k va r = v a r / k
%= M ó d u lo y asiqnar va r % = k va r = va r % k
&= A N D y asiqnar va r &= k va r = va r & k
l= O R y asiqnar v a r|= k va r = v a r | k
A—
X O R v asiqnar va r A= k v a r= v a rA k
»= D e splaza r a la derecha y asiqnar va r » = k va r = v a r » k
«= D e splaza r a la izquierda y asiqnar va r « = k va r = v a r « k

L a s exp resion es d e asig n ació n s e utilizan e n lu g a r d e d irectiv as set o


co m o p a rte d e los arg u m en to s d e d irectiv as. N o se a d m ite n exp resio n es d e
asign ación e n el c a m p o d e o p eran d o s d e una in stru cción al m icro p ro cesa­
dor.

Ejem plo 4.25

El siguiente segm ento d e program a ilustra el u s o d e lo s ope radores d e asignación. El program a alm ace­
na e n lo s registros 20h y 21 h lo s valores 10 y 15 respectivam ente.

DATO = .1 0 ; S e define e l sím bolo DATO con valor inicial 10.


R E G IS TR O = 0x20 ; S e define el sím bolo R E G IS TR O co n valor inicial 20h.

movtw DATO E n W se coloca un 10


m ovw f R EG ISTRO que s e guarda e n e l registro 20h.
DATO += .5 Ahora el sím bolo DATO v a le 15
R EG ISTRO ++ y el sím bolo R E G IS TR O v a le 21 h.
movtw DATO En W s e coloca u n 15
m ovw f R EG ISTRO que se guarda e n e l registro 21 h.
1 1 4 — Microcontroladores PIC

E n la s prim eras dos líneas se definen los sím bolos variables DATO y R E G IS T R O , con su s valore s ini­
cia les respectivos. El sím bolo DATO se usa e n el program a co m o u n d ato constante, m ientras que
R E G IS T R O representa la dirección d e un registro d e la m em oria d e datos. A m bos sím bolos cam bian sus
valores durante el ensam blaje d e l program a, p o r lo q u e la s instrucciones d e la s lín e a s 7 y 8 se codifican
con operandos diferentes d e lo s d e la s instrucciones d e la s líneas 3 y 4.

4 .3 .2 .5 O p erad ores d e dirección

L a tabla 4 .1 2 m u estra los o p erad o re s d e d irección . E sto s o p e ra d o re s tra ­


bajan co n d ireccion es d e m em o ria. El o p e ra d o r $ u sa d o c o m o o p e ra n d o d e
una in stru cción , significa la dirección actu al d e la instrucción.

T a b la 4.12 Operadores d e dirección.

O perador O peración Ejem plo


$ D irección actual q o to $
low B yte bajo d e ia dirección m ovlw lo w etiqueta
hiqh B yte alto d e la dirección m o vlw high etiqueta
upper Bvte m ás a lto d e la dirección m ovlw upp er etiqueta

E jem plo 4.26

La instrucción:

g oto S

tiene e l m ism o efecto que la instrucción:

prog: g oto prog_____________________________________________________________________________

L o s o p erad o res low, high y u p p e r, d ev u elv en resp ectiv am en te, los bits 0 al
7 , 8 a l 1 5 y 1 6 al 21 d e la etiq u eta so b re la q u e o p e ra n . C o m o las d ireccio n es de
m em o ria d e los m icro co n tro lad o res P IC d e g a m a m e d ia tienen c o m o m áxim o
1 3 bits, el o p e ra d o r u p p e r n o se u sa en los p ro g ra m a s d e e sto s m icro co n tro la­
d o re s y el o p e ra d o r high d ev u elv e los bits 8 al 1 2 d e la d irección sob re la que
o p era. El ejem p lo 4 .1 0 (a p a rta d o 4 .2 .3 .1 ) ilustra c ó m o u tilizar los o p erad o res
low y high.

4 .3 3 Directivas

E n este a p a rta d o se estu d ian las d irectiv as em p lead as en situ acion es de


p ro g ram ació n co m u n es. L a d escrip ción d etallad a d e to d a s las d ire ctiv a s del
M PA SM s e p u ed e co n su lta r en el sitio w eb d e M icroch ip T ech nology.

L as directivas son in stru ccion es d irigid as al p ro g ra m a e n sam b lad o r, no


al m icro co n tro lad o r q u e ejecu tará el p ro g ra m a objeto resu ltan te del en sam ­
blaje. En un p ro g ram a fuente escrito en lenguaje e n sam b lad o r, s e m ezclan las
Repertorio de instrucciones y program ación en lenguaje ensam blador — 115

líneas que con tienen d irectiv as c o n las que con tienen instru ccion es al m icro­
con trolad or.

M ediante d irectiv as s e p u ed e co n tro la r la o p e ra ció n d el en sam b lad o r y


se le p u e d e in fo rm ar d e d iv erso s asp ecto s d e in terés p ara el co rre cto proceso
de ensam blaje. P o r ejem plo, m ed ian te las d irectiv as a p ro p ia d a s se in d ica al
en sam b lad or el tipo d e m icro co n tro lad o r; se definen los sím bolos em p lead os
en el p ro g ra m a para n o m in ar a d ato s, registros y bits; la d irección a partir de
la cu al s e co lo can las in stru ccion es d e un p ro g ra m a o d e parte d e él, etc.

L a sin taxis gen eral d e las d irectiv as es la siguiente:

[etiqueta[:]] directiva [operandos] [; comentario]

Si la d irectiv a tiene v ario s o p eran d o s, e sto s se sep aran en tre sí p o r una


c o m a (,). E n el c a m p o d e los o p eran d o s, se utilizan con stan tes, sím bolos y
expresion es. L o s c a m p o s in d icad o s en tre co rch etes son opcionales.

L a tabla 4 .1 3 m u e stra las d irectiv as m á s utilizad as, que se estu d ian en


este a p a rtad o . El listad o co m p le to d e las d irectiv as a d m itid a s p o r el en sam ­
b lad or M PA SM , está en e l a rch iv o d e a y u d a d e d ich o e n sam b lad o r, disponi­
ble en el sitio w eb d e M icroch ip Technology.

T a b la 4.13 Directivas m ás utilizadas por el ensamblador M PA SM de los PIC.

D irectivas d e uso general


O peración que s e desea realizar Directivas
D efinir el m icrocontrolador y el sistem a d e num eración list, processor, radix
Incluir u n archivo e n el cue rp o d e l program a fuente (por ejem plo, un
#include
archivo .in c con la defin ición d e simtx>Tos)
D e fin ir sím bolos equ, set,
A siqnar u n valor al seudocontador d e program a org
Term inar el program a fuente end
D irectivas que se u sa n e n la codificación relocalizable
O p eración q u e s e desea realizar Directivas
Indicar el inicio d e un bloque d e instrucciones code
Indicar el inicio d e un bloque de datos udata, udata shr
R eserva r e spa cio d e m em oria de datos res
Indica r el alcance d e lo s sím bolos global, extern
S eleccionar una pág ina d e la m em oria de program a pagesel
Seleccionar un banco d e la memoria de datos banksel, bankisel
116 — Microcontroladores PIC

4 .3 .3 .1 D irectivas d e u so g e n e ra l

L as d irectiv as d e u so gen eral las em p lean casi to d o s los p ro g ra m a s en len­


guaje en sam b lad or. C o n estas d irectiv as s e in stru ye al en sam b lad o r sobre:

• C u ál es el m icrocon trolad or PIC p ara el que se escribe el program a.

• C u ál es el sistem a d e n u m eración q u e s e utiliza p o r defecto.

• C u ál es el arch iv o que contiene las definiciones d e los sím bolos d e regis­


tros y bits del m icrocon trolad or em pleado.

• C u áles so n los sím bolos que s e utilizan para d en om in ar cad a registro de


p rop ósito general y los bits em p lead os p o r el p rog ram ad o r.

• C uál es la dirección d e la m em o ria d e p rog ram a a partir d e la cu al el en­


sam b lad or d eb e cod ificar las instrucciones del program a.

Directivas list, processor y radix

L a sin taxis d e la d irectiv a list (o p cion es d e listad o) es:

list [opción 1][, o p ció n 2 ][,...]


L a d irectiv a list activ a la gen eració n del a rch iv o d e listad o (.lst) y co n ­
trola su form ato . Sin e m b arg o , las o p cio n es m ás u tilizad as d e esta directiva
n o g u a rd a n relación c o n el fo rm ato del a rch iv o d e listado, sin o c o n el control
d el ensam blaje. Estas op cion es s e m u estran en la tabla 4 .1 4 . El ejem plo 4 .2 7
ilustra c ó m o u tilizar esta d irectiva.

T a b l a 4 .1 4 Algunas opciones posibles de la directiva list.

O pción Significado
Inform a d e l tip o d e m icrocontrolador. E jem plo: p = 16f873 inform a al
p = tipo_procesador ensa m blado r que e l m icrocontrolador es un PIC 16F873. E sta opción no
tie n e ningún valor supuesto p o r defecto.
Inform a d e l sistem a d e num eración que se utiliza e n el program a al es­
c rib ir una constante num érica (decim al: DEC, hexadecim al: H EX. octal:
r = sistem a num eración
O C T). Ejem plo: r = DEC. Si no se especifica la opción r. se presupone
q u e el sistem a de num eración es el hexadecim al.
Especifica el form ato d e l archivo hexadecim al (hexadecim al d e 8 bits
estándar: INHX8M , hexadecim al d e 8 b its separado: IN H X8S, hexade-
f = form ato_hex d m a l extendido a 32 bits: IN H X 3 2 ) resultante del ensam blaje absoluto.
Ejem plo: f = INHX8M . Si n o se especifica la opción f, el archivo hexa­
d ecim al que se g e n e ra es e l hexadecim al d e 8 b its estándar.

E jem plo 4.27

El ensam blador M PASM supone p o r de fe cto que la s constantes num éricas están escritas con el sistem a
Repertorio d e instrucciones y program ación en lenguaje ensam blador— 117

de num eración hexadecim al y q u e el archivo hexadecim al que pue de gen era r el ensam blador te n d rá el
form ato hexadecim al d e 8 bits estándar d e Intel. Por lo tanto, s i no se desea ca m b ia r estos parám etros,
sólo es necesario especificar en la d ire ctiva list el tipo d e m icrocontrolador. Si se tra ta d e un PIC 16F873,
la línea d e program a con la directiva es:
list p = 16f873
H ay que recordar que la palabra lis t se d e b e e scrib ir al m enos a p a rtir d e l segu ndo espacio d e la linea,
para que n o s e confunda con una etiqueta, en cuyo caso se produciría un m ensaje d e error, p ue s list es
una palabra reservada d e l lenguaje.

O tra form a d e d e cla ra r el tipo d e m icro co n tro la d o r y el sistem a d e n u ­


m e ra ció n que se utilizará en la escritu ra d e exp resion es es, resp ectivam en te,
c o n las d irectiv as processor y radix. Su sin taxis es:

processor tipo.procesador
radix siste m a jiu m e ra ció n

El ejem p lo 4 .2 8 ilu stra c ó m o u s a r e sta s d o s directivas.

E jem plo 4.28

S e d e se a d e cla ra r que el m icrocontrolador que e je cutará el program a que se está elaborando es un


P IC 1 6 F 8 4 A y que en el program a se utiliza el sistem a d e num eración decim al para escribir la s constantes
num éricas.
H ay d o s fo rm a s d e hacer e stas d e d ara cion es. L a prim era utiliza la s directivas processor y list:
processor 16f84a
ra d ix dex

L a segunda form a es m ediante la d ire ctiva list:


lis t p = 16f84a, r = dec

Si e n el p ro g ra m a s e escrib en co n sta n te s sin esp ecificar cu ál es el siste­


m a d e n u m eració n , el en sam b lad o r co n sid e ra q u e está n escritas en el sistem a
d e n u m eración d eclarad o en la d irectiv a radix o e n la op ción r d e la directiva
list escrita an tes d e las constantes.

E jem plo 4.29

El siguiente segm ento de program a (inspirado en uno sim ilar que se ofre ce e n la ayuda del ensam blador
M PASM ), ilustra có m o se in terpreta el valor d e las constantes en relación con la s directivas radix y list.

list r = dec : A p a rtir d e a qu i, la s constantes son decim ales, si n o se


; declara otra cosa.

m ovlw 50H ; Este 5 0 e s hexadecim al.


m o vlw 0x50 ; O tra fo rm a d e d e cla ra r el hexadecim al 50.
118 — Microcontroladores PIC

m o vlw 500 ; Este 50 e s octal.


m ovlw 50 ; Este 50 e s decim al, pues no se especifica en qué
; sistem a d e num eración está escrito.

radix o ct ; A partir d e a qu i, la s constantes son octales, si no se


; de cla ra o tra cosa.

m o vlw 50H ; Este 50 e s hexadecim al.


m o vlw 0x5 0 ; O tra form a d e declarar el hexadecim al 50.
m ovlw .50 ; Este 50 es decim al.
m o vlw 50 ; Este 50 es octal. p ue s no se especifica e n qué
; sistem a d e num eración está escrito.

radix hex ; A partir d e aquí, la s constantes son hexadecim ales, si n o se


; declara o tra cosa.

m ovlw . 50 ; Este 5 0 es decim al,


m ovfw 500 ; Este 50 e s octal.
m ovlw 50 ; E ste 5 0 e s hexadecim al, pues no se especifica en qué
; sistem a d e num eración está escrito.

Directivas equ y set

L a sin taxis d e las d irectiv as equ (definir una co n stan te) y set (definir una
variab le) es:
sím bolo equ expresión
sím bolo se t expresión
E stas d irectiv as asign an el v alo r d e la expresión al sím bolo. L a diferencia
en tre ellas está e n q u e el v alo r d e u n sím b olo definido m edian te la directiva
equ n o p u ed e ser m od ificad o p o steriorm en te p o r el en sam b lad or; e n cam bio,
si el sím bolo se define c o n la d irectiv a set, su v a lo r p u e d e ca m b ia r e n el trans­
cu rso del ensam blaje del p rog ram a.

E s im p ortan te n o con fu n d ir el c a rá c te r con stan te o variable q u e o to rg an


las d irectiv as equ y set al sím bolo, a los efectos del ensam blaje, c o n el signifi­
c a d o que p u ed a ten er el sím b olo para el p ro g ra m a d o r d u ran te la ejecución
del p ro g ram a. P o r ejem plo, se p u ed e defin ir u n re g istro d e p rop ósito general
m edian te una d irectiv a equ (lo cu al lo define c o m o co n sta n te d u ra n te el en ­
sam blaje), au n q u e el v alo r q u e s e alm ace n a e n el reg istro cam b ie d u ran te la
ejecución del p ro g ram a (es u n a variab le e n la ejecución d el p ro g ram a).
Repertorio de instrucciones y program ación en lenguaje ensam blador — 119

L a d irectiv a equ s e utiliza co m ú n m e n te p a ra definir sím bolos q u e se re­


fieren a asp ecto s in varian tes del h a rd w a re del m icro co n tro la d o r, co m o , por
ejem plo, los n o m b res d e los reg istro s d e fu nciones especiales y s u s direccio­
nes e n la m em o ria d e d ato s. L a d irectiv a equ tam bién s e u sa p ara n om in ar
d a to s con stan tes.

E n p ro g ra m a s elab o rad o s p ara su ensam blaje ab so lu to (d o n d e n o s e usa


el en la z ad o r o lin ker), la d irectiv a equ se em plea p ara n o m in ar los registros d e
p rop ósito gen eral que s e utilicen en el p ro g ra m a y asig n ar a estos n o m b res la
d irección R A M corresp o n d ien te. Si el p ro g ra m a se elab ora p ara ensam blaje
relocalizable (d o n d e s e em p lea el e n la z a d o r), n o se reco m ien d a u sar este m é­
todo p ara defin ir registros d e p rop ósito gen eral; e s preferible u sar en su lu gar
la d irectiv a res d e n tro d e u n bloque d e d a to s d e cla ra d o c o n las d ire ctiv a s udata
o udata_shr.

E jem plo 4.30

El siguiente segm ento d e program a ilustra el uso d e la s directivas equ y set.

REG1 equ 20h REG1 e s el registro 20h d e la m em oria d e datos.


REG2 equ 21 h R EG 2 e s el registro 21 h d e la m em oria d e datos.
DATO set .15 DATO e s un d ato cuyo valor inicial es 15.

m ovlw DATO
m ovwf REG1 ; E n el registro REG1 se alm acena 15.

DATO++ ; S e m odifica el v a lo r del sím bolo DATO.

m ovlw DATO
m ovwf REG2 ; E n el registro R EG 2 se alm acena 16.

Si DATO se define con una directiva equ, entonce s en la lín e a donde aparece la expresión DATO ++, que
ntenta m odificar e l sím bolo DATO, el ensam blador genera u n m ensaje d e error.

Directiva #include

La sintaxis d e la d irectiv a # ¡n c lu d e (incluir u n arch ivo fuente adicional) es:


#include archivo
flin clud e “ archivo"
#include <archivo>
120 — Microcontroladores PIC

E n esta d irectiva, archivo es el n o m b re co m p leto d e u n a rch iv o d e texto.


Si el n o m b re d el arch iv o contiene esp acios en blanco, en to n ces s e d eb en utili­
z a r las com illas (“archivo") o los co rch etes (<archivo>).

L a d irectiv a #include inserta el texto com p leto del a rch iv o especificado,


en la p o sición q u e o c u p a la d irectiv a d en tro d el p ro g ra m a fuente.

La d irectiv a #incluye se u sa co m ú n m e n te p a ra in sertar en el p ro g ra m a


fuente el a rch iv o d e definición (.inc) q u e con tien e las definiciones d e los n o m ­
bres d e los registros d e funciones especiales y bits del m icro co n tro la d o r p re­
v iam en te d eclarad o en las d irectiv as list o processor. A sí, el u su ario n o tiene
necesid ad d e d e c la ra r esos n o m b res en el p ro g ra m a fuente.

E jem plo 4.31

A l com enzar la escritura d e un program a fuente e n lenguaje ensam blador, es usual d e cla ra r el tip o de
procesador y definir lo s nom bres d e lo s registros especiales y b its y su s direcciones. P a ra e llo se utilizan
la s directivas list e # in tíu d e . E l siguiente segm ento d e program a ilustra cóm o hacerlo si el m icrocontrola­
d o r seleccionado es el P IC 1 6F 873 y su archivo d e definición se nom bra P16F873.INC .
lis t p = p16f873
#include p16f873.inc

Directiva org

La sin taxis d e la d irectiv a org (o rig en d el p ro g ra m a ) es:


[etiquetajorg expresión
E sta d irectiv a asign a al se u d o co n ta d o r d e p ro g ra m a del en sam b lad or
el v a lo r d e la exp resión , es decir, h ace q u e las in stru ccion es q u e sigu en a la
d irectiv a sean en sam b lad as a p artir d e la d irección d a d a p o r el v a lo r d e la e x ­
presión. Si la d irectiv a u sa u n a etiqueta, ésta recibe el v a lo r d e la expresión .

L a d irectiv a org s e u sa cu a n d o s e q u iere co lo ca r u n p ro g ra m a o una p o r­


ción d e p ro g ra m a a p artir d e una d irección ab solu ta d eterm in ada.

Ejem plo 4.32

La directiva org se usa com únm ente p a ra indicarle al ensam blador la s direcciones d e m em oria corres­
pondientes al re se t (dirección 0) y al vector d e interrupciones (dirección 4). El siguiente segm ento de
program a ilustra esta situación,
lis t p = p16f873
# in d u d e p16f873.inc

org 0 ; El seudo P C se pone e n 0.


m ovlw high PP ; Esta instrucción se coloca en la dirección 0.
Repertorio d e instrucciones y program ación e n lenguaje ensam blador — 121

m ovw f PCLATH ; Esta instrucción se coloca en la dirección 1.


goto PP ; E sta instrucción se coloca e n la dirección 2.

org 4 ; El seudo P C se p o n e en 4.

A q u í se colocan la s instrucciones de la subrutina d e atención a interrupciones,


que s e ensam blan a partir d e la dirección 4.

A h o ra s e quiere com enzar el program a principal (P P ) a partir d e la dirección 800h

3P: org 800h ; El seudo P C se pone en 800h.

A partir d e aqu í se escrib e e l program a principal

Directiva end

La sin taxis d e la d irectiv a end (fin d el p ro g ra m a fuente) es:


end
C o n esta d irectiv a se indica al en sam b lad o r q u e finalice el ensam blaje
d el p ro g ram a fuente. La d irectiv a end o cu p a la últim a línea del p ro g ra m a
fuente: el en sam b lad or ig n ora las líneas d e p ro g ra m a q u e sigu en a la línea
d o n d e está la d irectiv a end.

4 .3 .3 .2 Directivas utilizadas en la codificación relocalizable

Las d irectiv as q u e s e estu d ian en este a p a rta d o son las m á s utilizadas


en los p ro g ra m a s escrito s segú n la m od alid ad d e cod ificación relocalizable.
En e sto s p ro g ra m a s, la trad u cció n al lenguaje d e m áq u in a la co m ie n z a el e n ­
sa m b la d o r y la co n clu y e el en lazad o r, pu es e n el p ro g ra m a fu en te n o se e sp e­
cifican, en gen eral, direccion es ab solu tas, y e s el en la z a d o r el q u e colo ca las
direccion es d e in stru ccion es y datos.

C on estas d irectiv as se p u ed e:

• Indicar sim bólicam ente el inicio d e bloques d e instrucciones o d e datos.

• Reservar espacio en la m em oria d e datos para las variables del programa.

• Indicar el alcance d e los sím bolos, es decir, sím bolos globales y externos,
en p royectos co n vario s arch ivos fuente.
Repertorio de instrucciones y program ación en lenguaje ensam blador — 123

Directivas udata, udata_sh r y res

L a s d irectiv as udata (co m en zar u n a secció n d e d a to s n o iniciados) y uda-


ta_shr (co m e n z a r u n a secció n co m p artid a d e d a to s n o iniciados) tienen la sin­
taxis siguiente:
[etiqueta] udata [direcdón_R A M ]
[etiqueta] udata_shr [dirección_R AM ]

E stas d irectiv as p erm iten d e cla ra r el inicio d e secciones d e d ato s. Se


p u ed e esp ecificar u n a d irección d e co m ie n z o d e la secció n en la m em o ria de
d atos m ed ian te el c a m p o dirección R AM ; en c a so co n trario , el en la z a d o r decide
la ubicación d e la sección.

L a diferencia en tre las d irectiv as es la siguiente: udata se usa p ara sec­


ciones d e registros que están en u n ú n ico b an co d e registros d e la m em oria
d e d ato s; udata_shr s e usa p ara d e cla ra r secciones q u e co m p a rte n m ás d e un
banco d e m em o ria. P o r ejem plo, en un P IC 16F873, los registros q u e o cu p an
las d ireccion es 20h a 7F h del b an co 0, e s tá n rep etid os en d ireccion es sim ilares
del banco 2 (figu ra 3 .1 1 ); p o r lo tan to, al referirse a ese con ju n to d e registros
h a y q u e u sar la d irectiv a udata_shr e n lu g a r d e udata.

El térm in o "d a to s n o in iciad o s" significa q u e a los d a to s d e la secció n n o


se les co lo ca u n v alo r inicial d eterm in ad o e n el m o m e n to d e definirlos. Para
definir d ato s n o iniciados se usa la d irectiv a res.

L a sintaxis d e la directiva res (reservar m em o ria d e datos) e s la siguiente:

[etiqueta] res cantidad_m em oria

E sta d irectiv a h ace av a n z a r el c o n ta d o r d e localizaciones en u n valor


igual al p a rá m e tro cantidad_m em oria. Sirve p ara s e p a ra r esp acio d e m em o ria
d e d ato s, sin asig n ar u n v a lo r inicial al esp acio sep arad o . S e u sa d e n tro d e las
secciones d e datos d eclarad o s c o n las d irectivas udata y udata_shr.

Ejem plo 4 .34

3 siguiente segm ento d e program a ilustra el uso d e la s directivas udata sh r y res.


udata_shr
REG1 re s 1
REG2 re s 1
Se declara una sección com partida d e datos n o iniciados, con lo s sím bolos REG1 y R EG 2 a lo s que
se le s reserva una celda d e m em oria para cada uno. S e deja que el enla za d o r asigne la s direcciones a
estos registros.
124 — Microcontroladores PIC

Directivas global y extern

La sin taxis d e las d irectiv as global (e x p o rta r u n sím bolo) y extern (declarar
un sím bolo definido extern am en te) es:
global sím bolo [, sím bolo ...]
extern sím bolo [, s ím b o lo ...]

E stas d o s d irectiv as se u san cu a n d o s e tienen v a rio s m ó d u lo s p ara en­


la z a r y h a y sím bolos d efin idos en u n m ó d u lo pero q u e se u san en o tro . L a d
rectiva global d eclara sím bolos definidos e n el m ó d u lo actu al p e ro q u e debe
e s ta r d isp onibles p a ra o tro s m ód u los. L a d irectiv a extern d e cla ra sím bolos que
se u sa n en el m ó d u lo actu al p ero q u e h an sid o d efin idos en o tro m ó d u lo (en
el q u e h an sid o d eclarad o s c o m o globales).

E jem plo 4.35

S e tiene un proyecto con dos m ódulos. El prim er m ódulo contiene el program a principal e n e l archivo
pp.asm . En el segu ndo m ódulo están la s subrutinas llam adas desde el program a principal: este m ódulo
está e n e l archivo sr.asm . E ntre la s subrutinas definidas e n este m ódulo está la subrutina Dem ora, la
cual produce una dem ora proporciona! al valor colocado e n el registro nom brado con e l sím bolo REG.
En el program a principal se hace una llam ada a esta subrutina y se le pasa e l valor d e la dem ora en el
registro REG.
Para que el proceso d e ensam blaje y enlace transcurra sin errores, en e l m ódulo del program a principal
se declara e l sím bolo D em ora com o externo, se define el sím bolo R E G com o parte d e una sección de
datos, y se declara com o un sím b o lo global. Por o tra parte, en el m ódulo de la s subrutinas, el sím bolo
D em ora se define (com o una etiqueta) de n tro d e una sección d e program a y se declara com o sím bolo
global, m ientras que el sím bolo R E G se declara externo.
E n e l m ódulo del program a principal (archivo pp.asm ):

; M ódulo con el program a principal.


; Ilustrando la s directivas global y extern

lis t p = 16Í873
#include p16f873.inc

udata_shr
REG re s 1 ; S e define e l sím bolo REG.

global REG ; E l sím b o lo RE G se declara global e n este m ódulo


; y externo e n e l m ódulo d e la s subrutinas.

extern D em ora ; El sím bolo D em ora se declara externo e n este m ódulo


; y se define y declara g lo b a l en el m ódulo de la s subrutinas.
Repertorio de instrucciones y program ación en lenguaje ensam blador — 125

: En una d e la s secciones del program a fuente (p o r ejem plo, e n la sección Program ) está
: la llam ada a la subrutina Dem ora:

Program code

m ovlw 35h
m o vw f REG
cali Dem ora

end

En el m ódulo d e la s subrutinas (archivo sr.asm ):

M ódulo con la s subrutinas


: ilustrando la s directivas global y extern.

lis t p = 16Í873
tfinclude p16f873.inc

g lo b a l D em ora ; El sím bolo D em ora se de cla ra global e n este m ódulo


; y externo e n el m ódulo d e l program a principal.

extern REG ; El sím bolo RE G se declara exte m o e n este m ódulo


¡ y global e n el m ódulo de! program a principal.

: En una d e la s secciones del program a fuente (p o r ejem plo, en la sección Program ) está
. definida la subrutina Demora:

Program code

Demora:
decfsz REG.1
g oto Dem ora
return

end
126 — Microcontroladores PIC

Directivas pagesel, banksel y bankisel

L a sin taxis d e las d irectiv as pagesel (selección d e p ág in a d e m em o ria),


banksel (selección d irecta d e b an co d e registros) y bankisel (selección indirecta
del b an co d e registros) es:
pagesel etiqueta
banksel etiqueta
bankisel etiqueta

\a d irectiv a pagesel p ro d u ce el có d ig o n ecesario p a ra seleccion ar la p á ­


gina d e la m em o ria d e p ro g ra m a d o n d e se e n cu e n tre la etiq u eta esp ecificad a
e n la d irectiv a. Esta d irectiv a in tercala en el p ro g ra m a in stru ccion es nece­
sa ria s p ara m od ificar con v en ien tem en te el reg istro P C L A T H . Si el m icro­
co n tro la d o r tiene sólo una p ág in a d e m em o ria d e p ro g ra m a , la d irectiv a no
g e n e ra n in g ú n cód igo.

La d irectiv as banksel y bankisel p ro d u ce n el có d ig o n ecesario p a ra se­


leccion ar el b an co d e reg istro s d o n d e s e en cu en tre la etiq u eta especificada
en la d irectiv a, segú n s e quiera u sar d ireccio n am ien to d irecto o indirecto
resp ectiv am en te. L a d irectiv a banksel eq u ivale a in te rca la r in stru ccion es para
m an ip u lar con v en ien tem en te los bits R P1 y RPO del reg istro STA TU S, m ien­
tras q u e bankisel m anip ula el b it IRP d e e s e registro p ara d a rle el v a lo r a p ro ­
piado.

______________________________ _____________________________________________________ E jem p lo 4.36

El siguiente program a ilustra el uso d e la s directivas pagesel, banksel y bankisel.

list p=16f873 t
#include p16f873.inc

; D atos constantes:
D A T 01 equ 0x55
D A T 0 2 equ .10

; R e gistro s de la m em oria d e datos:


udata shr
REG1 re s 1 ; REG1 e s el registro 20h d e la m em oria de datos.
R EG 2 re s 1 ; R E G 2 e s el registro 21 h d e la m em oria d e datos.

¡ Program as:
R st_ vector code 0
pagesel PP ; S e selecciona la página don de está PP
goto PP ; garantiza ndo u n salto a l lu g a r correcto.
Repertorio de instrucciones y program ación e n lenguaje ensam blador— 127

Prog_Principal code
PP:
pagesel SR utina : S e selecciona la página donde está la subrutina
cali SR utina ; garantizando una llam ada correcta.

Se ope ra con los registros T R IS B y P O R T B usando direccionam iento directo:


banksel TRISB S eleccionar el banco 1 p ue s T R IS B está e n e s e banco
asegurando el direccionam iento correcto d e TRISB.
clrf TR IS B S e ope ra con TRISB.
banksel PO RTB S e vu e lve al banco 0, pues P O R T B está e n ese banco.
m oví PO R TB, D A T 01 ; S e ope ra con PO RTB.

S e ope ra con REG1 usando direccionam iento indirecto.


m ovlw REG1
m ovw f FSR S e carga la dirección d e REG1 e n FSR.
bankisel REG1 S e selecciona el banco don de está REG1
m o vlw D A T 02 S e escrib e un 10 en
m o vw f INDF REG1 usando direccionam iento indirecto.

SRutina:

Aquí va n la s instrucciones d e la subrutina.

retum

end

4 3 .4 Macroinstrucdones

L a s m a cro in stru cd o n es o sim p lem en te m acros, son in stru ccion es defini­


das p o r el u su ario sob re la base d e las instru ccion es del m icrocon trolad or
y las d irectiv as d el en sam b lad or. U n a v e z h a sid o definida u n a m acro , s e la
puede llam ar o in vocar en e l p ro g ra m a fuente. U na m acroin stru cció n s e defi­
ne co n la sigu iente sintaxis:
x m b r e jn a c r o m acro (arg_def1, a rg _ d e f2 ,...]
[ local etiqueta |, etiqueta, e tiq u e ta ,...) ]

C uerpo d e la m acro

endm

donde nom bre_m acro es el sím bolo que d a n o m b re a la m acro in stru cció n y
arg_def1, arg_def2, etc. son los arg u m en to s opcionales con los q u e se define la
128 — Microcontroladores PIC

m acro . Estos a rg u m e n to s d e definición so n sím bolos u tilizad os en el cu erp o


d e la m acro .

L a p rim era línea d e la definición d e u n a m acro in stru cció n está co n s­


tituid a p o r la directiva m acro, co n la q u e se d eclaran el n om b re d e la m a cro
(nom bre_m acro) y su s arg u m en to s (arg_def1, arg_def2, etc), si los h ay. L a últim a
línea la o c u p a la d irectiv a endm, co n la q u e se le co m u n ica al en sam b lad o r que
la m a cro h a lleg ad o a s u fin. P o r cad a directiva m acro d eb e h ab er u n a directiva
endm.
El cu e rp o d e la m a c r o está co n stitu id o p o r el con ju n to d e instru ccion es
y d irectiv as q u e p ro g ra m a n el a lg o ritm o q u e el u su ario ha d ecid id o p ro g ra ­
m ar c o m o una m acroin stru cció n . E n el cu e rp o d e la m a c r o se u san , form an do
p a rte d e los o p eran d o s d e in stru ccion es y d irectiv as, los a rg u m e n to s d eclara­
d o s en la d irectiv a macro.
Es co m ú n q u e en el cu e rp o d e la m a cro se u tilicen etiquetas co n carácter
local. E stas etiquetas d eb en s e r d eclarad as en el cu e rp o d e la m a cro co n una
d irectiv a local. Ú n a v e z q u e una etiq u eta s e h a d e cla ra d o c o m o lo cal, n o im ­
p o rta si existe o tra c o n el m ism o n o m b re fuera d e la m acro.

P ara in v o ca r una m a cro , basta c o n escribir su n o m b re en una línea del


p ro g ra m a y esp ecificar en su caso los arg u m e n to s c o n los q u e se h a d e in v o ­
c a r la m acro , tal c o m o s e indica a continuación:

no m b re.m a cro [arg1, a rg 2 ,...]

Al in v o ca r u n a m a cro , el en sam b lad o r in serta el cu e rp o d e la m a cro en


el p ro g ra m a fuente, en el lu g ar d o n d e h a sid o in v o cad a. A l d esp legar in stru c­
cion es y d irectiv as, el en sam b lad o r utiliza los a rg u m e n to s a rg l, arg2, ... para
su stitu ir los sím bolos em p lead o s co m o arg u m e n to s en la definición d e la m a­
cro . Los arg u m en to s co n los q u e se in v o ca a una m a cro p u ed en ser sím bolos
o expresion es.

_ _ _ _ _ ________________________________________________________________ E jem plo 4.37

En el siguiente program a se define la m acro C o nvierte, q u e se invoca d o s vece s e n e l tran scurso del
program a. Esta m acro recibe u n dígito hexadecim al e n un registro nom brado H EXA y entrega e n otro
registro, nom inado ASCII, el equivalente AS C II d e l dígito. P o r ejem plo, s i H EXA = OAh, entonces AS C II =
41 h. La conversión a AS C II se realiza sum ando 30h al dígito hexadecim al si éste es m e n o r o ig ual que 9
o sum ándo le 37h si e l d íg ito hexadecim al es m ayor que 9.

list p=16f873
#include p16f873.inc
Repertorio de instrucciones y program ación en lenguaje ensam blador — 129

D efinición d e m acros:

Esta m acro convierte a AS C II el d íg ito hexadecim al (0 a F) d a d o en


ef registro denom inado HEXA. E l código AS C II se entrega e n el registro denom inado ASCII.

Convierte m acro H E X A , A S C II; D e claració n d e la m acro.


local sum a30, sum a37, fin ; E tiquetas locales.
m ovf HEXA, W E n W el d íg ito hexadecim al.
sublw 9 W > 9 ? (Se afecta STATUS<C>).
movf HEXA, W En W el dígito hexadecim al (no se afecta S T A T U S O ).
btfsc STATUS, C Sí (C = 0), su m a r 37h a HEXA.
goto sum a30 N o (C=1), su m a r 30h a HEXA.
5uma37:
addlw 37h
goto fin
5uma30:
addlw 3Qh
%v.
m ovwf ASCII El resultado se deposita e n el registro ASCII.
endm Fin d e la m acro.

. Registros d e la m em oria d e datos:

udata_shr
HEXA1 res 1
HEXA2 res 1
ASCII1 res 1
ASCII2 res 1

Program as

Rst_vector co d e 0

pagesel PP ; Se selecciona la pág ina don de está PP


g oto PP ; garantizando un salto al lu g a r correcto.

:>rog_Principal co d e 0x800

PP:
m ovlw 9
m ovw f HEXA1
m ovlw OAh
m o vw f HEXA2

C onvierte HEXA1, ASCII1 ; S e invoca la m acro Convierte. E l ensam blador


; inserta en este p u n to la s instrucciones d e la m acro.
1 3 0 — Microcontroladores PIC

nop
i
C onvierte H E XA2. A S C II2 ; S e invoca o tra ve z la m acro Convierte. E l ensam blador
; inserta e n este punto, d e nuevo, la s instrucciones d e la
; m acro.
i

nop
g oto $ ; La zo infinito,

end ; Fin del program a.

4 .3 .5 Organización de un program a en lenguaje ensam blador

A u n q u e p ara o rg an izar u n p ro g ra m a escrito e n lenguaje en sam b lad or


n o h ay reglas rígidas, es recom en d ab le segu ir un o rd e n co m o el siguiente:

1. Definir el procesador y sus símbolos m ediante las directivas list e #indude.

2. Si se v an a utilizar m acroinstrucciones, escribir la definición d e las que se


v a y an a em plear e n el p rog ram a.

3. Definir los sím bolos c o n los q u e se representarán datos constantes, m e­


diante las directivas equ y set

4. Definir el uso d e la m em oria d e datos, e s decir, h ay que definir los sím bo­
los que se em p lean e n el p rog ram a p a ra rep resen tar registros d e propósi­
to general d e la m em o ria d e datos y su s direcciones.

5. Escribir el cu e rp o del p ro g ram a principal, que, en general, com ien za por


iniciar las variables que req uieran d e u n v a lo r inicial determ in ad o (por
ejem plo, cero).

6. Escribir las subrutinas, si las hay.

7. T erm in ar el p rog ram a fuente c o n la directiva end.

P u ed e o b serv arse q u e la definición d e sím bolos y s u s v a lo re s, ya sean


d a to s o d ireccion es, preced e a las in stru ccion es d el p ro g ram a.

L a form a d e definir la u b icación de las in stru ccion es en la m em o ria de


p ro g ra m a y los d ato s e n la m em o ria d e d ato s, d e p e n d e d e si la codificación
del p ro g ra m a fuente será ab solu ta o relocalizable.

En la cod ificación ab solu ta, el en sam b lad or d eb e ten er toda la inform a­


ció n necesaria p ara cod ificar co m p letam en te el p ro g ra m a fuente. Ello signi­
fica que d eb en defin irse to d as las d ireccion es que se utilicen en el p ro g ra m a
Repertorio de instrucciones y program ación en lenguaje ensam blador — 131

fuente. Es decir, d esd e u n inicio deben q u e d a r d efin idas las d ireccion es don­
d e com ien zan los bloques d e in stru ccion es del p ro g ra m a , así co m o las d irec­
cion es d e los registros d e p ro p ó sito gen eral q u e s e utilicen en el p ro g ra m a .
La definición d e las d ireccion es del p ro g ra m a se hace co n d irectivas org. Las
direccion es d e los registros se esp ecifican c o n la d irectiv a equ.

E n la cod ificación relocalizable, el en sam b lad o r h ace una codificación


incom pleta del p ro g ram a fuente, pu es n o se especifican todas las direccion es
de d a to s e in stru ccion es. El en lazad o r, sobre la base del m o d elo del m icro ­
co n tro lad o r seleccionad o, u b ica finalm ente las in stru ccion es y los d ato s. En
este caso , el cu e rp o d el p ro g ra m a se p u ed e o rg an izar en secciones, cad a u n a
d e ellas co m en zan d o co n una d irectiv a code. Para alg u n as d e e sta s seccio­
nes, co m o p o r ejem p lo las corresp o n d ien tes al v e c to r d e re se t y al v e cto r d e
in terru pcion es, que d eb en q u e d a r ub icadas e n lu g ares fijos d e la m em o ria
d e p ro g ra m a , s e especifica la dirección d e co m ien zo ; p a ra o tra s secciones,
que pu ed en q u e d a r u b icad as e n cu alq u ier lu g a r d e la m em o ria d e p ro g ram a,
no se especifica su dirección d e co m ien zo y se deja al en la z a d o r la lab or d e
ubicarlas en la m em o ria. C on la m em o ria de datos su ce d e alg o parecid o. En
este caso , en el p ro g ra m a fuente solam en te se d eclaran los n o m b res d e los
registros que s e u san en el p ro g ram a y se reserv a e sp a cio d e m em o ria sin es­
pecificar direcciones. E sto se h ace co n las d irectiv as udata, udata_shr y res.

Los ejem plos 4 .3 8 y 4 .3 9 m u e stra n la e stru ctu ra re co m e n d a d a p ara los


p rog ram as fuente que se v an a en sam b lar co n cod ificación ab solu ta y codifi­
cación relocalizable, resp ectivam en te. S e reco m ien d a al lector q u e los analice
detenidam ente.

E jem plo 4.38

El program a siguiente m uestra cóm o organizar el program a fuente e n lenguaje ensam blador cua n d o se
jtilic e codificación absoluta.

lis t p=16f873 ; Se declara e l m icrocontrolador que se va a utilizar


#include <p16f873.inc> ; y se definen sus variables.

Definición d e constantes:

DAT01 EQ U 0x1 ;
D AT02 EQ U 0x2 ;

Definición d e vanables:

*_ te m p equ 0x2 0 ; Variable usada para sa lva r W.


s ta tu s je m p equ 0x21 ; Variable usada para salvar STATUS.
132 — Microcontroladores PIC

X equ 0x22
Y equ 0x23

C u e rp o del program a:

org 0x000 ; D irección d e l vector d e reset.


m ovlw high PP ; P reparar el salto al program a principal,
m ovw f PCLATH ; garantizando la selección de la página correcta.
goto PP ; Saltar a la dirección donde comienza el programa principal.

org 0x004 D irección del vector d e interrupciones.


m ovw f w je m p Salvar el contenido actual d e W.
m ovf S T A T U S ,W C opiar el contenido actual d e STATUS e n W,
b cf STATUS. RPO asegurar la selección del banco 0
m ovwf status J e m p y salvar el contenido d e STATUS

; aquí se ponen las instrucciones de

bcf STATUS, RPO A se gurar la selección d e l banco 0.


m ovf sta tu s J e m p , W R ecuperar la copia d e STATUS
m ovwf STATUS y restituirla.
sw a pf w je m p , f R ecuperar la copia de W
sw apf w je m p , W y restituirla sin a lte ra r STATUS.
retfie R e to m a r desde la interrupción.

PP:
clrf X ; Iniciar variables.
clrf Y ; Iniciar variables.

A q u i se escriben instrucciones d e l |

m ovlw high SR1 ; Si SR1 está e n una página diferente,


m ovw f PCLATH ; garantiza r la selección d e la pág ina correcta
cali SR1 ; y llam ar a la subrutina.
i
; A q u i se escriben instrucciones del |
i
goto $ ; Ejemplo: lazo infinito para term inar el programa principal.

SR1: ; A quí com ienza la subrutina S R 1 .


i
; A q u i se escriben instrucciones d e 1.

m ovlw high SR2 ; E jem plo: lla m a r a SR 2 q u e está e n otra página,


m ovwf PCLATH ; garantiza r la selección d e la página correcta
cali SR 2 ; y llam ar a la subrutina SR2.
Repertorio de instrucciones y program ación en lenguaje ensam blador— 133

A quí se escriben instrucciones d e la subrutina SR1.

return ; R etom ar al program a principal desde S R 1.

SR2: ; A q u i com ienza la subrutina SR2.

: A quí se escriben la s instrucciones d e la subrutina SR2.

return ; R etom ar a la subrutina SR1 desde SR2.

end ; Fin d e l program a fuente.

E jem plo 4.39

El program a siguiente ilustra có m o organizar e l program a fu e n te e n lenguaje ensam blador cua n d o se


utilice codificación relocalizable.

lis t p=16f873 ; S e declara el m icrocontrolador que se va a utilizar


# in d u d e <p16f873.inc> ; y se de fin e n su s variables.

D efinición de constantes:

DAT01 equ 0x1 : Ejem plo.


D AT02 equ 0x2 ; Ejem plo.

Definición d e variables:

u d a ta .s h r
•_ te m p res ; V ariable usada para salvar W.
s a tu s je m p res ; V ariable usada para sa lva r STATUS.
< res : Ejem plo.
4 res ; Ejem plo.

Cuerpo del program a:

Rst_vector co d e 0 ; V ector de reset e n la dirección 0.

pagesel PP ; P reparar el salto al program a principal y


g oto PP ; sa lta r a la dirección donde com ienza.

r r vector code ; V ector d e interrupciones e n la dirección 4.

g oto S R Jnt ; S a ltar a la subrutina d e atención a interrupciones.


1 3 4 — Microcontroladores PIC

lntr_P rog co d e 5 ; Sección co n la subrutina d e atención a interrupciones


S R J n t:
m ovw f w _tem p ; Salvar el co n tenido actual d e W.
m ovf STATUS, W ; C opiar el contenido actual de STATUS en W,
bef STATUS, RPO ; asegurar la selección d e l b a n co 0
m ovw f s ta tu s je m p ; y sa lva r el co n tenido d e STATUS.

; Aquí se ponen la s instrucciones d e la subrutina d e atención a la interrupción.

bef STATUS, RPO ; A se gurar la selección d e l banco 0.


m ovf status tem p, W ; R ecuperar la copia d e STATUS
m ovw f STATUS ; y restituirla,
sw a pf w _tem p, f ; R ecuperar la co pia d e W
sw a pf w je m p , W ; y restituirla sin a lte ra r STATUS,
re tfie ; R etornar desde la interrupción.
«

Prog Principal co d e ; E n esta sección está el program a principal.


PP:
c lrf X ; Iniciar variables
c lrf Y ; Iniciar variables

A quí se escriben instrucciones d e l program a principal.

pagesel SR1 ; S e selecciona la página don de está S R 1.


cali SR1 ; S e llam a a la subrutina SR1.

A qui se escriben instrucciones del program a principal.

g oto S ; Ejem plo: la zo in finito para term in ar el program a principal.

S ubrutinas co d e ; E n esta sección están las subrutinas.


SR 1: ; A q u i com ienza la subrutina S R 1.

A quí se escriben instrucciones d e la subrutina SR1.

pagesel SR 2 ; Ejem plo: desde la subrutina SR1 se llam a


cali SR 2 ; a la subrutina SR2.

A quí se escriben instrucciones d e la subrutina S R 1 .

re tu m ; R etom ar al program a principal.

SR2: ; A quí com ienza la subrutina SR2.


f
; A q u i se escriben las instrucciones d e la subrutina SR2.
Repertorio de instrucciones y program ación e n lenguaje ensam blador — 135

retu m ; R etom ar a la subrutina SR1.

end ; Fin del program a fuente.

L as m acro in stru ccio n es y las su b ru tin as so n d o s valiosos recu rso s de


p ro g ram ació n q u e a y u d a n a lo g rar u n a a d e cu a d a e stru ctu ra m o d u lar del
p ro g ra m a fuente. A m b o s recu rso s p erm iten al p ro g ra m a d o r escrib ir u n d e­
term in ad o alg oritm o u n a so la v e z y utilizarlo to d a s las v e c e s q u e s e a nece­
sario, em p lean d o e n c a d a ocasió n arg u m en to s diferentes. Perm iten, ad em ás,
reducir el tiem p o d e p ro g ram ació n , facilitan la d etecció n d e e rro re s y hacen
que los p ro g ra m a s sean m á s fáciles d e in terp retar. L a diferencia fundam ental
en tre am b os recu rso s es q u e m ien tras las m acroin stru ccio n es se in vocan o
llam an d u ran te la etap a d e ensam blaje del p ro g ra m a fuente, las subrutinas
son llam ad as d u ra n te la fase d e ejecución del p ro g ram a.

El g ru p o d e in stru ccion es q u e definen una m acro in stru cció n n o ocup an


ningún esp acio en la m em o ria d e p ro g ram a p u esto q u e e s a s instru ccion es
so n u b icad as en m em o ria c o n la llam ad a a la m acro , lo cu al tiene lu g a r d u ­
ran te el ensam blaje del p ro g ram a fuente. C u a n d o el en sam b lad o r en cuen tra
una llam ad a a una m acroin stru cció n , in serta e n el p ro g ra m a fuente, e n el
lu g a r d e la llam ad a, las in stru ccion es q u e definen la m acro , c o n la sustitu ción
d e los a rg u m en to s d e definición co rresp o n d ien tes, si los h ay. A sí, la can tid ad
d e m em o ria d e p ro g ram a utilizad a au m en ta rá c o n el n ú m ero d e llam ad as. Si
una m a cro e s in vocad a u n cierto n ú m ero d e veces, su s in stru ccion es se inser­
tan e n el p ro g ra m a fuente c a d a v e z q u e se llam e, h acien d o así que cre z ca el
tam año d el p rog ram a.

L as su b ru tin as se definen u n a v e z y so n ub icadas p o r el ensam b lad or


o el en la z ad o r e n alg ú n lu gar d e la m em o ria d e p ro g ram a. L as su b ru tin as se
llam an d u ra n te la ejecución del p ro g ram a m ed ian te la in stru cción cali. El efec­
to d e una llam ad a a una su b rutina e s d eriv ar la ejecución del p ro g ra m a hacia
las in stru ccion es q u e form an la subrutina, ejecu tán d ose é sta s en el o rd e n que
establezca el alg oritm o p ro g ra m a d o e n la subrutina. El r e to m o al p rog ram a
d esd e d o n d e s e realizó la llam ada se h ace c o n u n a in stru cción retum o sim ilar.
La rep etición d e la llam ada a una su b rutina n o au m en ta el ta m a ñ o d el p ro ­
g ra m a e n cu a n to a c a n tid a d d e m em o ria que éste o cu p a , sino que, e n todo
caso, au m en ta el tiem p o d e ejecución del p ro g ra m a p o r el m a y o r n ú m ero de
instrucciones q u e se ejecutan.

L a ejecución d e u n a su b rutina requiere tres elem entos: la in stru cción de


llam ada, la in stru cción d e reto rn o y la pila. E l objetivo fu n d am en tal d e la pila
136 — Microcontroladores PIC

es a lm a cen ar la dirección d e r e to m o al p ro g ra m a d e sd e d o n d e s e llam ó a la


subrutina. Las in stru ccion es d e llam ad a y d e re to m o , q u e tienen q u e g u a rd a r
y e x tra e r d e la pila, añ a d e n u n cierto v alo r, en gen eral p o co significativo, al
tiem p o d e ejecución d e las instru ccion es q u e co n fo rm a n el cu e rp o d e la su­
brutina.

U n a ventaja adicional al trab ajar co n su b ru tin as e s q u e se p u ed en cons­


tru ir y u tilizar bibliotecas d e su b ru tin as. U n a biblioteca e s u n arch iv o que
co n tien e una colección d e p ro g ra m a s (sub ru tin as) sob re u n tem a. D urante
el p ro ce so d e ensam blaje, el en lazad o r to m a d e la biblioteca solam en te las
su b ru tin as q u e so n solicitad as y las in co rp ora e n el p ro g ra m a objeto.

1.a elección en tre u n a m acroin stru cció n o una su b rutina p a r a p ro g ra m a r


u n d eterm in ad o alg oritm o q u e form a p arte d e u n p ro g ra m a , e s u n a cuestión
q u e d ep en d e m u ch o d e los gu stos y p referen cias del p ro g ra m a d o r. N o obs­
tan te, e n los m icro co n tro lad o res, d o n d e e n gen eral n o ab u n d a la m e m o ria de
p ro g ra m a disponible, si el alg oritm o es llam ad o v arias veces en el p ro g ra m a ,
p u e d e s e r m ejor u tilizar su b ru tin as que m acroin stru ccio n es.

4 .4 Recursos disponibles para p ro g ram ar en el lengu aje ensam blador de


los m icrocontroladores PIC

P ara p ro g ra m a r ap licaciones e n en sam b lad o r sob re los m icro co n tro la­


d o re s P IC d e g am a m ed ia, se utilizan los siguientes p rog ram as:

E d ito r d e texto s. S e utiliza p ara crear el p ro g ra m a fuente (archivo .asm ).

E n sa m b la d o r (M P A S M .E X E o M P A S M W 1N .E X E ). T o m a el p ro g ra m a fuente
(en el arch iv o .asm ) y realiza su trad u cción com p leta o parcial al lenguaje
d e m áquina. Si la trad u cción es com pleta, el en sam b lad or en trega un ar­
ch ivo hexad ecim al (.hex) con el p ro g ra m a codificado; si la trad u cción es
parcial, en treg a un arch ivo objeto (.o) que sirve d e en trad a al enlazador
M PLIN K. •

E n lazad o r (M P L IN K .E X E ). C on form a el p ro g ra m a en lenguaje d e m áquina;


(en un arch iv o .hex) al enlazar, en u n ú n ico m ódu lo, u n o o m á s m ódulos
objetos (archivos .o) p rod u cid os p o r el en sam blad or, y arch ivos d e biblio­
tecas (.lib) p ro d u cid o s p o r el gesto r d e bibliotecas.

G e sto r d e b ib lio tecas (M P L IB .E X E ). C rea u n a biblioteca (archivo .lib) a partir


d e varios p rog ram as ensam blados. U na biblioteca es una colección de
p rogram as.
Repertorio de instrucciones y program ación e n lenguaje ensam blador — 137

S im u lad o r/d ep u rad o r. Es u n p ro g ra m a q u e perm ite sim u lar e n el ord en ad or


personal el funcionam iento del m icrocon trolad or. D ispone d e órdenes
q u e facilitan la prueb a d e p rog ram as y la d ep u ración d e erro res. Este p ro­
g ram a está incluido en el entorn o d e desarrollo in tegrado M PLA B .

P ro g ram ad o r. Es el p rog ram a q u e, ju n to co n alg ú n h ard w are, realiza la pro­


gram ació n del m icrocon trolad or PIC . L a inform ación d e en trad a al p ro­
g ra m a d o r e s básicam ente el arch ivo hexad ecim al (.hex) p ro d u cid o p o r el
ensam b lad or o el enlazador.

E n to rn o d e desarrollo in teg rad o M P L A B . Es u n sistem a que p rop orciona un


entorn o m u y có m o d o y am istoso p ara ed itar, ensam blar, en lazar y d e­
p u rar p rog ram as para u n m icrocon trolad or PIC. C o n el suplem en to d e
h ard w are ad ecu ad o , perm ite tam bién p ro g ra m a r el m icrocon trolad or.

4.4.1 El ensam blador MPASM

El e n sam b lad o r M PA SM realiza la trad u cció n al lenguaje d e m áquina


del p ro g ram a fuente (co n ten id o e n el arch iv o .asm ). E n el o rd e n a d o r p erso­
nal, el en sam b lad o r M PA SM se p u e d e ejecu tar a isla d o (co m o M P A S M e n
una línea d e ó rd e n e s del sistem a o p erativ o DOS, o so b re el sistem a o p e ra tiv o
W in d o w s, co m o M P A S M W IN ), o d e n tro del e n to rn o d e d esarro llo in tegrado
M P L A B . L a figu ra 4 .9 m u estra el p ro ceso d e ensam blaje y su s a rch iv o s aso­
ciad os.

El en sam b lad o r p u ed e g e n e ra r có d ig o ab solu to o relocalizable, segú n


q u e la trad u cció n al lenguaje d e m áq u in a sea co m p leta o parcial, re sp e ctiv a ­
m en te. Si la tra d u cció n e s co m p leta, el en sam b lad o r e n tre g a u n arch iv o h e x a ­
decim al (.h ex) c o n el p ro g ra m a cod ificad o; si la trad u cció n e s p arcial, en treg a
u n arch iv o ob jeto (.o) q u e sirv e d e e n tra d a al e n la z a d o r M PLIN K .

4 .4.1.1 G en eració n d e c ódig o a bso luto

E n este ca so , el M PA SM realiza p o r sí m ism o to d o el p ro ce so d e tra­


d u cció n al lenguaje d e m áq u in a. El resu lta d o del ensam blaje e s u n arch ivo
co n el p ro g ra m a co m p letam en te cod ificad o. l a cod ificación absoluta p u ed e
h acerse si el p ro g ra m a fuente co n tien e to d a la in fo rm ación q u e necesita el
en sam b lad or p a ra trad u cir a l lenguaje d e m áq u in a. E s decir, e n el p ro g ra m a
fuente están esp ecificad as co n exactitu d las d ireccion es d e la m em o ria d o n d e
se u b icarán las in stru ccion es y las d ireccion es d e los reg istro s d e la m em o ria
d e d a to s q u e se utilizan e n el p ro g ra m a . Al te n e r esta in fo rm ación , el e n sa m ­
b lad or p u ed e co d ificar co m p letam en te el p ro g ra m a fuente.
1 3 8 — Microcontroladores PIC

. I s t (lis ta d o )

.a s m . e r r (e r r o r )
(p r o g r a m a f u e n te )
A l p ro g ra m a d o r
. h e x (h e x a d e c im a l!
d e l P IC
.in c
. x r f (r e f e r e n c ia c r u z a d a )
(in d u id o )

. C O d (d e p u r a c ió n )

(a)

. e r r (e r r o r )
.a s m
— 1
( p r o g r a m a f u e n te ) ---------- * . — ►] . x r f (r e f e r e n c ia c r u z a d a )

-^ (M P A S M )-^
.c o d (d e p u r a c ió n )
.in c
-J Al e n la z a d o r
(in d u ic io )
. 0 (o b je t o ) 0 n m iku /

(b)

Figura 4.9 Proceso de ensamblaje con el M PASM y archivos involucrados en el proceso, (a)
Ensamblado con codificación absoluta. El archivo hexadecimal (Jiex) es el que con­
tiene el programa traducido al lenguaje de máquina, listo para ser grabado en la
memoria del microcontrolador. (b) Ensamblado con codificación relocalizable. \jx
traducción al lenguaje de máquina es parcial y está contenida en el archivo objeto
(.o), el cual debe ser procesado a continuación con el enlazador MPLINK.

P a ra la cod ificación ab solu ta, el p ro g ra m a fuente d eb e e star con tenid o


co m p le tam en te en un a rch iv o fuente (.asm ) o co n p a rte s del p ro g ra m a en
o tro s a rch iv o s q u e sean in cluid os en el p ro ceso d e ensam blaje d esd e el a rch i­
v o fu en te (con d irectiv as #include). C o m o re su lta d o del ensam blaje, el M PA SM
en treg a el p ro g ra m a cod ificad o co m p leta m e n te e n lenguaje d e m áq u in a en
u n a rch iv o h exad ecim al (.hex). E s te a rch iv o p u ed e s e r tran sm itid o a l p ro g ra ­
m a d o r del m icro co n tro lad o r p a ra p ro g ram arlo .

4 .4 .1 .2 G en eració n d e c ó d ig o relocalizable

En e s te ca so , el M P A S M realiza una cod ificación parcial del p ro g ra m a


fuente, labor q u e e s co m p letad a p o r el e n la z a d o r M PLIN K . Si la in form a­
ción d e d irección en el p ro g ra m a fu en te n o e s co m p leta, el en sam b lad or sólo
p u e d e realizar u n a cod ificación p a rcia l e in com p leta del p ro g ra m a fuente
(codificación relocalizable) y h ace falta q u e el e n la z a d o r M P L IN K term in e la
cod ificación y ob ten ga el p ro g ra m a en lenguaje d e m áquina.

El resu ltad o d el ensam blaje p o r p a rte del M P A S M es u n a rch iv o objeto


(.o) q u e sirv e d e en tra d a al e n la z a d o r M PLIN K . El en la z a d o r p u e d e recibir
Repertorio de instrucciones y program ación en lenguaje ensam blador — 139

vario s arch iv o s d e este tipo y enlazarlos hasta fo rm a r un ú n ico p ro g ra m a ob ­


jeto en lenguaje d e m áq u in a, el cu al es en tre g a d o en un a rch iv o h exad ecim al
(.h ex) p o r el M PL1NK. El a rch iv o h exad ecim al se p u ed e tran sm itir al p ro g ra ­
m a d o r del m icro co n tro lad o r para p rog ram arlo.

4 .4.1.3 A rc h iv o s in vo lu crad o s e n e l ensam blaje

En el ensam blaje in tervien en vario s arch iv o s, u n o s req u erid o s p o r el


en sam b lad or c o m o arch ivos d e en trad a y o tro s p ro d u cid o s p o r el en sam b la­
d o r c o m o arch iv o s d e salid a. Los arch iv o s g e n e ra d o s d u ra n te el p ro ce so de
ensam blaje están d escritos en la a y u d a del sistem a in te g ra d o M P L A B , q u e se
p u e d e d e sca rg a r d esd e el sitio w eb d e M icroch ip T echnology.

L o s arch iv o s m ás im p o rtan tes son:

A rch iv o fu e n te (.asm ). A rch iv o d e texto co n el p ro g ra m a fuente. Es el arch i­


v o que escribe el p ro g ram ad o r utilizando un ed itor d e textos cualquiera,
c o m o p u ed e ser el ed itor incluido en el entorn o in tegrado M PLA B . E s un
arch ivo d e en trad a al M PASM .

A rch iv o fu en te in clu id o (.in c). A rch ivo d e te x to co n parte del p ro g ra m a fuen­


te, que es incluido en el arch ivo fuente (.asm ) m ediante una directiva
#include. El u so m á s frecuente d e este tipo d e a rch iv o es p ara definir los
nom bres y direcciones d e los registros y bits del m icrocon trolad or que
se va a utilizar. C o m o parte d e las herram ientas y recu rsos para progra­
m ar en en sam blad or, M icrochip sum inistra un arch iv o d e este tipo para
cad a m icrocon trolad or; p o r ejem plo, el arch ivo 16f873.inc con tien e las
definiciones d e los nom bres de los registros d e funciones especiales, sus
direccion es y los nom bres d e los bits en el PIC 16F873. P ara usar d e los
nom bres definidos en el arch ivo, el p ro g ra m a d o r sólo tiene que incluir
ese arch iv o en su p rog ram a fuente. V er el ejem plo 4.19.

A rch iv o d e listad o (.lst). A rch ivo d e texto que contiene el listado del p rogram a
fuente, su s direccion es y la codificación d e las instrucciones. Este archivo
p u ed e ser gen erad o p o r el M PA SM o p o r el M PLIN K .

A rch iv o o b je to (.o). A rch ivo prod u cid o p o r el ensam blador c o m o resu ltad o de
la codificación relocalizable del p ro g ra m a fuente. Contiene la codifica­
ción incom pleta del p rog ram a fuente realizad a p o r el ensam blador. Es un
arch iv o d e en trad a al en lazad or M PLIN K . N o es un arch iv o d e texto.

A rch iv o h exad ecim al (.h ex). A rch ivo d e texto que contiene los có d ig o s de las
instrucciones y su s direcciones en el form ato hexad ecim al d e Intel. Este
arch iv o p u ed e ser g en erad o por el M PA SM o p o r el M PLIN K : e s gen era­
140 — Microcontroladores PIC

do p o r el M PA SM si el p ro g ram a fuente h a sido escrito para su codifica­


ció n absoluta, y p o r el en lazad o r M PL IN K e n caso contrario. E ste arch ivo
e s el p ro d u cto final d el ensam blaje o ensam blaje y enlace.

El arch iv o h exad ecim al e s tá co n stitu id o p o r u n conjunto d e líneas d e


te x to (records), c a d a u n a d e la s cu ales tiene el fo rm ato siguiente:

:LLAAAATTDDDD...DDSS

d on d e:

: e s el ca rá cte r A SCII q u e indica el co m ie n z o d e u n record.

LL Es la longitud del record. Son d o s caracteres ASCII q u e indican la cantidad


(en hexad ecim al) d e datos que contiene el record.

AAAA E s la dirección inicial del record. Son cu a tro caracteres ASCII q u e repre­
sentan la dirección del p rim er d ato (byte) del record. E n los PIC d e gam a
m edia, d ad o q u e las celd as d e m em o ria d e p rog ram a so n d e 1 4 bits y su
con tenid o se d a en 2 bytes, las direcciones que a p arecen e n este ca m p o
so n el doble d e las reales.

TT Es el tipo d e record. Básicam ente, 0 0 indica q u e el record actu al e s d e datos


y 01 q u e se trata del últim o record d el arch ivo hexadecim al.

DD... Son los datos. Dos caracteres ASCII e n este ca m p o rep resen tan el valor
hexad ecim al d e u n d ato (u n byte). E n los P IC d e g a m a m edia, d a d o que
las celdas d e m em oria d e p ro g ram a son d e 14 bits, el con tenid o d e una
celd a se exp resa co n 4 caracteres ASCII.

SS E s la su m a d e com p rob ación . S e calcula su m an d o tod os los bytes (no los


có d ig o s ASCII) del reco rd ; SS es el com p lem en to a 2 d e esa su m a en 8
bits.

Ejemplo 4.40

Este e je m p lo ilustra la estru ctura de lo s archivos de listado y hexadecim al o b tenidos en el ensa m blaje de
un program a fuente trivial. El archivo d e listado s ó lo se m uestra parcialm ente.
A rchivo fuente (eiemoIo.asmV.
list p=16f873
«indude <p16f873 inc>

X equ 0x20
Y equ 0x21

org 0x 000 ; Dirección de l vector de reset.


movlw high PP
Repertorio d e instrucciones y program ación en lenguaje ensam blador — 141

movwf PCLATH
goto PP >

org 0x004 ; Dirección del vector de interrupciones.


retfie

org 0x0123
PP:
d rf X ; Hacer X = 0.
d rw
addlw 1
m ovwf Y ; H acer X = 1 .

end ; Fin del programa fuente.

A n & iv o. ¿g L s ta d .o j^ e m p jo J s tU ^ íIIu e s ^ p a rcia lm ente)

MPASM 03.90.01 Reieased EJEM PLO.ASM 8-7-2005 12:35:51 PAGE 1

LOC OBJECT C ODE U N E SOURCE TEXT


VALUE

00001 list p=16f873


00002 Snclude <P16f873.
00001 LIST
00002 P16F873.INC Standard Headí
00358 LIST
00003
00000020 00004 X equ 0x20
00000021 00005 Y equ 0x21
00006
oooo 00007 org 0x 000 : Dirección del vector de reset.
0000 3001 00008 movíw high PP
0001 008A 00009 movwf PCLATH
0002 2923 00010 goto PP
00011
0004 00012 org 0x004 ; Dirección del vector de interrupciones
0004 0009 00013 retfie
00014
0123 00015 org 0x0123
0123 00016 PP:
0123 01A0 00017 d rf X ; Hacer X = 0.
0124 0103 00018 d rw
0125 3E01 00019 addlw 1
0126 00A1 00020 m ovwf Y ; Hacer X - 1.
00021
00022 end ; Fin del programa fuente

A rchivo hexadecim al (ejem plo, hex)

.*0600000001308A002329F3
:020008000900ED
142 — Microcontroladores PIC

:08024600A0010301013EA1002B
:00000001FF

4.4 .2 El enlazador MPLINK

El en lazad o r M P L IN K co n fo rm a e l p ro g ra m a e n lenguaje d e m áquina


en un arch iv o h exad ecim al (.h ex) a p artir de:

• U no o m á s archivos objetos (.o) prod ucidos p o r el ensam blador.

• U no o m á s arch ivos d e bibliotecas (.lib), prod ucidos p o r el gesto r d e bi­


bliotecas M PLIB.

• U n arch iv o auxiliar (.Ikr) c o n la descripción d e la m em o ria disponible


en el m icrocon trolad or u otros datos d e interés para el enlace.

L a figura 4 .1 0 ilu stra el proceso d e en lace y los arch iv o s involucrados.


En el o rd e n a d o r person al, el e n la z a d o r M P L IN K se p u ed e ejecu tar aislad o
(com o M P L IN K en una línea d e ó rd e n e s del sistem a o p e ra tiv o DOS) o dentro
del e n to rn o d e d esarro llo in tegrad o M PLA B .

El a rch iv o au xiliar (.Ikr) sirv e b ásicam en te p a ra in fo rm ar al en lazad or


sob re las d ireccion es d e la m em o ria d e p ro g ra m a y d e d a to s disponibles en
el m icro co n tro lad o r seleccio n ad o, d e m o d o que el en la z a d o r p u ed a asign ar
d ireccion es co rre cta m e n te y co m p letar co n ello el ensam blaje del p ro g ram a.
T am b ién p u ed e co n ten er o tra in form ación d e interés p a ra el en la ce , co m o
p o r ejem plo, el n om b re d e los arch iv o s que h a y que en la z a r, si é sto s n o han
sid o esp ecificad os cu a n d o se llam a al en lazad o r. T o d o e s to se h ace m ediante
d ire ctiv as al en lazad o r. L a d escrip ción co m p leta d e la s d irectiv as a l M PLIN K
está e n el a rch iv o d e a y u d a q u e, c o m o parte del e n to rn o d e d esarro llo inte­
g ra d o M P L A B , está disponible e n el sitio w eb d e M icrochip T ech nology.

En el arch iv o au xiliar, las regiones d e m em o ria disponibles se d escri­


ben m ed ian te las d irectiv as (al en lazad o r) databank, sharebank y codepage. La
d irectiv a databank in fo rm a del n om b re y las d ireccion es inicial y final d e una
regió n d e la m em o ria d e d ato s que está e n un b an co d e registros. L a directiva
sharebank h ace lo m ism o p ero resp ecto a u n a regió n que c o m p a rte direccion es
en m á s d e un b an co d e registros.
Repertorio d e instrucciones y program ación en lenguaje ensam blador — 143

Jst (listado)

.m a p (m a p a d e m e m o ria )

A l p ro g ra m a d o r
.h e x (h e x a d e c im a l)
d e l P IC
.C O f (d e p u r a c ió n )

Figura 4.10 Proceso d e enlace con el M PLINK y archivos involucrados en el proceso. Los ar­
chivos objeto (.o) se obtienen con el ensamblador MPASM como resultado de la
codificación relocalizable de los respectivos módulos en lenguaje ensamblador. Los
archivos de bibliotecas (lib) se obtienen con el gestor de bibliotecas MPLIB. El
archivo auxiliar (Ikr) contiene una descripción de la memoria disponible en el
microcontrolador para que el enlazador pueda ubicar correctamente en ella el pro­
grama en lenguaje de máquina. El archivo hexadecimal (.hex) es el que contiene el
programa traducido al lenguaje de máquina, listo para ser grabado en la memoria
del microcontrolador.

L a d irectiv a codepage in form a del n o m b re, las d ireccion es inicial y final


d e una región d e la m e m o ria d e p ro g ram a. O p cion alm en te, se p u e d e o rd e n a r
al en la zad o r q u e llene la regió n descrita c o n u n d a to (d e 1 4 bits en los P IC d e
g a m a m ed ia). L a región tam bién p u ed e ser d e cla ra d a c o m o "p ro te g id a ", lo
cu al im p lica ciertas restriccion es en su uso d esd e e l p ro g ra m a fuente.

L a s in ta x is d e e s ta s d ir e c t iv a s es:
databank nam e=nom bre start=dir_inicial e n d = d ir final [protected]
sharebank nam e=nom bre start=dir_inicial end = d ir final {protected]
codepage nam e=nom bre start= dir J n ic ia l end = d ir final [protected] [fill=valor]

P ara "c o n e c ta r" las reg io n es d e m em o ria d ecla ra d a s m ed ian te las d irec­
tivas antes m en cion ad as c o n las secciones del p ro g ra m a fu en te, se u tiliza la
directiva section. E sta d irectiv a p erm ite d e cla ra r una regió n d e m em o ria c o m o
una sección lógica. Su sintaxis es:
section nam e=nom bre_sección R O M =nom bre
section nam e=nom bre_sección R A M =nom bre
d o n d e nom bre_sección e s el sím bolo que identifica a la sección y nom bre e s el
nom bre d e la regió n d e m em oria, y a sea m em o ria d e p ro g ra m a (R O M ) o d e
d a to s (R A M ), p rev iam en te d eclarad a co n las d irectiv as databank, sharebank y co-
1 4 4 — Microcontroladores PIC

depage. L a s secciones ló gicas se pu ed en u tilizar e n el p ro g ra m a fuente m e­


diante las d irectiv as udata, udata_shr y code.

E jem p lo 4.41

E n este ejem plo se m uestra el contenido d e un archivo a u xilia r q u e contiene la descripción d e la s regio­
nes d e m em oria d e un m icrocontrolador PIC . Tam bién s e ilustra cóm o utilizar en el program a fuente las
secciones lógicas declaradas e n el archivo a u xilia r 16f873.lkr sum inistrado por M icrochip co m o parte del
sistem a d e desarrollo integrado M PLAB:
II Sample línker com m and file for 16F873
II S ld : 16í87 3.lkr. v 1 .5 2002/11/07 2 3 :1 6 :0 7 s e a le p E x p $

LIBPATH ,

CODEPAGE NAME=vectors START=0x0 END=0x4 PROTECTED


CODEPAGE NAME=pageO START=0x5 END=0x7FF
CODEPAGE NAME=page1 START=0x800 END=0xFFF
CODEPAGE NAME=.¡dlocs START=0x2000 END=0x2003 PROTECTED
CODEPAGE NAME=.conf»g START=Ox2007 END=Ox2007 PROTECTED
CODEPAGE NAME=eedata START=Ox2100 END=0x217F PROTECTED

DATABANK NAME=sfrO START=0x0 END=0x1 F PROTECTED


DATABANK NAME=sfr1 START=0x80 END=0x9F PROTECTED
DATABANK NAME=sfr2 START=0x100 END=0x10F PROTECTED
DATABANK NAME=sfr3 START=0x180 EN D-0x18F PROTECTED

SHAREBANK NAME=gprO START-0x20 END=0x7F


SHAREBANK NAME-gprO START=0x120 END=0x17F

SHAREBANK NAME=gpr1 START=0xA0 END=0xFF


SHAREBANK NAME=gpr1 START-0x1A0 END=0x1FF

SECTION NAME=STARTUP ROM =vectofs II Reset and intem jpt vectors


SECTION NAME=PROG1 ROM=pageO II ROM cede space - pageO
SECTION NAME=PROG2 R O M -page1 II ROM code space - pagel
SECTION NAME=IDLOCS ROM=.i<flocs II ID locatbns
SECTION NAME=CONFIG ROM=.config II Configurabon bits locafion
SECTION NAME=DEEPROM R O M r eedata II Data EEPROM

P uede o bse rvarse q u e en el archivo auxiliar hay declaradas varias secciones. Por ejem plo, la sección de­
nom inada PROG1 corresponde a la regió n d e m em oria d e program a den om inad a pageO q u e com ienza
en la dirección 005h y term ina e n la dirección 7FFh.

E n el program a fuente se puede indicar a l enlazador que ubique instrucciones e n esa sección lógica,
precediend o d ich a s instrucciones co n una directiva co d e acom pañada por e l nom bre d e la sección, de
la form a siguiente:

PROG1 code
Repertorio de instrucciones y program ación en lenguaje ensam blador — 145

4 .4 .3 El gestor de bibliotecas MPLIB

U n a biblioteca es aqu í u n a colección d e p ro g ra m a s en u n arch ivo . C o ­


m ú n m en te, es u n a colección d e su b ru tin as relacio n ad as c o n alg ú n tem a,
tod as disponibles en u n arch iv o d e biblioteca (arch iv o .lib). P o r ejem plo, se
p u ed e c re a r una biblioteca co n u n conjunto d e su b ru tin as relacion ad as con
op eracio n es aritm éticas, y llam arla m ath.lib.

El a rch iv o c o n la biblioteca se p u ed e e n la z a r co n o tro s arch iv o s resu l­


tan tes d el ensam blaje, tal c o m o m u estra la figura 4 .1 0 . U na ventaja q u e ofrece
d isp on er d e u n a biblioteca e s q u e en u n a rch iv o único se p u e d e ten er la colec­
ció n co m p leta d e p ro g ram as relacio n ad o s c o n el tem a. A l en lazar la biblioteca
c o n o tro s arch iv o s objeto, el en lazad or to m a d e la biblioteca só lo aquellas
subrutinas q u e h a n sid o solicitad as d esd e o tro s m ó d u lo s, d e m o d o q u e el
p ro g ra m a objeto en lenguaje d e m áq u in a n o cre ce innecesariam ente.

P ara c re a r u n a biblioteca s e utiliza el g e s to r d e bibliotecas M PLIB. Este


p ro g ra m a s e p u ed e in v o car d esd e u n a línea d e ó rd en es d el sistem a o p erativo
DOS o d esd e el entorn o d e d esarro llo in teg ra d o M P L A B . L a figu ra 4 .1 1 m u e s­
tra este proceso.

F ig u r a 4 .1 1 Proceso de obtención d e una biblioteca con el M PUB. Los diferentes componen­


tes d e la biblioteca son ensamblados con el MPASM , obteniéndose los archivos
objetos (.o) correspondientes. Con el gestor d e bibliotecas M PLAB, se unen en un
archivo con extensión .lib.

E jem plo 4.42

Procesos d e obtención y uso d e una biblioteca. La biblioteca que se v a a construir (biblio.lib) estará
form ada por tres subrutinas triviales denom inadas S R 1, S R 2 y S R 3. C a da subrutina se ha program ado
e n arch ivo s independientes, denom inados b ib lio l.a s m , biblio2.asm y biblio3.asm . L o s listados d e estos
archivos se m uestran a continuación. O bsérvese el uso d e la directiva global en lo s archivos.
A rchivo b ib lio l .asm:

. Creación de una biblioteca.


; b ibliol.a sm : en este archivo está la subrutina SR1.

fis t p = 16Í873
146 — Microcontroladores PIC

«in d u d e pl6f873.inc
global SR1
code
SR1:
nop
return
end

A rchivo biblio2.asm :

; Creación de una Biblioteca.


; biblio2.asm en este archivo está la subrutina SR2.

list p = 16f873
«in d u d e p16f873.inc
global SR2
code
SR2:
nop
nop
retum
end

A rchivo biblio3.asm :
9

; Creación de una Biblioteca.


; biblio3.asm. en este archivo está la subrutina SR3.

list p = 16Í873
#in d u d e p16f873.inc
global SR3
code
SR3:
nop
nop
nop
return
end

Estos tres archivos se ensam blan con el M PASM y se procesan con e l gestor d e bibliotecas MPLIB,
obteniéndose com o re sultado el archivo biblio.lib.
En el archivo program .asm está el program a fuente trivial, q u e utiliza una d e la s subrutinas d e la biblio­
teca. El listado de este program a se m uestra a continuación. O bsérvese el uso d e la directiva extern en
e l archivo.
; Programa que utiliza una subrutina de la biblioteca biblio.lib
; Si se examina el archivo program.lst se verá que el enlazador
; incorpora en el programa objeto solam ente la subrutina solicitada

list p = 16f873
«include p16f873.inc
Repertorio d e instrucciones y program ación en lenguaje ensam blador — 147

extern SR2
Program code 0

cali SR2

end

Este program a se ensam bla y enlaza con el archivo bibllo.lib. C om o resultado d e l enlace se obtiene el
archivo program .hex co n e l program a objeto. Tam bién se obtiene u n archivo d e listado (program .lst). En
este archivo se pue de com probar que e l enlazador solam ente h a incorporado la subrutina solicitada. El
listado parcial del archivo program .lst se m uestra a continuación:
Address Valué Disassem bly Source

¡ Programa que utiliza una subrutina de la biblioteca biblio.lib


; Si se examina el archivo program .lst se verá que el enlazador
; incorpora en el programa objeto solam ente la subrutina solicitada
list p = 16Í873
ffindude p16f873.lnc
extern SR2
Program code 0

000000 2007 CALL 0x7 cali SR2

end

Creación de una Biblioteca.


biblio2.asm: en este archivo está la subrutina SR2

list p = 16Í873
# in d u d e p16f873.inc
SR2
code
SR2;
000007 0000 NOP nop
000008 0000 NOP nop
000009 0008 RETURN return
end
La entrada y salida en paralelo — 149

5 La e n tra d a y salida en p a ra le lo
Este cap ítu lo trata sobre la en trad a y salid a (E /S ) digital e n paralelo, c a ­
racterizad a p o rq u e tod os los bits d e un d ato so n transferidos sim ultáneam ente;
la en trad a y salida e n serie será tratad a en el cap ítu lo 8, y las en trad as y salidas
analógicas se estu d iarán en el cap ítu lo 9.

El cap ítu lo c o m ie n z a c o n la exp osición d e a lg u n o s co n ce p to s básicos


sob re los m éto d o s d e tran sferen cia d e d a to s y las técn icas existen tes p a ra el
tratam ien to d e la en tra d a y salid a digital d e d ato s. A co n tin u ació n s e d escri­
ben las características d e los p u ertos p aralelos d e los m icro co n tro la d o re s PIC
d e cla se m ed ia, c o n énfasis en su fun cion am ien to, au n q u e sin o b v ia r aquellos
asp ecto s d e h a rd w a re m ás im p ortan tes. Fin alm en te, se ilustra la co n exió n
y tra ta m ien to d e alg u n o s periféricos d e am p lio u so en sistem as co n m icro ­
co n tro lad o res P I C in terru ptores, d io d o s L E D , teclad os m atriciales, pantallas
n u m é ricas d e 7 seg m en to s y m ód u los v isu alizad o res LCD .

5.1 Conceptos básicos sobre entrad as y salidas digitales


U n p eriférico es un d isp o sitiv o e x te rn o co n e cta d o al m icro co n tro lad o r.
A lgu n os posibles periféricos son : los in terru p to res (sw itch es), d io d o s em iso­
res d e lu z (L E D : L ig h t E m ittin g D iod e), relés (relev ad o res), teclad o s m atriciales
(;keypad), v isu alizad o res (disp lay s) d e 7 segm en to s o d e cristal líquido, c o n v e r­
tid ores A / D o D / A , y tam b ién u n a im p reso ra, u n m o to r, etc. P o r su p u esto,
tod os e sto s periféricos d eb en incluir el circu ito d e interfaz n ecesario p ara c o ­
n ectarlo s a los p u erto s del m icro co n tro lad o r.

U n p u e r to (port) es u n circu ito q u e form a p a rte d el m icro co n tro lad o r


y sirv e d e in terfaz c o n alg ú n d isp o sitiv o e x te rn o (un p eriférico). L a figura
5.1 m u e stra el esq u em a gen eral d e la co n exió n en tre u n m icro co n tro la d o r y
un p eriférico a tra v é s d e u n p u e rto d e E / S . E n g e n e ra l, en esta co n exió n se
d isp on e d e n líneas p ara tran sp o rtar el d a to (lo u su al e s n = 8 ) y d e m líneas
adicionales p ara co n tro la r la tran sferen cia d e los d a to s en tre el p eriférico y el
puerto. L as líneas d e co n tro l p u ed en n o ser n ecesarias, c o m o su ce d e e n la E / S
sim ple sin sin cron ización , q u e se tra ta rá m ás a d elan te e n este m ism o a p a rta ­
do. E n la figura 5.1 s e h a rep resen tad o u n p u erto b id ireccion al, p ero es co m ú n
e n co n trar p u erto s que so n só lo d e en tra d a y p u e rto s q u e so n só lo d e salida.

D esd e el p u n to d e vista d e su p ro g ram ació n , los p u erto s se identifican


p o r sus direccion es, u b icad as p o r lo gen eral en la m em o ria d e d ato s. Para
h a ce r referencia a los d ato s q u e en tran o salen p o r u n p u erto, se necesita al
m en os una d irección . El m anejo d e las señales d e co n tro l p u ed e req u erir a l­
150 — Microcontroladores PIC

gu n os bits adicionales, rep artid os e n una o d o s d ireccion es m ás. E n los m icro ­


co n tro lad o res PIC , el acce so a los p u erto s s e realiza a tra v é s d e los reg istro s d e
fu nciones especiales d e la m em o ria d e datos.

D A TO S
A_______ N
(?>_“ I/
P u e rto CO N TR O L
P e rifé ric o
/■' : ¡\

M ic ro c o n tro la d o r i

Figura 5.1 Conexión entre el microcontrolador 1/ un periférico a Irmes de un puerto de E/S.


Obsérvese que hay n líneas de datos y m líneas de control.

El elem ento básico en un p u e rto d e E / S es el biestable tipo D la tch , c a ­


p az d e a lm a ce n a r un bit. E n u n p u erto d e 8 bits, h ay 8 biestables d e este tipo.
El biestable d isp on e d e una en tra d a d e d a to s D, u n a e n tra d a d e co n tro l G
(G a le) y una salida d e d ato s Q . M ien tras la señal d e co n tro l está e n '0 ' (G =
'V ), el biestable está 'b lo q u ed ad o '; cu a n d o G pasa al e sta d o T , el biestable
se v u e lv e tran sp aren te y p one en su salida Q el v a lo r d e la en trad a d e datos D
(Q = D); cu a n d o G re g re sa a '0 ', el biestable ca p tu ra el v a lo r d e la e n tra d a D y
lo m an tien e e n su salid a Q .

A m en u d o se necesita d isp on er del d ato a través d e una salida tri-estado


D O (D ata O u tpu t); entonces se añ ad e la en trad a d e control O E # (O u tp u t Enti­
bie), activ a en '0 ', p ara habilitar la salida tri-estado. Si O E # = T , la salida DO
se m antiene en estad o d e alta im ped ancia ("te rce r e sta d o "), pero si O E # = 0, la
salida D O = Q . L a figura 5 .2 m u estra el esquem a d e este biestable tipo D latch
c o n salida tri-estado.

E n u n p u erto d e en trad a, las en trad as D vienen d el periférico y las sali­


d as tri-estad o O v a n a las líneas d el bus d e d a to s in terno del m icro co n tro la­
d o r. E n un p u e rto d e salid a, la con exión es la con traria.

A co n tin u ación s e estu d ian los m éto d o s utilizados p ara transferir datos
en tre u n p u erto paralelo y u n periférico, así c o m o las diferentes técn icas d e
aten ción del p u e rto p o r parte del m icrocon trolad or.

5.1.1 M étodos de transferencia de datos

La transferencia d e d ato s en tre u n periférico y u n p u e rto s e realiza bási­


ca m e n te m ed ian te u n o d e los d o s m éto d o s siguientes:
La en trad a y salida en paralelo — 151

OE# D Latch

Figura 5.2 El elemento básico constitutivo de un puerto de E/S es el biestable tipo D latch,
con el cual se puede almacenar un bit. La figura muestra este elemento junto con
una salida tri-estado d e datos. D I es la entrada de datos; con la señal STB, el latch
captura el dato en D ¡ y ¡a señal OE# habilita la salida tri-estado DO.

• E / S sim ple.

• E / S controlada.

La E / S sim ple se caracteriza p orq ue en tre el p u erto y el periférico sola­


m ente se transfieren los bits del dato, sin señales de control (figura 5 .3 a). Por
ejem plo, la conexión d e interruptores a las líneas d e en trad a o diodos LED a las
líneas d e salida d e u n p u e rto paralelo, so n d o s casos típicos d e E / S sim ple.

A v eces el d ato v a a co m p a ñ a d o d e u n a señ al d e sin cron izació n (STB:


S tro b e). E l objetivo básico d e esta señal e s in dicar el m o m e n to en que el dato
está disponible en los term in ales d e datos. E sta in d icació n p u e d e h a ce rse a ten ­
d ien d o al nivel o a los flancos d e la señal STB. P o r ejem plo, si la in d icación es
p o r nivel, m ien tras el p eriférico (o el p u erto ) m an tien en activ a la señ al STB
(es d ecir, STB = T ) , el d ato está estable e n los term inales d e d a to s del p u erto
o periférico. El d isp o sitiv o q u e recib e el d a to (y a sea el p eriférico o el puerto),
d eb e c a p tu ra r el d a to e n sin cron ism o co n la señ al STB. La figura 5 .3b m u estra
esta varian te d e E / S sim ple.

Si la in d icación d e q u e el d ato está estable s e realiza co n uno d e los


flancos d e la señ al STB, p o r ejem plo, c o n el flan co d e su b id a, en to n ces debe
ca p tu ra rse el d a to sin cro n izad am en te co n esa tran sición d e la señal STB.

E n la E / S co n tro lad a se establece una "c o n v e rsa c ió n " (h an d sh ake) en tre


el p u e rto y el periférico. P ara realizar la E / S co n tro la d a s e req uieren alg u n as
señales d e co n tro l (al m en os d o s señales) y algún p ro to co lo o reglas d e e n te n ­
d im ien to en tre u n o y o tro dispositivo. L a figura 5 .4 ilu stra d o s v arian tes d e
la E / S co n tro lad a q u e em p lean d o s señales d e con tro l: una g e n erad a p o r el
152 — Microcontroladores PIC

e m iso r del d a to , d en o m in ad a STB (strob e), y o tra g e n e ra d a p o r el re ce p to r del


d ato, llam ad a A C K (ackn oiu ledgm en t). E n la prim era v arian te (figu ra 5.4 a ), d e­
n o m in ad a E / S co n tro lad a sim plem ente, el e m iso r d e los d a to s (el periférico
o el p u erto, segú n sea la tran sferen cia d e en trad a o salid a) en vía la señal STB
al recep tor, in d ican d o q u e el d a to está disponible e n los term in ales d e d a to s
(el e m iso r dice: "a q u í te en v ío e l d a to ”). E n to n ces el re ce p to r ca p tu ra el d ato y
rep o rta la acción al tran sm iso r a ctiv an d o la señal A C K (A C K = 'Y ) (el recep­
to r dice: " d a to recibido, lo esto y p r o c es a n d o "). El em isor n o en vía u n n u e v o dato
hasta que la señal A C K s e h a y a d esactiv a d o (el recep tor d ice: "e n v ía el sig u ien te
d a to ”). L a señal A C K fu n cion a, pues, c o m o u n a señal in form ativa d e q u e el
recep to r está o cu p a d o p ro cesan d o el d a to recibido.

Dat0 X <8>
D a to X W STB / \

(a) (b)

Figura 5.3 Formas de onda para la E/S simple en el caso de una transferencia paralela de 8 bils.
(a) E/S simple sin sincronización, (b) E/S simple sincronizada cotí la señal STB.
La señal S1 3 indica el momento en que el dato está disponible en ¡os terminales de
datos. La indicación puede hacerse con el nivel de STB (por ejemplo, con STB = 1,
como está indicado en lafigura) o con cualquiera de losflancos de esta señal.

L a seg u n d a v a ria n te d e E / S co n tro la d a m e d ia n te d o s señales d e c o n ­


trol, es la d en o m in ad a E / S co n tro lad a d ob lem en te, e im p lica u n p rotocolo
alg o m á s com p lejo en tre el em isor y el re ce p to r d e los d a to s (figu ra 5 A b). E n
p rim e r lu g ar, el em isor “ a v isa " al re ce p to r d e q u e v a a en v iarle u n d ato (au n­
q u e el d ato a ú n n o está disponible), activ a n d o la señal STB (el em iso r p reg u n ta:
"te v o y a en v ia r un dato, ¿ p u ed o h a c e rlo ? ”). U n a v ez q u e el re ce p to r d etecta esta
situ ació n y s e halla en con d icion es d e ace p ta r el d a to , in form a d e ello al em i­
sor a ctiv a n d o la señal A C K (el recep tor resp on d e: " en v ía lo ”). El em isor detecta
q u e A C K está activa, lo cu al es una in dicación d e q u e p u e d e en v iar el d ato
al recep tor. U na v e z q u e el em isor p o n e el d a to en los term in ales d e datos,
se lo indica al re ce p to r c o n el flanco d e bajada d e la señ al ST B (el e m iso r dice:
" a q u í v a el d a to ”). E n to n ces el recep to r c a p tu ra el d a to y cu a n d o está listo para
recibir o tro d a to , d esactiv a la señal A C K (el recep tor d ice: y a r e c ib í e l dato, p u ed es
en v ia r un n u ev o dato).

Las señales d e control y la ló gica d e la co n v e rsa ció n en tre p u erto y p e­


riférico se p u ed en m an ip u lar p o r h a rd w a re o p o r softw are. L a m an ip u lación
p o r h a rd w a re significa q u e el p u e rto d isp o n e d e circu ito s ca p a ce s d e gen e­
La en trad a y salida e n paralelo — 153

r a r y m an ip u lar las señales STB y A C K a d e cu a d a m e n te , sin la in tervención


d e la C P U d el m icrocon trolad or. L a m an ip u lació n p o r so ftw are significa en
cam b io que las señales s e gen eran y m an ip u lan m e d ia n te a lg ú n p ro g ra m a
e la b o ra d o exp resam en te p a ra ello.

Dat0 X <8> Dato X <8>

Figura 5.4 Formas de onda para la E/S controlada de datos de 8 bits, (a) E/S controlada sim ­
plemente y (b) E/S controlada doblemente.

L o s m icro co n tro lad o res PIC d isp on en d e p u erto s p aralelos d e hasta 8


bits, in d ep en d ien tes en tre sí. N o d isp onen d e p u erto s esp ecializad o s p a ra im -
p le m e n tar la E / S co n tro la d a p o r h a rd w a re ; p o r tan to, la E / S co n tro la d a debe
im p lem en tarse p o r softw are.

5 .1 .2 Técnicas de entrada y salida

P ara a te n d e r a u n p eriférico co n e cta d o a u n m icro co n tro la d o r, s e e m ­


plea n o rm alm en te una d e las d o s técn icas siguientes:

• E / S p rogram ad a.

• E / S p o r interrupción.

L a E / S p ro g ra m a d a e s u n a técn ica b ásicam ente d e softw are. S u p o n e la


existen cia d e alg ú n in d icad o r del esta d o (listo o n o listo) del periférico; este
in d ica d o r n o es m á s q u e u n b it c u y o v alo r se p u e d e a v e rig u a r d e sd e el p ro ­
g ra m a q u e atien d e al periférico. El p ro g ra m a p reg u n ta si el p eriférico requie­
re aten ción ; si la resp u esta e s afirm ativa, se h ace la a c ció n que corresp o n d a,
que e n gen eral con siste e n la lectu ra o e scritu ra d el d a to en e l p u e rto co n e c­
tad o al periférico; si la resp u esta e s n eg ativ a, el p ro g ra m a p asa a o tra ta re a o
sim p lem en te esp era a q u e el p eriférico esté listo p a ra s e r atendido.

La figu ra 5 .5 m u e stra los alg o ritm o s q u e sigu en las d o s v arian tes d e la


E / S p ro g ra m a d a : la co n su lta y la esp era. E n E / S p o r con su lta (p ollin g ) (figura
5.5fl), el p ro g ra m a p asa a o tra tarea si el p eriférico n o está listo. E n la E / S p o r
e sp era, el p ro g ra m a q u e atien d e al periférico, esp era a q u e el p eriférico esté
1 5 4 — Microcontroladores PIC

listo p ara aten d erle. Es ob vio q u e la E / S p o r co n su lta a p ro v e ch a m ejor el


tiem p o del m icrocon trolad or.

Figura 5.5 Variantes d e la E/S programada. En (a) se muestra el algoritmo que sigue la E/S
por consulta: si el periférico no está listo para recibir atención, el programa conti­
núa y pasa a realizar otra tarca, que puede ser atender a otro periférico. En (b) se
muestra el algoritmo d é la E/S por espera. En este caso, d programa simplemente
esfiera hasta que el periférico esté listo para ser atendido.

L a técnica d e E / S p o r in terru p ció n se c a ra cte riz a p o rq u e el periférico


"a v is a " cu a n d o necesita aten ción . E se a v iso s e realiza m e d ia n te u n a solicitud
d e in terru p ción al m icrocon trolad or. A l recibir u n a solicitud d e in terrupción
g e n erad a p o r alg ú n periférico, el m icro co n tro la d o r in terru m p e tran sitoria­
m en te la ejecu ció n d el p ro g ra m a en c u rso y p asa a ejecu tar el p ro g ra m a o m ás
bien la su b rutina d e aten ció n al periférico. Term inada la atención al periféri­
co , se con tin ú a c o n el p ro g ra m a q u e había sido interrum pido.

L a E / S p o r in terrupción se im plem en ta m edian te una com binación d e


softw are y h ard w are. La p arte d e h ard w are d e esta técnica la constituyen los
circu itos necesarios p ara solicitar y tratar la interrupción. L a E / S p o r interrup­
ción se estu d iará co n detalle en el capítulo 7.

E n las técn icas d e E / S p ro g ram ad a y p o r in terru p ción , la v elocid ad d e


la transferencia d e d ato s en tre u n p eriférico y el m icro co n tro la d o r está lim ita­
d a , en últim a in stancia, p o r la v elo cid ad co n q u e se ejecutan las instrucciones,
p u es en am b as técnicas los d ato s se leen o escrib en m ed ian te in stru ccion es de
u n p ro g ra m a elab orad o al efecto. A d em ás, en gen eral, los d a to s transferidos
en tre la m em o ria y los p u erto s d e E / S tienen q u e p a s a r p o r la C P U del m icro­
co n tro la d o r y eso, lógicam en te, lim ita tam b ién la v elocid ad del p ro ce so . En
los sistem as basad os e n un m icro p ro cesad o r, se utiliza u n a tercera técnica de
E / S p ara su p erar estas lim itaciones; es el d en o m in ad o a cceso d irecto a m em oria
(D M A : D irect M em o ry A ccess).
La entrada y salida en paralelo — 155

El acce so d irecto a m em o ria es u n a técnica d e E / S q u e s e im plem enta


fu n d am en talm en te p o r h ard w a re . C onsiste b ásicam en te e n q u e la transfe­
rencia d e los d ato s s e realiza d irectam en te en tre el p eriférico y la m em o ria
del sistem a, sin la in terven ción d e u n p ro g ra m a e je cu ta d o p o r el m icro p ro ce ­
sad o r. S e lo gran así e le v a d a s tasas d e tran sferen cia d e datos. Esta técnica se
usa m uy p o co en los m icro co n tro lad o res y los m icro co n tro la d o re s PIC n o la
em plean.

5.2 Los puertos paralelos en los PIC d e clase m edia


L o s m icro co n tro lad o res PIC d e clase m e d ia pu ed en ten er h a sta 7 p u erto s
p aralelos, n o m b rad o s co n las letras A, B...G. C a d a p u e rto p u e d e s e r d e hasta
8 bits. L o s term in ales d e los p u erto s s e identifican co m o R A < x > , R B <x>,...
R G <x>, d o n d e x e s el n ú m ero del bit (x = 0 , 1 ...7 ) . En gen eral, c a d a línea d e
u n p u e rto se p u ed e p ro g ra m a r c o m o en tra d a o co m o salida.

L a m a y o ría d e los term in ales d e los p u erto s d e E / S p u ed en realizar v a ­


rias funciones. P o r ejem plo, un m ism o term in al p u e d e s e rv ir c o m o en trad a o
salid a d igital, o p u ed e s e r u n a en tra d a an alógica al co n v e rtid o r A / D , o p u ed e
s e r p o rta d o r d e alguna señal d e en tra d a o salida a uno d e los tem p o rizad o res
del m icrocon trolad or.

A lgu n os m icro co n tro lad o res P IC tam bién tienen u n p u e rto paralelo
adicional d en o m in ad o P u erto Paralelo E sclav o (PSP: P a r a llel S la v e P ort). El
P S P se co m p o rta co m o un bus p eriférico d e 8 bits, c o n lín eas para con tro lar
la tran sferen cia d e d ato s en tre el PIC y el periférico. C u a n d o existe, el PSP
c o m p a rte su s term in ales co n los p u e rto s D y E.

Para m an ip u lar los p u erto s paralelos, h ay dos registros d e funciones es­


p eciales p o r c a d a u n o d e los p u erto s, q u e se d en om in an PO R T y TRIS (PO R ­
T A , I RISA, PO R TB, TRISB, etc.). L o s reg istro s PO R T alm a ce n a n el d a to de
salid a del p u e rto m ien tras q u e los registros TR IS sirven p a ra p ro g ra m a r cad a
línea del p u e rto co rresp o n d ien te co m o en tra d a o salida.

C a d a bit d e cualq uier registro TR IS s e p ro g ra m a d e la sigu iente form a:


TRIS<x> = 1 program a la línea <x> del pu e rto como entrada.
= 0program a la linea <x> del pu e rto com o salida.
L a figura 5 .6 m u estra el esq u em a básico d e u n term in al de E /S . El cir­
cu ito con sta d e d o s biestables D latclv. uno p ara a lm a ce n a r el b it d el d a to d e
salida y o tro para a lm a ce n a r el bit d e co n tro l T R IS<x>. El term inal d e E / S
se m anipula m ed ian te d o s transistores M O S en con figu ración totem -pole. E n
esta con figu ración , el tran sistor T I (can al P) co n d u ce cu a n d o e n su p u e rta h ay
156 — Microcontroladores PIC

u n 'O' y se co rta c o n u n T ; e n el tran sisto r T 2 (canal N ) o c u rre lo con trario:


co n d u ce co n u n T y se co rta c o n u n '0 ' en su p u erta. El totern -pole e s excitad o
d esd e los biestables a trav és d e d o s p u e rta s lógicas, u n a A N D y o tra O R. Se
p u e d e co m p ro b a r q u e si el biestable d e control alm a ce n a un T , a m b o s tran­
sistores están co rtad o s, p o r lo que el term inal d e E / S e s p u esto e n e sta d o de
alta im p ed an cia (3er. e stad o ), y p o r tan to q u e d a co n fig u ra d o c o m o term inal
d e e n tra d a d e d ato s. Si el biestable d e co n tro l alm a ce n a u n '(T, en to n ces el
term inal d e E / S q u ed a co n fig u rad o c o m o salid a y en este c a so a p a re c e en esa
salida el v alo r del b it a lm acen ad o e n el biestable d e d a to s. L a tabla 5 .1 m u es­
tra la tab la d e la v erd ad del circu ito.

8DAT

VVR PUERTO
CKf O 0 01
L o t e n de saoda de T = D > Torminal ó o
dalos (PORT<x>)
EIS
Centro* -< = ]
W R TRIS G2
C K » QB
¿ a r d id o control
(TR¡S<»»)

R D TRIS TTL 0
Sehmtt T n g g o r

< H
L a te n de entrada de
dalo» (PORT<r>)
R D PU ER TO

Figu ra 5.6 Esquema básico d e un terminal de E/S típico en los microcontroladores PIC de
clase media.
T a b la 5.3 Tabla d e la verdad correspondiente al circuito de la figura 5.6.

Control Dato 61 G2 T1 T2 Terminal de E/S


1 X 1 0 cortado cortado Entrada: alta im pedancia
0 0 0 cortado conduce S alida: 1 /^ (0 )
0
1 1 1 conduce cortado S alida: 1 / ^ ( 1 )

El circu ito d e la figura 5.6 in cluye un te rce r biestable que alm a ce n a el


e sta d o del term inal d e E / S cu a n d o éste h a sido co n fig u rad o co m o en tra d a . La
en trad a D d e este biestable recib e la ten sió n existen te e n el term in al d e E / S a
tra v é s d e una p u erta n o in verso ra que p u e d e s e r T T L o S ch m itt T rig g er, segú n
el p u e rto del m icro co n tro lad o r.
La en trad a y salida en paralelo — 157

O b sérvese q u e escrib ir u n bit en u n p u e rto e s escrib ir e n el la tc h c o rre s ­


p o n d ien te, m ien tras que leer (u n bit) en un p u e rto es leer el estad o lógico
(nivel d e tensión) q u e tiene físicam ente el term in al. E s to significa q u e si se
escrib e u n dato en u n p u e rto d e salid a y luego se lee ese p u e rto , el v a lo r leído
p u ed e n o coin cid ir co n el v a lo r escrito co n an teriorid ad . Esto p u e d e o cu rrir
esp ecialm en te si se exced en los v a lo re s m áxim o s d e las co rrie n te s d e salida
(/OHe ¡o l) re co m e n d a d o s p o r e l fabricante.

Al co n e cta r d isp ositivos a los term in ales d e los p u ertos, hay que ten er
en cu e n ta las lim itaciones d e p o ten cia eléctrica del m icro co n tro la d o r. C a d a
term in al d e E / S p u ed e su m in istrar o d re n a r una co rrien te m á x im a . A d em ás,
la c o m e n te su m in istrad a o d re n a d a p o r el to tal d e term in ales d e u n p u e rto no
p u ed e e x ce d e r u n cierto v alo r, que es gen eralm en te m e n o r q u e la s u m a d e las
co rrie n tes in d ivid u ales p erm itid as a tra v é s d e los term in ales d el p u erto.

P o r o tra p arte, si s e quiere q u e las ten siones e n los term in ales d e salida
p erm an ezcan d en tro d e los lím ites estab lecid os p a ra los estad o s lógicos '0 ' y
T , h ay que m an ten er las corrien tes d e salid a e n nivel alto (íün) y nivel bajo
(IQl) d en tro d e los lím ites re co m e n d a d o s p o r el fabricante,

T o d o s los diseñ os deben cu m p lir e sto s requisitos, q u e está n descritos


en las hojas d e esp ecificacion es (data sheet) que su m in istra el fabricante para
cad a dispositivo.

Ejemplo 5.1

A continuación se dan algunos valores d e la s tensio nes y corrientes e n lo s term inales del PIC 16F873
sum inistrados p o r su fabricante. C u alqu ier diseño d e E)S debe tenerlos e n cuenta.
C orriente m áxim a drenada por cualquier term inal: 2 5 mA.
C o rrien te m áxim a sum inistrada por cualquier term inal: -25 mA.
La corriente drenada o sum inistrada por el pu e rto C o por el conjunto d e lo s puertos A y B no d e b e so­
brepasar lo s 200 mA.
V alores típ ico s para la s tensio nes d e entrada y salida:
S e interpreta que hay un estado ló g ico ’0 ’ e n u n term inal d e entrada s i la tensió n e n ese term inal es VIL <
0,75 V (entrada T T L) o < 1,0 V (entrada Schmitt Trigger), cuando = 5 ,0 V.
S e interpreta que hay un estado ló g ico T e n u n term inal d e entrada si la tensió n e n ese term inal es VH >
2,0 V (entrada TTL) o VIH > 4 ,0 V (entrada Schmitt Trigger), cua n d o = 5,0 V.
La tensió n d e salida para el estado lógico ‘O’ es VGl < 0,6 V si la corriente d e salida drenada por el term inal
es /a < 8 ,5 m A (cuando VDD = 4 ,5 V).
La tensión de salida para e l estado ló g ico T es VCH > V00 - 0,7 V = 3 ,8 V s i la corriente d e salida sum inis­
trada p o r el term inal es < -3,0 m A (cuando VDD = 4 ,5 V).
158 — Microcontroladores PIC

La m odificación selectiva o individual d e los bits d e u n p u erto exige


ciertas precauciones. E n realidad, los m icrocon trolad ores PIC n o d isp onen de
h a rd w a re en su s p u ertos para m odificar exclusiva y selectivam ente u n bit d e
salid a, sino q u e, para m odificar u n bit, siem p re se escriben la totalid ad d e los
bits del puerto. Incluso las instru ccion es d e m anipulación d e bits, c o m o bef y
bsf, q u e perm iten p o n er a 'O' y p o n er a T resp ectivam ente u n bit cualquiera d e
u n registro, lo que hacen realm en te es leer el registro, m odificar el bit que se
especifica en la instrucción y escribir la palabra resultante en el registro. E s d e­
cir, la m odificación selectiva d e u n bit d e un registro se realiza realm ente com o
u n a o p eració n d e lectu ra —m odificación — y escritura del registro com pleto.
Esta form a d e o p erar resu lta tran sparente al p ro g ra m a d o r cu an d o se trata de
m odificar un bit perteneciente a un registro d e la m em o ria d e datos. Si el bit
m odificado e s del registro FO R T d e u n puerto paralelo, entonces esa form a en
q u e o p eran las instrucciones d e m anipulación individual d e bits p u ed e p rod u ­
c ir resu ltad os inesperados e n los o tro s bits del p u erto. El problem a está en que,
cu a n d o se lee un p u erto, en realidad se lee el estado d e sus term inales, n o el
valor alm acen ad o en el registro PO R T; p o r lo tanto, la lectu ra n o tiene p o r qué
coin cidir necesariam en te c o n el valor existen te en el registro PORT.

5.2.1 ElpuertoA

El p u erto A p u ed e ten er hasta 8 bits, au n q u e en la m ay o ría d e los PIC


d e clase m edia (com o el P IC 16F873), só lo está n im p lem en tad o s 6 bits, que
co rresp o n d en a los term in ales RAO a RA5. T od o s los term in ales s e pueden
con fig u rar c o m o en trad as o c o m o salidas. R A 4 tiene la p a rticu la rid a d d e que
es una e n tra d a S ch m itt T rig g er y , si se p ro g ra m a co m o salid a, e s d e d re n a d o r
abierto. Ix>s registros d e funciones especiales asociad o s al p u erto A so n PO R ­
T A y TRISA.

L o s term in ales d el p u e rto A p u ed en e s ta r co m p a rtid o s co n la s en trad as


del co n v e rtid o r A / D si el m icro co n tro lad o r d isp on e d e este d isp ositivo, co m o
su ce d e en el P IC 16F 873. E n estos caso s los term inales del p u erto A pu ed en
s e r digitales o an alógicos, y esto se p ro g ra m a m ed ian te el registro d e funcio­
n es especiales A D C O N 1. El term in al R A 4 s e utiliza tam bién c o m o en trad a
d e reloj e x te rn o d el te m p o riz a d o r TimerO. El term inal s e d en om in a entonces
R A 4 /T 0 C K I. La tab la 5.2 m u estra las fu n cio n es d e los term in ales d el puerto
A e n u n P IC 16F873.

Ejemplo 5.2

Los term inales d e l puerto A son tam bién entradas analógicas en aquellos PIC que disponen de converti­
dor A^D. Este ejem plo m uestra cóm o se program a el pu e rto A tanto e n los P IC que n o tienen convertidor
A /D co m o en aquellos que sí lo tienen.
La en trad a y salida en paralelo — 159

Iniciación del pu e rto A (si e l P IC n o tiene convertidor A/D):


clrf STATUS ; Se selecciona e l banco 0.
clrf PO RTA ; S e pone 0 en el registro PORTA.
bsf STATUS, RPO ; Se selecciona e l b a n co 1.
m ovlw OxCF ; V a lor que h a y que ca rg a r e n T R IS A para program ar
m ovw f TR IS A ; R A <3:0> co m o e n tradas y R A <5:4> com o salidas.
bef STATUS, RPO ; S e seleccio na el banco 0.

Iniciación d e l puerto A (e n un P IC con conve rtid or A/D):


bef STATUS, RPO ; S e selecciona el
bef STATUS. RP1 ; banco 0.
clrf PORTA ; S e pone 0 en el registro PORTA.
b sf STATUS. RPO ; S e selecciona el banco 1.
m ovlw 0x06 ; S e configuran todos lo s term inales del
m ovwf ADCON1 ; puerto co m o entradas o salidas digitales.
m ovlw OxCF ; Valor que hay que cargar e n T R IS A p a ra program ar
m ovwf T R IS A ; R A < 3:0> com o e n tradas y R A < 5:4> com o salidas.
bef STATUS. RPO ; S e selecciona el banco 0.

T a b la 5.2 Fundones d e los terminales del puerto A en un PIC16FS73.

N om bre Función
RA0/AN0 E ntrada/salida d iq ita l o entrada analóqica.
[R Á 1/A N 1 E n trada/salida diqital o entrada analóqica.
ÍR A 2 /A N 2 E ntrada/salida diqital o entrada analóqica.
E n trada/salida digital, o entrada analógica, o tensión d e refe ren cia del
1R A 3/AN 3/VR EF
j conve rtid or A/D.
E n trada/salida digital o entrada externa de reloj para el TimerO. C om o salida,
RA4/T0CKI
es de drenador abierto.
E ntrada/salida digital o entrada d e selección del puerto serie sincrónico o
' RA5/SS/AN 4
entrada analóqica.

5.2.2 El pu erto B

El p u e rto B tiene 8 bits y s u s term in a le s se d e n o m in a n RBÜ a RB7.


P ara escrib ir u n d ato en el p u erto B s e u sa e l re g istro d e fu nciones e sp e­
ciales PO R TB. T o d o s los term in ales s e p u e d e n c o n fig u ra r c o m o e n tra d a s o
co m o salid as m ed ian te el re g istro d e fu n cio n es e sp e cia le s TR1SB. L a tabla
5 .3 m u e stra las fu n cio n es d e los term in ales d el p u e rto B e n u n P IC 16F 873.

C ad a term inal del p u e rto B cu en ta co n un circu ito d e p u ll-u p interno,


q u e s e p u ed e p ro g ra m a r m ed ian te el bit R B P U # d el reg istro d e funciones
especiales O P T IO N (bit 0 P T 1 0 N < 7 > ). C o n este b it se activan o d esactiv an los
p u ll-u p d el p u erto B.
1 6 0 — Microcontroladores PIC

T a b la 5.3 Funciones de los terminales del puerto B en un PIC16F873. Todos los terminales
tienen un pull-up interno programable por software. RBO puede utilizarse como
entrada de interrupción externa. Un cambio de nivel en las entradas RB4 a RB7
puede generar una solicitud de interrupción. Los terminales RB3, RB6 y R B7 se
usan en la programación del microcontrolador "en el circuito": se trata de un re­
curso disponible en los microcontroladores PIC para programar el microcontrola­
dor en la propia placa de circuito impreso d e la aplicación a la que está destinado.

Nombre Función
RBO/INT Entrada/salida digital. Entrada de interrupción extem a.
RB1 E n trada/salida digital.
RB2 E n trada/salida digital.
RB3/PG M E n trada/salida digital. Term inal d e program ación en circuito.
RB4 Entrada/salida. En entrada se program a una interrupción por cam bio d e nivel lógico.
R B5 Entrada/salida. E n entrada se program a una interrupción por cam bio d e nivel lógico.
E ntrada/salida. E n entrada se program a una interrupción por cam bio d e nivel lógico.
R B 6/PG C
Term inal d e program ación en circuito.
E ntrada/salida. E n entrada s e program a una interrupción p o r cam bio d e nivel lógico.
RB7/PG D
Term inal d e program ación e n circuito.

U n recu rso q u e p o see el p u erto B e s q u e p u e d e g e n e ra r una solicitud


d e in terru p ción p o r cam b io en el nivel ló gico d e la señ al e n cu alq u iera de
los term in ales R B 4 a R B 7. Si estos term inales s e p ro g ra m a n co m o en trad as,
u n cam b io e n el nivel lógico d e la señ al d e en tra d a , d e 'O' a 'Y o viceversa,
gen era u n a in terru pción . Este cam b io p u e d e s e r p ro d u cid o , p o r ejem plo, p o r
la p u lsación d e u n a tecla co n ectad a a u n o d e los term in ales del p u e rto . Al
p ro d u cirse la in terru p ció n p o r cam b io s en R B 4 a R B 7, el b it R BIF del registro
IN T C O N (bit IN T C O N < 0> ) se p o n e a T . L a in terru p ció n p u ed e habilitarse
o inhabilitarse m ed ian te el bit R BIE del reg istro IN T C O N (bit IN T C O N < 3> ).
E sta in terru p ción p u ed e serv ir p ara s a ca r al m icro co n tro lad o r del m o d o de
bajo co n su m o (m o d o sleep).
El term in al RBO tam bién sirv e p a ra a c e p ta r u n a solicitu d d e in terru p ­
c ió n e x te rn a , p o r flancos. E n este c a s o e l term in al se d e n o m in a R BO /IN T.
E sta in terru p ción q u ed a re p o rta d a m ed ia n te el bit 1NTF d el registro IN T C O N
(bit IN T C O N < l> ) y se habilita o in h abilita m e d ia n te el b it IN T E d el registro
IN T C O N (bit IN T C O N < 4> ). El flan co q u e p ro d u c e la in te rru p ció n puede
s e r el d e su b id a o el d e b ajad a, lo c u a l s e p ro g ra m a m e d ia n te el b it IN T ED G
del re g istro O P T IO N (b it O P T IO N < 6> ).

O tra característica d el p u erto B es q u e los term inales RB3, RB6 y RB7


p u ed en s e r u tilizad os c o m o term in ales p a ra la p ro g ram ació n en circu ito del
m icro co n tro lad o r. L a p ro g ra m a ció n en circu ito (ICSP: Iti-C ircu it S erial P ro-
g ram m in g ) es un re cu rso disponible en los m icro co n tro lad o res PIC q u e per­
La entrada y salida en paralelo — 161

m ite que el m icro co n tro lad o r s e a p ro g ra m a d o en la p rop ia placa d e circu ito


im p reso d e la ap licació n a la q u e está d estin ad o . El p ro g ra m a se in trod u ce
en la m em o ria O T P, E E P R O M o F L A S H d el m icro co n tro lad o r b ásicam en te a
tra v é s d e los term in ales del p u erto B an te s m en cio n ad o s, utilizando u n for­
m a to d e transm isión serie. S e reco m ien d a co n su ltar las esp ecificacion es d e
p ro g ram ació n d e c a d a d isp ositivo p ara utilizar este recu rso.

5.2.3 Elpuerto C

El p u erto C e s u n p u e rto paralelo d e 8 bits c u y o s term in ales se n o m b ran


RCO a R C 7. P a ra escrib ir u n d ato e n el p u e rto C se usa el reg istro d e funciones
especiales PO R TC . T o d o s los term inales s e pu ed en con fig u rar c o m o en trad as
d e tip o S ch m itt T rig g er o c o m o salid as digitales, m ed ian te el reg istro d e fun­
ciones especiales TR1SC.

L o s term in ales d el p u e rto C co m p a rte n funciones c o n o tro s d isp ositivos


de e n tra d a y salida: el te m p o riz a d o r T im e ri, el m ó d u lo C C P (C om p are/C ap -
tu re/P W M ) y los p u e rto s serie SSP (S y n ch ron ou s S erial P o r t) o M SSP (M aster
S y n ch ron ou s S erial P o r t) y U S A R T (U n iv ersal S y n ch ron ou s A sy n ch ro n o u s T ran s-
m itter R eceiv er). E s ta m u ltip licid ad d e fu n cio n es se ilu stra en la tabla 5 .4 para
el P IC 16F873.
T ab la 5.4 Funciones de los tenninales del Puerto C en un P1C16F873. T oáis las entradas
son de tipo Schmitt Trigger.

Nombre Función
E n trada/salida digital o salida del oscilador d e l Tem porizador 1
R C 0/T 1O S O T 1C K I
o entrada d e reloj d e l Tem porizador 1.
E ntrada/salida d ig ita l o entrada d e l o scila d o r d e l Tem porizador
R C 1/T 10S I/C C P 2 1 o entrada d e reloj d e l Tem porizador 1 o term inal d e l m ódulo
C C P2.
RC2/CCP1 E n trada/salida diqital o term inal del m ó d u lo CCP1.
R C 3/SCK/SCL E n trada/salida diqital o term inal del pu e rto serie sincrónico.
R C 4/SD I/S D A E n trada/salida diqital o term inal del pu e rto serie sincrónico.
R C 5 /S D 0 E n trada/salida diqital o term inal del pu e rto serie sincrónico.
R C 6/TX/C K E n trada/salida diqital o term inal d e l puerto se rie USART.
R C 7/R X/D T E n trada/salida diqital o term inal d e l puerto se rie USART.

5.2.4 LospuertosD,E,FyG

L o s p u erto s D y E so n p u erto s p aralelos d e h a sta 8 bits. T o d o s los ter­


m inales se p u e d e n con fig u rar c o m o e n tra d a s o co m o salid as digitales. Si se
con figu ran c o m o e n trad as, en to n ces so n d e tipo S ch m itt T rigger. E n los m icro ­
con tro lad o res d o n d e existen , los term in ales d e e sto s p u erto s co m p a rte n sus
fu nciones c o n el P u e rto Paralelo E sclav o (PSP). A tra v é s d e los ten n in ales del
p u erto E tam bién se p u ed en ten er alg u n as e n tra d a s analógicas ad icion ales a
162 — Microcontroladores PIC

las d isp onibles e n el p u e rto A . L o s reg istro s d e fu nciones especiales asociad o s


a los p u erto s D y E so n PO R TD y PO R T E p ara d a to s y TRISD y TR ISE para
con tro l. L o s p u e rto s D y E están im p lem en tad o s en el P IC 1 6 F 8 7 4 p ero n o en
el P IC 16F873.

L o s p u e rto s F y G so n p u erto s p aralelo s d e h a sta 8 bits d e e n tra d a d e


tip o S ch m itt T rigger. C o m p arten fu nciones co n las salid as d e e x cita d o re s (dri-
v ers) d e p an tallas d e cristal líq uido (L C D : L iq u id C ry stal D isp lay ). L o s p u ertos
paralelos F y G sólo existen en los m icro co n tro la d o re s fab ricad os p ara e x cita r
d irectam en te d isp ositiv os d e cristal líquido, c o m o el P IC 16F946.

5.2.5 El Puerto Paralelo Esclavo

El Puerto Paralelo E sclav o (PSP: P a r a llel S la v e P o rt) e s u n bus bid irec-


cion al d e 8 bits co n señales d e co n tro l p a ra leer y escrib ir d a to s d e s d e un dis­
positivo extern o al m icro co n tro lad o r. El PSP s e p u e d e u tilizar p ara co n ectar
e l m icro co n tro lad o r d irectam en te al bus d e datos y d e co n tro l d e u n sistem a
b asad o en u n m icro p ro cesad o r u o tro m icro co n tro la d o r, co n v irtien d o al PIC
p o seed o r del PSP en un p u e rto d e E / S d e e s e sistem a, tal c o m o m u e stra la
figura 5.7a.

E n los m icro co n tro lad o res q u e tienen PSP, c o m o el P IC 16F 874, el PSP
se realiza co m o una función altern ativ a d e los term in ales d e los p u e rto s D y
E. El P S P cu e n ta co n 8 líneas d e d ato s (P S P < 0:7> ) y 3 líneas d e co n tro l p a ra la
lectu ra (RD #) y escritu ra (W R #) d e d ato s, y la selección (C S#) d el P IC con v er­
tid o en d isp ositivo periférico. L as líneas d e d a to s d el P S P se realizan sob re los
term in ales R D < 0:7> y las d e co n tro l utilizan los term in ales R E< 0:2>.

El P S P funciona d e la sigu iente m an era. Si el sistem a exterio r al PIC va


a leer o escrib ir un d ato en el P IC u san d o el P S P , d e b e m an ten er seleccion ad o
el d isp ositivo c o n C S# = '0 ' d u ra n te la lectu ra o e scritu ra del d ato. Si CS# =
T , las líneas d e d a to s p erm an ecen en e sta d o d e alta im p ed an cia. D urante
la lectu ra, lo s term in ales d e d ato s se co m p o rta n c o m o salidas; m ien tras que
d u ra n te la escritu ra d e u n d a to , se co m p o rta n c o m o en trad as. L a figu ra 5.7b
ilustra el co m p o rtam ien to d e las señ ales d el PSP d u ra n te ciclos d e lectu ra y
e scritu ra d e datos.

En el m icro co n tro lad o r h ay tre s bits q u e in form an del estad o d el PSP.


los bits IBF y O B F d el reg istro TOISE, y el bit PSPIF del registro PIR 1. El bit
IBF (ln p u t B u fje r F u lI) se p o n e a T cu a n d o el reg istro PO R TD co n tien e un
d ato escrito en el PSP d esd e el exterior; IBF se p one a '0 ' au tom áticam en te
cu a n d o el p ro g ra m a lee el d ato d e en tra d a en PO RTD .
La entrada y salida en paralelo — 163

P e rifé r ic o ■\

S is te m a c o n
m ic r o p r o c e s a d o r
(a)

P S P < 0 :7 > - - - ( Dai° } — t ( D a t o > ---------------

CS#
i r t
W R#

RD#
YJ
E s c r itu r a L e c tu ra

(b)

Figura 5.7 El Puerto Paralelo Esclavo (PSP) es un bus bidireccional de 8 bits con señales de
control para la transferencia paralela de datos entre el PIC y un dispositivo exter­
no al microcontrolador. En (a) se muestra un posible uso del PSP para conectar el
PIC directamente a l bus de datos (BDAT) de un sistema con un microprocesador
o microcontrolador. En este caso, el PIC se convierte en un puerto de E/S de ese
sistema, a través del cual se conecta el periférico al sistema con microprocesador.
En (b) se muestran diagramas de tiempo con las señales que participan de las
transferencias d e E/S a través del PSP entre el PIC y el sistema.

El bit O B F (O u tp u t B u ffe r F u ll) se p one a T cu a n d o el p ro g ra m a escrib e


un d ato en el registro PO R TD , el cu al d eb e salir p o r los term in ales del PSP;
O B F se p o n e a 'O' cu a n d o el registro PO R TD es lib erad o del d ato d e salid a
debido a q u e el d isp ositivo e x te rn o realizó una lectu ra del PSP.

El bit PSPIF (P S P In terru p t F la g ) s e p one a T cad a v e z q u e u n d ato es


leído o escrito d esd e el exterior; d eb e ser p u esto a '0 ' p o r softw are u n a vez
que el p ro g ram a atienda la transferencia p o r el PSP. P S P IF = T g e n e ra una
solicitud d e in terru p ción si la in terru p ción d el P S P está habilitada, lo cual
ocu rre si el b it PSPIE (.P S P In terru p t E ntibie) del re g istro PIE1 es ' l ' .

La aten ció n en el P IC d e la en tra d a y salid a d e d a to s p o r el P S P p u ed e


ser p ro g ra m a d a o p o r in terru pción . L a E / S p ro g ra m a d a se realiza m ed ian te
la co n su lta d e los bits PSPIF, IBF y O B F. E n la E / S p o r in terru p ción , el p ro ­
164 — Microcontroladores PIC

g ra m a q u e atien d e la in terru p ción d el PSP d eb e co n su ltar los bits IBF y O BF


p a ra c o n o ce r el tipo d e transferencia q u e tu v o lu g a r en tre el PSP y el exterior,
y así a c tu a r en con secu en cia.

5 .3 Conexión y tra ta m ie n to a periféricos comunes

5.3.1 Interruptoresy diodos LEO

E n tre los d isp ositivos d e E / S q u e se co n ectan a m en u d o a u n m icro­


co n tro lad o r están los in terru p to res y los d iod o s LED . L a figu ra 5 .8 m u estra
tres circu ito s p a ra co n e cta r e sto s d isp ositivos a las líneas d e l p u erto B d e un
m icro co n tro lad o r PIC.

E l d io d o L E D 1 se activ a c o n u n nivel d e ten sión bajo ('0' ló gico) en el


term inal R B<í>, con fig u rad o p rev iam en te co m o u n a salid a digital. E n este
caso , la co rrien te í, q u e circu la p o r e l d io d o L E D 1 "e n tra " en el term inal del
p u e rto . Si s e quiere q u e e n e s e term in al se m an ten ga el 'O7 lógico cu a n d o se
activ a el L E D , d eb e cu m plirse

h ^ Wma* (5-1)
d o n d e íOLmjx e s la co rrien te m áxim a d e salida d el term inal cu a n d o está en el
nivel bajo.
El d io d o L E D 2 se activ a c o n u n nivel alto ('1' lógico) e n e l te rm in a l de
salid a RB<j> . L a co rrien te ¡2 q u e circu la p o r el d io d o L E D 2 "sa le " d el term i­
n al. P a ra q u e en e s ta s con d icion es el term inal m a n te n g a el nivel ló gico T
d eb e cu m plirse

h^ ^ O H m ax ( ^ )

d o n d e IOHmax e s el v a lo r m áxim o d e la c o rrie n te d e salid a del term in al e n nivel


alto.

E n gen eral |IOUnax | > |IOHmax |, d e m o d o que e s m ás fácil cu m p lir la con­


dición (5.1) q u e la (5.2). P o r esta ra z ó n s e prefiere co n e cta r los d io d o s LED
a los term in ales d e los p u erto s p aralelo s tal c o m o está co n e cta d o el diodo
LED 1.
La entrada y salida en paralelo — 165

Figura 5.8 Posibles esquemas de conexión de interruptores y diodos LED al puerto B de un


microcontrolador PIC.

Ejemplo 5.3

S e tiene u n P IC 1 6F 873 a l que se quieren co n e cta r d o s indica dores L E D y u n interruptor, e n u n esquem a


com o e l m ostrado e n la figura 5.8. C a lcular h s valores d e la s resistencias R L., R u s i la tensión de alim en­
tación es 1 /^ = 5 7.
Los diodos LED utilizados com únm ente com o indicadores (3 -5 m m d e diám etro, colore s rojo, verde,
am arillo) operan con una corriente de conducción lf = 10 m A y una tensión d e conducción Vr = 2 ,0 V
aproxim adam ente (depende del color).
Si /p = 10 m A y Z ^ <f> = VCL (V a = 0 ,35 V para = 10 mA, según el fabricante d e l PIC), el valor d e Rl:
cuando el L E D es rojo (V F = 1,6 V ), es:

ffL, . ^ \6- 0-^ 5- - 305 O

Si /r = 10 m A y VRB<¡t = Vw ( Vw = 4 ,3 V para / ^ = 10 mA, según e l fabricante d e l PIC), e l valor d e R ^ es:

_V oh- ^ _ 4 ,3 -2 ,0 _
Ir “ 0,01 ' 230Q

El valor d e la resistencia en serie con el L E D no e s critico y por tanto s e pueden utilizar valores estandari­
zados con tolerancia del 5 % o el 1 0 % . E n este ejem plo se tom an los valores f l L, = 300 Q y Rl2 = 220 O,
con tolerancia d e l 5 %.
166 — Microcontroladores PIC

L o s in terru p to res se co n ectan a e n tra d a s digitales. E n la figura 5.8, el


in te rru p to r K está co n e cta d o a la en tra d a RB< k> . La co n exió n es tal q u e c u a n ­
d o el in terru p to r está "c e r ra d o " p o n e u n nivel d e tensión bajo ( '0 ' lógico) en
el term inal al q u e está co n e cta d o . E n la con exión rep resen tad a en la figura
5 .8 , cu a n d o el in terru p to r K está ce rra d o , h a y 0 V en el term inal RB<fc>. Si el
in terru p to r está "a b ie rto ", el circu ito d eb e p o n e r un nivel d e ten sión alto ('1 '
lógico) e n el term inal corresp o n d ien te. Este nivel alto se g a ran tiza c o n una
resistencia c o n e cta d a a la ten sión VDDdel m icro co n tro la d o r (p u ll-u p extern o ).
El v a lo r d e esta resistencia d e p u ll-u p ex te rn a (R Ke n la figu ra 5 .8 ) p u e d e s e r ra ­
zon ab lem en te alto (v arias d ecen as d e kiloohm s), p u es la corrien te con su m id a
p o r u n a en trad a digital es su m am en te peq u eñ a.

L o s ten n in ales del p u e rto B d e los m icro co n tro la d o re s PIC p o se e n un


resisto r d e p u ll-u p interno, el cu al se p u e d e c o n e c ta r o d esco n ectar p o r p ro g ra ­
m a , m ed ian te el bit R B PU del reg istro O PT IO N . E n ton ces, si los in terru p to res
se c o n e cta n a los term in ales del p u e rto B y se h a p ro g ra m a d o la co n e x ió n de
los resisto res d e p u ll-u p in tern os, se p u e d e p rescin d ir d e la s resisten cias R K
e x te m as.

L o s in terru p to res m ecán icos, q u e en esencia so n d o s p iezas m etálicas


q u e se tocan o se sep aran , tienen el p rob lem a del rebote. C u an d o s e cie rra o
s e abre u n in terru p to r, las p iezas m etálicas n o p e rm a n e ce n en segu id a e n su
po sición final sino que, d e m o d o an álo g o a u n a bola q u e c a e sob re una su p e r­
ficie d u ra , rebotan d u ra n te u n cierto tiem p o, c o n los con sig u ien tes cam bios
rápid os d e la resistencia d e co n tacto , q u e co rre sp o n d e n a ap e rtu ra s y cierres
rápid os antes d e q u e el in terru p to r a lca n ce su e sta d o estable (figu ra 5 .9 ). El
rebote p u ed e h acer q u e u n ú n ico cierre (o a p ertu ra) del in terru p tor, sea in­
te rp re tad o erró n e a m e n te p o r el m icro co n tro la d o r c o m o cierres y ap ertu ras
sucesivos.
El p rob lem a del rebote s e p u ed e so lu cio n ar p o r h a rd w a re y p o r soft­
w are. U n a p rim era solu ción es, o b v iam en te, ca m b ia r e l in terru p to r p o r otro
q u e n o sea m ecán ico (d e efecto H all), o p o r in terru p to res d e lám in as c o n co n ­
tacto s d e m ercu rio , q u e n o tienen rebotes. N o ob stan te, la v aried ad d e m od e­
los y su versatilid ad es m u y lim itad a resp ecto a los in terru p to res m ecán icos.
O tra solu ción h a rd w a re e s co n e cta r la salida del in terru p to r a u n circu ito m o -
n oestable que ala rg u e e l p rim e r p u lso d e te cta d o d u ra n te un tiem p o suficiente
p ara o cu lta r los o tro s p u lsos. Sin em b arg o , los circu ito s a ñ ad id o s a u m e n ta n el
co ste y el esp acio o cu p ad o .
La entrada y salida e n paralelo — 167

P O R TB < *> T ‘O ’ T

H H- H k
< 2 0 ms < 2 0 ms

r i g i i r a 5 .9 El problema del rebote en los interruptores mecánicos. Cuando se cierra o se abre


el interruptor, las piezas metálicas vibran y se aprecien aperturas y cierres rápidos
antes de alcanzar la posición estable. En general, ese estado transitorio dura menos
de 20 ms.

L a solución del reb ote p o r so ftw are con siste b ásicam en te e n leer el esta­
d o del in terru p to r d esp u és d e tran scu rrid o u n tiem p o prudencial a p a rtir del
m o m e n to en q u e s e m anip uló el in terru p to r, tras h a b e r d e te cta d o la p rim era
transición. U n tiem p o d e esp era d e u n o s 2 0 m s es g e n eralm en te suficiente. El
ejem plo 5 .4 ilustra c ó m o a p licar e s ta solución.

Ejemplo 5.4

En este ejem plo se m uestra cóm o leer con seguridad el estado d e un interruptor conectado al bit k del
puerto B según e l esquem a d e la figura 5.8. El problem a d e l rebote se soluciona por software, m ediante el
algoritm o presentado en la figura 5.10.
En e s te algoritm o, e l in terruptor se le e una prim era ve z y su estado se m em oriza en u n registro d e l mi­
crocontrolador (TEM P); se esp e ra 2 0 m s p a ra q u e se extinga el rebote y se repite la lectura. Si la s dos
lecturas coinciden, sig nifica q u e son válidas y se d a p o r concluida la le ctura se g u ra d e l interruptor. Si
las lecturas difieren, significa que el rebote n o ha concluido y hay que continuar leyendo e l in terruptor a
intervalos (aquí d e 20 m s) hasta que la s lecturas sean iguales.

Figura 5.10 Algoritmo para leer el estado de un inte­


rruptor, solucionando el problema del re­
bote. El interruptor está conectado al bit k
del puerto B, según el esquema d e lafigura
5.8. TEM P es un registro de la memoria
de datos del microcontrolador y W es el
registro de trabajo.

A continuación se d a el listado d e la su b rutina LE E_K , que


im plem enta el algoritm o d e la fig u ra 5.10.

lis t p=16f873
#include <p16f873.inc>

TE M P equ 0x20 ; R egistro usado tem poralm ente por la s subrutinas


k equ 3 ; N úm ero d e l bit del puerto B al que e s tá conectado
; el interruptor.
168 — Microcontroladores PIC

LE E_K : R utina para le e r el estado d e un in terruptor conectado a l b it k d e l pu e rto B.


sin rebotes.
Entradas: ninguna.
Salidas: E n W <0> el v a lo r d e l bit PO R TB<k>
LEE_K:

btfss PO R TB. k Leer el pu e rto B . ¿El bit P O R T B <k> = 1?


g o to KO N o: ir a pon er 0 e n TEMP.
m ovtw 1 S i: pon er 1 e n TEMP.
m ovw f TE M P TE M P e n 1.
g oto K1
KO:
d rf TE M P TE M P e n 0.
K1: A q u i el valor d e PO R T <k> está e n TEMP.

cali DEM 20 E sperar 2 0 ms.

btfss PO R TB. k Leer d e nuevo el pu e rto B. ¿P O R TB <k> = 1?


g o to K2 N o: ir a pon er 0 e n W.
m ovlw 1 S í: pon er 1 e n W.
g o to K3
K2:
clrw WenO.
K3: 4 q u i el v a lo r d e PORT</c> está e n W.
x o rw f TEMP, W S e com paran lo s valore s leídos. S i son iguales, e n W
se pone u n 0 y se activa Z. T E M P n o se altera.
btfss STATUS, Z ¿TE M P = W ? ¿ Z = 1 ?
goto LEE_K No: N o ha term inado el rebote, leer PO RTB<k> de nuevo.
K4: Sí: F in d e l rebote, term in ar la rutina.
m ovf TEMP, W P oner el valor d e P O R T B <k> en W y
retum retom ar.

;D EM 20: R utina que dem ora 2 0 ms.


DEM 20

; A quí va el código d e esta subrutina

retum

end
La entrada y salida en paralelo — 169

5.3.2 Teclados matriciales

U n te cla d o m atricial está co m p u esto p o r teclas in terco n ectad as fo rm an ­


d o u n a m atriz. L a s teclas so n sim p les in terru p to res m ecán icos y c a d a una
o cu p a la in tersección d e una fila co n u n a co lu m n a. C u a n d o se p u lsa u n a tecla,
se ponen en co n ta cto eléctrico la fila y la co lu m n a d o n d e está d ich a tecla. Las
filas y co lu m n as d e esta m atriz se p u ed en c o n e c ta r a los term in ales d e uno
o m ás p u erto s paralelos. L a figura 5.11 m u estra u n teclad o m atricial d e 16
teclas, d isp u estas en 4 filas y 4 colu m n as.

Figura 5.11 Teclado m atriáal de 16 teclas.

P a ra e x p lo ra r un teclad o m atricial se en v ían señales hacia las filas d e la


m atriz p o r las lín eas d e exp lo ració n y s e re co g e in form ación p o r las co lu m ­
nas, q u e en to n ces con stitu y en las líneas d e re to m o . B ásicam en te se p a rte d e
que si n o h a y n in g u n a tecla p u lsad a, to d a s las líneas d e r e to m o está n en el
nivel ló gico T . Las líneas d e exp lo ració n so n p u estas (su cesiva o sim u ltán ea­
m ente) a '0 '. E s te v alo r ló gico só lo ap a re ce en la línea d e r e to m o d o n d e e s tá la
tecla p u lsada, m ien tras q u e las restan tes líneas d e r e to m o m an tien en el v a lo r
'Y . C o n la in form ación e n v ia d a hacia la m a triz y la q u e re to m a , se con form a
un có d ig o ú n ico p a ra c a d a tecla, llam ad o có d ig o d e exp loración .

Para g a ra n tiz a r q u e las líneas d e r e to m o p erm an ezcan en 'V si n o hay


tecla p u lsad a, s e c o n e cta n resisten cias en tre c a d a línea d e re to m o y la tensión
d e alim entación (VDD), segú n m u estra la figura 5.TL
170 — Microcontroladores PIC

El m ecan ism o em p lead o p a ra aten d er a los teclad os m atriciales tiene los


p asos siguientes:

Paso 1 .E sp erar la liberación del teclad o (debido al pulsado d e la tecla anterior a


la actual).

Paso 2 .D etectar que h ay u n a n u eva tecla pulsada.

P a so 3.Si s e detecta q u e s e h a pulsado una tecla, s e debe e sp e ra r un tiem p o p ru ­


dencial p a ra q u e term ine el rebote (acción d en om in ad a debou n cé). U na
esp era d e u n os 2 0 m s suele ser suficiente.

Paso 4 . S e exp lo ra la m atriz del teclado p ara determ in ar cu ál es la tecla q u e lia


sido p u lsada. E n este p aso s e gen era e l có d ig o d e exp loración que id en­
tifica la tecla p u lsada, que contiene básicam ente los n ú m eros d e la fila y
la colu m n a que o cu p a la tecla en la m atriz. L a exp loración del teclado se
puede hacer m edian te d o s m étod os diferentes:

• P o r exploración secuencial d e las filas. E n este m éto d o s e en vía u n '0*


hacia la p rim era fila y se leen tod as las colu m n as. Si la lectu ra no contiene
ningún '0 ' (todas las colu m n as están e n ' Y ), la tecla pu lsad a n o está en esa
fila. Enton ces se en v ía el '0 ' a la siguiente fila y se leen tod as las colu m n as.
S e repite el p ro ceso c o n las siguientes filas hasta e n co n trar alg ú n '0 ' en la
lectu ra d e las colu m n as. Se con o ce entonces en qué fila y colu m n a está la
tecla pu lsad a y c o n esto se p u ed e con form ar un cód igo d e exploración
p ara la tecla.

• P o r exploración sim ultán ea d e filas y colu m n as. E n este m éto d o se envía


un ‘(Y a tod as las filas sim ultáneam ente y se leen tod as las colu m n as, con
lo que se detecta en qué colu m n a está la tecla p u lsad a. A continuación se
invierte el proceso: se en vía sim ultáneam ente u n '(T a tod as las colu m n as
y se leen tod as las filas, detectán d ose así la fila e n que está la tecla p u l­
sada. C on ociend o e n qué fila y colu m n a está la tecla p u lsada, s e puede
con form ar u n cód igo d e exp loración p a ra la tecla.

El m éto d o d e exp lo ració n sim u ltán ea d e filas y co lu m n a s tiene la v en ­


taja d e q u e p erm ite la exp lo ració n ráp id a d el teclad o e n só lo d o s p aso s, pero
req u iere que las líneas d e exp lo ració n y reto rn o sean bidireccionales (aunque
esto n o e s p rob lem a en los m icro co n tro la d o re s PIC ). El m éto d o d e e x p lo ra ­
ció n secuencial es en gen eral m ás lento, pu es el tiem p o q u e d em o ra d etectar
la p u lsación d e una tecla d ep en d e d e su p o sición e n la m atriz, p ero e n cam b io
las líneas d e exp lo ració n y reto rn o p u ed en s e r unidireccionales.
La entrada y salida en paralelo — 171

Figura 5.12 Diagrama de bloques


del algoritmo para
leer un teclado ma-
tricial de N filas y M P o n e r 0‘ e n todas las filas

columnas, usando el
método de exploración L e e r co lu m n as (todas a la v e z)
secuencial. El algorit­
mo espera hasta que
se pulse una tecla y
devuelve su posición
f i a i, columna j).
Poner 0 ' e n toda s las filas

L e e r co lu m n as (to d a s a la v e z)

¿A lguna

E s p e ra r 2 0 m s

P o n e r 0 ' e n fila I

La figura 5 .1 2 m u estra
el a lg o ritm o d e aten ción a Le e r co lu m n as (todas a ta v e z)

teclad os m atriciales m ed ian ­


te e xp lo ració n secu en cial
de las filas del teclad o. Este
a lg o ritm o s e p u ed e m ejo­ ¿0 e n la colu m n a y?
T e c la pulsada en
ra r añ ad ién d o le alg ú n paso fila /colu m n a J
p a ra co m p ro b a r la validez
del có d ig o d e exp loración
obtenido y d eterm in ar si se
ha p u lsad o m ás d e una tecla
a la vez. También se puede
co n v e rtir el có d ig o d e exp lo­
ración en alg ú n có d ig o es­
tán d ar, c o m o p o r ejem plo el
cód igo A SC II, si se trata d e
R etorn a'
un teclad o alfanum érico. P ulsación falsa
172 — Microcontroladores PIC

Figura 5.13 Teclado matricial de 16 teclas conectado al puerto R de un PIC. Los diodos evitan
el cortocircuito acáden tal que se produce entre líneas de exploración si se pulsan
simultáneamente dos o más teclas situadas en la misma columna. Se aprovecha
el pull-up interno (no representado) disponible en el puerto R para mantener un
nivel lógico '7 ' en las líneas de retom o cuando no hay tecla pulsada.

Ejemplo 5.5

A tención a u n teclad o m atricial d e 16 te cla s conectado al pu e rto B d e u n m icrocontrolador PIC d e clase


m edia.
L a figura 5.13 m uestra una posible conexión del teclado m a tn d a l al puerto B d e l m icrocontrolador. Al
com parar el esquem a d e esta fig u ra con el de la figura 5.11, se observan d o s diferencias fundam entales.
E n p rim e r lugar, n o se han utilizado la s resistencias d e p u ll-u p e n las líneas d e reto m o, porque la s lineas
del puerto B tienen un pull-up activo interno que ha ce la funció n d e esas resistencias, garantizando
que e n la s líneas d e re to m o haya u n T si no hay ninguna tecla pulsada. La segu nda diferencia que se
o bserva es la presencia d e los diodos D en la s líneas d e exploración, q u e se han colocado para evitar
la corriente excesiva que se produce e n lo s term inales d e salida del puerto B (RBO a RB3) s i se pulsan
sim ultáneam ente d o s te cla s situadas en la m ism a colum na durante el proceso d e exploración. Estos
d iodos pueden sustituirse por resistencias de entre 1 K H y 2,2 k í l
La atención al teclad o se realiza m ediante la subrutina LE ETE C , q u e explora el teclado m atricial siguien­
do el algoritm o representado en la figura 5.12. La rutina devuelve el código de exploración d e la tecla
pulsada. La ta b la 5.5 m uestra lo s códigos d e exploración devueltos.
T a b la 5.5 Códigos d e exploración deimeltos por la rutina LEETEC al explorar el teclado de
lafigura 5.13.

Fila C olum na C ó dig o d e exploración


Tecla
(en binario) (en binario) (en hexadecim al)
. .......
~F 00 00 00
2 00 01 01
La entrada y salida en paralelo — 173

3 00 10 02
4 01 00 04
5 01 01 05
6 01 10 06
7 10 00 08
8 10 01 09
9 10 10 0A
0 11 01 0D
* 11 00 OC
# 11 10 0E
A 00 11 03
B 01 11 07
C 10 11 0B
D 11 11 0F

A continuación se presentan lo s lista dos d e la s subrutinas IN IC IO y LE ETE C . L a subrutina IN IC IO se usa


para preparar el pu e rto B para la p o sterior atención al teclado,
list p=16f873
tfin d u d e <p16f873.inc>
¡Declaraciones:
TEM P equ 0x20 ; R egistro usado tem poralm ente p o r las subrutinas.
FILA equ 0x21 ; R egistro usado tem poralm ente por la s subrutinas.
CO LU M N A equ 0x22 ; R egistro usado tem poralm ente por la s subrutinas.

¡INICIO: Rutina p a ra program ar el pu e rto B.


INICIO:
clrf STATUS ; S e selecciona el banco 0.
bef IN TC O N , INTE ; Inhabilitar interrupción exte m a por RBO.
bef IN TC O N , RBIE ; Inhabilitar in te rru p d ó n por cam bios e n RB<7;4>.
m ovlw OFFh ; Valor a pon er en PO RTB.
m ovwf PORTB ; Todas la s salidas del pu e rto B e n T .
bsf STATUS, RPO ; S e selecciona el banco 1.
m ovlw OFOh ; V a lor que hay q u e ca rg a r e n TR IS B para program ar
m ovwf TRISB ; R B < 3:0> com o salidas y RB<7:4> co m o entradas.
bef O P TIO N REG, N O T _ R B P U ; H abilitar los pull-up internos d e l puerto B.
bef STATUS, RPO ; S e selecciona el banco 0.
return

LE ETE C : R utina d e exploración del te cla d o m atricial.


Esta rutina esp e ra la pulsación d e una te d a , devo lviendo e n W ; s u código d e exploradón.
Entradas: ninguna.
S alidas: El código d e exploración en W. Los bits W <3:2> contienen la colum na
donde e s tá la tecla pulsada y lo s bits W <1:0> contienen la fila.

LEETEC:
m ovlw OFOh
m o vw f PO RTB ; Todas las filas en ‘0’ .
174 — Microcontroladores PIC

TEC10: ; E sperar la liberación d e l teclado:


m ovf PO RTB, W ; S e leen todas las colum nas a la vez. La parte baja d e W
; está e n 0. En la parte alta, si hay tecla pulsada, el bit
; correspondiente a la linea d e re to m o d e la te d a
; está e n 0 y lo s restantes b its están en 1.
xorlw OFOh ; S e invierte la situación e n la parte alta d e W: el bit
; correspondiente a la línea d e retom o de la te d a pulsada
; está e n 1 y lo s restantes b its e n 0. L a parte baja d e W
; n o se altera. S e activa Z s i no hay tecla pulsada.
btfss STATUS, Z ; ¿A biertas todas la s teclas?¿ Z = 1?
g oto TEC 10 ; N o - e sp e ra r la liberación del teclado.
TEC20: ; S í - continuar. E sp e ra r la pulsación d e una tecla:
m ovlw OFOh
m ovwf PORTB ; Todas las fila s en ‘0’ .
nop
m ovf PO RTB, W : S e leen todas la s colum nas a la vez.
xorlw OFOh ; Z = 0 si hay te d a pulsada.
btfsc STATUS, Z ; ¿H ay alguna tecla pulsada?¿Z = 0?
goto TEC 20 ; No - espe rar la pulsación d e una te d a .
TEC30: ; S i • continuar.
cali D E M O R A 20 ; E sperar 2 0 m s debido al rebote.
TEC40: ; E xplorar la s fila s d e l te d a d o sucesivam ente para
m ovlw OFFh ; averiguar qué tecla se pulsó:
m ovw f PORTB ; Todas la s fila s en T .
nop
FILAO: ; E xplorar fila 0:
m ovlw 0
m ovw f FILA
bef PO R TB, 0 ; P o n e r 0 e n fila 0 (RB0).
nop
m ovf PO RTB, W ; S e leen todas las colum nas a la vez.
cali IDEN TIFIC A ; Si hay te d a pulsada, se identifica la colum na donde está
; la te c la .
btfsc STATUS, C ; ¿H ay te d a pulsada?¿C = 1?
goto TEC50 ; S i - Se encontró una tecla pulsada. Term inar exploradón.
b sf PO R TB. 0 ; No - P oner 1 en fila explorada y pasar a la siguiente.
nop
FILA1: ; E xplorar fila 1:
m ovlw 1
m ovw f FILA
bef PO R TB, 1 ; P o n e r 0 e n fila 1 (RB1).
~o
O
3

m ovf PO R TB, W ; S e leen todas la s colum nas a la vez.


cali IDENTIFICA ; Si h a y te d a pulsada, se identifica la colum na donde está
; la tecla.
La entrada y salida en paralelo — 175

btfsc STATUS, C ; ¿H ay te d a pulsada?¿C = 1?


goto TEC50 ; Sí - S e encontró una teda pulsada Term inar exploración.
bsf PO RTB, 1 ; No - P oner 1 e n fila exp lo ra d a y p a sa r a la siguiente.
nop
FILA2: ; E xplorar fila 2:
m ovlw 2
m ovw f FILA
bcf PO RTB, 2 ; P oner 0 en fila 2 (RB2).
nop
m ovf PO RTB, W ; S e leen to d a s la s colum nas a la vez.
cali IDENTIFICA ; Si hay te d a pulsada, se identifica la colum na donde está
; la te c la .
btfsc STATUS, C ; ¿H ay tecla pulsada?¿C = 1?
goto TEC50 ; Sí - S e encontró una tecla pulsada. Term inar exploradón.
bsf PO RTB, 2 ; No - P oner 1 e n fila explorada y p a sa r a la siguiente.
nop
FILA3: ; E xplorar fila 3:
m ovlw 3
m ovw f FILA
bcf PO RTB, 3 ; P oner 'O’ e n fila 3 (RB3).
nop
m ovf PO RTB, W ; S e leen to d a s la s colum nas a la vez.
cali IDENTIFICA ; Si hay te d a pulsada, se identifica la colum na donde está
; la tecla.
btfsc STATUS, C ; ¿ H ay tecla pulsada?¿C =1?
goto TEC50 ; Si - S e encontró una te d a pulsada. Terminar exploración.
bsf PO R TB, 3 ; N o - P oner 1 en fila explorada.
nop ; Si se ha llegado hasta aquí sin encontrar una te d a pulsada
; es porque la pulsadón era falsa. En este caso,
goto TEC 20 ; ir a espe rar una nueva pulsadón.

TEC50: ; Se encontró una teda pulsada y se construye el código de


; exploración de 4 bits: FILA.COLUMNA.
rtf FILA, f ; El número de la fila se pone en
rtf F ILA W ; los bits 2 y 3
andlw OFCh ; del registro W.
iorwf C O LU M N A W ; El número de la columna se pone e n los bist 0 y 1 de W.
andlw OFh ; Se pone 0 en la parte alta de W.
retum ; Se retoma con el código de expioradón en W<3:0>.

IDENTIFICA Rutina para identificar la columna donde está la teda pulsada,


Entradas: En W está la lectura del puerto B.
Salidas: B bit C del registro STATUS es puesto a 1 si se encuentra una
te d a pulsada, de lo contrario C es puesto a 0.
El número de la columna donde está la teda se coloca en
el registro nombrado COLUMNA.
176 — Microcontroladores PIC

IDENTIFICA:
m ovwf TEMP ; La información de entrada es puesta e n el registro TEMP
btfsc TEMP, 4 ; ¿El bit de la columna 0 es 0?
goto COL1 ; N o - Pasar a exam inar la siguiente columna.
movtw 0 ; Sí - Hay una teda pulsada en esa columna.
m ovwf COLUMNA ; G uardar el número de la columna en el registro COLUMNA.
goto IDENT.FIN ; Ir a finalizar la rutina.
CO L1:
btfsc TEMP, 5 ; ¿El bit de la columna 1 es 0?
goto C O I2 ; No - Pasar a examinar la siguiente columna.
movtw 1 ¡ Sí - Hay una te d a pulsada en esa columna.
m ovwf COLUMNA ; Guardar el número de la columna en el registro COLUMNA.
goto IDENT.FIN ; Ir a finalizar la rutina.
COL2:
btfsc TEMP, 6 ; ¿El bit de la columna 2 es 0?
goto COL3 ; N o - Pasar a examinar la siguiente columna.
movlw 2 ; Sí - Hay una teda pulsada en esa columna.
movwf CaUM NA ; Guardar el número de la columna e n el registro COLUMNA.
goto IDENT.FIN ; Ir a finalizar la rutina.
COL3:
btfsc TEMP. 7 ¡ ¿ 0 bit de la colum na 3 es 0?
goto ca4 ; No - Pasar a examinar la siguiente columna.
movtw 3 ; Sí - Hay una tecla pulsada en esa columna.
m ovwf C aU M N A ; G uardar el número d e la columna en el registro COLUMNA.
goto IDENT.FIN ; Ir a finalizar la rutina.
COL4:
bcf STATUS, C I Indicar que no hubo tecla pulsada haciendo C = 0.
retum ; Retomar.
FIN:
bsf STATUS, C i Indicar que hubo teda pulsada hadendo C = 1.
retum ; Retomar.

;DEMORA20: Rutina que demora 2 0 ms.


DEMORA20

Aquí va el código d e esta subrutina que produce una demora de 20m s

retum

end
La en trad a y salida en paralelo — 177

5.3.3 Visualizadores numéricos d e 7 segmentos

Los visualizadores d e 7 segm entos c o n diodos LE D se u san sobre to d o


p ara represen tar inform ación num érica. L a figura 5 .1 4 m uestra su circu ito in­
terno y su representación sim bólica. H ay d o s tipos d e elem entos d e 7 segm en­
tos: los d e án o d o com ú n y los d e cá to d o com ú n , segú n estén con ectad os entre
sí tod os los án o d o s o tod os los cá to d o s d e los LED , respectivam ente. E n los
elem entos d e án o d o com ú n , para que se activ e (em ita luz) u n segm ento, el ter­
minal correspondiente d eb e excitarse c o n u n a tensión baja (correspondiente al
nivel lógico '0', si la lógica e s positiva), m ientras que el án o d o com ú n debe estar
puesto a una tensión positiva alta (VDD). E n los elem entos d e cá to d o co m ú n la
situación es la inversa: c a d a segm ento se activ a c o n una tensión alta (corres­
pondiente al nivel lógico T ) y el cá to d o com ú n d eb e e star a 0 V ( V ^ .

Ancoo
común

Anodo Cétodo
común común

(a) (b)

F ig u r a 5.14 Los visualizadores de 7 segmentos están form ados por un conjunto de diodos LED
conectados etitresí según una de estas dos configuraciones: ánodo común o cátodo
común. En (a) se. muestran los circuitos internos de attibos tipos de visualizadores
y en (b) su representación simbólica.

C u a n d o h ay vario s elem en tos d e 7 segm en to s fo rm a n d o una pantalla,


v isu alizad o r o disp lay , se prefiere la co n exió n m u ltip lexad a d e e sto s d isp osi­
tivos a los p u erto s paralelos del m icro co n tro lad o r. L a figura 5 .1 5 m u e stra u n
posible esq u em a d e co n exió n utilizando elem en tos d e 7 segm en to s d e án o d o
com ú n . En este ca so , to d o s los segm en to s del m ism o n o m b re h an sid o co n e c­
tados en tre sí y a los term in ales del p u e rto B a tra v é s d e resisten cias lim itado­
ras d e corrien te Rs . C ad a segm en to se activ a (em ite luz) cu a n d o e n el term inal
co rresp o n d ien te del p u e rto B h a y u n nivel ló gico 'O7. El á n o d o co m ú n d e cad a
elem en to funciona c o m o u n term in al d e selecció n g o b e rn a d o d e sd e el p u er­
to A. L a selecció n d e u n elem en to se h ace m ed ian te u n nivel lógico '0 ' en el
term inal d el p u e rto A co rresp o n d ien te. L o s visu alizad ores se activ an suce­
sivam ente, c o n una frecu en cia d e rep etición (frecu encia d e refrescam iento)
178 — Microcontroladores PIC

ad ecu ad a- E n sin cron ism o c o n su activ ació n , en los term in ales d e los seg m en ­
tos se co lo ca la in fo rm ación co rresp o n d ien te al e lem en to seleccio n ad o. Si la
frecuencia d e refrescam ien to e s suficien tem en te alta, un o b se rv a d o r h u m an o
v e rá to d o s los elem en tos d e v isu alización a ctiv a d o s a la vez. P ara q u e n o se
v ea el p arp ad eo , la frecu en cia m ín im a d e refrescam ien to d e cad a d íg ito debe
e s ta r en tre 4 0 H z y 2 0 0 Hz.

RAO

RA1

RA2

RA3

RBO

RB1

RB2

RB3

RB4

RB5

RB6

RB7
P IC

RAO

RA1

RA2
L
RA3

(t>>

Figura 5.15 (a) Circuito de un visualizador d e 4 elementos de 7 segmentos d e ánodo común


conectados a los puertos A y B de un microcontrolador PIC. Las resistencias
¡imitan la corriente que circula por los segmentos, mientras que las resistencias
Rb deben garantizar la saturaaón d e los transistores que activan los terminales de
selección de cada elemento. Los diodos aseguran que los transistores vayan a corte
con un nivel lógico 'V en Jos terminales del puerto A. (b) Formas de onda en cada
uno d e terminales de selecdón. La frecu en áa mínima de estas señales debe estar
entre 40 Hz y 200 Hz para que no se perciba parpadeo alguno. Cada elemento está
selecáonado durante una cuarta parte del tiempo.
La en trad a y salida en paralelo — 179

C a d a dígito d e u n visu alizad or m ultip lexad o perm an ece encendido una


fracción del tiem p o total (V4 en el ejem plo d e la figura 5.15), p o r lo q u e hay
que a u m en tar el nivel d e corrien te en los segm entos, ap ro xim ad am en te e n la
m ism a prop orción (x 4), p ara q u e la ilum inación sea satisfactoria. Es decir, si
la corrien te d e trabajo d e u n LED e s d e u n os 10 m A , al trabajar en form a mul-
tiplexada h ay que sum inistrar pulsos d e 4 0 m A p o r cad a segm en to . Este valor
se p u e d e aju star c o n la resistencia La resistencia R b d eb e g aran tizar la satu­
ración d e los transistores. Los diodos e n las bases d e los transistores tienen la
m isión d e g aran tizar q u e los transistores se corten satisfactoriam ente.

L a aten ción a l circu ito d e la figu ra 5 .1 5 se p u e d e h a ce r p o r in terru pción ,


según s e ilustra e n la figura 5.16. P a ra u n v isu alizad o r d e cu a tro elem en tos
h ace falta u n o scilad o r d e frecu en cia igual a 4 v e ce s la frecu en cia d e refres­
cam ien to , p ara que g e n e re las in terru p cion es al m icro co n tro la d o r. C o n cad a
in terru p ción se visu aliza la in fo rm ación d e u n dígito. S e pu ed en re se rv a r c u a ­
tro reg istro s d e la m em o ria R A M d e d a to s p ara a lm a ce n a r la "im a g e n " de
la in form ación visu alizad a e n el d isp lay , en form a d e una tabla (tabla 1). En
c a d a p o sición d e esta tabla se co lo ca el có d ig o d e 7 se g m e n to s d el dígito que
se d e se a visu alizar. P o r o tra p arte, en o tro s cu a tro reg istro s (tabla 2) se p u e­
d e te n e r la in form ación d e co n tro l p ara seleccion ar los dígitos del display, es
decir, las p alab ras q u e h ay q u e e n v iar al p u erto A p ara la selecció n co rrecta y
secuencial d e los dígitos. P o r últim o, en o tro registro se co lo ca u n p u n tero al
dígito q u e d eb e s e r refrescad o p o r el p ro g ra m a q u e atien d e la in terru pción .
En c a d a in terru p ción se in crem en ta el p u n tero y se en vía a los p u erto s A y B
la in fo rm ación con ten id a e n las tablas.

Figura 5.16 Tratamiento de software que se puede, dar al visualizador de elementos de 7 seg-
mentos de ¡a figura 5.15.
180 — Microcontroladores PIC

P a ra el p ro g ra m a principal, la tabla 1 e s la im ag en del v isu a liz a d o r en


m em o ria R A M . C ad a n u ev a in form ación q u e se d e se a visu alizar d e b e ser
escrita e n esa tabla. A n tes d e este paso, h ay q u e co n v e rtir al có d ig o d e 7 seg­
m e n to s la in form ación original q u e p u ed e e s ta r en B C D , ASCII o e n u n có d i­
g o n o están d ar.

5 .3 .4 Visualizadores alfanum éricos d e cristal líquido


L o s m ó d u lo s v isu alizad o res d e cristal líquido o m ó d u lo s L C D s e e m ­
p lean p ro fu sam en te p ara m o stra r in fo rm ación alfan u m érica. Son m u y p o p u ­
lares los m ó d u lo s co m p u esto s b ásicam en te p o r una pan talla o v isu alizad o r
L C D y u n m icro co n tro lad o r esp ecializad o q u e s e e n ca rg a d e s u m anejo y
ofrece u n a interfaz c ó m o d a , e n h a rd w a re y so ftw a re , co n el sistem a q u e m a ­
neja el m ó d u lo visu alizad o r. E n la p an talla s e p u ed en v e r u n a o d o s líneas
co n un cierto n ú m e ro d e caracteres alfan u m érico s p o r línea, se g ú n el m odelo
del m ó d u lo LC D . U n co n tro lad o r esp ecializad o m u y co m ú n e s el H D 4 4 7 8 0
(R en esas, an tes H itachi).

□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□
7T D is p la y L C D

D over
HD44100

GND
M ó d u lo M L 0 1 6 L

Figura 5.17 Componentes del módulo de cristal líquido M L016L para una interfaz de 8 bits.

El m icro co n tro lad o r H D 44780 p u e d e m an ejar d irectam en te una p an ta­


lla L C D d e 1 ó 2 líneas d e 8 c a ra cte re s c a d a una. Si la p an talla e s m a y o r, hacen
falta circu ito s au xiliares, c o m o el d r iv er H D 4 4 1 0 0 , q u e p erm ite m an ejar otros
o ch o c a ra c te re s p o r línea. S e fab rican m ó d u lo s L C D b asad o s en el con trolad or
H D 44780 p a ra visu alizar 1 ó 2 líneas d e 1 6 , 3 2 , etc. ca ra cte re s. P o r ejem plo, la
figu ra 5 .1 7 m u e stra el esq u em a en bloq u es d e un m ó d u lo L C D L M 0 1 6 L que
utiliza un co n tro lad o r H D 4 4 7 8 0 y u n d riv er H D 4 4 1 0 0 p ara m an ejar u n a pan­
talla L C D d e 2 líneas co n 1 6 c a ra cte re s c a d a una.

El m icro co n tro lad o r H D 44780 tiene u n a m em o ria R A M in terna para


d a to s (D D R A M ), en la que s e p u e d e n a lm a ce n a r los có d ig o s A SCII d e hasta
8 0 c a ra cte re s alfan u m éricos. P ara v isu a liz a r los c a ra cte re s co n ten id o s en la
La en trad a y salida e n paralelo — 181

D D R A M , esta m em o ria s e p u ed e o rg a n iz a r en 1 ó 2 líneas. C a d a línea o p e ra


co m o u n a m em o ria circu lar. En u n a m em o ria (o b u ffer) circu lar, una v e z s e ha
alca n z a d o la p o sición final, la escritu ra o le ctu ra d e u n n u evo d a to se realiza
en la p o sición inicial d e la m em oria.

Si la D D R A M se o rg a n iz a en una sola línea, en to n ces funciona co m o


u n a m em o ria circu lar d e 8 0 bytes, co n las d ireccio n es co n secu tiv as q u e v an
d e sd e OOh hasta 4Fh .

Si la D D R A M s e organ iza en 2 líneas, s e tienen en to n ces d o s m em o rias


circu la res indepen dien tes d e 4 0 c a ra cte re s cad a u n a y las d ireccio n es n o so n
e x a cta m en te co n secu tiv as: la p rim era línea o cu p a las d ireccion es OOh a 27h ,
m ien tras que la seg u n d a o cu p a las d ireccion es 4 0 h a 67h d e la D D R A M , se­
g ú n m u estra la figura 5.18.

OOh OFh 27h

] i
O T o c ]□ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □
iooooc ]□ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □
P a rte visible

40hJ 4Fh t 67h

Figura 5.18 La memoria RAM de datos (DDRAM) del controlador HD44780 se puede or­
ganizar en una o dos líneas. Si está organizada en dos líneas (caso mostrado en
esta figura), cada línea funciona como una memoria circular de 4 0 bytes, con las
direcciones indicadas. La línea discontinua encierra la parte de la DDRAM que
es visible en un módulo LM 016L (2 líneas de 76 caracteres cada una) después
de energizar el dispositivo. La parte visible se puede desplazar a lo largo de la
DDRAM mediante las órdenes correspondientes (ver tabla 5.6).

El H D 44780 tam bién tiene u n g e n e ra d o r d e c a ra cte re s en R O M (m e­


m oria ROM d o n d e está a lm acen ad a la m a triz d e p u n to s d e c a d a ca rá cte r, es
decir, la in form ación co rresp o n d ien te al asp ecto d e los ca ra cte re s) y o tro en
RAM (C G R A M ). El g e n e ra d o r d e c a ra cte re s en R A M p erm ite q u e el usu ario
defina c a ra cte re s n o están d ares, q u e n o están d iseñ ad os en el g e n e ra d o r d e
c a ra cte re s en ROM.

El H D 4 4 7 8 0 tiene un rep erto rio d e ó rd en es p ara m an ip u lar el m ó d u lo


visual izad or.

A lgunas d e las características d e los m ód u los visualizadores d e cristal


líquido que utilizan el co n tro lad o r H D 44780 son las siguientes:
182 — Microcontroladores PIC

• Posibilidad d e con ectarse a p u erto s paralelos d e 4 u 8 bits.

• A lm acen am ien to d e hasta 8 0 caracteres en una m em o ria R A M interna


(D D R A M ) d e 8 0 bytes (figura 5.18).

• G en erad o r d e caracteres e n ROM interna con:

16 0 caracteres del tipo 5 x 7 puntos.


-32 caracteres del tipo 5 x 10 puntos.
• G en erad o r d e caracteres e n R A M interna, p ara definir n u evos caracteres
p o r el usuario, con :

-8 caracteres del tipo 5 x 7 puntos.


A caracteres del tipo 5 x 10 puntos.
• M uy bajo co n su m o (u san tecnología C M O S), p o r lo q u e pueden alim en­
tarse co n baterías.

• C ircu ito d e R ESET interno au tom ático en el encendido.

• A m p lio rep ertorio d e órdenes: borrad o d e disp lay, p arp ad eo d e caracte­


res y del cu rso r, desplazam ientos del c u rso r y del disp lay, a p a g a d o /e n ­
cen d id o del c u rso r y el display, etc.

L o s m ó d u lo s L C D d isp o n en d e u n a interfaz digital p ara transferir datos


y ó rd en es en tre u n sistem a c o n u n m icro p ro ce sa d o r o m icro co n tro la d o r y el
m ó d u lo LCD . E sta interfaz tiene 3 líneas d e co n tro l y 4 u 8 líneas p a ra datos
(segú n la in terfaz sea d e 4 u 8 bits resp ectivam en te).

P a ra c o n e c ta r u n m ó d u lo L C D a u n PIC d e cla se m ed ia s e p u e d e n uti­


lizar los p u erto s paralelos A y B. M ed ian te el so ftw are a d e c u a d o s e gen eran
las señales c o n la secu en cia co rrecta. L a figu ra 5.19 m u e stra la co n exió n p ara
u n a in terfaz d e 8 bits, q u e tiene las señ ales siguientes.

• RS (Register Select, datos/control#). Esta señal indica al m ódulo LCD si el


byte que se envía por DB0-DB7 e s una orden (RS = '(X) o u n dato (RS = T ) .

• R /W # (R e a d /W rite , le ctu ra /e scritu ra # ). E sta señal indica lectu ra si está


en '1 ' y escritu ra si está en '0'.

• E (Enable, habilitar). C o n esta señal en '1 ' se habilita el dispositivo. La


cap tu ra d e d ato s u ó rd en es p o r el m ód u lo L C D se realiza co n el flanco de
ca íd a d e esta señal.

• DBO a D B7 (D ata bus, b u s d e datos). P o r estas líneas transitan las órdenes


y los datos en am b as direcciones.
La entrada y salida en paralelo — 183

RAO
RA1
Display L C D
RA2

RBO
RB1
RB2
RB3
RB4
RB5
RB6
P IC RB7 M ó d u lo M L 0 1 6 L

Figura 5.19 Conexión de un módulo de cristal líquido a un microcontrolador PIC, usando los
puertos A y B.

L a figura 5.20 iJustra la escritura d e una orden o u n dato en el m ódulo LCD.

D B 0 -D B 7 X <8 > X

R /W # \________________ /

rs x " ~ ~ '

e r ~\ ________
H
> 4 5 0 ns

Figura 5.20 Señales para escribir datos u órdenes en el módulo de cristal líquido. La escritura
de la orden (con RS = '0') o dato (con RS = T ) se hace efectiva en sincronismo con
el flanco d e caída d e la señal E.

La tab la 5.6 m u e stra el rep erto rio d e ó rd en es a ce p ta d a s p o r los m ód u los


LCD q u e utilizan el co n tro la d o r H D 44780.
T a b la 5.6 Órdenes aceptadas por el con trotador H D 44780.

Órdenes RS R/W DB7 DB6 DB5 DB4 DB3 DBO DESCRIPCION


Pone 20h (código ASCII de espacio) en la
Borrar d is p la y 0 0 0 0 0 0 0 0 0 1
DDRAM, la selecciona y pone el A C en 0
Selecciona la DDRAM y pone el A C en 0.
Ir a la posición
0 0 0 0 0 0 0 1 X Lleva el d is p la y a esa posioón inicial. El
inicial 0
contenido de la DDRAM no se modifica.
Selecciona la cbecóón de movimiento
del curse* (l/D) y si el d is p la y se desplaza
Seleccionar
0 0 0 0 0 0 0 1 l/D s o no (S ). Estas operaciones se pueden
modo de entrada
efectuar durante la escritura o lectura de
— . datos.
Enciende o apaga el d is p la y (D), el cursor
Controlar d is p la y 0 0 0 0 0 1 D C B
0 (C ) y activa el parpadeo del cursor (B).
Desplazar cursor Desplaza el d s p la y o el cursor (S/C) en
o d is p la y
0 0 0 0 0 1 S IC R/L X X
una dirección (R/L).
1 8 4 — Microcontroladores FIC

Selecciona la longitud (4 ó 8) del BUS de


Seleccionar datos (DL). el número de líneas del d is -
0 0 0 0 1 CL N F X X
función p la y (N) y el formato de los caracteres (F)

Pone una dirección de la CGRAM en el


Seleccionar Dirección de la CGRAM que será puesta AC. Después de este orden, los datos
0 0 0 1 esentos o leídos van a parar o provienen
CGRAM enelAC.
de la CGRAM.
Pone una dirección Oe la DDRAM en &
Seleccionar Dirección de la DDRAM, que será puesta en AC. Después de este orden los datos
0 0 1 escritos o leídos van a parar o provienen
DDRAM el AC.
-feiaDDBAM------------------------------------
Lee el estado de la bandera de ocupado
Leer BF yAC 0 1 BF Contenido del AC
(BF) y el contenido del AC.
Escribe el dato en la recoón apuntada
por AC. El dato se escribe en la DDRAM
Escribir dato. 1 0 Dato a escribir
o en la CGRAM. según la última selec­
ción realizada.
Lee un dalo en la en la dirección apunta­
da por AC. El dato se lee de la DCRAM
Leer dato 1 1 Dato leído. o CGRAM, según la última selección

l/D- 1 : incrementa. 0: decrementa.


S - 1 ; desplazamiento automático del dspfay
S/C - 1: desplazamiento del díspíay, 0: movimiento del cursor.
R/L - 1 : desplazamiento a la derecha; 0: desplazamiento a la izquierda.
DL - 1 : interfaz efe 8 bits; 0: interfaz de 4 bits.
N - 1 : d is p la y ú e 2 lineas; 0: d is p la y d e 1 línea.
F - 1 : caracteres de 5x10 puntos; 0: caracteres de 5x7 puntos.
BF - Bandera de ocupado 1: dísptey oaí>ado. 0: d is p la y puede aceptar órdenes o dates.
DDRAM - memona RAM de datos del controlador. CGRAM - memoria RAM del generador de caraderes.
AC - Contador de_DracQQQes-----------------------------------------------------------------

El co n tro lad o r H D 44780 d isp o n e d e u n re g istro in tern o d en o m in ad o


C o n ta d o r d e D irecciones (A C : A d d ress C ou n ter), d o n d e está la d irección d e la
D D R A M o C G R A M d o n d e s e escrib irá o leerá u n d a to . L a p roced en cia del
con ten id o del registro A C , es d ecir, si e s u n a dirección d e la D D R A M o d e
la C G R A M , d ep en d e d e cu ál d e estas d o s m e m o ria s fue la seleccion ad a m ás
recien tem en te m ed ian te la ord en corresp o n d ien te. U n a v e z seleccio n ad a una
m e m o ria, to d as las escritu ras y lectu ras d e d a to s se realizan sobre e s a m e m o ­
ria , u sa n d o al reg istro A C c o m o puntero.

P o r ejem plo, la selección d e la D D RA M , o p e ra ció n n ecesaria p ara pro­


c e d e r a escrib ir d ato s en ella, s e p u ed e h a c e r co n las ó rd en es "B o rra r d isp la y "
e " I r a posición in icial", las cu ales, a d e m á s d e seleccio n ar la D D R A M , ponen
el A C en 0 . La ord en "S eleccio n ar D D R A M " p erm ite, ad e m á s, situ a r u n valor
en el A C .
C o n la escritu ra (o lectu ra) d e u n d a to , el reg istro A C se in crem en ta o
d e crcm e n ta , segú n el m o d o d e en tra d a seleccionad o.
La en trad a y salida en paralelo — 185

En gen eral, cu alq u ier o p eració n d e ejecución d e u n a o rd e n o d e visu a-


lización d e u n d ato, m an tien e o cu p a d o al co n tro la d o r d u ra n te u n tiem p o re ­
lativam en te g ran d e, del o rd en d e v a rio s m icro seg u n d o s. D u ran te ese tiem p o
n o s e d eb e en v iar n in gu n a ord en o d a to al co n tro la d o r. D e ahí q u e a n te s de
en v iar u n a n u e v a o rd en o d a to , resu lte n ecesario in d a g a r cu ál es el estad o
d el co n tro lad o r. P a ra facilitar esta op eració n , s e d isp o n e d el bit in d ica d o r BF
( B u s y F la g ) , el cual está en T m ien tras el co n tro la d o r e s tá o c u p a d o y en '0 '
si el co n tro lad o r s e en cu en tra listo p a ra recibir n u e v o s d a to s u órd en es. Este
in d ica d o r se p u ed e leer e n cu alq u ier m o m e n to co n u n a o p e ra ció n d e lectu ra
( R /W # = T ) d e u n a o rd en (RS = 'O'); el bit 7 d e la p alab ra d ev u elta (en DBO
a D B7) p o r el co n tro lad o r e s el in d icad o r BF. V er la ru tin a O C U P A D O del
ejem plo 5.6.

E je m p lo 5.6

En este e je m p lo se presentan lo s lista dos e n lenguaje ensa m blado r d e algunas rutinas básicas para
o p e ra r un m ódulo d e cristal liquido que contiene u n controlador H D 44780. E l m ódulo está conectado a
un m icrocontrolador PIC a través d e lo s puertos A y B, según el e squ em a d e la figura 5.19.
S e presentan cuatro rutinas: INICIO para la program ación inicial d e l d isp la y, W R _C M D y W R _D A TO para
escribir órdenes y datos e n el display, respectivam ente, y finalm ente la rutina LC D _O C U P AD O , usada
para com probar e l estado d e l m ódulo LC D m ediante la lectura d e l valor d e l indica dor d e ocup ado (bit BF)
y con e llo saber si se puede o no escribir un d ato o una orden e n el módulo.

list p=16f873
#include <p16f873.inc>

¡Descripción del hardware:


P_DATOS equ PORTB ; Puerto para manejar las líneas de datos del display.
P_TRIS equ TRISB
P_CTRL equ PORTA ; Puerto para m anqar las lineas de control del dispiay.
RS equ 0 ; Bit de control de la línea RS.
RW equ 1 ; Bit de control de la linea RW.
E equ 2 ; Bit de control de la línea E.

¡Otras declaraciones:
TEMP equ 0x020 ; Registro temporal utilizado por las subrutinas.

¡INICIO: Rutina de iniciación del display.


INICIO:
; La bandera de ocupado BF no está disponible aún.
clrf P_CTR L Las lin e a s d e control e n 0.
cali D EM 015 E sperar 15 ms.
La bandera BF está disponible a p a rtir d e aquí.
186 — Microcontroladores PIC

m ovlw 38h ; D isplay d e 8 bits. 2 líneas, caracteres 5 * 7 .


cali W R _C M D
m ovlw 08h ; A p a g a r el display y el cursor.
cali W R .C M D
m ovlw 01 h ; B o rrar display y poner AC = 0.
cali W R .C M D
m ovlw OCh : E n cender display con cursor apagado.
cali W R CM D
m ovlw 06h ; M odo d e entrada: cursor se desplaza a la derecha.
cali W R .C M D
return

; W R CMD:Rutina para escribir una orden en el císplay.


; Entrada- la orden debe estar en W.
WR_CMD-
m ovw f TE M P ; G uardar la orden en TEMP.
cali O C U PAD O ; E sperar a que el display esté listo.
bcf P _C TR L, R W ; P reparar la escritura (R W = 0)
bcf P_C TR L, R S ; d e una orden (R S = 0).
bsf P _C TR L, E ; H a bilitar el d isp la y (E = 1).
m oví TEMP. W ; P oner la orden en W.
m ovw f P_D ATO S ; E nviada al display.
b cf P _C TR L, E ; Inhabilitar el display (E = 0).
return

;WR_DATO: Rutina para escribir un dato en el display


; Entrada: el dato debe estar en W.
WR_DATO:
m ovw f TEM P ; G uardar la orden e n TEM P
cali O C U P A D O ; E sperar a que e l d isp la y esté listo
bcf P_C TR L, R W ; P repa rar la escritura (R W = 0)
bsf P_C TR L, R S ;d e u n d ato (RS = 1).
bsf P_C TR L. E ; H a bilitar e l d isp la y (E = 1).
m oví TEMP, W ¡P o n e r e l d ato e n W.
m ovw f P_DATOS ; E nviarlo al display.
bcf P_C TR L, E ; Inhabilitar el display (E = 0).
return

X U P A D O : Rutina para esperar si el display está ocupado


Esta rutina comprueba la bandera BF, espera mientras BF = 1
y retoma cuando BF = 0.
OCUPADO:
bsf S T A TU S,R PO ; S eleccionar banco 1 d e registros,
m ovlw OFFh ; P oner el pu e rto de datos e n entrada
m ovw f P_TR IS ; escribiendo FFh en el registro TR IS correspondiente,
bcf STATUS. RPO ; S eleccionar el banco 0.
La en trad a y salida en paralelo — 187

bsf P CTRL. R W ; P reparar la lectura (R W = 1).


bcf P_C TR L, RS ; Se va a leer una orden (RS = 0).
OCUP10:
bsf P_C TR L, E ; H abilitar el display (E = 1).
nop
m ovf P_DATOS, W ; L e e r el display. E l indicador BF es el bit 7.
bcf P .C T R L , E ; Inhabilitar el display (E = 0).
andlw 80h ; Se aísla la bandera BF.
btfss STATUS, Z ; ¿BF es 0?
goto O CUP10 ; n o - display ocupado: volver a chequear,
bcf P_CTRL, RW ; s i - display desocupado, fin d e lectura (R W = 1).
bsf STATUS, RPO; Seleccionar banco 1.
movtw 0 ; P oner el puerto de datos en salida
m ovwf P_TRIS ; escribiendo OOh en el registro TR IS corre sp o n d í
b cf STATUS, RPO ; S eleccionar banco 0.
retu m ; Retornar.

;DEM 015: Rutina que demora 15ms.


DEM 015:

; A quí va el có d ig o de esta subrutina

retum

end
Los tem porizadores — 189

6 Los te m p o riza d o re s
En m u ch a s ap licaciones e l m icro co n tro la d o r d eb e trab ajar c o n la varia­
ble tiem p o. P o r ejem plo, p a r a g e n e ra r señales d e una d eterm in ad a frecuencia,
p ara m e d ir la d u ració n d e u n a señal, o sim p lem en te p ara llevar la fecha y la
h o ra, el m icro co n tro lad o r necesita alg ú n re cu rso p a ra co n ta r el tiem p o co n
p re c is ió a

E n los m icro co n tro lad o res P IC d e cla se m ed ia h ay hasta tres m ód u los


b ásicos p a ra tem p o rizar, q u e se identifican c o n los n o m b res TimerO, T im e rl
y T im er2. T o d o s los PIC d isp on en al m en os d el TimerO. A lgu n os PIC tienen
uno o d o s m ó d u lo s adicionales p ara tem p o rizar, q u e am p lían las posibilida­
d es d e los m ó d u lo s básicos. S o n los d en om in ad os m ó d u lo s d e C om p aración ,
C a p tu ra y M o d u lació n P u lsos en A n ch u ra , o m ó d u lo s C C P (C a p tu re/C o m p a re/
P W M ), q u e co m p a rte n co m p o n en tes y fu nciones c o n el T im e r l y el T im er2.

E n este cap ítu lo s e estu d ia la estru ctu ra , funcionam iento y p ro g ra m a ­


ció n d e c a d a u n o d e los m ó d u lo s disponibles e n los m icro co n tro lad o res PIC
p a ra trab ajar d irectam en te c o n la variab le tiem po. El cap ítu lo in clu y e varios
ejem plos ilu strativos d el fu n cio n am ien to y p ro g ra m a ció n d e e sto s m ódulos.

6.1 Los tem porizadores en los m icrocontroladores PIC

C a d a uno d e los tem p o rizad o res disponibles en un P IC d e cla se m edia


tiene, c o m o elem ento esencial, un c o n ta d o r sin crón ico ascen d en te d e 8 ó 16
bits. E sto s co n tad o res se p u ed en p ro g ra m a r p ara c o n ta r p u lsos in tern os o
extern o s, seg ú n s e exp o n d rá m ás ad elan te al estu d iar c a d a te m p o riz a d o r p o r
sep arad o . El n ú m e ro alm acen ad o en c a d a c o n ta d o r (v a lo r d e la cu en ta) se
p u e d e leer o m od ificar m ed ian te la lectu ra o e scritu ra d e registros d e fun­
ciones especiales aso ciad o s al te m p o riz a d o r e n cuestión. El d esb ord am ien to
d e los co n tad o res q u ed a re p o rta d o en bits in d icad o res disponibles e n esos
registros, y p u ed e gen erar tam b ién u n a solicitu d d e in terru p ción al m icro­
con tro lad o r.

L o s tem p o rizad o res p u e d e n d isp o n er d e u n co n ta d o r asin crón ico auxi­


liar. E ste c o n ta d o r au xiliar s e in serta en el ca m in o d e los p u lsos, antes del
co n ta d o r p rin cip al, e n cu y o caso funciona c o m o u n p re-d iv iso r {prescaler)
o d esp u és del c o n ta d o r principal, funcion an d o en to n ces c o m o p ost-divisor
(p o stscaler). L o s tem p o rizad o res TimerO y T im e rl tienen solam en te u n p re-
divisor; el T im er2, e n cam b io, d isp on e d e u n p re-d iv iso r y u n post-divisor.
L a figura 6.1 m u estra el esq u em a gen eral d e lo s m ód u los p a ra te m p o riz a r
190 — Microcontroladores PIC

TimerO, T im e rl y T im er2, c u y a s p rin cip ales ca racterísticas s e re su m e n e n la


tab la 6 .1 y se estu d ian a con tinu ación.

T
P u ls o s de D e s b o rd a m ie n to
C o n ta d o r P rin c ip a l P o s t-d iv is o r
e n tra d a

Figura 6.2 Esquema de bloques general de los temporizadores d e los PIC de clase media.
Todos tienen un contador principal ascendente de 8 ó 76 bits y un pre-divisor
programable. El Timer2 tiene también un post-divisor. Los pulsos que se van a
contar pueden ser internos o extem os. El desbordamiento se reporta en un bit de
un registro de funciones especiales y puede generar una solicitud de interrupáón
al P IC
T a b la 6.2 Características principales de los temporizadores de los PIC d e clase media.

P r e -d iv is o r P o s t -d i v is o r S F R d o n d e e s tá
T e m p o r iz a d o r Tam año D e s b o r d a m ie n t o
d iv id e e n tre : d iv id e e n tre : la c u e n ta

TimerO 8 bits 2 ,4 ........ 256 NO TMRO b it T0IF de OPTION


Tim erl 16 bits 1.2.4.8 NO TM R1H, TMR1L bit TMR1IF de PIR1
Timer2 8 bits 4 .8 1 .2 16 TMR2 bit T M R 2 IF d e PIR2

6.1.1 El m ó d u lo TimerO

El m ó d u lo TimerO con sta b ásicam en te d e u n p re-d iv iso r y u n co n tad o r


ascen d en te d e 8 bits (figu ra 6.2). El p re-d iv iso r e s u n c o n ta d o r asincrónico
ascen d en te c o n fa cto r d e división p ro g ram a b le c u y o co n te o n o es visible para
el p ro g ra m a d o r. El c o n ta d o r ascen d en te d e 8 bits se p u e d e leer o escrib ir a
tra v é s del reg istro d e fu nciones especiales TMRO.

TOSE TOCS P S2:P S0 PSA

Figu ra 6.2 Diagrama de bloques del TimerO. El TimerO puede trabajar como contador de
ciclos d e máquina (modo temporizador, TOCS = 0) o como contador de pulsos
extem os (modo contador, TOCS = 1). TMRO es un contador ascendente de 8 bits,
cuyo desbordamiento activa el indicador TOJT del registro INTCON. Antes de
llegar a TMRO, los pulsos son sincronizados con el reloj del microcontrolador y
pueden pasar o no por un pre-divisor cuyo factor de división es programable.
Los tem porizadores — 191

El TimerO p u ed e trab ajar c o m o c o n ta d o r d e ciclos d e m áq u in a o co m o


c o n ta d o r d e pulsos extern o s. E n e l p rim e r c a so s e d ice q u e el m ó d u lo op era
en el m o d o te m p o riz a d o r (tim er). Si cu en ta pulsos extern o s, el m ó d u lo o p e­
ra en el m od o c o n ta d o r (cou n ter). Los p u lsos extern o s llegan p o r el term inal
TOCKI.

A su p a s o p o r el TimerO, los pulsos llegan al bloque d e sincronización.


En e s te bloque, los pulsos q u e en tra n so n m u estread o s e n d o s instantes de
tiem p o d e n tro d e c a d a ciclo d e m áq u in a, d e lo q u e resu lta u n a señal cu yos
flancos o cu rre n en fase co n el reloj del m icro co n tro lad o r. C o n esta señal sin­
c ro n iz a d a s e excita el c o n ta d o r TMRO. P a ra q u e n o s e p ierd an pulsos en la
sincronización, e s n ecesario q u e los pulsos q u e e n tra n e n el bloque d e sin­
cro n izació n p erm an ezcan e n 1 o e n 0 a l m en os d u ran te la m itad del tiem po
que d u ra u n ciclo d e m áquina. C u a n d o el TimerO trabaja e n el m o d o co n ta ­
dor, el bloque d e sin cron izació n d eterm in a el v a lo r m ínim o del períod o (o la
frecu en cia m á x im a ) d e los pulsos que en tra n p o r el term in al TOCKI. Si 7 '^ .
e s el p erío d o del o scilad o r principal del m icro co n tro la d o r y P e s el factor d e
d ivisión del p re-d iviso r, el p e río d o Ti d e los pulsos q u e en tran p o r el term inal
TOCKI d eb e cu m p lir

r ; , 4x7o*
T,>— — (6 .1)

d o n d e P = 1 si n o s e u sa el p re-d iv iso r y P = 2 , 4 , . . . , 2 5 6 si s e usa.

E n el m o d o d e bajo co n su m o , el o scilad o r del m icro co n tro la d o r s e p a­


raliza y p o r lo tan to n o fu n cio n a e l bloqu e d e sin cron izació n d el TimerO, de
m an era q u e el TimerO ta m p o co funciona m ien tras el m icro co n tro la d o r está
en d ich o m odo.

H ay tres reg istro s d e funciones esp eciales a so cia d o s al TimerO: TMRO,


O P T IO N e IN T C O N . L a figu ra 6 .3 m u estra los n o m b res d e los bits d e los re ­
gistros O P T IO N e IN T C O N . El reg istro TMRO a lm a ce n a el v a lo r q u e tiene el
co n ta d o r d el TimerO. Este v a lo r s e p u ed e leer o escrib ir e n cu a lq u ie r m o m en ­
to d e sd e el p ro g ra m a q u e ejecuta el m icro co n tro lad o r. C u a n d o se escrib e un
v a lo r en TMRO, la cu e n ta del p re-d ivisor, si e s tá a sig n ad o al TimerO, se p one
a 0. A d em ás, u n a e scritu ra en el reg istro TMRO inhibe el co n te o del TimerO
d u ran te d o s ciclo s d e m áquina.

El desbordam iento del TimerO hace que el indicador TOIF (bit IN T C O N <2>)
pase a 1. Si la atención al TimerO se hace usando la técnica d e E / S program ada,
entonces s e debe consultar el bit r10IF para saber si el TimeiO s e h a desbordado.
192 — Microcontroladores PIC

U n a vez com probad o el desbordam iento, este indicador debe ser puesto a 0 p o r
software.

O P TIO N
7 6 5 4 3 2 1 0
R B P Ú # T IN T E D G | TO C S | TO S E | P SA | PS2 | PS1 l P SO j

IN T C O N
7 6 5 4 3 2 1 0
G ÍÉ l P E IE l TO IE | IN T E | R B IE | TO IF | IN T F | R B IF

Figura 6.3 Registros de fu n d on es especiales OPTION e INTCON. En OPTION están los


bits de configuración del TimerO: TOCS configura a l TirnerO como temporizador
o com o contador; TOSE configura el flan co d e la señal externa con el que se incre­
menta el TimerO si ha sido programado como contador; PSA asigna el pre-divisor
al TimerO o al Perro Guardián y PS2, PSI y PSO programan el factor de división
del pre-divisor. En INTCON está el indicador de desbordamiento del TimerO:
TOIF; con el bit TOIE se habilita la solidtud de interrupdón al microcontrolador
por esta causa.

Si la in terru p ción d el TimerO está h ab ilitada, lo cual s e h ace p o n ien d o


a 1 el bit TOIE (IN T C O N < 5> ), cu a n d o s e d esb o rd a el TimeiO se p ro d u ce una
solicitud d e interrupción.

E n el registro O P T IO N están los bits d e co n tro l del TimerO. L a fuente d e


los p u lsos d e reloj se seleccion a co n el b it TOCS. Si se seleccion a u n a fuente d e
reloj e x te rn a en el term inal TÜCKI, el bit TOSE sirv e p ara h a ce r q u e el c o n ta ­
d o r se in crem en te c o n los flancos d e subida (con TOSE = 0) o d e bajada (con
TOSE = 1) d e los p u lsos en TOCKI.

El TimerO y el W D T co m p arten el p re-d iviso r, e n un esq u em a co m o el


q u e s e m u estra en la figura 6.4. El p re-d iviso r, un co n ta d o r asin cró n ico a sce n ­
d e n te d e 8 bits, p u ed e ser asig n ad o al TimerO o al W D T . E s ta asign ación es
e xclu y en te, es decir, si el p re-d iv iso r se asign a al W D T , el TimerO n o lo p u ed e
u sar y viceversa. C u a n d o está asig n ad o al W D T , el p re-d iv iso r funciona co m o
p o st-d ivisor d el P e rro G uard ián.

El p re-d iv iso r s e asign a al TimerO p o n ien d o a 1 el bit PSA (O PT IO N <3>).


Si PSA e s p u esto a 0, el pre-d ivisor q u ed a a sig n ad o al W D T . El factor d e di­
visión del p re-d iv iso r asign ad o al TimerO s e seleccio n a co n los bits PS2, P S I y
PSO d el reg istro O PT IO N .
Los tem porizadores — 193

Figura 6.4 El pre-divisor se puede asignaral TimerO o al Perro Guardián (WDT): con PSA =
0 se asigna al TimerO y con PSA = 1 al WDT. G m el desbordamiento del TimerO
(cuando éste pasa de FFh a 00), se activa el bit TOIF del registro INTCON. TOSE,
TOCS, PSA y PS2.PS0 son bits del registro OPTION. W DTE es uno de los bits
de configuración del PIC, con el que se habilita el funcionam iento del WDT.

El factor d e d ivisión P del p re-d iv iso r a sig n ad o al TimerO p u ed e to m ar


los valores:

P = 2 , 4 , 8 , T '\ 256 (6.2)

d o n d e n = 0 , 1 ,..., 7 e s el v alo r situ a d o e n los bits PS2:PS0.

Si el p re-d iv iso r es asig n ad o al W D T , el fa cto r d e d ivisión e s en to n ces P


= 1 , 2 , 4 , . . . , 2 " , ...,1 2 8 (tabla 2.1).

Para calcu lar e l tiem p o d e d esb o rd am ien to d el TimerO se p u ed e p ro­


ce d e r d e la form a siguiente. Sea N la can tid ad d e pulsos q u e deben llegar al
TimerO p a ra q u e se d esb ord e, P el facto r d e d ivisión d el p re-d iv iso r y Ti el
p eríod o d e los pulsos d e en tra d a al p re-d iviso r. Si el TimerO o p e ra c o m o tem ­
p o rizad or, en ton ces Ti e s la d u ra ció n d e un ciclo d e m áq u in a; si o p e ra co m o
co n tad o r, Ti es el p erío d o d e los pulsos extern o s. El tiem p o T d q u e ta rd a en
d esb o rd arse el TimerO es

Td = P x N x Ti (6.3)

D ebe ten erse e n cu e n ta q u e el v alo r q u e se ca rg a e n el reg istro TMRO n o


es N, sin o s u com p lem en to a 2 e n 8 bits, es d ecir, lo q u e le falta a N p a ra llegar
a 256. P o r lo tan to, el v alo r q u e s e c a rg a e n TMRO d e b e ser

N,-mRu = 2 5 6 - N (6.4)
194 — Microcontroladores PIC

Si el TimerO está trabajando en el m o d o te m p o riz a d o s e s d ecir, co m o


c o n ta d o r d e ciclos d e m áq u in a, en to n ces h ay que te n e r en cu e n ta q u e el co n -
teo se inhibe d u ran te d o s ciclos d e m áq u in a d esp u és d e h ab er escrito u n valor
en el reg istro TMRO. P o r lo tan to, p a r a co m p e n sa r e s a d e m o ra , el v a lo r que
h a y q u e d ep o sitar en TMRO en este c a so d eb e ser

N tmro = 2 5 6 - N+ 2 (6.5)

O b sérvese q u e si el v alo r N mR0 s e c a rg a en el reg istro TMRO c a d a v ez


q u e o c u rre el d esb o rd am ien to , en ton ces el TimerO trabaja c o m o u n c o n ta d o r /
tem p o rizad o r co n m ó d u lo N.

_______________________________________________ E je m p lo 6.1

U so del TimerO para pro g ra m a r dem oras. E n e s te c a s o e l TimerO opera e n el m odo ‘ tem porizador0, pues
lo s pulsos d e reloj provienen del o scila d o r principal del m icrocontrolador y llegan al tem ponzador con una
frecuencia Fosc/4, donde Fose es la frecuencia de! o scila d o r principal del PIC,
El siguiente program a ilustra cóm o in iciar (rutina InicTimerO) la operación d e l TimerO en e s te m odo, asig­
nándole el pre-drvisor con u n factor de división de 8. La rutina D e m lm s crea una espera (aproxim ada) de
1 m s. La rutina D em N m s realiza una espera de N m ilisegundos (N s 255).

; U so del TimerO y su pre-divisor para lo g ra r dem oras.

; H ardw are:
; Frecuencia del oscilador d e l PIC : 4 M H z, por ta n to la duración d e u n c id o de
; m áquina (C M ) es 7cm = 1 ps.

; Valores que h a y que situ a r e n el pre-divisor y en TMRO para lograr una dem ora d e 1 ms:
; 1 m s = 1000 p s , pero 1000 = 8 x 125, y por lo tanto e n e l pre-divisor se puede
; situar el valor P = 8 y e n TMRO el com plem ento 2 d e 125 m ás 2.
; Es d e c ir que TM RO = 256 - 125 + 2 = 133.

List p=16F873
in d u d e '•P16F873.INC"

AUX equ 0x2 0 ; Variable auxiliar.

; InicTimerO: Rutina para program ar el TimerO co m o tem porizador con un


; pre-divisor d e 8.
InicTimerO:

bcf IN TC O N , T 0IE ; Inhabilitar interrupción d e l TimerO.


b sf STATUS, RPO ; S eleccionar banco 1 d e la m em oria d e datos
m ovlw 0xC 2 ; y config ura r el TimerO com o te m p orizado r con un
Los tem porizadores — 195

m ovw f O P T IO N .R E G ; pre-divisor d e 8.
bef STATUS. RPO ; S eleccionar banco 0 d e la m em oria de datos.
clrf TMRO ; P oner 0 en registro TMRO,
bef INTCON, TOIF ; P oner e n 0 e l indica dor d e desbordam iento.
b sf INTCON, TOIE ; A quí se puede h a b ilita r la interrupción d e l TimerO
; si se trabaja p o r interrupción.
return

D e m lm s : Rutina para c re a r una dem ora d e 1 ms.


Entradas: ninguna.
Salidas: ninguna.
D e m lm s :
m ovlw .133 ; C om plem ento 2 d e 125, m ás 2, v a lo r con
m o vw f TMRO ; e l que s e carga TMRO.
D e m lm s 01:
btfss IN TC O N , TOIF ¿TOIF = 1?
g oto Dem1m s_01 No - esperar.
bef IN TC O N , TOIF S í - hacer TOIF = 0 y
return reto m ar p ue s h a transcurrido 1 ms.

D em 500m s: R utina p a ra crear una dem ora d e N m ilisegundos (N <= 255)


Esta rutina llam a N veces a la rutina D e m lm s .
Entradas: e n W el valor d e N.
Salidas: ninguna.

Dem Nm s:
m ovw f AUX ; Poner e n A U X la dem ora en m ilisegundos.
Dem N m s_01: ¡L la m a r a D e m lm s N veces:
cali D e m lm s ; E sp e ra r 1 ms.
decfsz AU X, f ; D ecrem entar A U X . ¿A U X = 0?
goto Dem Nm s_01 ; N o - seguir esperando.
return ; Sí - reto m ar p ue s han transcurrido N m ilisegundos.

end

6.1.2 El m ó d u lo T im e rl

El T im e rl e s un seg u n d o m ó d u lo disponible p ara te m p o riz a r en m u ­


chos m icro co n tro lad o res P IC d e clase m ed ia. S u e stru ctu ra se m u estra en la
figura 6.5.

El T im e rl con sta fu n d am en talm en te d e u n c o n ta d o r ascen d en te d e 16


bits p reced id o p o r un pre-d ivisor p ro g ram a b le co n factor d e d ivisión d e 2,
4 u 8.
196 — Microcontroladores PIC

R e s e l (d e l m ó d u lo C C P )

Figura 6.5 Diagrama de bloques del Timerl.

El T im e rl p u ed e o p e ra r c o m o te m p o riz a d o r (al c o n ta r ciclos d e m áqui­


na) o c o m o co n ta d o r (si cu e n ta pulsos extern os). C o m o c o n ta d o r, el T im e rl
p u ed e s e r p ro g ra m a d o p ara q u e trabaje en m o d o sin cron izad o o en m od o
n o sin cron izad o. P a ra ello se u sa el bit T 1S Y N C # del registro T 1C O N . Si
T 1S Y N C # = 0, el T im e rl trabaja c o m o c o n ta d o r sin cron izad o, pu es los pulsos
d e e n tra d a al co n ta d o r T M R 1 p asan p o r el bloque d e sin cron ización . E n este
bloqu e se m u estrea la señ al en tran te y s e sin cron iza co n el reloj in terno del
m icro co n tro lad o r, d e lo q u e resu lta u n a señal c u y o s flancos o cu rren en fase
co n el reloj principal d el PIC . L a señ al y a sin cron izad a excita el c o n ta d o r de
16 bits T M R 1, fo rm a d o p o r los registros T M R 1L y T M R 1H .

P ara q u e n o se p ie rd a n p u lsos en la sin cron ización , e s necesario q u e los


pulsos q u e en tran e n el bloque d e sin cronización p erm an ezcan en 1 o en 0 al
m en os d u ra n te la m itad d el tiem p o q u e d u ra u n ciclo d e m áq u in a. Ello d e te r­
m in a el v alo r m ín im o d el p erío d o d e los pulsos que en tran en el T im e rl en el
m o d o co n ta d o r sin cronizado.
Los m o d o s sin cron izad o y n o sin cro n izad o s e ap lican só lo al trabajo del
T im e rl c o m o c o n ta d o r, p u es cu a n d o este m ó d u lo o p e ra c o m o tem p o rizad or,
lo h ace ob viam en te en m o d o sin cron izad o. D e h ech o , el bit T 1S Y N C # se ig­
n o ra si el T im e rl s e p ro g ram a co m o tem p o rizad o co n T M R 1C S = 0.

Si T()SC e s el p erío d o del o scilad o r principal del m icro co n tro lad o r y P es


el factor d e división del pre-d ivisor (P = 1, 2, 4 , 8 ), en to n ces el períod o 7 i d e
los pulsos en T 1C K I d eb e cu m p lir

j - ; ^xrosc 66
( . )
P
Los tem porizadores — 197

Si el T im e rl está p ro g ra m a d o c o m o co n ta d o r n o sin cro n izad o (T 1SY N C #


= 1 ), con tin ú a o p e ra n d o in cluso cu a n d o el m icro co n tro lad o r esté en el m o d o
d e bajo co n su m o . E sta característica del T im e rl lo h a c e a p ro p ia d o p a ra irn-
p le m e n tar co n él un reloj d e tiem p o real (RTC: R e a l T im e C lock).

El v alo r del co n te o se p u ed e leer y / o escrib ir en los reg istro s d e fu n ­


cion es especiales T M R 1 H y T M R 1L. C u a n d o s e escrib e en estos reg istro s, la
cu en ta del p re-d iv iso r v a a 0.

E n el reg istro T I C O N están los bits d e co n tro l del T im e rl. L a fuente


d e los pulsos d e reloj s e seleccion a co n el b it T M R 1C S y p u e d e ser interna o
ex te rn a . Si s e seleccio n a el reloj e x te rn o , éste p u ed e s e r pulsos q u e en tren p o r
el term inal T IC K I /T IO S O o tam b ién p u ed e co lo ca rse u n cristal en tre los ter­
m inales T IO S O y T IO S L El bit T 10S C E N sirv e p ara habilitar el o scilad o r si se
u sa u n cristal. C o n el bit T M R IO N s e habilita el conteo.

El valor n (n = 0 , 1 , 2, 3 )) d e los bits T 1C K PS 1 y T 1C K P S 0 del registro


T 1C O N fija el fa cto r d e división P (P = 1, 2, 4 , 8 = 2") del p re-d iv iso r del T i­
m e r l. P o r ejem plo, si se q u iere u n facto r d e d ivisión d e 8 , h ay q u e p o n er el
va lo r 3 en los bits m en cion ad os.

El d esb o rd am ien to del T im e rl h ace q u e el bit T M R 1IF p a s e a 1. TM R 1IF


es un bit del reg istro PIR 1. D ebe s e r p u esto a 0 p o r softw are. Si la in terru p ­
ción del T im e rl está habilitada, lo cu al se hace p onien do a 1 el bit TM R 1IE
(P I E l< r > ), el d esb o rd am ien to g e n e ra u n a interrupción.

T1C O N
5 4 3 2 1 0
T 1C K P S 1 T1C K PS0 T10SC EN T 1SY N C # T M R 1C S T M R 10N

Figura 6.6 T1CON: registro d e control del T im erl.

El cálculo del tiem p o d e d esb o rd am ien to del T im e rl sigu e u n razon a­


m iento sem ejan te al utilizad o e n el TimerO. Si N e s la can tid ad d e p u lsos que
deben llegar al co n ta d o r d e 1 6 bits (T M R 1) p a ra q u e éste s e d esb ord e, P el
fa cto r d e división del p re-d iv iso r y Ti el p e río d o d e los p u lsos d e en tra d a , el
tiem p o T d hasta q u e el T im e rl s e d esb o rd a es

T d = P x N x Ti (6.7)

En la pareja d e registros T M R 1L y 'I1V1R1H s e c a rg a el co m p lem en to 2


d e N en 1 6 bits, e s decir,

Ntmri = 2 16 - N = 65536 - N (6 .8 )
198 — Microcontroladores PIC

Si el T im e rl se deja c o rre r librem ente, en to n ces, d e m o d o n atu ral, N =


2 16. E n este caso ,

T d = 2'b x P x T i (6.9)

E je m p lo 6.2

P rogram ación d e l T im e rl. En este e je m p lo se ilustra:


-C óm o program ar el T im e rl com o contado r asincrónico de pulsos externos.
-C óm o escrib ir un núm ero binario d e 16 bits en lo s registros TM R 1L y TM R1H.
-C óm o le e r de form a segura lo s registros T M R 1 L y TM R1H.

List p=16F873
include “ P16F873.IN C "
»
A U X _H equ 0x2 0 ; V ariable auxiliar
A U X _L equ 0x21 ; V ariable auxiliar

; In ic T im e rl: R utina para program ar el T im e rl 0 com o contado r asincrónico


; d e pulsos externos con pre-divisor d e 8.
In icT im e rl:
clrf T1CO N T im e rl com o te m p o riza d o r detenido, pre-divisor = 1
bsf STATUS, RPO S eleccionar banco 1.
bcf PIE1, TM R1IE Inhabilitar interrupción d e l T im e rl.
bcf STATUS, RPO S eleccionar banco 0.
clrf TM R1H P oner 0 en TM R1H.
clrf TM R1L P oner 0 en TM R1L.
bcf PIR1, TM R 1IF Indicador d e desbordam iento en 0.
m ovlw 0x36 T im e rl co m o contador no sincronizado con P = 8,
m ovw f T1C O N T 1 0 S C inhabilitado, T im e rl detenido.
b sf T1C O N , T M R 1 0 N ¡ Iniciar el conteo del T im e rl.
return

. W R _T M R 1a: R utina para e scrib ir u n núm ero binario d e 16 b its e n e l T im e rl


deteniendo tem poralm ente el conteo del T im e rl.
E ntradas: en A U X _H y A U X _L están los bytes alto y bajo
d e l núm ero que se v a a escribir e n el T im e rl.
; Salidas: ninguna.
W R_TM R 1a:
b cf T1C O N , T M R 1 0 N ; D etener el conteo del T M R 1 .
m ovf A U X _H , W ; C a rga r el byte a lto en
m o vw f TM R1H ; el registro TM R1H.
m ovf AU X _L, W ; C a rga r el byte bajo en
m o vlw TM R 1L ; en el registro TM R1L.
b sf T1C O N , T M R 1 0 N ; R einiciar el conteo d e l T M R 1 .
Los tem porizadores — 199

return

W R _T M R 1b: Rutina para escribir u n núm ero binario d e 16 bits e n el T im e rl


sin detener el conteo d e l T im e rl.
Entradas: en A U X _H y A U X _ L e stá n lo s bytes a lto y bajo
del núm ero a escrib ir e n el T im e rl.
S alidas: ninguna.
W R TM R1b:
clrf T M R 1L ; A se g u ra r que T M R 1 L n o se de sb o rd e m ientras
m oví A U X _H , W ; se ca rg a r el byte alto en
m ovw f T M R 1H ; el registro TM R1H.
m ovf A U X _L, W : C a rga r el byte bajo en
m ovlw T M R 1L ; e n el registro T M R 1L.
return

R D _TM R 1: Rutina p a ra le e r e l valor del T im e rl m ientras está contando.


E ntradas: ninguna.
S alidas: e n A U X .H se devuelve e l valor d e TM R 1H y en
A U X _ L e l v a lo r de TM R 1L.

RD TM R1:
m ovf T M R 1 H .W Leer TM R 1H y p o n e r el byte alto
m ovwf AU X_H en A U X JH.
m ovf T M R 1 L .W Leer el byte bajo en TM R 1L y ponerlo
m ovw f A U X J. en AU X_L.
m ovf T M R 1 H .W Leer d e nuevo TM R 1H para ve r si cam bió.
xo rw f A U X _H . W S e com paran la s dos lecturas.
btfsc STATUS, 2 ¿S on iguales?
goto RD_FIN Sí - lectura válida: term in ar la rutina.
m ovf TM R 1H , W N o - lectura n o válida: volver a leer TM R1H
m ovw f AU X_H y TM R 1L, de lo que resulta una le ctura válida pues
m ovf T M R 1 L .W no hay tiem po d e q u e TM R 1L s e desborde y cam bie
m ovwf AU X_L el v a lo r de T M R 1H.
RD FIN:
return ; R etornar con la lectura correcta.

end

6.1.3 El m ó d u lo Tim er2

El T im er2 es un tercer m ó d u lo disponible p ara te m p o riz a r en m u ch os


m icrocon trolad ores P IC d e clase m edia. Está fo rm a d o p o r un co n ta d o r a sce n ­
d en te d e 8 b its, u n p re-d iviso r, u n p o st-d iv iso r y u n reg istro p a ra alm acen ar
el m ó d u lo d e con teo. El T im e r2 sólo trabaja c o m o te m p o riz a d o r y e s un c o n ­
tador d e ciclos d e m áquina. La figura 6 .7 m u estra su d ia g ra m a d e bloques.
2 0 0 — Microcontroladores PIC

El p re-d iv iso r p u ed e ser p ro g ra m a d o c o n factores d e división d e 1 , 4 u


8. P a ra el p o st-d iv iso r, los facto res d e división so n 1 , 2 , 3 . . .16. C u an d o s e u san
am b os d ivisores e n su s v a lo re s m áxim o s, el tiem p o d e d esb o rd am ien to del
T im e r2 e s el d e u n te m p o riz a d o r d e 1 6 bits.

El T im er2 es el tem p o rizad o r q u e co n stitu y e la base d e tiem p o s del


m o d u la d o r d e p u lsos e n an ch u ra q u e se con stitu y e cu a n d o el m ó d u lo C C P
o p e ra e n el m o d o P W M . El T im er2 tam bién p u ed e s e r seleccio n ad o co m o
g e n e ra d o r d e la v elo cid ad d e co m u n icació n p o r el m ó d u lo SSP.

Figura 6.7 Diagrama de bloques del Timer2.

El T im er2 n o se in crem en ta m ientras el m icrocon trolad or está en el m odo


de bajo con su m o; el conteo se rean u d a cu an d o el PIC despierta.

La figura 6.8 m u estra los bits q u e co m p o n en el registro d e control d el Ti-


m e r2 , T 2C O N . C o n los bits T2CK PS1 y I^CKPSO s e selecciona el factor d e divi­
sión del pre-divisor, m ientras que los bits TOUTPS3:TOUTPSO seleccionan el
factor d e división del post-divisor. Los valores que h ay q u e p o n er e n estos bits
se m uestran e n la tabla 6.2. El con teo d el T im er2 se p u ed e habilitar p onien do a
1 e l b it T M R 2 0 N del registro T 2C O N y se inhabilita poniéndolo a 0.

T2CO N
7 6 5 4 3 2 1 0

- TO U TP S 3 TO U TP S 2 TO U TP S 1 | TO U TP S O | TM R 2 0 N | T2CK PS1 T2C K P S 0

F igu ra 6.8 T2CON: registro de control del Timer2. Con los bits T2CKPS1 y T2CKPS0
se selecciona el factor de división del pire-divisor, mientras que los TOUTPS3:
TOUTPSO seleccionan el factor de división del post-divisor. El bit TMR2ÜN
sirve para habilitar el conteo del Timer2.

El v a lo r d el con teo se p u ed e leer y / o escrib ir e n el registro T M R 2. El


v a lo r cam b ian te del reg istro T M R 2 es c o m p a ra d o co n tin u am en te c o n el v a ­
lor d ep o sitad o en PR 2. C u a n d o am b os v alores so n iguales, el re su lta d o d e
Los tem porizadores — 201

la co m p aració n es positivo y e l reg istro T M R 2 e s p u esto a 0 e n el sigu iente


increm ento/ rein icián d ose el p ro ceso , a la v e z q u e s e envía u n p u lso a l post­
divisor. Si el factor d e división d el p o st-d iv iso r e s P 2 , en to n ces al ca b o d e P2
co m p a ra cio n es c o n resu ltad o positivo se d esb o rd a el T im e r2 y el bit T M R 2IF
del registro PÍRI pasa a 1. E s te bit d eb e s e r puesto a 0 p o r softw are. Si el bit
T M R 2IE del reg istro PIE1 está e n 1, s e gen era u n a solicitud d e interrupción.
T a b la 6.2 Bits del registro T2CON y factores de división del pre-divisor y el post-divisor. El
valoren T2CKPS1 y T 2 C K P S 0 fja el factor de división del pre-divisor, mientras
que el valor de TOÜ l'PS3:TOÜTPSO selecciona el factor de división del post-di­
visor.

F a c t o r d e d iv is ió n F a c t o r d e d iv is ió n
T 2 C K P S 1 :T 2 C K P S 0 T O U T P S 3 :T O U T P S O
d e l p r e -d i v is o r d e l p o s t -d iv i s o r

00 1 00 0 0 1

01 4 00 0 1 2
1x 16 0010 3

...
1111 16

El tiem p o q u e tard a el T im er2 en d esb o rd arse se p u ed e ca lcu la r d e la


sigu iente form a. Si N es el n ú m e ro d ep o sita d o en el reg istro P R 2, P . e l factor
d e división del p re-d iviso r, P , el factor d e d ivisión del p o st-d ivisor y T i el
p eríod o d e los pulsos d e en tra d a al m ó d u lo , en to n ces, tras u n sencillo ra z o n a ­
m iento se co n clu y e q u e el tiem p o T d que ta rd a el T im e r2 en d esb o rd arse es

T d = P, x P2 x ( N + l ) x Ti (6.10)

d o n d e P , = 1 , 4 , 1 6 y P , = 1 , 2 , 3 , . . . , 16. T en ien d o e n cu e n ta q u e el T im er2 opera


co m o tem p o rizad or,

77 = 4 x 7 ^ (6.11)

E je m p lo 6.3

Program ar el Tim er2 para q u e se desborde cada m ilisegu ndo cuando la frecuencia del oscilador principal
del m icrocontrolador es 4 MHz.
Si la frecuencia d e l oscilador del m icrocontrolador e s 4 M H z, entonces el período d e los pulsos que en­
tran al Tim er2 e s Ti = 1 p s. Para obtener un tiem po d e desbordam iento Td = 1 m s. hay que hacer que el
m ódulo d e conteo d e l Tim er2 se a 1000. Es decir, según (6.10),

í p P 1 x P 2 x (N + 1 j = l0 0 0

Este valor se pue de obtener con: P , = 4 , P 2= 1 0 y A /= 24.


El siguiente segm ento d e program a ilustra cóm o program ar el Tim er2 con e stos parám etros.
202 — Microcontroladores PIC

List p=16F873
include ‘ P16F873.INCP

lnicTimer2: Rutina que programa al Tim erl para dividir por 1000.

InicTim erl:
d rf T2CON ; Se detiene el Timer2.
clrf TMR2 ; El registro TMR2 es puesto a 0.
bsf STATUS, RPO ; S e selecciona el banco 1.
bcf PIE1.TM R2IE ; Se inhabilita la interrupción del Timer2.
movlw .24 ; Módulo de ccnteo de TMR2
m ovwf PR2 ;e n PR2.
bcf STATUS, RPO ; S e selecciona el banco 0.
bcf PIR1, TMR2IF ; El indicador de desbordamiento es puesto a 0.
movlw 0x4A ; Postdivisor = 10, pre-divisor = 16.
m ovwf T2CON ; Timer2 detenido.
bsf T2CON. TM R20N ;Se inicia el conteo en el T¡mer2.
retum

Espera_Timer2: Rutina para esperar el desbordamiento dei Timer2


lo cual ocurre cada miliseguntío.

Espera _Timer2;
btfss PIR1, TMR2IF ¿Se ha desbordado el Timer2?
goto Espera..Timer2 No - esperar.
bcf PIR1.TM R2IF Sí - poner a 0 la bandera TMR2IF.
return Retomar.

end

6.2 El m ó d u lo CCP
Los m ó d u lo s d e C ap tu ra, C o m p a ra ció n y M od u lació n d e P u lsos en A n ­
ch u ra (C C P : C a p h ire/C o m p a re/P W M ) so n circu itos q u e ju n to co n los m ód u los
T im e rl y T im er2 p erm iten te m p o riz a r d e o tra s form as.

En u n m ism o m icro co n tro la d o r P IC p u ed en existir hasta d o s m ód u los


C C P , d en om in ad os C C P 1 y C C P 2. U n m ó d u lo C C P está fo rm ad o básicam en ­
te p o r una p areja d e reg istro s d e 8 bits d en o m in ad o s C C P R * H y C C P R aL .
A q u í y en lo sucesivo, la letra "x" se d eb e su stitu ir p o r 1 ó 2, in d ican d o el m ó­
d u lo C C P al q u e se esté h acien d o referencia. E n e s to s registros se p u e d e al­
m a ce n ar, resp ectivam en te, la p arte alta y baja d e u n n ú m ero d e 1 6 bits. C a d a
m ó d u lo C C P utiliza tam b ién el reg istro C C P rC O N p a ra el co n tro l y el bit
Los tem porizadores — 203

C C P x IF del registro PIR c o m o in d icad o r d e q u e se h a p ro d u cid o u n evento.


Si la in terru p ción del m ó d u lo está habilitada (co n el bit C C P.rlE del registro
PIE), cu a n d o C C P x IF p a s a a 1 se g e n e ra u n a solicitud d e interrupción.

C a d a m ód u lo C C P p u ed e op erar en cualquiera d e los siguientes m odos:

• M odo d e cap tu ra. El m ód u lo C C P cap tu ra el v a lo r d el T im erl


cu an d o o cu rre u n even to ex te m o en el term inal C C P*.

• M odo co m p arad o r. El registro del m ód u lo C C P alm acen a u n nú­


m e ro d e 16 bits q u e s e co m p a ra co n el valor del T im erl y , según
el resu ltad o d e la com p aración , se gen era u n even to, q u e puede
incluir un cam b io en el term inal C C Px.

• M od o m o d u lad o r d e pulsos en an ch u ra (PW M : P u lse W id th M o-


dulation). El m ód u lo C C P y el T im er2 fo rm an u n m o d u lad o r de
an ch o d e pulsos c o n salida p o r el term inal CCP.r.

L o s term in ales C C P * (CCP1 o C C P 2 ) so n en trad as en el m o d o d e ca p tu ­


ra y salid as en los m o d o s co m p a ra d o r y P W M . E sto s term inales, u n o p o r cad a
m ó d u lo C C P existen te en el P IC , co m p a rte n funciones c o n los term in ales del
p u erto C.

En los m o d o s d e c a p tu ra y co m p a ra d o r, el T im e rl e s u tilizad o p o r los


m ó d u lo s C C P co m o base d e tiem po. E n estos m o d o s, el T im e rl d eb e ser p ro­
g ra m a d o c o m o te m p o riz a d o r o c o m o co n ta d o r e n m o d o sin cronizado. E n el
m o d o P W M , el T im er2, que o p era siem p re c o m o te m p o riz a d o r, d e te rm in a la
frecuencia d e la señ al P W M .

D ad o q u e los m ó d u lo s C C P co m p a rte n funciones c o n los te m p o riz a ­


d ores T im e rl y T im er2, en los P IC q u e d isp on en d e d o s m ód u los C C P , co m o
su ce d e en el P IC 16F 873, h a y q u e ten er en cu en ta el u so co m p a rtid o d e estos
tem p o rizad o res p o r a m b o s m ó d u lo s. L a tab la 6 .3 m u estra las posibles inte­
raccio n es q u e h ay q u e co n sid erar al p ro g ra m a r los m ó d u lo s C C P.
T a b la 6.3 Interacción entre los módulos CCP.
M odo del m ódulo M o d o d e l m ó d u lo Inte ra cció n
CCPx CCPy
Captura Captura Am bos m ódulos utilizan la misma base de tiem po (T im e rl)
El m odulo CCP que opera com o com parador debe configurarse para
Captura Comparador la puesta a 0 del T im e rl cuando la el resultado de la com paración es
positivo.
Los com paradores deben configurarse para la puesta a 0 del Tim erl
Comparador Com parador
cuando el resultado de la com paración es positivo.
Am bas señales PWM tienen el mismo periodo, dado por el valor del
PWM PWM
registro PR2.
2 0 4 — Microcontroladores PIC

PWM Captura No hay interacción.


PWM Comparador N o hay interacción.

L o s registros d e fu nciones especiales C C P x C O N s e utilizan para pro­


g ra m a r los m ód u los C C P . L a figura 6 .9 m u estra los bits d e estos reg istro s. El
m od o d e trabajo d e los m ó d u lo s C C P s e p ro g ra m a m ed ian te los bits C C P xM 3:
CCPxM O. I-os bits D C x B l y DCxBO se u san sólo en el m o d o PW M .

C C P xC O N
7 6 5 4 3 2 1 0

- - D C xBl | DCxBO | C C P xM 3 C C P xM 2 C C PxM I CCPxM O

F igu ra 6 .9 Registros CCPxCON, para el control d e los módulos CCP.

L a tabla 6 .4 m u estra los v alores q u e h ay q u e p o n e r e n los bits C C P xM 3:


CCPxM O d e los registros C C P x C O N para p ro g ra m a r los d iferentes m o d o s de
trabajo d e los m ó d u lo s C C P , q u e se exp lican en los a p a rta d o s siguientes.
T a b la 6.4 Valores de los bits CCPxM 3:CCPxM 0 del registro CCPxCON y modos d e opera­
ción de los módulos CCP.
Bits Modo
CCPxM3 ...CCPxMO
00 00 Desactivar m ódulo CCP
00 Cada flanco de bajada
01 Cada flanco de subida
01 Captura
10 Cada 4 flancos de subida
11 Cada 16 flancos de subida

El term inal C CPx es iniciado en bajo y se pone en alto cuando el resulta­


00
do de la com paración es positivo. El bit CCPxIF es puesto a 1.

El term inal CCP es iniciado en alto y se pone en bajo cuando el resultado


01
de la com paración e s positivo. El bit CCPxIF e s puesto a 1.
10 Comparador
El bit CCPIF es puesto a 1 cuando el resultado de la comparación es
10
positivo. No se afecta el terminal CCPx.

El T im e rl es puesto a 0 {reset al T im e rl). El resultado de la comparación


11
es positivo. El bit CCPxIF es puesto a 1. N o se afecta el term inal CCPx.

11 XX PWM

6.2.1 M o d o d e ca p tu ra

L a figura 6 .1 0 m u estra el esq u em a d e bloques del m ó d u lo C C P cu and o


trabaja e n el m o d o d e ca p tu ra . El v alo r q u e tiene el T im e rl en el m om en to d e
p ro d u cirse u n cierto even to relacion ad o co n el term in al C C P x d el m ódu lo,
los tem porízadores — 20S

es a lm a cen ad o en los registros C C P xR H y C C P x R L . L a ca p tu ra del v a lo r del


T im e rl se p u e d e p ro g ra m a r p ara que s e realice co n c a d a flan co d e subida
o d e bajada d e los pulsos d e en trad a al term inal C C P x , o co n los flancos de
subida c a d a 4 ó 1 6 pulsos. L a p ro g ram ació n d e la c a p tu ra se h ace c o n los bits
C C P x M 3 :C C P xM 0, tal c o m o s e ilustra en la tabla 6.4.

A l o cu rrir la cap tu ra, el bit C C P x IF es p u e sto a 1, d e m o d o q u e actú a


co m o un in d icad o r d e la o cu rren cia del ev e n to . E ste in d ica d o r p u e d e s e r c o n ­
su ltad o p o r p ro g ra m a . A d em ás, si la in terrupción del m ó d u lo C C P está h a­
bilitada (el bit C C P x IE del reg istro PIE está e n 1 ), se g e n e ra una solicitud de
interrupción.

C C P x IF

C C P xM 3 : CCPxM O

F ig u r a 6 .1 0 Módulo CCP operando como registro de captura del Tim erl ante un evento en el
terminal CCPx.

El term inal C C P x debe s e r co n fig u rad o c o m o e n tra d a p onien do a 1 el


bit co rresp o n d ien te del reg istro TRIS del p u e rto p aralelo d o n d e s e en cu en tra
el C C P x , q u e n o rm alm en te es el p u erto C.

E je m p lo 6.4

El m odo de captura en un m ó d u lo C C P se puede utilizar para m edir tiem pos. E n este ejem plo se ilustra
cóm o m edir el período de un tren d e pulsos penódicos utilizando el m ódulo CC P1 de un PIC 16F873. La
frecuencia d e l o scila d o r principal es d e 4 MHz.
La figura 6.11 m uestra el esquem a sim plificado que se utiliza, el cual está com puesto por el m ódulo
CCP1 en m odo d e captura y e l T im e rl. C om o elem entos esenciales están el term inal CC P1 d e entrada
d e la señal cuyo período Tx se quiere determ inar; lo s registros CCPR1 (form ado por la pareja C C PR 1H y
C C PR 1L) y TM R1 (form ado por lo s registros TM R1H y TM R 1L) y los pre-divisores del m ódulo C C P y del
T im e rl, con factores d e división Pc y P } respectivam ente.
Para el corre cto funcionam iento d e la captura, el T im e rl debe ser program ado co m o tem porizador, para
que a ctú e co m o u n contado r de ciclos d e m áquina. La duración d e u n ciclo d e m áquina es TCM.
Del esquem a d e la figura 6.11 se ded u ce q u e la captura del valor cam biante d e l T im e rl ocurre ca d a Pc x
Tx segundos. Si A/, y N2 son lo s valores d e TMR1 en dos capturas sucesivas, entonces, entre una captura
206 — Microcontroladores PIC

y otra, la cu en ta del T im erl ha av an zad o e n N = N 7 - A/,. E n unid ad es d e tiem po, e s o significa qu e han
transcurrido A/x P (x TCMsegu nd os en tre una captura y otra. E n to n ces:

(a)

S e ñ a l e n el
term inal C C P 1 _

Pc*Tx ♦

C a p tu ra : C a p tu ra :
TM R 1 = N . TM R 1 = N 7

(b)

Figura 6.11 El módulo CC.P en modo de captura, (a) Esquema simplificado del módulo CCP
en modo de captura ju n to a l Timerl. (l>) Diagrama del tiempo transcurrido entre
dos capturas sucesivas, en función del período Tx del tren de pulsos en el terminal
CCP1, la duración TCMde los ciclos d e máquina y los factores d e división del los
pre-divisores.

Pc * Tx = N * P , * Tcu
de donde s e obtiene

T , = N x - TaJ
PJP,

El cociente P J P, d e lo s factores de división de los pre-divisores, permite ajustar la resolución con que
s e determina el valor d e T„ p u es en un microcontrolador la duración de los ciclos d e máquina e stá fijada de
antemano. Sabiendo que P c = 1 , 4 , 1 6 y P, = 1 , 2 , 4 , 8 la m ejor resolución s e obtiene con P c = 16 y P, = 1. Con
esto s valores s e puede medir el período Txco n una resolución d e 1/16 d e la duración de un ciclo d e máquina.
No obstante, para que e sta afirmación s e a derla, e s necesario que Ja señal d e entrada m antenga su periodo
estable, sin cam bios, al m enos durante lo s 1 6 períodos qu e dura la medidón.

P o r otra parte, si P c = P t, N rep resen ta la cantidad d e ciclo s d e máquina qu e dura el periodo Tx d e la


señ al. Si Tw = 1 p s , N e s directam ente la duración del periodo Tx en m icrosegundos. Evidentem ente,
Los tem porizadores — 207

en este caso, com o N es un núm ero d e 16 bits, el m a y o r periodo que se puede m edir con este esquem a
es d e 655 36 p s . D ejam os com o ejercicio para el le cto r q u e determ ine cuál es el p e rio d o m á xim o q u e se
puede m e d ir s iP ^ P . = 16.
El listado que sigue ilustra có m o program ar el T im e rl y el m ódulo CCP1 en m odo d e captura, para m edir
el período d e lo s pulsos e n el term inal CCP1 d e un PIC 16F873. La frecuencia d e l o scila d o r principal del
P IC es 4 M Hz y los factores d e división seleccio nados son Pc = P, = 1, d e m odo que la diferencia entre
d o s capturas sucesivas es el p e rio d o buscado, en m icrosegundos.

List p=16F873
include "P 16F873.IN C ”

N1H equ 20h ; P a rte alta d e la prim era captura.


N 1L equ 21h ; Parte baja d e la prim era captura.
NH equ 22h ; Parte alta d e la diferencia.
NL equ 23h , Parte baja d e la diferencia.

; lnic_captura: Rutina para program ar el m ódulo CCP1 en m odo d e captura


; co n ca d a flanco d e subida d e los pulsos en e l term inal C C P 1 . E l T im e rl
; se program a com o tem porizador, con pre-divisor = 1.
Inic_captura:
clrf T1CO N ; T im e rl co m o tem porizador, pre-divisor=1, detenido.
c lrf CCP1CON ; R eset al m ódulo CCP1.
bsf STATUS, RPO ¡ S eleccionar banco 1.
bsf TR ISC, 2 ; P oner el term inal CCP1 co m o entrada.
bcf PIE1, TM R1IE ; Inhabilitar interrupción d e l T im e rl.
bcf PIE1, CC P1IE ; Inhabilitar interrupción del m ódulo CCP1.
bcf STATUS, RPO ; S eleccionar banco 0.
d rf PIR1 ; P oner a 0 la s banderas d e interrupción.
m ovlw 0x05 , S eleccionar m odo captura, con ca d a fla n co d e subida.
m o vw f CCP1CON i
b sf T1C O N . TM R 1O N ; Iniciar conteo d e l T im e rl.
return

; C aptura: Esta rutina captura d o s valores d e l T im e rl y calcula ¡a diferencia


; q u e h a y entre ellos. La diferencia, que es un núm ero d e 16 bits, es devuelta
; en los registros NH (la parte a lta) y N L (la parte baja).
Captura:
b cf PIR1, C C P1IF ; P oner a 0 el indica dor d e captura.
btfss PIR1, C C P1IF : ¿c c p i i f = 1?
goto Captura ; No - esperar.
bcf PIR1, C C P1IF ; S i - pon er a 0 el indicador d e ca p tu ra y
m oví C C P R 1L, W ; g u a rd a r el valor capturado e n N 1H y N1L.
m ovw f N1L
m oví C C PR 1H , W
m ovw f N1H
208 — Microcontroladores PIC

C aptura2: ; C a ptu rar e l siguiente valor:


btfss PIR1, C C P1IF ; ¿C C P1IF = 1?
goto C aptura2 ; N o - esperar,
bef P IR 1 , C C P 1IF ; S i - pon er a 0 el indica dor d e captura y
; resta r lo s valore s capturados.
; A h o ra se realiza la operación CCPR1 - N1 ==> N:
m ovf N1L, W
subw f CC PR1L, W
m ovw f NL
btfss STATUS, C
goto R e sta l
goto RestaO
R e s ta l:
decf CC PR1H, f
RestaO:
m ovf N1H, W
subw f C C PR 1H , W
m ovwf NH
retum

end

6 .2 .2 M o d o co m p a ra d o r

La figu ra 6 .1 2 m u estra el esq u em a d e bloques del m ó d u lo C C P o p e­


ra n d o en el m o d o co m p a ra d o r. E n este m o d o se está co m p a ra n d o el valor
cam b ian te del T im e rl co n el v alo r alm acen ad o e n los registros C C P xR H y
C C P a RL; cu a n d o a m b o s v alores so n iguales, el re su lta d o d e la co m p aració n
e s positivo y se gen era u n d eterm in ad o e v e n to , q u e d ep en d e d e lo q u e haya
sido p ro g ra m a d o e n los bits C C P xM 3:CCPxM O d el reg istro C C P x C O N , se­
g ú n se m u e stra e n la tabla 6.4.

Figura 6.12 Módulo CCP como comparador. Si el valor en el registro CCPRx es igual al valor
en el par TM R l se genera un evento por el terminal CCPx. Las características del
evento se programan con los Iñts CCPxM 3:CCPxM 0 del registro CCPxCON.
Los tem porizado res — 209

L o s ev en to s q u e s e p u e d e n p ro g ra m a r consisten en la p u esta a 0 o a 1
del term inal C C P x y el reset d el T im e rl. Si s e u sa el term inal C C P x , en ton ces
d e b e ser con fig u rad o c o m o salid a p o n ien d o a 0 el bit co rre sp o n d ie n te del
reg istro TRIS d el p u erto p aralelo d o n d e se e n cu e n tra el term inal C C P x , que
n o rm alm en te e s el p u erto C. E n to d o s los caso s, cu a n d o el re su lta d o d e la
c o m p a ra ció n es p ositivo, el bit C C P xIF del reg istro PIR e s p u esto a 1. Este bit
p u e d e s e r co n su ltad o p o r p ro g ra m a . Si la in terru p ción del m ó d u lo C C P está
habilitada (m ed ian te la p u esta a 1 del bit C C P xIE del reg istro P IE ), s e gen era
una solicitud d e interrupción.
U n o d e los even tos q u e s e p u ed e gen erar cu a n d o el resu ltad o d e la c o m ­
p aración e s positivo e s la p u esta a 0 (reset) del T im e rl. Esta op ción aum enta
las posibilidades d e ese tem p o rizad or, ya q u e entonces p u ed e trabajar co m o
u n tem p o rizad or d e 16 bits c u y o m ó d u lo d e con teo es el valor d e los registros
C C P R xH y C C PR vL del m ó d u lo CCP.

E je m p lo 6.5

U so d e l T im e rl co m o tem porizador d e 16 b its em pleando lo s registros C C P R 1H y C C P R 1L para alm ace­


n a r el m ó d u lo d e conteo. Para e llo se program a el m ódulo CCP1 e n m odo com parador, usando la varian­
te d e gen era r u n re se t a l T im e rl cua n d o la com paración e n tre lo s registros CCPR1 (C C P R 1H :C C P R 1L)
y TM R1 (TM R 1H .TM R 1L) sea positiva. E n este ejem plo, el T im e rl se program a com o tem porizador, con
un fa cto r d e división d e 1 para su pre-divisor.
A continuación se d a el listado d e la program ación e n ensam blador.

List p=16F873
in d u d e "P 16F873.IN C "

lnic_com para: R utina para program ar el m ódulo CCP1 e n m odo com parador
con el reset d e l T im e rl al se r positiva la com paración. N o se utiliza el
term inal C C P 1 . El T im e rl se program a com o tem porizador, con pre-divisor = 1.
lnic_com para:
clrf T1CON T im e rl com o tem porizador, pre-divisor=1, detenido.
clrf CCP1CON R eset al m ódulo C C P 1 .
bsf STATUS, RPO S e ie cd o n a r banco 1.
bcf PIE1, TM R1IE Inhabilitar interrupción d e l T im e rl.
bcf P IE 1 .C C P 1IE Inhabilitar interrupción d e l m ódulo C C P 1 .
bcf STATUS, RPO S eleccionar banco 0.
d rf PIR1 P oner a 0 la s banderas d e interrupción.
m ovlw 0x0 B S e leccionar m odo com parador, con reset al T im e r l.
m ovwf C C P1C O N
bsf T1C O N , T M R 1 0 N Iniciar conteo del T im e rl.
return
%
; C om para: Esta rutina esp e ra a que la com paración hecha e n e l m ódulo CCP1
2 1 0 — Microcontroladores PIC

program ado co m o com parador, sea positiva. E n e s te m odo se com paran lo s registros
CCPR1 (C C P R 1H y C C P R 1L) y TM R1 (TM R 1H y T M R 1L). C uando CCPR1 = TM R1,
e l resultado de la com paración es positivo y te rm in a la rutina.
E ntradas: E n C C PR 1H y C C P R 1L, e l m ódulo d e conteo d e l T im e rl.
Com para:
btfss P IR 1 , C C P 1IF ; ¿CCPR1 = TM R1 ?
g oto C om para ; N o - esperar.
bcf P IR 1, C C P1IF ; S í- p o n e r a 0 el indicador d e com paración,
retum ; Retom ar.

end

6 .2 .3 M o d o PWM

En el m o d o P W M (P u lse W idth M od u lation ), c a d a m ó d u lo C C P y el Ti-


m e r2 form an u n m o d u lad o r d e pulsos en a n ch u ra co n salid a p o r el term inal
C C P * del m ódu lo.
U n a señ al P W M e s u n tren d e p u lsos d e d u ració n Tos¡ variab le y perío­
d o T con stan te (figura 6.13).

: j — i______________i------------------1__________ T
.1 I. -I

F ig u ra 6.13 Señal PWM. La duración de los pulsos es variable (TQf. T'0J pero el período T es
constante.

P ara ca ra cte riz a r u n tren d e pulsos p erió d ico s s e utilizan los térm inos
ciclo d e trabajo, ciclo a ctiv o, o ciclo ú til (d u ty cy cle), q u e se define c o m o el p o rce n ­
taje del p erío d o d u ra n te el cu al la señal p e rm a n e ce en 1, es decir,

Ciclo de trabajo|%= x 100 (6.12)

A sí, p o r ejem plo, si los p u lsos están la m itad d el tiem p o en 1, el ciclo d e


trabajo e s d el 5 0 %; si los p u lsos están to d o el tiem p o en 1, el ciclo d e trabajo
e s d el 1 0 0 %. E n u n a señal P W M , el ciclo d e trabajo v a ría d e a cu e rd o co n la
señal m od u lad ora.
Los tem porizadores — 211

O tro p a rá m e tro utilizad o p ara ca ra cte riz a r u n a señal P W M e s la resolu ­


ción . E n los sistem as digitales, el tiem p o es n o rm alm en te u n a variab le discre­
ta, d e m o d o q u e en una señ al P W M g en erad a p o r u n sistem a digital, la d u ­
ra ció n r oN, d e los p u lsos n o v aría con tin u am en te, sin o a saltos, en intervalos
d iscreto s d e tiem p o ATON. Si este in tervalo es u n su b m últip lo d el p erío d o T d e
la señal, la d u ració n TON d e los p u lsos en una señal P W M p u e d e to m a r sólo
los siguientes v alores discretos:

T0, = 0 , AT0fl, 2A To s , 3A T0„ , . . . , T <6 1 3 )

La can tid ad R d e veces en q u e s e p u e d e su b d ivid ir el períod o T define


la reso lu ció n d e la señal PW M ,

(6.14)
ON
Si e s te co cien te es u n a p o ten cia d e 2, es d ecir, R = 2', en ton ces r es la
reso lu ció n e x p re sa d a en bits,

M (6.15)
lg 2
La resolución r d e una señal P W M d a la can tid ad d e bits necesarios para
determ in ar cualq uier posible d u ració n TON d e la señal. E s una m edid a d e la
can tid ad d e p artes en q u e se p u ed e dividir la d u ració n d e los pulsos P W M . Por
ejem plo, si R = 1 0 2 4 , la resolución d e la señal P W M e s d e 10 bits. E sto significa
que la du ración TON d e los pulsos P W M s e p u ed e v a ria r a saltos, c o n un paso
d e T /R unidades d e tiem po.

E n u n m ó d u lo C C P p ro g ra m a d o c o m o m o d u la d o r d e a n ch o d e pulsos,
el p erío d o T d e la señal P W M está d e term in a d o p o r el valor del registro PR2
del T im er2. D en tro d e c a d a p eríodo, el tiem p o TON d u ran te el cu al la señal
P W M p erm an ece e n 1, está d eterm in ad o p o r los bits D C xB 9:D C xB 0. Estos
bits s e d istrib u y en en tre los registros C C P R x L y C C P x C O N d e la siguiente
form a: del reg istro C C P R xL s e to m an su s 8 bits, p a ra fo rm a r los 8 bits d e
m a y o r p eso , n o m b rad o s D C xB 9:D C xB 2; del reg istro C C P x C O N s e to m an los
bits C C P xC O N < 5:6> , q u e en to n ces co n stitu y en los d o s bits d e m e n o r peso,
n o m b rad o s D C x B l :D C xB0.

L a figu ra 6 .1 4 m u estra la con fig u ració n q u e adq u ieren los m ó d u lo s C C P


junto al T im e r2 e n el m o d o P W M . El fu n cio n am ien to es el sigu ien te. S e co m ­
p ara el v alo r a lm acen ad o en el registro PR 2 co n el v a lo r ca m b ia n te d e TM R2.
C u a n d o am b os v alores so n ig u ales, significa q u e ha tran scu rrid o el tiem po
212 — Microcontroladores PIC

co rresp o n d ien te a u n p e río d o T d e la señal P W M . E n to n ces se realizan v arias


acciones:
• El registro TM R2 es puesto a 0 en el siguiente ciclo d e máquina.

• La en trad a S del biestable R S se activ a y co n ello su salida Q pasa


a 1. P o r lo tanto, si el term inal CCP.v está p ro g ra m a d o co m o sali­
d a m edian te el bit correspondiente del registro rrR IS , p asa tam ­
bién a 1.
• E l v alo r situ ado en los bits DQ rB9:D G vB0 se c a rg a en C C PR xH
y en dos bits internos del m ódu lo. Este valor es prop orcion al a la
d u ració n TONd e los pulsos d e la señal PW M .

D C x B 9 :D C x B 0

Figura 6.14 Módulo CCP trabajando como modulador de pulsos en anchura. La señal PWM
se puede obtener en el terminal CCPx del módulo. El período de la señal queda
determinado p o r el valor N depositado en el registro PR2 del Tim er2y la duración
de los pulsos la define el valor M form ado por los bits DCxB9:DCxB0.

R ealizadas estas accion es, se inicia u n n u e v o period o d e la señ al P W M .


El v alo r D C xB 9:D C xB 0, p rop orcion al al ciclo d e trabajo d e la señal P W M , es
c o m p a ra d o c o n el v alo r cam b ian te d e T M R 2 (m ás d o s bits in ternos). C u an d o
Los tem porizadores — 213

am b os v alores son iguales, la en trad a R d el biestable RS se activ a y c o n ello


la salida Q p asa a 0. Si el term in al C C P * h a sido p ro g ra m a d o c o m o salida,
p asa tam b ién a 0. L a señ al P W M resu ltan te y su s p a rá m e tro s s e m u e stra n en
la figu ra 6.15.

rr
TM R T M R 2 = N.
r TM R2 = 0 TM R 2- M 1 TM R2 = 0

J
f 0N - D C x8 9 :D C xB 0

T-PR2* 1

Figura 6 .Í5 Parámetros de la señal PW M generada por el módulo CCP. El ciclo d e trabajo
de la señal PWM está determinado p o r el valor M de los bits DCxB9:DCxB0,
mientras que el período de ¡a señal lo determina el valor N almacenado en PR2.
El registro TMR2 se incrementa, en cada ciclo de máquina, desde 0 a N; al alcan­
zar este valor, es forzado a 0 en el ciclo de máquina siguiente, con lo que se inicia
un nuevo período de la señal PWM. La señal inicia su ciclo d e trabajo cuando el
TMR2 es puesto a 0, y finaliza cuando TMR2 alcanza el valor M.

El p e río d o (7 ) y la d u ració n (TON) d e los pulsos e n la señ al P W M se p u e­


den ca lcu la r m edian te

T = (N + 1) x P x 4 x Tqsc (6.16a)

Ton= M x P x (6.16b)

d o n d e N e s el v a lo r d ep o sitad o en el reg istro P R 2, M e s el n ú m e ro fo rm ad o


p o r los bits D CvB9:D O :BO , P = 1 , 4 , 1 6 es el factor d e división del p re-d iv iso r
del T im e r2 y Tt)SC. es el p erío d o del o scilad o r prin cipal del m icrocon trolad or.
D ad o q u e M e s un n ú m e ro d e 1 0 bits, s e p u e d e e x p re sa r co m o

M =4x Ms + M 2 (6.17)

donde M He s el nú m ero d e 8 bits alm acenado en C C P R rL y M 2 es el nú m ero d e 2


bits alm acenado en C C P.rC O N <5:4>. Si, p o r com od id ad , para variar la duración
d e los pulsos d e la señal P W M se quiere m anipular sólo el registro C C P R rL , en­
tonces se pueden m anten er los bits M2 en 0. D e esta form a, si M2 = 0, y teniendo
en cuenta (6.16b) y (6.17), la du ración d e los pulsos es

Ton= 4 x M 8 x P x Tobc (6.18)

P ara d eterm in ar la resolu ción d e la señ al P W M ob ten id a, o b sé rv e se que


el tiem p o d e d u ració n d e los p u lsos P W M se p u ed e d ivid ir en M p artes. D ado
que M es u n n ú m ero d e 1 0 bits, s e p o d ría p en sar q u e la resolu ción d el m o­
2 1 4 — Microcontroladores PIC

d u lad o r P W M es d e 1 0 bits. Sin em b arg o , la resolución real e s m e n o r pu es el


m a y o r valor q u e p u e d e alcan zar M está lim itado p o r el v a lo r N d ep ositad o
e n PR2. P o r ello, la resolu ción q u ed a d eterm in ad a realm en te p o r N . Para cal­
cu la r la resolución del m ó d u lo P W M s e p ro ce d e así. El v a lo r m á s p eq u eñ o d e
Tqn q u e se p u ed e ob ten er es

A To k = P X T osc (6.19)

P o r tan to , la c a n tid a d d e v eces que este v a lo r c a b e en el períod o T es

r = ( N ± 1^ P x 4 ^ = 4 x ( N + 1) (620)
P x¿osc

C o m o (N + 1) e s u n n ú m e ro d e n bits ( t i = 1 , 2 , . . . , 8 ), ten iend o en cuenta


(6.15), la reso lu ció n en bits q u e se p u ed e alcan zar es

r= n + 2 (6.21)

E je m p lo 6.6

P rogram ación d e l m ódulo CC P1 de un PIC 16F873 para gen era r una seña l PW M . S e desea una señal
PW M con u n p e rio d o constante d e 1 m s y c id o d e tra b a jo variable. E l oscilador principal d e l m icrocon­
trolador es d e 4 M H z (7 0SC = 0 ,25 ps).
El período 7 de la seña l PW M se fija m ediante el v a lo r N depositado en el registro PR2. La duración 7 ^
de lo s pulsos que da determ inada p o r e l valor M d e lo s 10 bits distribuidos entre los 8 bits del registro
C C P R 1L (q u e constituyen lo s 8 bits m ás significativos d e M , e s decir, M s) y los 2 bits C C P 1 C O N < 5 :4 > ,
que form an los 2 bits m enos significativos de M, es d e d r, M ?. E n este ejem plo, se quiere utilizar sólo el
registro C C PR 1L para fija r el valor d e TQK. Los bits C C P 1C O N <5:4> se m antendrán perm anentem ente
en 0.
Teniendo e n cuen ta q u e 70SC = 0 ,25 p s y 7 = 1 m s, e n (6.16a) se obtiene que
(A/ + 1) x P = 1000

don de P es el fa cto r d e división del pre-divisor del Tim er2, P = 1, 4 , 1 6 . S e escoge P = 4, de m odo que
el valor que h a y que colocar e n el registro PR 2 es N = 249.
La d u ra d ó n (variable) d e los pulsos PW M se logra co locand o u n valor entre 0 y 249 en el registro
CC PR1L.
A continuación se m uestra el listado del program a e n lenguaje ensam blador.

List p=16F873
inciude *P 16 F 873.IN C N

; ln ic_p w m : R utina para program ar el m ódulo CCP1 e n m odo PW M


; para g e n e ra r una señal PW M d e periodo 1m s y ciclo de trabajo del 50 %.
; El valor del ciclo d e trabajo se puede variar dinám icam ente con posterioridad.
Los tem porizadores — 215

lnic_pw m :
m ovlw 0x01 ; P rogram ar T¡m er2 detenido
m ovwf T2CO N ; y pre-divisor = 4.
clrf C C P1C O N ; R eset a l m ó d u lo CCP1.
clrf TM R2 ; P oner a 0 el Timer2.
m ovlw .124 ; La señal PW M saldrá con
m ovwf C C PR 1L ; ciclo d e tra b a jo del 5 0 %.
bsf STATUS, RPO ; S eleccionar banco 1.
m ovlw .249 ; M ódulo d e conteo d e l Tim er2
m ovw f PR2 ; que es e l período d e la señal PW M.
bef PIE1, TM R2IE ; Inhabilitar interrupción d e l Tim er2.
bef PIE1, CC P1IE ; Inhabilitar interrupción d e l m ódulo CCP1.
bef TR IS C . 2 ; P oner el term inal CCP1 co m o salida.
bef STATUS, RPO ; S e leccionar el banco 0.
clrf PIR1 ; Poner a 0 la s banderas d e interrupción.
m ovlw OxOC ; El m ódulo CCP1 e n m odo PW M,
m ovw f C C P1C O N ; con lo s b its D C 1B 1:D C 1B 0 e n 0 (M 2 = 0).
b sf T2C O N , T M R 2 0 N ; Iniciar conteo del Tim er2.
return

; TO N _pw m : Esta rutina varía el ciclo útil d e la señal PW M


según e l valor depositado en W.
; Entradas: E n W un núm ero entre 0 y 249.
T O N _pw m :
m ovw f CCPR1L
return

end
2 1 8 — Microcontroladores PIC

E n u n m icrocon trolad or h ay v arias fuentes d e interrupción, un as internas


y otras extern as. Las in terrupciones internas tienen su orig en e n los m ód u los d e
en trad a y salida del m icrocon trolad or, la m em oria o la C P U . Los tem p orizad o-
res y otros m ód u los d e en trad a y salida so n fuentes d e in terrupción com unes.
M enos co m u n es son las interrupciones cau sad as p o r alg ú n even to que tenga
lu gar en la m em oria (p o r ejem plo, p o r escribir e n la E E PR O M d e d atos) o en la
propia C P U (u na división p o r cero). L as interrupciones extern as s e originan en
u n periférico y llegan al m icrocon trolad or p o r alguno d e su s terminales.

L o s m icro co n tro lad o res tienen recu rso s p ara recibir y p ro ce sa r las soli­
citu d es d e in terru pción . G en eralm en te, c a d a d isp ositivo q u e es fuente d e una
posible in terru p ción tiene asociad o s d o s bits, q u e p u ed en e s ta r e n u n m ism o
reg istro o en registros diferentes. El p rim e r bit tiene u n a fu n ción inform ativa:
es u n in d icad o r q u e e s a ctiv a d o (es p u esto a 1, p o r ejem plo) p o r el disp ositivo
q u e solicita la in terru pción . Este b it se p u e d e co n su lta r p o r p ro g ra m a si para
aten d er al disp ositivo s e usa la técnica d e co n su lta o esp era. El o tro bit tiene
una fu n ción d e control y s e usa p ara perm itir o im p ed ir el p a so d e la solici­
tud d e in terru p ción hacia la C P U , lo q u e eq u ivale a habilitar o inhabilitar la
gen eración d e in terru pcion es p o r la fuente en cu estió n . E ste bit d e co n tro l se
p u ed e m an ejar p o r p ro g ra m a .

Los m icro co n tro lad o res d isp on en ad e m á s d e u n b it p ara el co n tro l glo­


bal del sistem a d e in terru pción . C o n e s te bit s e p e rm ite o im p id e el p a so d e
cu alq u ier in terru p ción hacia la C P U , lo cu al eq u ivale a habilitar o inhabilitar
globalm en te el sistem a d e in terru pción . P a ra q u e u n a solicitu d d e in terru p ­
ción llegue a la C P U y sea aten d id a, tan to el sistem a e n su con ju n to c o m o la
in terru p ción en p articu lar d eb en e s ta r habilitados.

Los bits d e control u tilizad os p a ra p erm itir o n o el p a s o d e las solici­


tu d es d e in terru p ción hacia la C P U s e d en o m in an máscaras', d e allí q u e las
in terru pcion es q u e s e p u e d e n habilitar o inhabilitar p o r p ro g ra m a se llam en
in terru p cion es e n m a s c a r a b a s (m askable in terru p ts) y las in terru p cion es q u e no
se p u ed en inhabilitar p o r p ro g ra m a (es d e cir, q u e están siem p re hab ilitadas),
si las h ay, s e d en om in an in terru p cion es n o e n m a s c a r a r e s (n on -m a sk a b le in te­
rrupts).

L a figu ra 7.2 ilustra el cam in o q u e sig u e n las solicitu d es d e interrupción,


en m ascarablos o n o , p ara llegar a la C P U . Las in terru p cion es en m ascarables
d isp onen d e bits d e control asociad o s a c a d a fu en te d e in terru p ción y del
b it p ara el co n tro l global d el sistem a. P a ra que una solicitud d e in terrupción
en m ascarab le p ro g re se hacia la C P U , tan to el bit d e co n tro l individual c o rre s ­
Las interrupciones — 219

pon d ien te c o m o el bit d e co n tro l global deben e star en 1. Si la in terrupción


e s n o en m ascarab le, llegará a la C P U co n in d epen den cia del b it d e control
glob al, y será atendida.

t t
Indicadores
t
Bits para e l control
t
B it para el control global
F u e n te s d e aso ciad o s a individual d e cad a d e las interrupciones
interrupción c a d a fuente d e interrupción e n m a s c a ra b a s
interrupción enm ascarable

Figura 7.2 Camino que siguen ¡as solicitudes de interrupción en un microcontrolador. Cada
fu en te de interrupción tiene un indicador que se activa (pasa a l ) con la solicitud
de interrupción. Las interrupciones enmascarables deben ser habilitadas para que
las solicitudes lleguen a la CPU. Para ello están los bits de control individual y
global correspondientes. Una solicitud de interrupción no enmascarable siempre
llega a la CPU para ser atendida.

E n gen eral, cu a n d o una solicitud d e in terru p ción q u e llega a la C P U


e s aten d id a, el sistem a d e in terru p ción q u e d a inhabilitado (el bit d e control
global e s p u e sto a 0). E n ton ces, seg ú n el esq u em a d e la figura 7.2, n o llegará
a la C P U n in gu n a n u eva solicitud d e in terru p ción que se p ro d u zca. P ara po­
d e r a te n d e r o tras solicitu d es d e in terru p ción , el p ro g ra m a d o r d eb e habilitar
n u ev am en te el sistem a; esto su ele h acerlo el p rop io p ro g ra m a q u e atien d e la
interrupción.

7.1.2 A te n ció n a las s o lic itu d e s d e in te rru p c ió n

A te n d e r una solicitud d e in terru p ción es in terru m p ir la ejecución del


p ro g ra m a e n c u rso y p asar a ejecu tar o tro p ro g ra m a , tal c o m o ilustra la figura
7.1. C u a n d o term in a este se g u n d o p ro g ra m a , hay q u e co n tin u a r co n el p ro­
g ra m a in terru m p id o.
2 2 0 — Microcontroladores PIC

La solicitud d e in terru p ción q u e llega a la C P U (en el su p u esto d e que


la in terru p ción y el sistem a están habilitados), se atien d e cu a n d o term in a la
ejecución d e la in stru cción en cu rso . C o m o en gen eral n o se c o n o ce d e an­
te m a n o cu ál es esta in stru cción , h a y q u e e n co n trar la form a d e re c o rd a r la
d irección d e la in stru cción q u e le sig u e, p ara re g re sa r a ella cu a n d o term ine
el p ro g ra m a que atien d e a la in terru p ción . E s a dirección está en el co n ta d o r
d e p ro g ra m a (P C ). L a form a d e reco rd a rla e s g u a rd a r el con ten id o del PC
en la pila, tal c o m o lo h acen las instru ccion es d e llam ad a a u n a subrutina.
C on vien e p o r ello q u e el p ro g ra m a d e aten ción a una in terru p ción ten ga la
e stru ctu ra d e una su b ru tin a, p orq ue la instru cción d e re to m o q u e p o n e fin a
la ejecución d e e s ta su b rutina h ará q u e se re g re se satisfacto riam en te al p ro­
g ra m a in terru m p id o.

El p ro g ra m a d e aten ción a una in terru p ción es, pues, una su b rutina que
s e "lla m a " p o r in terru pción . T am b ién s e p u ed e d ecir q u e u n a solicitud d e in­
terru p ció n eq u ivale a in sertar una instru cción d e llam ad a a u n a su b rutina (la
q u e atien d e la in terru p ción ) en alg ú n lu g a r n o previsible del p ro g ram a.

En principio, la e stru ctu ra d e la su b rutina que atiende a una in terru p ­


ció n n o e s d iferen te d e la d e cu alq u ier su b rutina "co n v e n cio n a l". N o obstan­
te, d a d o q u e n o e s posible co n o ce r d e an te m a n o el lu g a r del p ro g ra m a d esd e
d o n d e s e p ro d u cirá la llam ad a a la su b ru tin a, el p ro g ra m a d o r d eb e to m ar
ciertas p recau cion es a l escrib irla. La ejecución d e la su b rutina q u e atiende
una in terru p ción d eb e d ejar in tactos los v alores d e los registros y bits co n los
q u e el p ro g ra m a estaba trab ajan d o. P o r ejem plo, los v a lo re s q u e tienen el acu ­
m u la d o r (o el registro d e trabajo) y el reg istro d e e sta d o u o tro sim ilar, co m o
los in d icad o res aritm éticos, n o deben alterarse p o r la ejecución d e la su bruti­
na d e aten ción a una in terru p ción . P ara p reserv ar eso s y o tro s reg istro s que
no deban s e r alterad o s, h ay q u e g u a rd a r sus v a lo re s al in iciar la subrutina. E n
m u ch o s m icro co n tro lad o res s e usa la pila para e s ta acción . A n tes d e re to m a r
al p ro g ra m a in terru m p id o, se restitu y en los v a lo re s o rig in ales d e eso s regis­
tros. H ay q u e d esactiv ar el in d icad o r d e la in terru p ción (es d ecir, ponerlo a
0 ) p ara q u e no s e rep ita co n tin u am en te, pues, p o r lo gen eral, el in d ica d o r no
se d e sactiv a au to m áticam en te, y sólo en to n ces habilitar el sistem a d e inte­
rru p ció n p ara re to m a r al p ro g ra m a in terru m p id o . La figura 7 .3 m u estra el
d ia g ra m a d e bloques d e la e stru ctu ra gen eral d e la su b rutina d e aten ción a
una in terru pción .

L a s e tap as q u e tran scu rren al ate n d e r a u n a solicitud d e in terrupción


son las siguientes:

1. El m icrocon trolad or com p leta la ejecución d e la iastru cción en curso.


Las Interrupciones — 221

Subrutina de
atención a una
L! interrupción

G u a rd a r (en la pila)
los valores del
A cum ulador. Registro
de Estado, etc.

I
C u e rp o d e la subrutina

Restituir e n los
registros respectivos
los valores guardados
(en la pila)

Desactivar indicador
d e interrupción

I
Habilitar interrupción

; R etornar :

Figura 7.3 Estructura general de la subrutina de atención a una solicitud de interrupción.

2. El v alo r del P C se gu ard a en la pila, p ara "re c o rd a r" la dirección d e la


iastru cción a la q u e h ay q u e reg resar cu a n d o term in e la atención a la in­
terrupción.

3. L a dirección d e la subrutina d e atención a la interrupción s e p one en el


P C , c o n lo cual se salta a esa dirección y com ienza la ejecución d e la su­
brutina.

4. S e ejecuta la subrutina d e atención a la interrupción. C o m o toda subruti­


na, term in a (su ejecución) co n una instrucción d e retom o.

5. C o n la ejecución d e la in stru cción d e re to m o , s e regresa al p rog ram a inte­


rru m p ido.

7.1.3 Interrupciones fijas y vectorizadas

P ara in fo rm ar a la C P U d e la d irección d o n d e co m ie n z a la subrutina


que atiende la in terru p ción , h ay d o s altern ativas:

1. L a subrutina que atiende a la in terrupción se coloca en un lugar fijo d e la


m em o ria d e p ro g ram a, con o cid o d e an tem an o p o r la C P U .
224 — Microcontroladores PIC

7.2 Las interrupciones en los m icrocontroladores PIC

7.2.1 Fuentes de interrupción y registros asociados

L as in terru pcion es d e los m icro co n tro lad o res P IC d e la g a m a m edia


son in terru p cio n es en m ascarab les y fijas, d e m o d o q u e se p u ed en habilitar o
inhabilitar globalm en te y a d e m á s c a d a fuente d e in terru p ción se p u ed e h a­
bilitar o inhabilitar in d ivid u alm en te (figu ra 7.7). P a ra q u e u n a solicitud d e in­
terru p ción se h a g a efectiva, tan to la fuente d e la in terru p ción c o m o el sistem a
en s u con ju n to deben e s ta r habilitados. El sistem a se habilita o inhabilita glo­
balm ente m ed ian te el bit C I E del reg istro d e funciones especiales IN TC O N .
L o s d isp ositiv os co n posibilidad d e in terru m p ir se habilitan o inhabilitan in­
d ivid u alm en te m ed ian te bits d e los registros IN T C O N , PIE1 y PIE2.

Al ser to d as las in terru p cion es fijas, to d a s las solicitudes, si están habi­


litadas, hacen que el m icro co n tro lad o r p ase a ejecu tar la in stru cción q u e esté
en la dirección 4 d e la m em o ria d e p ro g ra m a . D en tro d e la rutina d e atención
a la in terru p ción , el p ro g ra m a d o r debe a v e rig u a r la fuente d e la in terru p ción
co n su ltan d o los bits ap ro p iad o s e n los registros d e funciones especiales (IN-
T C O N , PIR1 y PIR 2) aso ciad o s al sistem a d e in terru p ción d el PIC.

C u a n d o se p ro d u ce una solicitud d e in terru p ción , si e l sistem a en su


conjunto y la fuente en p articu lar están habilitados, el m icro co n tro la d o r ter­
m in a la in stru cció n e n cu rso , g u a rd a en la pila el v a lo r del co n ta d o r d e p ro­
g ra m a y salta a la dirección 4 d e la m em o ria d e p ro g ra m a .

El tiem p o tran scu rrid o en tre el m o m e n to en que se p ro d u ce la solicitud


d e in terru p ción y el co m ien zo d e la ejecución d e la p rim e ra in stru cción de
la su b rutina d e atención a la in terru p ción (la que está en la d ire cció n 4 ), está
en tre 3 y 3 ,7 5 ciclos d e m áq u in a. Este e s el d en o m in ad o tiem p o d e laten cia d e la
in terru pción , cu y o v alo r e x a c to d ep en d e del m o m e n to en q u e se p ro d u ce la
solicitud d e n tro d e u n ciclo d e m áq u in a y d e la fuente d e la in terru p ción (si
e s in terna o extern a).

La figura 7.5 ilustra las op eracio n es que tienen lu g a r en el m icro co n ­


tro lad o r d u ra n te el tiem p o d e latencia. E n p rim er lu gar se com p leta la ins­
tru cción q u e estaba en c u rso cu a n d o se p rod u jo la solicitud d e interrupción;
a co n tin u ación se g u a rd a en la pila el v a lo r del c o n ta d o r d e p ro g ra m a (PC),
que a p u n ta a la sigu iente in stru cción , y finalm ente s e p o n e el v a lo r 0 0 0 4 en
el PC , c o n lo cu al se salta a la p rim era in stru cción d e la ru tin a que atiende la
solicitud d e in terru pción . Al ate n d e r una solicitu d d e in terru p ción , el sistem a
d e in terru p cion es q u ed a inhabilitado (el bit G IE es p u e sto a 0).
Las interrupciones — 225

C ad a m ód u lo d e en trad a y salida puede gen erar al m en os una solicitud


d e interrupción. Entre las posibles fuentes d e in terrupción están las siguientes:

• Interrupción externa por el term inal EMT del m icrocontrolador.

• in terrupción p o r cam b io e n el nivel lógico d e las entradas RB4.RB7 del


P u erto B.

• Interrupción p o r desbord am iento d e los tem p orizad ores TimerO, Tim erl
y Tim er2.

• Interrupción p o r alg ú n even to en el m ó d u lo C C P.

• Interrupción p o r el p u erto serie USART.

• Interrupción p o r el con vertid or A / D .

Valor del PC PC PC* 1 PC + 1 0004 0005

Instrucción
Inst (PC) Inst (P C + 1) - Inst (0 0 0 4 ) Inst (0 0 0 5 )
buscad a ^
''A.
Instrucción
Inst (PC - 1) Inst (P C ) Inst (0 0 0 4 )
ejecutada

Bit GIE S istem a habilitado Sistem a inhabilitado


V
—I h-
T iem po
T cu 2 7 c m 3 7 c m 47-cm 57,
CM

Latencia

S e produce a S e com pleta la S e guarda el Com ienza la ejecución


solicitud de ejecución de la valor del P C en d e la rutina d e atención
interrupción instrucción en curso la pila a la interrupción

Figura 7.5 Operaciones que tienen lugar en el microcontrolador durante el tiempo de laten­
cia: se completa la instrucción en curso, se guarda el valor del PC en la pila y se
pone el valor 0004 en el PC, con lo cual se ejecuta la primera instrucción de la
rutina de atención a la interrupción. Cuando se ejecuta esta rutina, el sistema de
interrupción queda inhabilitado (se habilita nuevamente con la instrucción retfie de
retom o a l programa interrumpido).

T od o s los P IC d e clase m ed ia u san al m e n o s u n reg istro d e fu n d on es


especiales p a ra co n tro la r las in terru p cion es: el reg istro IN T C O N . E n este re­
gistro s e co n tro lan la in terru p ció n ex te rn a (p ro ven ien te del term inal IN T), la
in terru p ción p o r ca m b io en los term in ales R B 4 a R B 7 y la in terru p ción p o r
d esb o rd am ien to d el TimerO. H a y tam b ién u n bit (G IE) p ara habilitar global­
m en te el sistem a d e in terru p ción . L a s restan tes fuentes d e in tc rru p d ó n se
2 2 6 — Microcontroladores PIC

co n tro lan c o n los reg istro s P IE 1, P IR 1, P IE 2 y PIR2. L a figu ra 7 .6 m u e stra los


bits d el re g istro d e co n tro l d e las in terru p cion es IN TC O N .

IN T C O N
7 6 5 4 3 2 1 0

G IE P E IE T 0 IE IN T E R B IE T 0 IF IN T F R B IF

B its p a r a h a b ilita r In d ic a d o r e s d e
in te r r u p c io n e s in te r r u p c ió n

Figura 7.6 El regis tro INTCON, para el con Irol d e las in tem ipáon es.

El sign ificad o d e c a d a b it del reg istro IN T C O N e s el siguiente:

G IE (G lo ba l In terru p t E n ablé). C on este bit se habilita (con G IE = 1) o inhabilita


(con GIE = 0) el sistem a d e interrupción del m icrocon trolad or. C u an d o
se p rod u ce una solicitud d e interrupción, este bit p asa au tom áticam en te
a 0, co n lo cual se inhabilita el sistem a d e interrupción, que n o atenderá
nu evas solicitudes hasta que G IE = 1. L a instrucción d e re to m o d e una
su b rutina d e atención a u n a in terrupción (retfie) p one el bit G IE en 1 y
así el sistem a d e interrupción del PIC q u ed a n u evam ente habilitado. Al
producirse u n reset, el bit G IE e s puesto a 0, q u ed an d o así inhabilitado el
sistem a d e interrupción.

P E IE (P eripheral In terru p t E n ablé). C on este bit se habilitan las interrupciones de


otras fuentes que n o están presentes en el registro IN TCO N sino en los
registros PIE.
T 0IE , T 0 IF . Bits relacion ad os con la in terrupción del TimerO. C on el bit T0IE
puesto a 1 se habilita la interrupción del TimerO. T 0IF es el in d icad o r d e
desbord am iento d el T im e rl: cu an d o este bit pasa a 1, se gen era la solici­
tud d e interrupción correspondiente, si T0IE = 1.

IN T E , IN T F. Bits relacion ad os c o n la interrupción extern a. C on el bit IN TE se


habilita esta interrupción, m ientras q u e IN TF e s el in dicador d e q u e se
ha d etectad o un flanco (de subida o d e bajada) en el term inal d e en trad a
INT.
R B IE , R B IF . Bits relacionados c o n la interrupción p o r cam b io d e nivel e n los
bits R B 4 a R B 7. El bit RBIE puesto a 1 habilita esta interrupción. RBIF
indica q u e se ha prod u cid o u n cam b io en alg u n o d e los term inales RB4 a
R B 7; si RBIE = 1, se p ro d u ce la interrupción.
Las interrupciones — 227

L a figura 7.7 ilu stra c ó m o o p eran los bits del reg istro IN T C O N . La soli­
citu d d e in terrupción extern a se h ace a través del term inal IN T , q u e co m p arte
fu nciones co n el term inal RBO del p u e rto B en la m ayoría d e los m icro co n tro ­
lad ores PIC d e clase m ed ia. E sta in terru p ción se p ro d u ce co n los flancos d e
la señ al en el term in al INT. El flanco que p ro d u ce la in terru p ción p u ed e ser
el d e su b id a o el d e bajada, lo cual se p ro g ra m a m ed ian te el bit IN T ED G del
reg istro O P T IO N (bit O P T IO N < 6> ). L a in terru p ción e x te rn a q u e d a re p o rta d a
m e d ia n te el bit IN TE del reg istro IN T C O N y se habilita o inhabilita m ed ian te
el bit IN TE d e ese m ism o registro.

Figura 7.7 Papel de los bits del registro INTCON en el sistema d e interrupción de los micro-
controladores PIC de. clase media. El sistema se habilita o inhabilita mediante el bit
GIE. Cada posible fuente de interrupción tiene un bit de. control para habilitar o no
la solicitud de interrupción d e la fuente. Las solicitudes quedan plasmadas en los
indicadores correspondientes (TOIF, IN T F y RBIF), independientemente d e que la
solicitud progrese o no.

Si los term in ales R B 4 a R B 7 están p ro g ra m a d o s c o m o en trad as y se p ro ­


d u ce u n cam b io en el nivel ló gico d e la señal en cu alq u iera d e e sta s en trad as,
es d ecir, d e '0 ' a T o v icev ersa, h a y una solicitud d e in terru p ción . A l p ro­
du cirse la in terrupción p o r cam b io s en R B 4 a RB7, el bit R BIF del registro
IN T C O N se p one a 'Y . L a in terru p ción p u e d e habilitarse o in habilitarse m e­
diante el bit RB1E d e ese m ism o registro. Esta in terru p ción se p u e d e utilizar
p a ra "d e s p e rta r" al m icro co n tro la d o r si s e h alla en el m o d o d e bajo co n su m o
(m od o Sleep).

L a figura 7.8 m u estra el circuito sim plificado co n el que se gen era la in­
terrupción p o r cam b ios en el nivel d e cu alq u iera d e las en trad as R B 4 a RB7.
228 — M icrocontroladores PIC

La señal en el term inal se m u estrea e n d o s instantes d e tiem p o diferentes c o ­


rrespondientes a los estados Q l y Q 3 d e c a d a ciclo d e m áquina (figura 2.2). Si
el nivel lógico d e la señal en el term inal h a cam b iado en tre los m uéstreos, las
salidas Q d e los biestables D ten d rán valores diferentes. E n este caso , la salida
d e la p u erta or-exclu sivo pasará a 1 y co n ello el b it R BIF será puesto tam bién
a 1, con lo q u e se gen era la solicitud d e interrupción. P ara que esto o cu rra , el
term inal d eb e e s ta r con figurado co m o en trad a (el bit TRISB</> d eb e ser 1).

TTL
R B</>

( /= 4, 5. 6 . 7 )

Q1 Q3

Figura 7.8 Circuito (simplificado) asociado a los terminales RB4 a RB7 programados como
entradas, que ilustra cómo se genera ¡a interrupción por cambios en el nivel lógico
de esas entradas. Q l y Q3 son las señales internas correspondientes a los estados
de igual nombre en cada ciclo de máquina (verfigura 2.2).

Los reg istro s P IE y PIR con tro lan las in terru p cion es d e los diferentes
m ó d u lo s periféricos in co rp o ra d o s en el m icro co n tro la d o r PIC . E n los regis­
tros P IE (P IE 1, P IE 2) están los bits p ara habilitar o inhabilitar las in terru p cio­
nes d e los p eriféricos. E n los reg istro s P IR (P IR 1, PIR 2) está n los bits in d icad o­
res d e q u e h a sid o solicitada una in terru p ción p o r los diferentes periféricos.
L a e stru ctu ra d e estos reg istro s, e s d ecir, el sign ificad o y posición d e los bits
d e n tro del registro, d e p e n d e del d isp o sitiv o e n p a rticu la r y p u e d e v a ria r d e
u n P IC a otro .

E je m p lo 7.2

R egistros P IE y P IR en lo s m icrocontroladores PIC 16F87x. L a estru ctura y com posición d e lo s registros


P IE y P IR es p a rticular d e ca d a PIC, p ue s depende d e lo s m ódulos d e entrada y salida disponibles en
e l m icrocontrolador. La fam ilia d e m icrocontroladores P IC 16F87x tie n e d o s registros PIE (PIE1 y PIE2) y
d o s registros P IR (PIR1 y PIR 2), cuya estructura en b its se ilustra en la figura 7.9. L a tabla 7.2 m uestra
lo s nom bres de lo s bits y lo s m ódulos d e entrada y salida asociados a ellos.
Las interrupciones — 229

T a b la 7.2 Nombre d e algunos bits de los registros PIE y PIR y módulos de entrada y salida
asociados a ellos.

B it d e c o n t r o l e n B it in d i c a d o r e n M ó d u lo fu e n te d e la in t e r r u p c ió n
r e g is t r o P IE r e g is t r o P IR

TMR1IE TMR1IF Tim erl


TMR2IE TMR2IF Timer2
CCP1IE CCP1IF CCP1
CCP2IE CCP2IF CCP2
RCIE RCIF U SAR T (recepción)
TXIE TXIF USART (transmisión)
ADIE ADIF Convertidor A*'D
PSPIE PSPIF PSP
SSPlE SSPIF SSP
BCLIE BCLIE SSP (colisión en el bus PC)
EEIE EEIF EEPROM d e datos (escritura)

P IE 1 P S P IE A D IE R C IE T X IE S S P IE C C P 1 IE T M R 2 IE T M R 1 IE

P IE 2 - - - E E IE B C L IE - - - C C P 2 IE

P IR 1 P S P IF A D IF R C IF T X IF S S P IF C C P 1 IF T M R 2 IF |T M R 1 IF

P IR 2 - - - E E IF B C L IF - -- | C C P 2 IF

Figura 7.9 Registros PIE y PIR en los microcontroladores PIC16F87x.

P ara q u e u n a solicitud d e in terru p ció n ca u se efectiv am en te la in terru p ­


ción d el p ro g ra m a e n cu rso , es n ecesario, en p rim e r lu g a r, q u e el sistem a de
in terru p ción del PIC esté habilitado, es d ecir, el bit C I E del reg istro IN T C O N
debe s e r 1. E n se g u n d o lu g ar, la fuente d e la in terru p ción d eb e e star tam bién
habilitada. P o r ejem plo, si se tra ta d e u n a in terru p ción ex te rn a , el b it IN T E del
registro IN T C O N d eb e s e r 1. Si se d a n estas con d icion es, la solicitud p rog resa
y el m icro co n tro lad o r g u a rd a e n la pila el co n ta d o r d e p ro g ra m a y sa lta a la
d irección 4 d e la m em o ria d e p ro g ra m a . El bit G1E p asa a u to m á tica m e n te a 0,
con lo cu al s e inhabilita el sistem a d e in terru p ció n y n o se a te n d e rá n nu evas
solicitudes. El sistem a se habilita d e n u e v o cu a n d o s e ejecu ta la instru cción
Tifie d e reto rn o al p ro g ra m a in terru m p id o d e sd e la su b rutina d e aten ción
a la in terru p ción . L a in stru cció n retfie p o n e el bit G IE a 1 y así el sistem a de
in terru p ción q u ed a n u ev am en te habilitado, y c o n ello el PIC está listo para
atender n u e v a s solicitu d es d e in terru pción .
230 — Microcontroladores PIC

Al p ro d u cirse un reset, el b it G IE es puesto a 0 , d e m o d o que el m icro ­


c o n tro la d o r n o aten d erá n in g u n a solicitud d e in terru p ción d esp u és d e h ab er­
se p ro d u cid o un reset p o r cu alq u iera d e las ca u sa s posibles (a p a rta d o 2 .1 .6 ).
A sí, p o r ejem plo, cu a n d o se en erg iza e l m icro co n tro la d o r, el d isp ositivo ini­
cia su trabajo c o n el sistem a d e in terru p ción inhabilitado. D ebe s e r el p ro g ra ­
m a d o r q u ien lo habilite, p onien do el bit GIF. a 1.

L o s bits d e co n tro l in dividual d e las in terru p cio n es (TOIE, IN TE, etc.)


n o rm alm en te n o s e m od ifican cu a n d o h ay u n a solicitud d e in terru pción .

L o s in d icad o res in d ivid u ales d e solicitu d es d e in terru p ción (TOIF, IN TF,


etc.) p a san a 1 au to m áticam en te p ara d a r cu e n ta d e una solicitu d d e in terru p ­
ción , p ero n o rm alm en te deben s e r pu estos a 0 en el p ro g ra m a q u e atien d e la
interrupción.

7 .2 .2 Estructura del subprogram a de atención a una interrupción

L as in terru p cion es son even tos q u e pu ed en o cu rrir en cu alq u ier m o­


m en to m ien tras se ejecuta una instru cción cu alq u iera d el p ro g ra m a . N o es
posible, en gen eral, p rev er d u ra n te q u é in stru cción h ab rá una solicitud de
in terru pción . Esta situ ació n obliga al p ro g ra m a d o r a to m a r ciertas p re ca u ­
cion es p ara p reserv ar los v alores d e los registros q u e, sien d o u sad o s p o r el
p ro g ra m a in terru m p id o , sean tam b ién utilizados p o r la ru tin a que atiende
la in terru p ción . Los reg istro s W y S T A T U S son d e los que se utilizan con
m a y o r frecu en cia en cu alq u ier p ro g ram a, d e m o d o que si h ay una solicitud
d e in terru p ció n , co n to d a seg u rid ad co n v e n d rá p reserv ar su s valores. Esto
significa q u e se deben g u a rd a r (p u ed e q u e en la m em o ria) los v alores q u e te­
m an esos registros cu a n d o fue solicitada la in terru pción , y u n a v e z finalizada
la aten ció n a la in terru p ción , s e deben restitu ir d ich os v alores en los registros
resp ectiv o s p a ra q u e el p rog ram a in terru m p id o p u ed a co n tin u a r s u cu rso
n o rm al.

En m u ch o s m icro p ro cesad o res y m icro co n tro lad o res, la fo rm a d e pre­


s e rv a r los registros m ien tras se atien d e una solicitu d d e in terru p ción s e re ­
d u ce a g u a rd a r s u s v alores en la pila. P a ra esto se u san instru ccion es d el tipo
PUSH registro (p ara g u a rd a r en la pila el co n te n id o del registro) y POP registro
(p a ra e x tra e r d e la pila u n v alo r y co lo carlo en el reg istro ). El u so d e la pila
(con su e stru ctu ra LIFO : la st in f i r s t o u t) p ara p re se rv a r registros p erm ite ani­
d a r su b ru tin as d e aten ción a in terru p cion es. Esto significa que m ien tras se
está aten d ien d o una solicitud d e in terru p ción , se p u e d e p ro cesar una segu n ­
d a solicitud sin q u e h ay a term in ad o la p rim era. T o d o esto p u e d e d a r lu g a r a
potentes y com p lejos sistem as d e in terru pción .
Las interrupciones — 231

D esafortu n ad am en te, e n los m icro co n tro lad o res P IC d e cla se m ed ia n o


existen las in stru ccion es P U S H ni P O P , ni se p u e d e e m p le a r la pila p a ra a lm a ce ­
n a r otra in fo rm ación q u e n o sea el co n ta d o r d e p ro g ra m a . L a au sen cia d e una
pila p ara re sg u a rd a r o tro s reg istro s (co m o W y ST A T U S) d u ra n te la aten ción
a una solicitu d d e in terru p ción , dificulta m u ch o el an id am ien to d e subruti-
nas d e aten ción a in terru p cion es, p o r lo q u e el sistem a d e in terru p ción d e los
PIC d e clase m ed ia resu lta relativ am en te sim p le. Si el m icro co n tro la d o r está
aten d ien d o u n a solicitud d e in terru p ción y en el tra n scu rso d e la rutina que
atien d e esa in terru p ción s e p ro d u ce una n u e v a solicitud, ésta d eb erá e sp e ra r
a q u e finalice la p rim era p ara p o d e r s e r aten d id a. D e h ech o , e s to q u e d a g a ­
ran tizad o e n los P IC d e clase m edia p o rq u e el sistem a d e in terru p ción queda
inhabilitado m ien tras s e está aten d ien d o a u n a solicitud d e in terru p ció n y
só lo se habilita d e n u e v o c o n la instru cción retfie, que term in a la aten ción a la
interrupción.

AI no h ab er una pila d e p ro p ó sito gen eral en la que re sg u a rd a r cu al­


q u ier reg istro del m icro co n tro lad o r, h a y q u e em p lear la m em o ria d e datos
p ara re sg u a rd a r a los registros W y ST A T U S, o cu alq u ier o tro q u e sea n ecesa­
rio. E sta o p eració n n o está exen ta d e dificu ltades, d a d a la estru ctu ra en ban­
cos q u e tiene la m em o ria d e p ro g ra m a y q u e la m ay o ría d e las instru ccion es
de transferencia d e datos p u e d e n a lterar a lg ú n bit del reg istro STA TU S. El
ejem plo 7.3 ilustra v arias solu cion es p ro p u estas al efecto p o r el fabricante d e
los PIC .

Ejemplo 7.3

E structura recom endada para la rutina de atención a una interrupción. L a rutina utiliza lo s registros
TE M P W y T E M P _ S T para gua rda r lo s registros W y STATUS respectivam ente. Esta operación, que
puede parecer se n cilla con la secuencia:
m ovw f TEMP_ W
m ovf S T A T U S ,W
m ovw f T E M P ST
No es posible, pues la instrucción m ovf afecta el bit Z del registro STATUS, por lo q u e el v a lo r alm ace­
nado e n T E M P _S T puede no se r original d e STATUS. H ay que valerse d e otras instrucciones que no
afecten ningún bit d e STATUS. Tal es e l caso d e la instrucción sw apf. C on esta instrucción, el segm ento
de program a queda así;
m o vw f TEM P_W
sw a pf STATUS, W
m o vw f T E M P .S T
que guarda el registro STATUS en T E M P _S T sin a lte ra r el valor original d e lo s b its pero con lo s cuartetos
ntercam biados.
El hecho d e que el registro STATUS se guarde con su s cu arteto s intercam biados no representa ningún
232 — Microcontroladores PIC

problem a: basta con in tercam biar lo s cuartetos d e T E M P _ S T a n te s d e sa lir d e la rutina d e atención a la


interrupción para recuperar intacto el registro STATUS. El segm ento d e program a q u e restituye los valo­
res d e W y STATUS a n te s d e fin a liza r la rutina, n o utiliza la instrucción m ovf y que da asi:
sw a p f TEM P_ST, W
m o vw f STATUS
sw a p f T E M P W, F
sw a pf TE M P _W , W
O tro elem ento que hay que tener e n cuen ta es que al m enos el registro T E M P _W debe e sta r situado
e n el banco que está activo en el m om ento d e producirse la interrupción. C om o, e n gen era l, esto no es
posible precisarlo d e antem ano, h a y diferentes solucio nes según q u e el m icrocontrolador dispong a o no
d e zo n a s d e m em oria RAM d e datos com unes a to d o s lo s bancos. U na zo n a RAM com ún a todos los
b an cos es un área d e m em oria que es direccionable desde cualquier banco co m o la m ism a área física
d e m em oria d e datos.
A continuación se m uestran lo s lista dos d e la s rutinas SRAI1 y S R A I2 co n la s estructuras recom endadas
p o r M icrochip para la s rutinas d e atención a una interrupción según el P IC dispong a o n o d e zo n a s co­
m unes d e m em oria d e datos:

E sta rutina es para los P IC q u e tienen RAM com ún (E jem plo: P IC 16F84).
RAM com ún: u n á re a d e RAM que es la m ism a e n todos los bancos.
T E M P _W y T E M P S T se definen e n esa R A M com ún.

SRAM :
m o vw f TEM P W ; G uardar W en TEMP_W .
sw a pf STATUS, W ; Intercam biar cuartetos d e STATUS
m o vw f TEM P_ST ; y gua rda r el resultado e n TEM P_ST.

A q u i se co lo ca el cuerpo d e la subrutina.

sw a pf TEM P_ST, W : R ecuperar T E M P _S T e in tercam biar cuartetos


m o vw f STATUS ; y pon er el resultado en STATUS.
sw a pf TE M P JV . F ; R e cuperar T E M P _W y ponerlo en
sw a pf TEM P_W , W ; W sin a lte ra r STATUS.
retfie ; R etornar al program a interrum pido.

Esta rutina es p a ra io s PIC que no tienen RAM com ún (E jem plo: PIC 16F873).
RAM com ún: un área d e RAM que e s la m ism a en todos lo s bancos.
El registro T E M P _W está definido en cu a lq u ie r banco.
El registro T E M P _S T está definido en el banco 0.
Las interrupciones — 233

SRAI2:
m ovwf TE M P JV G uardar W en TEMP_W .
sw a pf STATUS. W Intercam biar cuartetos de STATUS,
bcf STATUS. RPO seleccionar el banco 0
m ovwf T E M P ST y gua rda r el resultado e n TEM P_ST.

A q u i se coloca el cuerpo d e la subrutina

sw apf T E M P .S T , W ; R ecuperar T E M P _S T y in tercam biar cuartetos


m ovw f STATUS ; poner e n STATUS. El banco seleccionado
; es ahora el original, don de está T E M P J V .
sw a pf TE M P JV, F ; R ecuperar T E M P J V y ponerlo en
sw a pf TE M P JV, W ; W s in a lte ra r STATUS.
retfie ; R etornar d e la interrupción.

L a figu ra 7 .1 0 ilu stra la e stru ctu ra gen eral q u e tiene la su b ru tin a d e aten­
ción a una in terru p ción e n los m icro co n tro lad o res PIC . D espués d e p re se rv a r
los registros W y ST A T U S m ed ian te alg u n o d e los p roced im ien to s ilustra­
d o s e n el ejem p lo 7.3, el p ro g ra m a d o r debe a v e rig u a r cu ál e s la fuente d e
la in terru pción . P a ra ello se en cu estan los bits in d icad o res corresp on d ien tes,
p a ra v e r si a lg u n o d e ellos tiene el v alo r 1. U n a v ez identificada la fuente, se
atien d e la in terru pción . U n p u n to im p o rtan te es la p u esta a 0 d el in d icad o r
aso ciad o a la fuente d e in terru p ción (el m ism o q u e fue en co n tra d o c o n valor
1 d u ra n te la en cu esta). Finalm ente, se restitu yen los v alores originales d e los
registros W y ST A T U S y s e r e to m a al p ro g ra m a in terru m p id o al ejecu tar la
instru cción retfie. Esta in stru cción habilita el sistem a d e in terru p ción (p on e a
l e í bit G IE).

L as e tap as q u e tran scu rren e n la aten ción a u n a solicitud d e in terru p ­


ción e n u n PIC d e la g a m a m ed ia son:

1. El m icrocon trolad or co m p leta la ejecución d e la instru cción e n curso.

2. El valor del P C se g u a rd a en la pila.

3. El P C to m a el v alo r 0 0 0 4 , c o n lo cu al se salta a esa dirección y com ien za la


ejecución d e la subrutina.

4. S e g u ard an los registros W y STATU S. (V er el ejem plo 7.3).

5. Se determ in a la fuente d e la interrupción, encuestan d o los in dicadores de


las posibles fuentes.
2 3 4 — M icrocontroladores PIC

F ig u ra 7.10 Estructura de la subrutina de atención a una interrupción en los micwcontrotado­


res PIC de la gam a media. Si hay N posibles fuentes, se consultan los indicadores
1, ly ..., ¡s asociados a esas interrupciones. Estos indicadores son los bits TOIF,
I'NTF, etc. de los registros INTCON, PIR1 y PIR2.

6. U na v ez q u e la fuente h a sido identificada, el indicador correspondiente


a e s a fuente se desactiva (se p one a 0 ).

7. Se restituyen los valores d e los registros W y STATUS. (Ver el ejemplo 7 3 ).

8 . Se re to m a al p ro g ram a in terru m p id o co n una instrucción retfie, la cual


e xtrae d e la pila el valor del P C y habilita el sistem a d e in terrupción del
P IC (pone a 1 el bit C IE).

L as tres p rim e ra s e tap as se realizan a u to m á tica m e n te en el m icrocon ­


trolad or, m ientras que las e tap as 4 a 8 se deben im p lem en tar d e n tro d e la
subrutina d e aten ción a la in terru pción .

7.3 Ejem plos d e uso d e las interrupciones

7.3.1 Reloj de tiem po real

U n a b a s e d e tiem pos es u n con ju n to d e variab les c u y o s v alores reflejan el


v a lo r del tiem p o real e n el m icro co n tro lad o r. P o r ejem plo, una base d e tiem ­
p o s p u ed e estar fo rm ad a p o r las variab les TIC S, S E G , M IN , H O R , las cuales
Las interrupciones — 235

llevan el co n te o d e las d écim as d e seg u n d o , los seg u n d o s, los m inutos y las


h o ra s resp ectivam en te. L as variab les n o so n m ás q u e reg istro s del m icro co n ­
tro lad o r e n la m em o ria d e datos.

El reloj d e tiem p o real (R TC : R ea l T im e C lock) es u n m ecan ism o d e soft­


w are, b asad o e n una in terru p ción p erió d ica, q u e p erm ite actu alizar la base
d e tiem p os y sin cron izar ev en to s co n ella. P o r ejem plo, c o n cad a in terru p ción
p eriód ica, el p ro g ra m a del R T C increm enta el v a lo r d e la variab le TIC S y ,
se g ú n co rresp o n d a, actu aliza las restan tes variables.

L o s ev en to s extern o s q u e se sincronicen c o n la base d e tiem p os pu ed en


s e r p eriódicos. P o r ejem plo, so n ev en to s p erió d ico s leer u n ca n a ! del co n v e r­
tid o r A / D c a d a 5 s, p o n er u n v alo r e n el p u erto B c a d a 8 s, etc. E n el ejem plo
7 .5 se explica c ó m o se realizan estas sincronizaciones.

El elem en to fu n d am en tal e n u n reloj d e tiem p o real es la in terru p ción


p eriódica c o n la que se actu aliza la b ase d e tiem pos. El v a lo r T del períod o
d e esta in terru p ción determ in a la reso lu ció n q u e tiene la variab le tiem p o en
el sistem a. P o r ejem plo, si T = 0,1 s, el sistem a n o p u ed e d iscern ir intervalos
d e tiem p o m en ores q u e 0,1 s. O tro elem en to im p o rtan te es q u e la ejecución
del p ro g ra m a q u e atienda a la in terru p ción del RTC debe to m a r m uy p oco
tiem p o del p ro ce sa d o r, d e m an era q u e la ta re a d e llevar la cu en ta del tiem p o
real n o lim ite la realizació n d e o tras tarea s en el m icrocon trolad or.

P a ra d iseñ ar u n reloj d e tiem p o real se p u e d e u tilizar la in terru p ción de


u n o d e los tem p o rizad o res del m icrocon trolad or. P o r ejem plo, se p u e d e p ro­
g ra m a r el TimerO p ara ob ten er una in terrupción periódica (tic del reloj) cad a
cie rto n ú m ero d e m ilisegu n d os. Se em p lea en ton ces u n a variab le (variable
co n ta d o ra d e los tics del reloj) q u e se in crem en te (o d ecrem en te) co n cad a
in terru pción . C o n o tras v ariab les se p u ed e llevar el co n te o d e los segu n d o s,
m in u tos, h oras, etc.

El ejem plo sigu ien te ilustra c ó m o im p lem en tar un reloj d e tiem p o real
e n u n P IC 16F 873.
E jem plo 7.4

Reloj d e tiem po real. S e tie n e un sistem a basado e n u n PIC 16F873 con u n cristal d e 4 M H z. S e desea
im plem entar un reloj d e tiem po real (R T C ) con una ba se d e tiem pos con variables para co n ta r lo s tics del
reloj, lo s segundos, m inutos y horas.
Si el TimerO se program a co n un m ódulo d e conteo de N = 256 y e l pre-divisor con una razón d e división
P = 32, la interrupción d e l TimerO ocurre ca d a 8,192 m s (122,07 Hz).
P a ra a lca n za r un tiem po aproxim ado d e 1 s, hay que contar 122 interrupciones (tics) d e l contador. Para
e llo se puede u tiliza r u n registro (T IC S ) com o contado r de lo s tics. E n el registro SEG se im plem enta el
contador d e segundos, e n M IN e l contado r de m inutos y en HO R e l contado r de horas.
236 — Microcontroladores PIC

Figura 7.11 Diagrama de bloques con el algoritmo del reloj de tiempo real del ejemplo 7.4. La base
de tiempos está constituida por las variables T1CS, SLG, M IN y HOR que llevan
la cuarta de los tics de reloj, los segundos, los minutos y las horas. El algoritmo se
ejecuta muy rápidamente pues la gran mayoría de las veces toma el camino del NO
en la primera decisión. El algoritmo se ejecuta completo (tomando los caminos de
todos los SÍ) solamente en un TIC de reloj al día (justo a medianoche).
La figura 7.11 m uestra el algoritm o se g u id o p o r el RTC. A u nque pudiera parecer que el algoritm o consu­
m e m ucho tiem po del m icrocontrolador, e n realidad n o es así, p ue s la inm ensa m ayoría d e las vece s el
cam ino que to m a la ejecución d e l algoritm o e n la s decisiones e s el N O . D e la s 122 interrupciones que
ocurren en ca d a segundo, sólo una tom a el cam ino del S Í (en el bloque d e decisión ¿TICS = 07); de
lo s 6 0 s d e 1 m in, sólo en uno se tom a el cam ino d e l S Í e n el bloque de decisión ¿M IN = 0 ? y a sí suce­
sivam ente. P o r ello, el algoritm o consu m e realm ente m uy po co tiem po del procesador, lo cual es una
característica m uy deseable e n todo RTC.
Las interrupciones — 237

En el algoritm o m ostrado e n la figura 7.11, la variable T IC S se decrem enta m ientras que SE G , M IN y


H O R se increm entan e n lo s in stantes en que corre spond e hacer e stas operaciones. El m otivo d e esta
diferencia al o p e ra r con esas variables está e n q u e se ha q u e rid o dar velocidad a la ejecución d e l algorit­
m o, d e m odo q u e ocupe el m enor tiem po d e procesador posible. L a operación d e increm entar la variable
T IC S y com parar su v a lo r con 122 necesita m ás instrucciones que decrem entar y pregun tar s i el valor es
cero, por lo q u e esta últim a opción e s m ás rápida.
A continuación se da el listado d e l program a d e l R T C q u e sig ue e l algoritm o d e la figura 7.11.

R ealización d e un reloj d e tiem po real usando la


interrupción del tim er 0.

list p=16f873
#indude < p16f873 .ino

Variables d e la base de tiem pos:

T IC S equ 0x20 C ontador d e te s.


SEG equ 0x21 C ontador d e segundos.
MIN equ 0x22 C ontador d e m inutos.
HOR equ 0x23 C ontador d e horas.

O tras variables:

TE M P JV equ 0x24
TEM P ST equ 0x25

org 0
goto inicio
org 4
goto rtc

in ic io :
clrl INTCON ; Inhabilitar to d a s la s interrupciones.
bsf STATUS, RPO ; S eleccionar banco 1
m ovlw 0xC 4 ; P re-divisor de 32 asignado
m ovw f O P T IO N .R E G ; a l TimerO.
bcf STATUS, RPO ; S eleccionar banco 0.
m ovlw .0 ; M ódulo d e conteo d e 256
m ovw f TM R 0 ; en el TimerO.
m ovlw .122 ; C antidad d e tics por segundo.
m ovw f TICS ; en el contado r d e tics.
clrf SEG ; C o nta dor d e segundos e n 0.
clrf M IN ; C o nta dor d e m inutos e n 0.
clrf HOR ; C o nta dor de horas e n 0.
b sf INTCON, TOIE ; H a bilitar interrupción del TimerO.
238 — Microcontroladores PIC

bsf INTCON. GIE ; H abilitar el sistem a d e interrupción.

prog: ; P rogram a principal trivial.


nop
goto prog ; La zo infinito.

rtc:
m ovwf T E M P J V ; G uardar W e n TEM P_W .
sw apf STATUS, W ; Intercam biar cuartetos de STATUS,
bef STATUS, RPO ; seleccionar el banco 0
m ovw f T E M P .S T ; y gua rda r el resultado e n TEM P_ST.

bef IN TC O N . TOIF ; 0 e n indica dor d e desbordam iento d e TimerO.


decfsz TIC S , f ; ¿Se a lcanzó e l segundo?
goto fm _rtc ; No, sa lir d e la interrupción.
rtc_seg: ; Sí, se a lcanzó e l segundo, entonces
m ovlw .122 ; recargar la variable TICS
m ovw f TICS ; con la la cantidad d e tics/s e
in cf S E G .f ; in crem en tar los segundos.
movf SEG, w
xorlw .60 ; ¿SEG = 60?
btfsc STATUS, Z
goto fin . rtc ; No, retornar.
rtc_m in: ; S í, se a lcanzó el m inuto, entonces
clrf SEG ; pon er lo s segundos en 0 e
incf M lN .f ; in crem en tar lo s m inutos.
m ovf M IN .w
xorlw .60 ; ¿M IN = 60?
btfsc STATUS, Z
goto fin_rtc ; No, retom ar.
rtc_ h o r ; Si, se a lcanzó la hora, entonces
clrf MIN ; pon er lo s m inutos en 0 e
incf H O R .f ; increm entar la s horas.
m ovf HO R, w
xorlw .24 ;¿HOR = 24?
btfsc STATUS, Z
goto fin rtc ; No. retom ar
rtc_dia: ; S í, transcurridas 2 4 horas, entonces
clrf HO R ; poner la s horas e n 0.

fin_rtc:
sw a pf TEM P_ ST, W R ecuperar T E M P _S T y in tercam biar cuartetos
m o vw f STATUS pon er e n STATUS. El banco seleccionado
e s ahora el original, don de e s tá TE M P W.
sw apf TE M P JV . F R ecuperar T E M P _W y ponerlo en
swapf TE M P JV, W W sin a lte ra r STATUS.
Las interrupciones — 239

retfie ; R etornar al program a interrum pido.


i
end ; Fin d e l program a fuente.
7 .3 .2 Sincronización de eventos al reloj de tiem po real

Si se d isp on e d e u n R T C c o n u n a base d e tiem p os q u e lleve el con teo


d e las fraccion es d e segu n d o s, los seg u n d o s, los m in u tos, etc., es posible con
relativ a facilidad sin cro n izar c o n esa base d iv erso s e v e n to s, d e fo rm a que
c a d a even to se realice p erió d icam en te a in tervalos d eterm in ad os, iguales o
d iferentes, p a ra c a d a evento.

L a figu ra 7 .1 2 ilustra, m ed ian te un c a s o p articu lar, c ó m o p ro ce d e r en


gen eral p a ra sin cro n izar ev en to s c o n u n a base d e tiem p os re alizad a co n un
RTC. E n este c a so s e han id eado d o s ev en to s d en om in ad os E V E N T O l y
E V E N T 0 2 , q u e deben ejecutarse p erió d ica m e n te c a d a 3 s y 5 s resp ectiva­
m en te. L a form a d e p ro c e d e r e s la siguiente.

E n el p ro g ra m a d el RTC s e in co rp o ra n tan tas variab les co n ta d o ra s co m o


e v en to s se qu ieran sin cron izar. C a d a u n a d e e sta s variab les m a rca el período
d e rep etició n d e u n even to. A sí, p o r ejem plo, si se qu ieren sin cro n izar dos
even tos, p a ra q u e u n o se ejecute c a d a 3 s y el o tro cad a 5 s, la solu ción es
a ñ a d ir al p ro g ram a d el RTC d o s variab les q u e s e in crem en tan c a d a segu n d o
d esd e 0 hasta llegar a 3 y 5 resp ectivam en te. En la figura 7 .1 2 é sta s variab les
so n 5 E G 3 y SEG 5.

D en tro del p ro g ra m a del R T C se a ñ a d e tam b ién u n in d ica d o r o bandera


p o r c a d a ev e n to q u e s e d esea sin cron izar. E sta s b a n d e ra s se p o n en a 1 cu an d o
s e a lca n z a el tiem p o e n q u e se d eb e ejecu tar el e v e n to co rresp o n d ien te. Estos
in d icad o res p u ed en ser bits d e un reg istro del m icro co n tro lad o r. E n el caso
m o stra d o en la figura 7 .1 2 se h an utilizad o p a ra este fin los bits 0 y 1 d e un
registro d el m icro co n tro lad o r, q u e se d en o m in ad o FLA G S.

P o r o tra p a rte , en el p ro g ra m a p rin cip al s e co n su lta co n tin u a m e n te el


e sta d o d e estas b an d eras; si se en cu en tra q u e a lg u n a d e e llas está e n 1 , ello
significa q u e el even to se d eb e ejecutar, y e s to s e p u e d e h a c e r llam an d o a una
su b rutina que im p lem en te la a cció n co rresp o n d ien te. Al ejecu tar u n evento,
su b an d era d eb e ser p u esta a 0. D esd e el p u n to d e v ista d e la p rog ram ación ,
e sta s b an d eras so n variab les globales p u es d eb en s e r accesibles ta n to d e sd e
el p ro g ra m a d e aten ció n a la in terru p ción del reloj c o m o d e sd e el p ro g ra m a
principal.
2 4 0 — Microcontroladores PIC

(a)
Figura 7.12 Sincronización d e eventos a l RTC. Los eventos denominados EVENTO1 y
E V E N T02 se ejecutan cada 3 s y 5 s respectivamente, (a) Diagrama d e bloques
del RTC, donde se destacan los contadores de segundos SEG3 y SEG5, que se
incrementan cada segundo hasta ¡legar a 3 s y 5 s respectivamente; además, están
los bits Oy 7 del registro FLAGS que operan como indicadores d e que han transcu­
rrido esos tiempos, (b) Diagrama de bloques del programa principal, donde se en­
cuesta continuamente el valor d e los indicadores de tiempo transcurrido}/, cuando
corresponde; se ejecuta el evento correspondiente. Los bits indicadores del tiempo
se ponen a 1 en el RTC y se encuestan y ponen a 0 en el programa principal.

Ejemplo 7.5

S incronización d e d o s eventos a una ba se d e tiem pos. S e tie n e un sistem a basado e n un PIC 16F873
con un cristal d e 4 MHz. S e desea im plem entar un R T C y una base d e tiem pos y re a liza r d o s eventos
sincronizada con ella:
Las interrupciones — 241

1. A lte rn a r el v a lo r del term inal RBO e n tre 0 y 1 cada 3 s.


2. A lte rn a r e l v a lo r del term inal RB1 entre 0 y 1 cada 5 s.
La solución de este problem a sigue el algoritm o de la figura 7.12. Siel cristal es d e 4 M H z, y el TimerO
se program a con un m ódulo d e conteo N = 2 5 6 y e l pre-divisor se sitúa co n u n fa cto r d e división P = 32.
la interrupción d e l TimerO ocu rre cada 8,192 m s (122,07 H z). Entonces, para a lca n za r un tiem po d e un
segu ndo hay q u e co n ta r 122 interrupciones (tics) del contador. Para e llo se puede u tiliza r u n registro
(T IC S ) com o contado r d e lo s tics. E n los registros S E G 3 y S E G 5 se im plem entan contadores d e 0 s a
3 s y 0 s a 5 s , respectivam ente. C om o bandera indicadora d e que han transcurrido los 3 s o lo s 5 s. se
han u tilizad o lo s b its 0 y 1 del registro FLAG S (FLAG S<0> FLA G S <1>). E stos bits son puestos a 1 e n el
RTC cada 3 s y 5 s, respectivam ente. E n el program a principal son consu ltados y puestos a 0 cuando se
efectúa el even to correspondiente.
El listado d e l program a e s el siguiente:

R ealización d e un reloj d e tiem po real usando la


interrupción d e l TimerO.
A esta ba se s e sincronizan lo s eve n to s EVEN1 y EVEN2,
q u e se realizan ca d a 3 y 5 se gu ndos respectivam ente.

lis t p=16f873
#¡nc!ude <p16f873.inc>

TICS equ 0x20 C ontador d e tics.


SEG3 equ 0x21 C o nta dor d e segundos hasta 3.
SEG 5 equ 0x22 C ontador d e segundos hasta 5.
FLAG S equ 0x23 B anderas d e eve n to s realizadas en bits 0 y 1.
TEM P_W equ 0x24
TE M P _S T equ 0x25

erg 0
goto inicio
org 4
goto rtc

in ic io :
clrf PO RTB
clrf INTC O N ; Inhabilitar to d a s la s interrupciones.
bsf STATUS. RPO ; S eleccionar banco 1.
m ovlw 0xC 4 ; P re -divisor d e 32 asignado
m ovw f O P TIO N _REG ; al TimerO.
clrf TRISB ; P uerto B en salida.
bcf STATUS, RPO ; S eleccionar banco 0.
m ovlw .0 ; M ódulo d e conteo d e 256
m ovwf TMRO ¡ e n el TimerO.
m ovlw .122 ; C antidad d e tics por segundo.
m ovwf TICS i
242 — Microcontroladores PIC

clrf SEG 3 C ontador S E G 3 e n 0.


clrf SEG 5 C ontador S E G 5 e n 0.
clrf FLAG S B anderas d e eve n to s en 0.
bsf INTCON, TOIE H a bilitar interrupción del TimerO.
bsf INTCON, GIE H a bilitar el sistem a d e interrupción.

prog:
btfsc FLAGS. 0 ¿FLAG S<0>=0?
cali e v e n to l No, entonce s h a ce r e v e n to l.
btfsc FLAGS, 1 ¿FLAG S<1>=0?
cali evento2 No, entonce s hacer evento2.
goto prog

e v e n to l:
bef FLA G S , 0 P oner FLA G S < 0> e n 0
btfsc PO RTB, 0 ¿P O R TB<0> = 0?
g oto eve n 1_ p o n 0 No, e s 1, entonce s pon er en 0.
even1_pon1:
bsf P O R TB, 0
return
even1_pon0: ; P oner e n 0
bef PO R TB. 0
return

evento2:
bef FLA G S , 1 P o n e r FLA G S <1> en 0
btfsc PO RTB. 1 ¿P O R TB<0> = 0?
goto even1_pon0 No, es 1, entonces pon er e n 0.
even2 p o n í: S í, e s O , entonce s pon er en 1.
bsf PO RTB, 1
return
even2_pon0: ; Poner e n 0.
bef PO R TB, 1
retum

m ovw f T E M P _W ; G uardar W e n TEM P_W .


sw a pf STATUS, W ; Intercam biar cu arteto s d e STATUS,
bef STATUS, RPO ; seleccionar e l banco 0
m ovw f TE M P _S T ; y guardar e l resultado e n TEM P_ST.

bef IN TC O N , TOIF ; B o rrar fla g d e l TimerO.
decfsz TIC S , f ; ¿ Llegam os al segundo?
goto finarte ; No, sa lir de la interrupción.
Las interrupciones — 243

rtc_seg:
m ovlw .122 S i. recargar el valor d e TICS
m ovwf TICS con la cantidad d e tics/s.
incf SEG3, f Increm entar el contador d e 3 s.
incf S E G 5, f Increm entar e l contador d e 5 s.

m ovf S E G 3, w
xorlw .3 ¿S E G 3 = 3?
btfsc STATUS, Z
goto rtc_seg1 No, continuar.
clrf SEG3 Si, transcurrieron 3 s: pon er S E G 3 e n 0,
bsf FLA G S , 0 pon er a 1 la bandera FLAG S<0>
y continuar.
rtc_ se g 1:
m ovf S E G 5, w
xorlw .5 ¿S E G 5 = 5?
btfsc STATUS, Z
goto fin_rtc No, continuar.
clrf SEG 5 Si. transcurrieron 5 s, p o n e r S E G 5 e n 0,
bsf FLA G S . 1 p o n e r a 1 la bandera FLA G S <1>
y continuar.
fin rtc:
sw apf TE M P ST, W R ecuperar T E M P S T e in tercam biar cuartetos
m ovw f STATUS pon er e n STATUS. E l banco seleccionado
e s aho ra e l original, donde e s tá TEMP_W .
sw apf TEM P_W , F R ecuperar T E M P _W y ponerlo en
sw apf TEM P_W , W W sin a lte ra r STATUS.
retfie R e tornar a l program a interrum pido.

end

7.3.3 Protección contra fallos de hardware

En gen eral es co n v en ien te p ro teg er al so ftw a re q u e debe e sp e ra r alguna


señal p rov en ien te del h a rd w a re extern o a l m icro co n tro lad o r, p u es si fallara
dich a señ al se p o d ría c a e r en u n la z o d e esp era infinito. E n estos ca so s resulta
con v en ien te lim itar el tiem p o d e e sp era a u n v a lo r razon ab le. Este v a lo r es
con o cid o e n in glés c o m o tim e-out.

P a ra ilu strar este prob lem a, su p ó n g a se q u e se d eb e aten d er a u n p eri­


férico y p a ra ello h ay q u e esp e ra r alg u n a señ al extern a al m icrocon trolad or.
Si to d o el h a rd w a re fu n cion ara siem p re co rre cta m e n te , un a lg o ritm o co m o
el m o s tra d o en la figura 7 .1 3 a sería suficiente para a te n d e r al periférico. Pero
si se p rod ujera u n fallo en el h a rd w a re extern o , el tiem p o d e e sp e ra co n este
alg oritm o p o d ría ser infinito, lo cu al sería inadm isible.
2 4 4 — Microcontroladores PIC

(c )

Figu ra 7.13 Protección contra Jallos d e hardware en la atención a periféricos. Si para atender a
un periférico hay que esperar una señal externa al microcontrolador, existe el peli­
gro de que la espera se haga infinita si se emplea el algoritmo representado en (a).
En (l)) se muestra un algoritmo modificado, que limita el tiempo de espera. Para
ello se usa una variable (AUX) que lleva la cuenta del tiempo de espera. Si AUX
alcanza el valor N (que corresponde a un tiempo de espera máximo, fijado conve­
nientemente), entonces se h a producido un fallo 0 1 el hardware y se em ite un men­
saje de error. En (c) se muestra una sección del R TC donde A U X es incrementada.
AUX sólo debe incrementarse si se ha entrado en el lazo de espera de atención al
periférico, lo cual se le indica al R TC mediante el bit de control FLAGS<i>. La
ubicación dentro del RTC de ¡a sección mostrada en (c) depende de si la variable
AUX se va a incrementar con cada tic de reloj o con otro intervalo de tiempo.

U na solución para lim itar el tiem p o d e espera e n u n a situación c o m o la


rep resen tad a en la figura 7.13a, es usar en el RTC una variable q u e lleve la cu e n ­
ta del tiem p o d e esp era transcurrid o. E n el p ro g ra m a d e atención al periférico,
el lazo se in terru m p e cu an d o esta variable alcan za u n v a lo r d eterm in ad o que
co rresp o n d e a u n tiem po d e esp era que se ju z g u e a d e cu a d o para la aplicación.
L as figuras 7.13b y 7.13c ilustran esta solución. E n el p ro g ra m a d e atención al
periférico (figura 7 .1 3 b), ju sto antes d e com en zar el lazo d e esp era, se activa
una variable d e control (el bit i del registro FLA G S) q u e indica al R T C que debe
co m e n zar el con teo del tiem p o d e esp era, que será llevado en la variable n o m ­
b ra d a A U X . E s decir, la variable A U X c o n la q u e s e cu en ta el tiem p o d e espera
se increm enta convenien tem ente en el R T C sólo si la variable d e control está a c ­
tivada. L o s bloques m ostrad os en la figura 7 .1 3 c deben colo carse en el RTC d e
tal m o d o q u e A U X se increm ente co n cad a tic del reloj, o a cad a segu n d o, etc.
segú n convenga. Si la variable A U X alcanza el v a lo r N , que co rresp o n d e a un
Las interrupciones — 245

tiem p o d e esp era prudencial, ello significa q u e alg o an d a m al e n el h ard w are,


p o r lo que se interru m p e el lazo d e espera y se puede em itir a lg ú n m ensaje de
e rro r indicando la ocurrencia del fallo.
La entrada y salida en serie — 247

8 La e n tra d a y s alid a en serie


E ste cap ítu lo estu d ia la en trad a y sa lid a e n serie e n los m icrocon trola-
dores. C om ien za c o n u n a exp o sició n d e los co n ce p to s básicos sob re la trans­
m isión d e in fo rm ación e n serie, s u s fo rm ato s, p a rá m e tro s e interfaces. A co n ­
tinuación se e s tu d ia n los p u erto s serie d isp onibles e n los m icrocon trolad ores
PIC d e la g am a m ed ia y se d an ejem plos d e c ó m o p ro g ram arlo s.

8.1 Conceptos básicos sobre entrad as y salidas en serie

8.1.1 introducción a la transm isión de datos en serie

L a transm isión en serie d e in form ación binaria co n siste en en v iar, uno


a u n o y d e fo rm a sucesiva, los b its d e u n a p alab ra, a tra v é s d e los m ism os
term inales. A sí, p o r ejem plo, la p alab ra d e 8 bits B 2h = 1011001 Üb p u e d e ser
rep resen tad a y even tu alm en te tran sm itid a m e d ia n te u n a señal d e d a to s que
rep resen te el 0 c o n u n nivel d e ten sión bajo ( V ,) y el 1 c o n u n nivel d e tensión
alto (VH). E sta señal d e d ato s se g e n e ra e n sin cron ism o c o n una señ al d e reloj
c u y o p erío d o d eterm in a la d u ració n d e u n bit d e la señ al d e d ato s, tal co m o
m u estra la figu ra 8 .1 .

T e ns i ó n

Vh
V. n _n\ _rT
1
_íT
1
_p
1
L
1
rT1 Jij"L
»-
r
T 2 T 3r 4r 5r 6r 7r 8r Tiempo
Tensi ón (a)
Vh
1 0 1 1

i 1------- 1--------1--------1--------1------- h
r 2r 3r 4r 5r 6r 7r 8r Tiempo
(b)

Figura 8.1 Transmisión serie de un byte. (a) Señal de reloj. (b) Señal de datos. Cada bit de
una palabra, representado por una tensión alta (V .) o baja (V(), es transmitido
sucesivamente, es decir, un bit a continuación del otro.

La señ al d e d a to s se caracteriza m ed ian te la v elo c id a d d e tran sm isión (vT),


que se define co m o el in v erso d e la d u ra ció n d e u n bit. Si c a d a bit d u ra x se­
gu n d os, la v elocid ad d e tran sm isión es

, T = i bit/s (8 . 1 )
2 4 8 — Microcontroladores PIC

R esulta ev id en te q u e en tre el tran sm iso r y el re ce p to r d e b e h a b e r algu­


na form a d e sin cron izació n p ara que la in form ación transm itid a p u e d a s e r in­
te rp re ta d a co rre cta m e n te p o r el recep tor. E n ap licacio n es e n las que los d a to s
se tran sm iten a co rtas d istancias, la señal d e reloj p u e d e a c o m p a ñ a r a la d e
d ato s, lo cu al facilita d ich a sincronización. C u a n d o la señ al d e reloj e s tra n s­
m itid a, s e d ice q u e la co m u n icació n e s sin crón ica.

C u a n d o las d istancias so n gran d es, p o r lo gen eral resu lta inadm isible
transm itir la señal d e reloj, p o r el c o s te ad icion al d e los m ed io s d e tran sm i­
sión. P ero au n q u e el reloj del tran sm iso r n o esté disponible en el re ce p to r, la
sin cron izació n d eb e p erm itir a este últim o co n o ce r la d u ració n d e c a d a bit y
el m om en to en q u e co m ien za c a d a p alab ra tran sm itid a. L a prim era d e estas
con d icion es p u e d e lo g rarse si tan to e l tran sm iso r c o m o el re ce p to r utilizan un
reloj d e la m ism a frecu en cia, lo que eq u ivale a h ab er a c o rd a d o d e an tem an o
la v elocid ad d e transm isión. L a seg u n d a con d ición , e s d ecir, el con o cim ien to
p o r p a rte del re ce p to r d el m o m en to e n que com ien za una n u e v a palabra,
p u e d e lo g ra rse d e d o s form as diferentes: " m a rc a n d o " d e a lg u n a form a el
inicio d e c a d a n u ev a palabra, o m a rca n d o el inicio d e c a d a bloque d e p ala­
bras. E s to d a lu g ar a d o s m od alid ad es d e la co m u n icació n digital con o cid as
c o m o com u n icación a sin crón ica y com u n icación sin crón ica. E n la co m u n icació n
asin crón ica, la sin cronización en tre tran sm iso r y recep to r se realiza palabra a
p alab ra, m ien tras que e n la co m u n ica ció n sin crón ica la sin cronización s e hace
p o r bloques d e palab ras. E n am b as m od alid ad es es n e ce sa rio in trod u cir cier­
ta can tid ad d e in form ación red u n d an te e n los d a to s tran sm itid os, p a ra lo grar
la sin cron izació n n ecesaria en tre el tran sm iso r y el recep tor.

El térm in o co m u n icació n sin crón ica se usa pu es p ara identificar, indis­


tin tam en te, u n a transm isión y / o recep ción d e d a to s e n serie e n la cu al se
transm ite la señ al d e reloj, y u n a co m u n icació n e n la que n o se tran sm ite el re­
loj y la sin cron izació n se h ace p o r bloques d e palab ras. E n cam b io, el térm in o
co m u n icació n asin crón ica s e ap lica solam en te a la transm isión y / o recepción
d e d a to s en serie sin tran sm isión d el reloj y d o n d e la sin cron izació n se realiza
p alabra a palabra.

La co o rd in ació n en tre el tran sm iso r y el re ce p to r se realiza sigu ien d o un


d e te rm in ad o p ro to c o lo d e com u n icació n , q u e es u n con ju n to d e reglas a c o rd a ­
d as en tre tran sm iso r y re ce p to r que aseg u ran la transferencia o rd e n a d a d e los
d atos. H a y d o s tipos diferentes d e p rotocolo s d e com u n icación :

• Protocolos orien tad os a bytes, e n los que tod as las p alab ras transm itidas
so n d e 8 bits. Ejem plo: el p rotocolo B1SYNC (IBM Binar)- Synchronous
C om m u nications Protocol).
La entrada y salida en serie — 249

• Protocolos orientados a bits, en los que los bloques d e d a to s transm itidos


no están necesariam en te form ad os p o r palabras d e 8 bits, e s decir, los
bloques d e datos so n conjuntos d e bits m ás q u e conjuntos d e bytes. Ejem ­
plos: los protocolos H D L C (H igh -leuel D ata L in k C on trol P rotocol), SD LC
(S yn chron ou s D a ta L in k C on trol Protocol), y C S M A /C D (C arrier Sen se, M ú l­
tiple A ccess w ith C ollision D etection ) m u y utilizado en redes locales d e or­
den ad ores que sigan la n o rm a IE E E 802.3: E th ern et N etW ork Standard.

8 .1 .2 Comunicación asincrónica

L a co m u n icació n asin crón ica s e c a ra cte riz a p o r in trodu cir un elem ento
d e sin cron izació n en c a d a d ato tran sm itid o , q u e co n siste en u n bit c o n valor
0 p a ra in d ica r el co m ien zo d e c a d a p alabra y o tro bit c o n v a lo r 1 para indicar
el final d e las palab ras. E l 0 inicial se d en om in a bit o p u lso d e inicio (start) o
e s p a d o ; el 1 final s e d en om in a bit o p u lso d e p a ra d a (stop ) o m arca. C u a n d o el
tran sm iso r h ace u n a p au sa p orq ue n o tiene p alab ras para tran sm itir, m an tie­
n e e n s u term in al d e salid a u n a secu en cia d e bits d e p a ra d a , e s decir, la salida
perm an ece en 1 m ien tras d u ra la p au sa. El form ato d e la señ al asin crón ica se
m u estra e n la figura 8 .2 , d o n d e p u ed e a p re cia rse que la sin cron izació n del
re ce p to r o cu rre e n c a d a d ato transm itido.

8.1.3 Comunicación sincrónica

La co m u n icació n sin crón ica sin tran sm isión del reloj se c a ra cte riz a p o r
la sin cron izació n d e d ato s p o r bloques d e palab ras. A diferencia d e la c o m u ­
n icación asin crón ica, las palabras n o son sin cron izad as in dividu alm ente, sino
q u e p a ra iniciar la tran sm isión d e u n bloque d e d a to s (u n con ju n to d e bytes
o d e bits), el tran sm iso r in trod u ce u n elem en to d e sincronización, q u e p u ed e
s e r u n a p alabra o u n p a tró n ú n ico d e bits, segú n el sistem a utilizad o. C u an d o
el tran sm iso r term in a d e e n v ia r u n bloque d e d a to s y n o h ay m ás d a to s para
e n v iar, se p ro d u ce u n a p au sa en la q u e el tran sm iso r d eb e m an ten er la línea
en u n e sta d o d eterm in ad o . E n gen eral, si h ay una p a u sa en tre bloques, se
tran sm ite co n tin u am en te u n bit e n 1. L as figura 8 .3 ilu stra el fo rm ato general
d e la señal en la co m u n icació n sincrónica.

1 1 1 1 1 1 1 1 1 I 1 i i i i i i i
o p n io /n o /iio /iio /iio /iio /iio /i 1 0/110/110/110/110/110/1| 0/110/1 1 1 • • • 1
I I i i i i —i— i— i— l 1 ° 1— I— I— 1— 1— 1— 1— 1—
Dalo d e 5 , 6, 7 u 8 bits

Pulso de
inicio (start)
Pulso de
parada (s/op)
tt Dato de 5 . 6 . 7 u 8 bits

Pulso de
inicio
, w Paiu®a
{no hay datos para
transmitir)

Figura 8.2 Formato de la señal en la transmisión asincrónica. El pulso de inicio siem pre tiene
la du raáón de un bit; en cambio el pulso de parada puede tener la duración de 2 , 1
Vi ó 2 bits.
2 5 0 — Microcontroladores PIC

111111 0
V

FLAG Datos FLAG D atos

Figu ra 8.3 Formato de la señal en la comunicación sincrónica. La sincronización se produce


al inicio de cada bloque de datos, mediante una secuencia única de bits (FLAC).
Como FLAG se utiliza mucho el valor 7Eh. Cada bloque puede estar form ado por
una secuencia de palabras (bytes) o simplemente ser un conjunto de bits, necesa­
riamente múltiplo d e 8.

El elem ento d e sin cron ización , m u ch as v e ce s d en o m in ad o FL A G , es


una secu en cia ú n ica d e bits, q u e n o se re p ite en tre los datos. E ste elem ento
d eb e c o m e n z a r co n un bit en 0 , para q u e el re ce p to r pueda d e te rm in a r q u e
h a fin alizad o la p au sa. M u ch as v eces se utiliza la p alab ra 7E h (01111110),
que con tien e u n a secu en cia d e seis bits en 1 . E n ton ces, p ara e v ita r q u e esta
secu encia s e repita en tre los datos, el tran sm iso r a ñ a d e p rev iam en te un bit 0
a to d a secu en cia d e cin co bits 1 , y el recep to r lo quita.

En la co m u n icació n asin crón ica, al re a liz a rse la sin cronización ca rá cte r


a c a rá c te r (con los bits sta rt y sto p ), s e p ierd e u n 2 0 % del tiem p o d e trans­
m isión p u es s e tran sm iten 1 0 bits p o r c a d a 8 bits d e d ato s. En cam b io, la
co m u n icació n sin crón ica ap ro v ech a el tiem p o d e form a m ás eficiente, pu es la
sin cronización se realiza p o r bloques d e d a to s y en cu a n to el tran sm isor y el
re ce p to r se han sin cro n izad o , s e tran sm iten o reciben só lo datos.

8 .1 .4 Conexión entre equipos: in terfaz RS-232C

El establecim ien to d e u n a co m u n icació n a d istan cia req u iere la partici­


pación d e v ario s eq u ip os q u e p u ed en a g ru p a rse en:

• Equipos T erm inales d e D atos (D1’E : D ata T erm in al E qu ipm en t). Son los
equipos que p rod u cen la señal d e datos o son los recep tores finales d e la
señal d e datos.

• Equipos d e C om unicación d e D atos (D CE: D a ta C om m u n ication E qu ip­


m ent). Son los equipos q u e ad ecú an la señal d e datos al m edio d e transm i­
sión utilizado o reciben esta señal del m edio d e transm isión ofreciéndola
d e form a ap rop iad a al recep tor final.

Un equ ipo term inal d e d ato s m u y co m ú n es el o rd e n a d o r person al, que


p u ed e, p o r ejem plo, g e n e ra r la señal d e d a to s co n el fo rm ato asin crón ico. Si
esta señ al h a d e transm itirse a o tro o rd e n a d o r a través d e u n ca n a l telefónico,
entonces h ay q u e utilizar alg ú n equ ipo interm ed io p a ra a d e cu a r la señ al d e
d a to s al can al telefónico en el lad o tran sm iso r y v icev ersa en el lado recep tor.
La entrada y salida en serie — 251

E ste equ ipo e s d en o m in ad o m ó d em (m o d u la to r - d etn o d u la to r ) y está clasifica­


do d en tro d e los eq u ip os d e co m u n icació n d e datos.

Según la anterior clasificación d e los equipos, el esquem a general d e u n


sistem a d e com u n icación d e datos es el ilustrado en la figura 8.4.

Canal de comunicación
D TE DCE
— (Linea telefónica, equipos de
la central telefónica, etc.)
(Ordenador) (Módem) (M ódem ) (Ordenador)

Figura 8.4 Diagrama d e bloques muy simplificado d e un sistema de comunicación. El equipo


terminal de datos (DTE) puede ser un ordenador personal y el equipo de comuni­
cación de datos (DCE) puede ser un módem. En el canal de comunicación puede
haber otros DCE.

La co n exió n en tre el D T E y el D C E fue n o rm alizad a en el se x to d ece­


nio del siglo X X p o r el en to n ces llam ad o C om ité C on su ltivo Intern acion al de
T elefonía y Telegrafía (CCT IT ), hoy in co rp o rad o a la U nión Internacional de
T elecom u n icacio n es (U IT ). U n a d e las n o rm as m ás utilizadas e s la relativa
a la interfaz d e co m u n icació n e n m o d o asin cró n ico p ara velocid ad es bajas
y m ed ias, co n o cid a c o m o la R eco m en d ació n V .2 4 del Libro Blanco d e 1969.
E sta interfaz e s co n o cid a p o p u larm en te c o m o R S-232C (R eco m m en d ed S tan ­
d a rd n ú m ero 2 3 2 rev isió n C ) pu es fue p rop u esta origin alm en te en 1962 p o r la
EIA (E lectron ic In d u stries A s s o á a tio n ) d e los E stad o s U n id o s, p ara la con exión
en tre eq u ip os d e d a to s a co rta d istan cia (o rig in alm en te m en os d e 5 0 pies o
1 6 ,4 m ) e n un e n to rn o ru id oso. L a revisión C e s d el añ o 1 9 6 9 ; s e h an hecho
o tra s revision es, c o m o la D en 1 9 8 6 , la E e n 1 991 y la F en 1997, p ero a m en u d o
se m antiene la d esignación R S-232C a p e sa r d e los cam b io s. E sta interfaz se
h a p o p u larizad o d e tal form a q u e h asta h ace p o co , p rácticam en te to d o s los
o rd e n a d o res person ales estab an eq u ip ad o s co n u n a interfaz " R S-232" y su
co n e cto r p ara la co m u n icació n co n u n m ó d em u o tro p eriférico serie. D esde
2 0 0 4 , los ú n icos p u erto s serie d e los o rd e n a d o re s person ales suelen s e r USB
(U n iv ersal S erial B u s).

L as señales d e la interfaz R S -232C utilizan ló gica negativa:

• Nivel lógico 0: en tre + 3 V y + 1 5 V c o n c a rg a , hasta + 25 V sin carga.

• N ivel lógico 1: en tre -3 V y -1 5 V c o n c a rg a , hasta -25 V sin carga.

Las señales m ás utilizadas d e la interfaz R S232C se m uestran en la tabla 8.1.


252 — Microcontroladores PIC

T a b la 8.1 Algunas señales de la interfaz RS-232C. Las señales de datos son RxD y TxD. Las
señales restantes se utilizan para controlar la comunicación DTE - DCE o DTE
-D T E.
C o n e c ta r N o m b r e d e la s e ñ a l S e n t id o d e la s e ñ a l

25D 9D D esde e l D C E H a c ia e l D C E

1 Protective Ground (GND)


2 3 Transmitted Dala (TxD) X

3 2 ReceivedDala (RxD) X

4 7 Requesl lo Send (RTS) X

5 8 CleartoSend (CTS) X

6 6 Data Sel Ready (DSR) X

I
1

§
7 5 "O
Rcvd Une Srgnal Detecl X
8 1
(Dala Carrier Detecl: DCD)
-
9
-
10

11 Select Standby X

-
12
-
13
-
14

15 Transm it Siqnal Elem ent Timinq X

.
16

17 Receiver Siqnal Element Timing X

18 Test X

-
19

20 4 Data Terminal Ready (DTR) X

-
21

22 9 Rinq Indicalor (Rl) X

23 Speed Select X

.
24

25 -

P a ra co n e cta r eq u ip os m ed ian te la in terfaz R S -232C , se utilizan los es­


q u em as d e la figura 8.5, au n q u e h ay esq u em as p ara co n ectar las señales de
co n tro l d e o tra s form as. L a co n exió n en tre un D TE q u e p u ed e ser u n o rd e­
n a d o r y u n D C E (p o r ejem plo, u n m ód em ), s e realiza segú n el esq u em a de
la figura 8.5a. P ara co n e cta r d o s eq u ip os term inales d e d a to s en tre sí, por
ejem plo u n o rd e n a d o r co n una im p resora o u n o rd e n a d o r c o n o tro o rd e n a ­
d o r, e s co m ú n e m p le a r la con exión d e la figura 8 .5 b. O b sérv ese q u e e sta s dos
co n exio n es son d iferentes, p u es alg u n o s cab les están cru z a d o s. L a con exión
d e la figu ra 8.5 b s e d en o m in a nu il m o d em , au n q u e su ele d a rse este n om b re a
cu alq u ier co n exió n diferente d e la m o stra d a en la figura 8.5a.

8.1 .5 El bus PC

El bus P C (In ter-In teg ra ted C ircu it) fu e d esarro llad o p o r P h ilip s para
in terco n ectar circu ito s in tegrad os d e u n a m ism a p la ca d e circu ito im preso,
La en trad a y salida en serie — 253

u tilizan d o m u y p o cas líneas p a ra la con exión (tres). E ste b u s se h a co n v erti­


d o , d e facto , en u n e stá n d a r p a ra la in tercon exión y tran sferen cia sincrónica
d e d a to s en serie en tre d iferentes d isp ositivos ce rca n o s: m icro co n tro lad o res,
m em o rias, co n v ertid o res A / D y D / A , etc. A p arte d e la línea d e m asa, en la
co n exió n en tre los d isp ositivos s e utilizan só lo d o s líneas: u n a p ara transfe­
rir los d ato s (SD A : S erial D a t a U n e) y o tra p ara la señal d e reloj (SCL: S erial
C lo ck L in e). Se p u ed en a lca n z a r velo cid ad es d e transferencia d e d a to s e le v a ­
d a s: h a sta 1 0 0 k b it/s en el m o d o e stá n d a r d e baja v elocid ad (lo w -sp eed m ode),
4 0 0 k b it/s en el m o d o rá p id o (fa st-m o d e) y 3 ,4 M b it/s en el m o d o d e alta ve­
lo cid ad (jh ig h -sp eed m ode, h s-m od e). L a figura 8 .6 ilu stra la co n e x ió n d e varios
d isp ositivos m ed ian te el b u s PC .

2
TxD — TxD TxD
3 m 3
R xD R xD R xD

20 20 DTR# DTR#
DTR# »
6 6
DSR# DSR# DSR#

4 t 4
RTS# RTS# RTS#
5 5
CTS# CTS# CTS#

CD#
8 8 ew nL/ff
# en#

SG SG SG

DTE DCE DTE DTE


(a) (*>)
F igu ra 8.5 Conexión entre equipos utilizando la interfaz RS-232C. (a) Conexión entre un
equipo terminal de datos (DTE) y un equipo d e comunicación d e datos (DCE), que
puede ser un módem, (b) Conexión "nuil modem" entre dos DTE, que pueden ser
dos ordenadores, un ordenador y un periférico, dos microcontroladores, etc.

SDA

SCL

Figu ra 8.6 Conexión de dispositivos mediante el bus PC. SDA es la línea de datos y SCL es
la de reloj. Los dispositivos pueden ser microcontroladores, memorias, visualiza-
dores, etc. Cada dispositivo se identifica p o r su dirección. En un momento dado,
uno d e los dispositivos es servidor y los derruís son clientes. La señal de reloj la
genera el servidor, que puede ser transmisor o receptor. La señal de datos la genera
principalmente el transmisor; que puede ser servidor o cliente. En la figura no se
ha representado la conexión a masa de cada dispositivo.
254 — Microcontroladores PIC

En una com u n icació n , u n o d e los d isp ositiv os se co m p o rta c o m o se rv i­


d o r (m aster) y los restantes c o m o clien tes (slav es). S erv id o res y clientes p u e­
d en s e r indistin tam ente tran sm iso res o recep tores. El d isp ositivo se rv id o r es
el que inicia u n a com u n icació n , gen era la señ al d e reloj y term in a la co m u n i­
cación . El bus P C es m u lti-serv id o r (m u lti-m aster), lo q u e significa q u e pueden
existir v ario s serv id o res co n ectad o s al bus (au n q u e e n u n m o m e n to d ad o ,
sólo uno a c tú a c o m o tal). C a d a d isp ositivo tiene una d ire cció n ú n ica, q u e lo
identifica d u ran te la com u n icació n . L a s d ireccion es p u ed en ser d e 7 ó 1 0 bits,
segú n se ex p lica m ás adelante.

L a figu ra 8 .7 ilu stra los circu itos q u e c o n e cta n los d isp ositivos al bus PC .
L o s circu itos d e salid a so n d el tipo d re n a d o r (o co lecto r) ab ierto, lo q u e unido
al h ech o d e q u e c a d a línea d el bus lleva u n a resistencia R d e p u ll-u p , p erm ite
realizar la fu n ción lógica A N D en tre las salid as co n e cta d a s al bus (A N D ca­
blead a). P a ra q u e una línea del bus sea p u e sta a 1, to d o s los tran sistores d e sa­
lida deben estar co rtad o s; en cam b io, cu a n d o u n tran sistor d e salid a se satu ra,
p one un 0 en la línea co rresp o n d ien te y c o n ello ese d isp ositivo "d o m in a " la
línea del bus. E s ta es u n a característica fu n d am en tal del bus PC . A d em ás,
los term in ales d e los d isp ositivos co n ecta d o s al bus son , a la vez, e n tra d a s y
salidas, d e m o d o q u e c a d a lín ea d el bus es bidireccional.

v0D

T T
r

SDA

SCL

□ f S : salida
E . entrada

- < b
R eloj^ Dajos Reloj Datos
Dispositivo con f lic n n c iliu n rv>n
interfaz l2C interfaz l2C

Figura 8 .7 Entradas y salidas d e los dispositivos conectados a l bus PC. Cuida línea del bus
es bidireccional. Las salidas d e drenador abierto y las resistencias R de pull-up
permiten la conexión AN D cableada en el bus. Cuando un transistor de salida
se satura, ¡m íe un 0 en la línea correspondiente, dominando la línea fren te a los
demás dispositivos.

P o r la línea SD A del bus se transfieren d a to s y d ireccion es d e los d isp o­


sitivos. T o d a esta in form ación está o rg an iz a d a e n p alab ras d e 8 bits. C a d a vez
La entrada y salida en serie — 255

q u e s e co m p leta la transm isión d e u n byte p o r la línea SD A , el re ce p to r d eb e


resp on d er c o n un b it d e reco n ocim ien to (A ). Este bit d e reco n ocim ien to es un
0 p u esto p o r el re ce p to r en la m ism a línea S D A d u ra n te el sigu iente p u lso de
reloj e n S C L (figura 8 .8 ). P a ra p erm itir q u e el re ce p to r coloq u e el bit d e reco ­
nocim ien to, el tran sm iso r libera la línea S D A al finalizar la transm isión del
últim o bit del d a to o d irección , y e sp era el b it A = 0 e n S D A antes d e co n tin u a r
la transm isión d e un n u ev o byte.

B it (0 ) d© reco n o cim ie n to
8 b its de d a to s p ue stos p o r e l tra n s m is o r p u e s to p o r e l re c e p to r

Vr
i
SDA B it 7 B it 6
DC
SCL

Figura 8.8 La transferencia d e datos y direcciones p o r el bus FC se organiza en palabras de


8 bits. Cada palabra enviada por el transmisor es sucedida por un bit d e reconoci­
miento (A = 0) puesto p o r el receptor en la línea SDA durante el noveno pulso de
reloj en la línea SCL. Cada bit en SDA debe ser estable mientras el pulso de reloj
está en 1 y sólo debe cambiar mientras el reloj está en 0.

S e g ú n la figu ra 8 .8 , c a d a bit e n S D A s e transfiere en sin cron ism o co n la


señal d e reloj S C L , d e m o d o que m ien tras la señal d e reloj está en 1, el bit en
SD A d eb e p erm an e cer estable (en 0 o en 1 ) y los cam b io s d e e sta d o en la línea
SDA se p rod u cen cu a n d o la señal d e reloj en S C L está en 0.

L a co m u n icació n en tre d o s o m ás d isp ositiv os d el bus IK2 es iniciada


v te rm in ad a siem p re p o r el d isp ositivo que funciona c o m o serv id o r. La c o ­
m u n icació n com ien za cu a n d o el serv id o r gen era la con d ición d e inicio (S:
start) y term in a cu a n d o el serv id o r g e n e ra la con d ición d e p a ra d a (P : stop).
A m bas con d icio n es s e identifican p o r una transición en la señal d e d a to s SD A
m ien tras la señal d e reloj p erm an ece en 1 , tal c o m o ilustra la figu ra 8.9. La
con d ición d e inicio se identifica p o r una transición d e 1 a 0 en la línea SD A
m ientras S C L está en 1. L a con d ición d e p arad a s e identifica, en cam b io, p o r
la transición d e 0 a 1 d e la línea SD A m ien tras S C L está en 1.

U na v ez q u e el se rv id o r g e n e ra la co n d ició n d e inicio, co lo ca en la línea


SD A la d irección del clien te co n el que s e quiere co m u n icar. A p a rtir d e ese
m om en to, el serv id o r in d ica q u e va a transm itir o recibir d a to s co n el bit R /
VV# q u e tran sm ite al final d e la dirección. El bit R / W # en 0 indica q u e el ser­
v id o r e s un tran sm iso r, m ientras q u e u n 1 en R /W # indica q u e el se rv id o r es
2 5 6 — Microcontroladores PIC

u n re cep to r. H ech a esta in d icación , co m ie n z a la tran sferen cia d e los b ytes de


d ato s, siem p re su ced id o s p o r el bit d e reco n o cim ien to em itid o p o r el recep ­
tor. L a figura 8 .1 0 ilustra el form ato d e la co m u n icació n a tra v é s del b u s r c en
tres situ acion es posibles: (a) u n serv id o r tran sm iso r en v ía d a to s a u n cliente
recep tor; (b) u n serv id o r re ce p to r recibe d a to s d e u n clien te tran sm iso r; y (c)
u n serv id o r q u e in icialm en te e s u n tran sm iso r y lu e g o e s recep tor. P ara pasar
d e tran sm isor a recep tor, el serv id o r rep ite la con d ición d e inicio (S) y envía
la dirección del cliente, p o n ien d o el bit R / W # e n el v a lo r co rresp o n d ien te. In­
d ep en d ien tem en te d e q u e el se rv id o r sea tran sm iso r o re ce p to r, la dirección
siem p re la p o n e el serv id o r y , ad em ás, éste inicia y term in a la com u n icación .

Información transferida

SDA
r \ c z n n

SCL

C ond ición de Cond ición d e


inicio (sfarf) parada ( s to p )

Figu ra 8.9 Condiciones de inicio (S) y parada (P), con las que el servidor inicia y termina una
comunicación.

7 bits R /W # 8 bits
-I
s i D íre c c ró n del d ie n te A | D a to A • • • D a to A P
(a) 10 1

s 1 | A • • • A
(b) D ire c c ió n d e l d ie n te A Dato D a to P

A . . .
(c) S J D ire c c ió n d e l d ie n te
° l
A D a to

S D ire c c ió n d e l d ie n te 1 D a to
0
¡ ] In fo rm a ció n p u e s ta p o r e l se rv id o r

^ [] In fo rm a ció n p u e sta p o r el cliente

Figura 8.10 Formato de la comunicación en tres posibles situaciones, (a) El servidor transmi­
sor escribe varios datos en el cliente receptor, (b) El servidor receptor solicita va­
rios datos a l cliente transmisor, (c) El servidor, inicialmente es transmisor (R/W#
= 0) y luego se convierte en servidor receptor, para lo cual refñte la condición de
inicio y envía la dirección del cliente, poniendo el bit R/W # en 1.

F.n la v ersió n inicial del b u s P C , la s d ireccion es eran d e 7 bits (bits A b, ...,


A ), co n lo q u e s e p odían co n e cta r al b u s, en principio, h a sta 128 dispositivos.
La entrada y salida en serie — 257

En v ersio n es posteriores, el n ú m e ro d e bits d e d irección s e am p lió a 1 0 (bits


Ag, A 0), p a r a p e rm itir un m a y o r n ú m e ro d e d isp ositiv os co n e cta d o s al bus.
En estas version es se a d m ite n tan to las d ireccion es d e 7 bits c o m o las d e 1 0
bits. L a figura 8.11 ilustra el fo rm ato gen eral d e d ich as direcciones.

En gen eral, las d ireccio n es d e 7 bits se d an en un b y te ú n ico, e x ce p ­


to cu a n d o el serv id o r realice u n a "lla m a d a g e n e ra l", q u e e s una llam ad a d e
aten ción a tod os los d isp ositiv os del bus seg u id a d e a lg u n a in form ación q u e
especifica el objetivo d e la llam ad a. E n la llam ad a gen eral s e utilizan d o s bytes:
el se rv id o r em ite u n p rim er b y te 0 , seg u id o d e u n se g u n d o byte q u e p recisa el
objetivo d e la llam ad a. L a s accio n es q u e s e p u ed en re a liz a r se clasifican según
el v a lo r d el bit m en os significativo del seg u n d o b y te (bit B).

D ire c c ió n del d ie n te

|s Afl A , A* Aa A2 A i A>| W m A • • • P

--------------------- v---------------------
Un byte
D ire c c ió n d e l cliente

f i 1
{b) | S | 1 1 1 1 0 A» Aa | R /W # |A | A / A* A » A. Aj Ai Ai Ao A

L J 1

P rim e r byte Segundo byte

(c) s jo ; 0 0 0 0 0 0 0 A X X X X X X X B A .

J
P rim e r byte S e g u n d o ó yfe

I 1 In fo rm a c ió n p u e sta p o r el se rv id o r

; ~~] In fo rm a ció n p u e s ta p o r ei cliente

Figura 8.11 Im s direcciones d e los dispositivos conectados al bus PC pueden ser de: (a) 7 bits o

(b) 10 bits, (c) Formato d e una "llamada general''.

S eg ú n la figura 8 .1 1 , n o tod as las d ireccio n es están d isp onibles p a ra su


libre u so p o r los d isp ositivos co n e cta d o s al b u s P C : las d ireccio n es d e 7 bits
78h a 7B h (en binario: 1 1 1 1 0 X X ) n o se p u ed en u s a r p a ra id entificar a n ingú n
disp ositivo p u es esos n ú m ero s están d estin ad o s a fo rm a r el p rim er b y te d e
u n a d irección d e 10 bits. A d em ás, h ay u n n ú m e ro im p o rta n te d e d ireccion es
re se rv a d as p a ra fu tu ro s d esarrollos o co n o tro s p rop ósito s. Estos y o tro s d e­
talles d el bus P C están e n las esp ecificacion es del bus p u b licad as p o r P h ilip s
(en w w w .n x p .co m ).
258 — Microcontroladores PIC

8.2 El p u erto serie USART en los m icrocontroladores PIC

L o s m icrcK on trolad ores P IC d e la g a m a m ed ia p oseen u n p u e rto serie


p ara co m u n icacio n es d en om in ad o U SA R T (U n iv ersal S y n ch ro n o u s A sy n ch ro -
n o u s R ec e iv er T ran sm itter) o SCI (S erial C om m u n ica tio n In terfa cé), q u e p u ed e
ser co n fig u rad o p a ra estab lecer u n a co m u n icació n asin crón ica bidireccional
sim u ltán ea (fu ll dú p lex ) o sin crón ica (con transm isión d e la señal d e reloj) bi­
direccion al n o sim u ltán ea ( h a lf dú plex).

8.2.1 D escripción g e n e ra l

El p u e rto serie U SA R T utiliza los d o s term in ales T X /C K y R X /D T del


m icro co n tro lad o r, q u e g en eralm en te co m p a rte n fu nciones co n d o s term ina­
les del p u e rto paralelo C . En m o d o asin crón ico , T X / C K e s el term inal del
tran sm iso r p o r d o n d e sale la señ al d e d a to s y R X /D T es el term inal d el re ce p ­
tor p o r d o n d e en tra la señal d e datos.

E n m o d o sin crón ico , T X /C K es el term inal d e salida d e reloj si el d isp o­


sitivo h a sido co n fig u rad o c o m o serv id o r, o el term in al d e en trad a d e reloj si
el d isp ositivo h a sid o co n fig u rad o c o m o cliente. El term in al R X /D T e s bidi­
reccio n al y p o r él en tra o sale la señ al d e d ato s. L a figura 8 .1 2 ilustra e l u s o de
estos term in ales en la co n exió n en tre d o s m icro co n tro la d o re s PIC.

(s e rv id o r) (cliente)

(a) (b)
Figu ra 8.12 Terminales TX/CK y R X /D T utilizados p o r el puerto serie USART. (a) Conexión
entre dos PIC en modo asincrónico. TX y RX son los terminales de datos que
se transmiten y reciben, respectivamente. No se transmite la señal de reloj, (b)
Conexión en modo sincrónico. CK es el terminal d e reloj, que es salida en el dispo­
sitivo servidor y entrada en el cliente. D T es el terminal d e datos, que es salida en
el transmisor y entrada en el receptor.

El p u e rto serie U S A R T utiliza los reg istro s d e fu nciones especiales


T XR EG y R X R E G p a ra alm acen ar el d a to q u e s e va a tran sm itir o el d a to re­
cibido, resp ectiv am en te. T am b ién utiliza los reg istro s T X S T A y R X ST A p ara
co n tro lar el p u e rto y el re g istro SPBRG p a ra estab lecer la v e lo cid a d d e trans­
m isión. A d e m á s se usan alg u n o s bits d e los registros P IE y PIR p ara con tro lar
y señ alar las solicitu d es d e in terru p ción q u e p u e d e g e n e ra r el p u erto.
La en trad a y salida en serie — 259

8.2.2 Funcionam iento en m o d o asincrónico

El funcionam iento del p u e rto serie USART en m o d o asin cró n ico s e c a ­


racteriza p orq ue p erm ite la co m u n icació n bidireccional sim u ltán ea d e datos
(fiill dú p lex). E sto significa q u e d u ra n te la co m u n icació n en tre d o s d isp ositivos
U S A R T e n m o d o asin cró n ico (figu ra 8 .1 2a), c a d a d isp o sitiv o p u e d e tran sm itir
y recibir d ato s a la vez.

L a señal q u e s e transm ite o recib e está con stitu id a p o r 8 bits p reced id os


p o r e l bit d e inicio o s ta r t c o n v alo r 0 y su ced id os p o r el bit d e p a ra d a o stop
co n v a lo r 1. Tam bién es posible p ro g ra m a r el p u erto p a ra q u e transm ita o
reciba u n n o v e n o bit d e d ato s, tal c o m o m u estra la figura 8.13.

0 Do D, d2 d 3 d4 D5 D6 d 7 1

(a)

9 no.
0 Do D, d 2 D3 D< d 5 D fi d 7 1
bit

(b)

Figura 8.13 Formato de la señal asincrónica en el puerto serie de los PIC de la gam a media, (a)
Señal d e datos. (l>) Señal de datos con la adición de un noveno bit.

El p u erto serie tiene reg istro s d e funciones esp eciales p ara m an ip u lar
los d a to s q u e s e v a a tran sm itir o recibir: T X R E G y R C R EG . T X R E G e s el re­
g istro d o n d e d eb e co lo ca rse el d ato q u e será tran sm itid o p o r el term in al T X .
R C R EG es el registro d o n d e q u ed a d ep o sita d o el d a to recib id o p o r el term i­
nal RX. E n estos registros n o está in clu id o el n o v en o bit.

L a figura 8 .1 4 es el esq u em a d el tran sm iso r del p u erto serie U S A R T En


m o d o asin cró n ico y en tran sm isión , una v e z q u e s e vacía el reg istro T XR EG
(p orq u e el d a to ha p a sa d o al reg istro d e d esp lazam ien to TSR y s e está trans­
m itien do), el bit T X IF del reg istro P1R s e p o n e a 1, in d ican d o c o n ello q u e el
p u erto está listo p ara tran sm itir u n n u ev o d a to (q ue d eb e p o n erse en T XR EG ).
Si la in terru p ción p o r tran sm isión está habilitada, es d ecir, T X IE = 1 en el
reg istro P IE , en ton ces s e gen era u n a in terru p ción c o n la puesta a 1 d el bit
T X IF. El bit T X IF pasa a 0 a u to m á tica m e n te cu a n d o s e ca rg a u n n u e v o dato
en TXR EG .

La figura 8.15 es el esquem a del recep to r del p u erto serie USA RT. En
m od o asincrónico y en recep ción, el d ato recibido p o r el term inal RX es m ues-
treado a una frecuencia 6 4 veces m a y o r q u e la del reloj y pasa al reg istro de
2 6 0 — Microcontroladores PIC

desp lazam ien to RSR, d esd e d o n d e es co lo cad o en el registro R C R EG , e n el que


p u ed e ser leído p o r el p ro g ram a. E n realidad h ay d o s registros p ara alm acen ar
sen d o s datos, y q u e están organ izad o s co n una estru ctu ra FIFO (first in fir s t
o u t), d e m o d o q u e m ientras se está recibiendo u n d a to en el registro RSR puede
h ab er d o s datos m ás en esp era d e ser leídos p o r el p ro g ra m a e n R C R EG . C u an ­
do h ay alg ú n d ato en R C R EG , el bit R C IF d e registro PIR se p o n e a 1, indicando
c o n ello q u e se h a recibido u n dato. Si el bit R C IE del registro PIE está en 1, se
gen era una solicitud d e interrupción. El bit R C IF pasa a 0 cu an d o el registro
R C R EG n o contiene n ingú n dato.

B u s d e Datos

Figura 8.14 Transmisor del puerto serie USART.

El co n tro l d e la tran sm isión y la recep ción se estab lece m ed ian te los


registros T X S T A y R C STA , q u e s e m u estra n en la figu ra 8 .1 6 . C o n el reg istro
T XSTA se p u ed e: seleccio n ar el m o d o d e tran sm isión en tre sin crón ico (bit
S Y N C = 1) o asin crón ico (bit S Y N C = 0 ); habilitar la tran sm isión (bit T X E N =
1 ); habilitar la transm isión del n o v e n o bit (bit T X 9 = 1) y co lo ca r su v a lo r en
el bit T X 9D ; y seleccio n ar la v elocid ad d e transm isión en m o d o asincrónico
c o n el bit BRG H (high b a u d rate select bit) c o m o alta (B R G H = 1) o baja (BRG H
= 0). El esta d o del reg istro d e d esp lazam ien to TSR del tran sm iso r se p u ed e
co n o ce r m ed ian te el b it T R M T (tran sm it sh ift reg ister statu s bit); u n 1 en este bit
indica q u e T SR está vacío. El b it C S R C (clock so u rc e s elec t bit) s e utiliza para
p ro g ra m a r el p u erto serie U S A R T c o m o se rv id o r (C SRC = 1) o clien te (C SRC
= 0 ) e n m o d o sin crón ico , p ero n o tiene n in g ú n sign ificad o en el m o d o asin­
crónico.
La entrada y salida e n s e rie — 261

G e n e ra d o r d e reloj

T e rm in a l
RX/DT

Figu ra 8.15 Receptor del puerto sen e USART.

TXSTA
7 6 5 4 3 2 1 0

CSRC TX 9 TXEN SYNC BRGH TR M T TX 9D


• 1

R C S TA
7 6 5 4 3 2 1 0

SPEN RX9 SREN CREN - FERR OERR RX9D

Figura 8.16 Registros TXSTA y RCTA, para controlar la transmisión y recepción d e datos
por el puerto serie USART, respectivamente.

C o n el reg istro R C ST A se p u ed e: habilitar el p u e rto serie co n el bit S P E N


(serial p o r t a m b le bit) p u esto a 1 , lo c u a l im p lica q u e los term inales R X y TX
q u ed an co n fig u rad o s c o m o term inales del p u erto serie; habilitar la recep ción
d e d a to s c o n el bit C R E N (con tin u ou s receiv e e n a b le bit) p u esto a V, y habilitar
la recep ción d el n o v en o bit co n R X 9 = 1 y o b ten er su v a lo r en el bit R X 9D . El
bit FE R R (fra m in g e r r o r bit) d a cu e n ta d e q u e s e h a recibido u n d a to n o válido
(el bit d e sto p n o e s 0) si to m a el v a lo r 1. El bit O E R R (au erru n error bit) pasa
a 1 si s e h a dejado d e leer u n d a to recibido. El bit S R E N (sin g le receiv e en able
bit) habilita la recep ción d e u n d a to ú n ico en m o d o sincrónico, p ero n o tiene
ningú n sign ificad o e n el m o d o asincrónico.
262 — Microcontroladores PIC

8 .2 .3 Funcionam iento en m odo sincrónico

El fu n cion am ien to d el p u erto serie U SA R T en m o d o sin crón ico s e c a ­


racteriza p or: (a) la co m u n ica ció n bidireccion al n o sim u ltán ea d e d a to s ( h a lf
dúplex)', (b) la transm isión (o recep ció n ) sim ultán ea d e las señales d e d a to s y
de reloj; y (c) la co m u n icació n en tre d o s d isp ositivos segú n u n e sq u em a ser­
v id o r - cliente.

En el m o d o sincrónico, la transm isión d e datos es bidireccional p ero no


sim ultánea ( h a lf dú plex). C a d a dispositivo p u e d e transm itir y recibir datos, pero
las d o s op eraciones n o pu ed en ser sim ultáneas: m ientras el p u erto serie está
transm itiendo n o p u ed e recibir, y viceversa.

El tran sm isor y el re ce p to r funcionan se g ú n los e sq u e m a s d e las figuras


8 .1 4 y 8 .1 5 , resp ectivam en te. En este m o d o , la señal d e reloj está disponible
e n un term inal del m icrocon trolad or (T X /C K ) ju n to a la señal d e d a to s (dis­
ponible en T X /D T ). L a señal d e d ato s está fo rm a d a p o r la secu encia d e bits
p ro ce d e n tes d e las p alab ras q u e s e v an a transm itir. L a figu ra 8 .1 7 m u estra las
señales típicas d e reloj y d e d a to s m an ejad o s p o r el p u e rto serie U S A R T e n la
tran sm isión sincrónica. P u ed e o b serv arse q u e e n e s te c a so n o h ay los bits d e
inicio y p ara d a característico s d e la señal d e d a to s e n el m o d o asincrónico.

El p u erto serie U SA R T e n m od o sincrónico p u ed e funcionar c o m o servi­


d o r o c o m o cliente. El servid or e s el dispositivo q u e gen era la señal d e reloj tan­
to si es tran sm isor c o m o si e s recep tor. El servid or inicia y term ina la co m u n i­
cación c o n el cliente p onien do o qu itan do la señal d e reloj. El term inal T X /C K
sirve c o m o en trad a o salida d e la señal d e reloj: en el servid or e s salida y e n el
cliente e s entrad a. La figura 8.12fr ilustra la conexión en tre d o s m icrocontrola­
d o re s u san d o los term inales del p u erto serie U SA R T e n m o d o sincrónico. U na
característica im portan te es que u n dispositivo clien te p u ed e recibir o transm i­
tir un d ato incluso cu a n d o está en m o d o d e bajo con su m o (sleep). E n este caso,
el PIC despierta y se p u ed e gen erar una solicitud d e interrupción si el bit d e
habilitación global d e las in terrupciones así lo p erm ite (GTE = 3).

Terminal
TX/CK

TR x S t ' 0» Di Da D; D. D, D, I D, * D, 0, 0, O » I 0 4 I D , I D , I D , , b#

Palabra 1 ------------------------------- ► !-* ---------------------------------- Palabra 2

F igu ra 8.17 Señales de reloj y datos en la transmisión sincrónica por el puerto serie USART.
La transmisión del noveno bit es opcional.
La entrada y salida en serie — 263

El m o d o sin crón ico del p u erto serie U S A R T q u e d a p ro g ra m a d o ponien­


do a 1 el bit S Y N C del reg istro T X S T A . Al p o n er a 1 el bit S P E N del registro
RCSTA s e habilitan los term in ales del p u erto serie U S A R T : C K p ara el reloj y
DT p a ra la señ al d e d ato s. En la tran sm isión , u n a v e z q u e s e v a c ía el registro
TXR EG p o rq u e el d ato h a p asad o al reg istro d e d esp lazam ien to TSR y s e está
tran sm itien d o, el bit T X IF del reg istro PIR se p one a 1, in d ican d o c o n ello
q u e el p u e rto está listo p ara tran sm itir u n n u e v o d ato. Si la in terru p ción por
transm isión está h ab ilitada, es d ecir, T X IE = 1 en el reg istro P IE , s e gen era
en ton ces u n a in terru p ción co n la p u e sta a 1 del bit T X IF . El bit T X IF p a s a a 0
au to m áticam en te cu a n d o s e c a rg a un n u evo d ato en T X R E G . E n la recep ción,
cu an d o h a y alg ú n d ato disponible en R C R EG , el bit R C IF d e reg istro PIR se
pone a 1. Si el bit R C IE del reg istro P IE está en 1, se g e n e ra una solicitud de
in terru pción . El bit R C IF p asa a 0 cu a n d o el reg istro R C R EG es v a c ia d o (leí­
do) p o r el p ro g ram a.

8.2 .4 Velocidad d e la comunicación.

El reloj q u e d eterm in a la velocidad d e transm isión p o r el p u e rto serie


se d e riv a d el o scilad o r prin cipal d el m icro co n tro lad o r. Su v a lo r se ajusta m e ­
diante el registro SPB R G y el bit BR G H del registro TXSTA . L a v elocid ad de
transm isión en el m o d o asin crón ico es
^BKGH

!' t = 64 x (SPBRG + l ) X -/osc (8 -2)


d o n d e v T e s la velocidad d e transm isión ( b i t / s e s la frecuencia en hertz
del o scilad o r prin cipal del m icro co n tro lad o r, BR G H es 0 ó 1 y SPBRG es un
n ú m ero en tre 0 y 255. L a tab la 8 .2 d a alg u n o s v a lo re s ca lcu la d o s m edian te
(8.2). E l e rro r se h a calcu lad o m edian te

Error(% ) = ”T- x 1Q0 (g 3 )


V l , deseada

Si el p u e rto serie U S A R T h a sid o p ro g ra m a d o en m o d o sin crón ico , la


velocidad d e transm isión se d eterm in a m ediante

v fose_______
1,1 4x(S P B R G + l) (8 -4 )

E n este c a so n o in tervien e el bit B R G H del reg istro TXSTA.


2 6 4 — Microcontroladores PIC

T a b la 8.2 Valores que deben colocarse en el bit BRGH y en el registro SPBRG para ob­
tener, en el modo asincrónico, las velocidades de comunicación deseadas, según
la frecuencia del oscilador principal del microcontrolador, y error cometido en la
velocidad en cada caso.

SPBRG
W fs) f osrM H z BRGH Error/%
(decimal)
1200 4 0 51 1201,92 0,16
1200 16 0 207 1201,92 0,16
2400 4 0 25 2403,85 0,16
2400 16 0 103 2403,85 0,16
9600 16 0 25 9615,38 0,16
19200 4 1 12 19230,77 J L 16
19200 16 1 51 19230,77 0,16
1200 5.0688 0 65 1200,00 0
2400 5,0688 0 32 2400,00 0
9600 5,0688 1 32 9600,00 0

E je m p lo 8.1

P rogram ación b á sic a del puerto serie U SA R T d e un P IC 1 6 F 8 7 3 en m odo asincrónico. La frecu en cia del
oscilador principal del P IC e s d e 4 MHz.

La program ación tien e tres p artes: L a prim era e s iniciar e l puerto serie en e l m odo asincrónico, esta b le ­
ciend o una velocidad d e transmisión determ inada; la seg u nd a e s elab o rar una subrutina p a ra transmitir
un dato; y la tercera parte e s elaborar una subrutina de recep ción d e un dato. S e u sa rá la té cn ica de
entrada y salida por consulta.

A continuación s e m uestra el listado d e instrucciones d e la s subrutinas para la operación del puerto


serie:

IN IC_SCI: Rutina d e iniciación del puerto serie U SA R T en m odo asincrónico,

1 9 2 0 0 bit/s, habilitando transm isión y recep ción por esp era.

¡N IC .SC I:
bsf STA TU S, RPO ; S e le c c io n a r el b a n c o 1.
movlw OCh ; Velocidad d e transm isión 1 9 2 0 0 bit/s.
movwf SPBR G
movlw OCFh ; P rogram ar lo s term inales RC7/RX co m o entrada
movwf T R ISC ; y RC67TX co m o salida.
movlw 24h ; M odo asincrónico, 8 bits d e datos,
movwf TXSTA ; transm isión habilitada, BRG H = 1.
bef P IE 1, TXIE ; Interrupción por transm isión inhabilitada.
bef P IE 1 .R C IE ; Interrupción por recep ción inhabilitada.
bef STA TU S, RPO ; S e le ccio n a r b a n co 0.
movlw 90h ; R ece p ció n habilitada, 8 bits d e datos.
movwf R C STA ; U SA R T listo para transmitir y recibir datos.
return ; R etom ar.
La entrada y salida e n serie — 265

TXDATO: R utina d e transm isión d e un d ato d e 8 bits p o r espera.


E l d ato q u e se va a tran sm itir d e b e e sta r e n e l registro W.

TXDATO:
btfss P IR 1, T X IF ;¿TX IF=1?
g o to TXDATO ;No, esperar,
m ovw f TX R E G ;Sí, pon er e l d a to e n TXREG .
retu m .Retom ar.

RCDATO: R utina d e recepción d e u n d a to d e 8 bits p o r espera.


El d a to recibido es devuelto e n e l re g istro W.

RCDATO:
btfss P IR 1 .R C IF ¿R C IF=1?
goto RCDATO N o. esperar.
m ovf R C R EG , W Sí, leer e l dato.
retu m R etom ar con el d a to e n W.

8.3 El p u erto serie SSP en los m icrocontroladores PIC


L o s m icro co n tro lad o res PIC d e la g a m a m e d ia p oseen u n p u erto serie
p ara co m u n icacio n es sin crón icas a co rta distancia c o n tran sm isión d e la señal
d e reloj, del c u a l existen d o s v ersio n es d en om in ad as SSP (S y n ch ron ou s Serial
P o rt) y M SSP (M a s te r S yn ch ron ou s S erial P ort). C u alq u iera d e e sto s puertos
puede s e r co n fig u rad o p ara trab ajar c o m o in terfaz sin crón ica serie SPI (Serial
P erip h era l In terfa ce) o c o m o in terfaz P C (In ter-In teg ra ted C ircu it). E n el puerto
SSP, la in terfaz r c p u ed e o p e ra r sólo c o m o cliente, m ien tras q u e e n el p u erto
M SSP se p u ed e p ro g ra m a r c o m o se rv id o r o c o m o cliente. T a n to la in terfaz SPI
(im p lem en tad a in icialm en te en los m icro co n tro la d o re s 6 8 H C x x d e M otorola)
c o m o la P C , fu eron d esarro llad as p ara la co m u n icació n en tre d isp ositivos
ce rca n o s (m icro co n tro lad o res, m em o rias extern as, visu alizad ores, co n v erti­
dores A / D , etc.) m ed ian te un n ú m ero p eq u eñ o d e líneas d e interconexión.
A co n tin u ació n s e estud ia el fu n cio n am ien to d e estas d o s m o d a lid a d e s del
p u erto serie sin crón ico e n los m icro co n tro la d o re s PIC.

8.3.1 In te rfa z SPI


E l p u e rto serie SSP (o M SSP) p ro g ra m a d o c o m o interfaz S P I realiza la
tran sm isión y recep ción sincrónica y sim u ltán ea d e d a to s d e 8 bits. L a inter­
faz SPI p u ed e fu n cio n ar c o m o serv id o r (m aster) o clien te (slave). El serv id o r
e s e l disp ositivo q u e gen era la señ al de reloj, sea tran sm iso r o recep tor. Para
e s ta co m u n ica ció n se utilizan fu n d am en talm en te tres term in ales del m icro­
co n tro la d o r, que gen eralm en te co m p arten funciones co n term in ales del pu er­
to paralelo C . Estos term in ales son: SD O y SDI p ara la salida y e n tra d a de
2 6 6 — Microcontroladores PIC

d a to s resp ectiv am en te y SC K para el reloj. El term inal d e reloj SCK e s salida


e n el se rv id o r y en tra d a e n el cliente. U n cu a rto term in al, d en o m in ad o SS#
(slav e select) se p u ed e u tilizar op cio n alm en te para q u e un disp ositivo serv id o r
seleccion e u n o d e v a rio s d isp ositiv os p ro g ra m a d o s c o m o clientes. L a figura
8 .1 8 ilustra el u so d e e sto s term in ales en la co n exió n en tre d o s m icro co n tro ­
lad ores PIC.

SDO ____ SDO

SDI ^ ► SDI

SCK ---- *■ SCK

SS#

PIC#1 PIC # 2

(S e r v id o r) (C lie n te )

F igu ra 8.18 Conexión entre dos microcontroladores PIC utilizando la interfaz SPI.

L a in terfaz SPI utiliza el reg istro d e fu nciones especiales SSPB U F para


a lm a ce n a r tran sito riam en te el d ato q u e se v a a tran sm itir o el d ato recibido.
T am b ién utiliza los reg istro s SS PC O N y SSPSTA T p ara co n tro lar la interfaz.
A d e m á s se u san , resp ectivam en te, los bits SSPIE y SSPIF d e los reg istro s PIE
y PIR p ara el control y señalización d e las solicitu d es d e in terru p ción q u e
p u e d e g e n e ra r la interfaz.

L a figu ra 8 .1 9 m u e stra el u so d e los bits d e los reg istro s S S P C O N y


SSPSTA T p o r p arte d e la in terfaz SPI. E s to s re g istro s ta m b ié n so n u tilizad os
p a ra c o n tro la r la in terfaz I 2C , p ero en to n ce s a lg u n o s bits c a m b ia n su sign i­
ficad o re sp e cto a l q u e tie n e n e n la in terfaz SPI.

SSPC O N
7 6 5 4 3 2 1 0
W COL SSPOV SSPEN CKP SSPM 3 SSPM 2 SS P M 1 SSPM O

SSPST A T
7 6 5 4 3 2 1 0
SM P CKE 0 0 0 0 0 BF

Figura 8.19 Registros SSPCON y SSPSTAT para controlar ¡a transmisión y recepción de


datos con la interfaz SPI.

El bit S S PE N (S S P en a b le bit) asign a los term in ales SC K , SD O , SDI y


SS# al p u e rto serie sin crón ico , au n q u e d eb en s e r definidos c o m o e n tra d a s o
salid as m ed ian te la p u esta a 1 o a 0 d e los bits co rresp o n d ien tes del reg istro
l a entrada y salida en serie — 267

TRIS. L o s bits SSPM 3:SSPM 0 del reg istro SS PC O N p ro g ra m a n el disp ositivo


c o m o serv id o r o cliente, habilitan o n o el u s o d el term inal SS# c o m o control
d el cliente, y seleccio n an la frecu en cia d e reloj d e la in terfaz SPl. E n el servi­
d o r, la señal d e reloj e n SC K p u ed e s e r u n a fracción ( 1 / 4 , 1 / 1 6 ó 1 / 6 4 ) d e la
frecu en cia del o scilad o r prin cipal d el m icro co n tro la d o r o p u e d e ob ten erse a
partir del T im cr2. El bit W C O L (w rite collisio n d etec t bit) del reg istro SSPC O N
in form a si se h a p ro d u cid o una colisión en el reg istro SSPB U F, e s d ecir, si se
h a in ten tad o escrib ir un d a to en SSPB U F cu a n d o a ú n estaba el d a to an terio r
e n el registro. El b it SSPO V (receive o v erflo w in d ica d o r bit) indica si se h a dejado
d e leer u n d a to recib id o y d ep o sitad o e n SSPB U F. El bit C K P (d o c k p olarity
select bit) p ro g ram a el esta d o (0 ó 1 ) d e la señ al d e reloj cu a n d o n o h ay datos
q u e transm itir.

Figura 8.20 Diagrama de bloques de la interfaz SPL

La in terfaz S P l o p e ra d e la sigu iente form a. E n el serv id o r, la transfe­


ren cia se inicia c o n la escritu ra d e u n d ato en el reg istro SSPB U F. C u an d o
su ce d e esto, el d a to p asa al reg istro d e d esp lazam ien to SSPSR (figu ra 8.20) y
268 — Microcontroladores PIC

c o m ie n z a a s e r tran sm itid o d e in m ed iato p o r el term in al SD O ; sim u ltán ea­


m en te co m ien za la recep ción d e u n d ato p o r SD1. Al co m p le ta rse la recep ción
del d ato, el bit BF (b u ffe r fu ll sta tu s bit) d el reg istro SSPSTA T es p u esto a 1 y el
d a to recib id o q u ed a d isp on ib le e n el re g istro SSPB U F. A d e m á s, el bit SSP1F
del reg istro PIR s e p o n e a 1, co n lo q u e s e p u ed e g e n e ra r una solicitud d e
in terru p ción si la in terru p ción del p u e rto SSP está hab ilitad a (el bit SSPIE del
registro P IE está en 1). U n a v ez q u e el d a to es e x tra íd o del reg istro SS P B U F, se
p u ed e escrib ir un n u ev o d a to en ese registro, co n lo q u e con tin ú a el p ro ceso
d e tran sm isión y recep ción d e datos.

r
E l dato a transmitir se
escribe e n S S P B U F

(a )
ji_n_rLn_jT_ri_n_R
SCK >
(0)
U U T T L T L rL rT rL rT
(c)
rm_rLR_^i_rLn
i_nji_T~m_n_rLrLJ
SDO D, 1 D6 1 Ds D* d3 d 7 i d, Dc

D, | De | Ds D< d3 D; | D, Do

SDI
t t t t t t i r
| D, | Da D. D« D3 D? D, Do

t t t t t t t i
E l dato recibido está
disponible e n S S P B U F

Figura 8.21 Señales d e ¡a interfaz SPl del dispositivo programado com o servidor. La trans­
misión se inicia atan do el dato que se va a transmitir se escribe en el registro
SSPBUF. Se pueden program ar cuatro variantes d e la señal de reloj SCK: en (a)
y (c) el estado inactivo de SCK es 0, mientras que en (b) y (d) es 1. También se
programa el flan co de la señal de reloj al que está sincronizada la señal de datos, lo
cual se h a indicado con una flecha en la señal SCK. En (a) y (d) la señal de datos es
estable con el flan co de bajada d e SCK. mientras que en (b) y (c) lo es con el flanco
de subida. La señal de datos recibida en SD I se puede m aestrear en instantes de
tiempo situados (a) a mitad d e cada bit transmitido o (b) al fin al de cada bit trans­
mitido. A l muestrear el último bit de la señal de entrada, el dato recibido queda
disponible en el registro SSPBUF.

L a figura 8 .2 1 m u e stra las señales d e la in terfaz SPI e n m o d o serv id o r. Si


no h ay d ato s p ara traasm itir, la señ al d e reloj en SC K p e rm a n e ce en el estad o
La entrada y salida en serie — 269

in activ o (iddle state). El e s ta d o in activo p u ed e s e r 0 ó 1 segú n s e p ro g ra m e co n


el bit C K P del reg istro SSPC O N . L o s bits del d a to se p u e d e n tra n sm itir sin­
cró n icam en te co n los flancos d e su b id a o bajada d e la señal d e reloj, lo cual se
p ro g ra m a m ed ian te el bit C K E (S P l c lo ck e d g e select bit) del reg istro SSPSTAT.
El m u e stre o d e la señ al d e d ato s e n SDI s e p u e d e h a ce r a m ita d o al final de
ca d a bit tran sm itid o, lo cu al s e p ro g ra m a c o n el bit SM P (S P l d a ta in p u t sa m p le
p h a se bit) d el reg istro SSPSTAT.

E n el d isp ositivo q u e h a sid o p ro g ra m a d o c o m o cliente, la tran sm isión


y la recep ción d e u n d a to s e inician cu a n d o se recibe la señ al d e reloj. El d ato
q u e se v a a tran sm itir d eb e e s ta r d ep o sitad o en SSPB U F y al finalizar s u trans­
m isión, el d ato recib id o d u ra n te ese m ism o tiem p o q u ed a disponible en el
m ism o registro SSPB U F, d o n d e p u ed e s e r leído. La recep ción del d a to s e se­
ñaliza c o n la p u esta a 1 del bit BF d el reg istro SSPSTAT. Tam bién el bit SSP1F
del reg istro PIR s e p o n e a 1, co n lo q u e s e p u e d e g e n e ra r u n a solicitud d e
in terru p ción si la in terru p ción del p u e rto SSP está habilitada (el bit SSPIE del
reg istro P IE está en 1).

Si el d isp ositivo clien te está en e l m o d o d e bajo co n su m o y le llega la


señ al d e reloj, en ton ces recib e u n d a to y transm ite el d ato que e s té en SSPBUF.
E n este ca so , el bit SSP1F del reg istro P IR p asa a 1 y si la in terru p ción está
hab ilitad a (el bit SSPIE del reg istro P IE está e n 1 ), el P IC la atien d e y sale del
m o d o d e bajo co n su m o .

E je m p lo 8.2

Transm isión y recepción d e d a to s por el pu e rto S P l d e u n P IC 16F873. L a frecuencia d e l oscilador prin­


cipal del P IC es d e 4 MHz.
S e presenta la program ación d e l puerto SPl con lo s parám etros siguientes: tratam iento d e l puerto por
espera o consulta, m odo servidor, frecuencia d e reloj igual a Fosc/16, el estado in activo d e la señal de
reloj S C K es 1, y el d ato se transm ite co n el flanco d e bajada de S C K (caso (d) en la fig u ra 8.21). Se
presenta tam bién el listado d e una rutina para recibir y tran sm itir u n dato. S e supone que el dato que se
v a a tran sm itir debe se r depositado previam ente en el registro D ATO TX y el d ato recibido es devuelto en
el registro DATORX.
A continuación se d a el listado d e la s subrutinas.

; Program ación del puerto sene SP l. Fose de 4 MHz.

list p=16f873
#indude <p16f873.inc>
i
DATOTX equ 20h ; Dato que se v a a transmitir.
DATORX equ 21 h ; Dato recibido.
2 7 0 — Microcontroladores PIC

IN IC .S P I: Rutina d e iniciación del puerto serie SPI,

IN IC .S P :
bsf STATUS, RPO ; Se selecciona el banco 1.
movtw 40h ; SM P=0, CKE=1, BF=0.
m ovwf SSPSTAT
movtw 0D7h ; Program ar term inales RC5/SDO y R C 3/SC K com o salidas
m ovwf TRISC ; y RC4/SDI com o entrada.
bcf STATUS. RPO ; Se selecciona el banco 0.
movlw 31 h ; SSPEN=1, CKP=1, SPI master, reloj Fosc/16 (250 kbit/s).
m ovwf SSPCON
bsf STATUS, RPO : S e selecciona el banco 1.
bcf PIE1, SSPIE ; La interrupción del SPI es inhabilitada.
; El SPI está listo para transm itir y recibir datos.
bcf STATUS, RPO ; Se selecciona el banco 0
movf DATOTX, W ; y se transmite el
m ovwf SSPBUF ; el prim er dato.
retum

; TRANSFER: Rutina de transmisión y recepción d e un dato de 8 bits por espera.


; Entradas: el d ato a transm itir debe estar e n DATOTX.
; Saludas: el d ato recibido es devuelto e n DATORX.

TRANSFER:
bsf STATUS, RPO ; S e selecciona el banco 1

btfss SSPSTAT, BF ; ¿D ato recibido?


goto ESPERA ; N o -e s p e ra r.
bcf STATUS, RPO ; Si - seleccionar banco 0 y
movf SSPBUF, W ; se lee el dato recibido, se pone en W y
m ovwf DATORX ; se deposita finalm ente en DATORX.
m ovf DATOTX, W ; El d ato que se va a transm itir se coloca en
movwf SSPBUF ; SSPBUF, con lo que se inicia la transmisión
; (y recepción) de u n nuevo dato.
retum
end

8 .3 .2 In te rfa z PC

El p u e rto SSP p u ed e fu n cio n ar c o m o in terfaz I2C en m o d o cliente. Para


realizar una in terfaz P C q u e funcione c o m o serv id o r, se req u iere u n puerto
M SSP e n el m icro co n tro lad o r. E n u n p u e rto M SSP, la in terfaz P C se p u e d e
con fig u rar c o m o serv id o r o c o m o cliente. L a interfaz d isp o n e d e los term in a­
La entrada y salida e n serie — 271

les S D A y S C L p a ra d a to s y reloj, resp ectivam en te, q u e n o rm alm en te c o m ­


p arten funciones c o n term in ales d el p u e rto C.

L a figura 8 .2 2 e s el d iag ram a d e bloques d e la interfaz PC . U n elem ento


cla v e en la in terfaz es el reg istro d e d esp lazam ien to SSPSR. C a d a b y te trans­
m itid o o recibido, sea u n d a to o u n a d irección o p a rte d e ella (en las direccio­
n es d e 10 bits), tran sita p o r e s e registro. L a co m u n icació n en tre este registro
y el p ro g ra m a d o r se realiza a trav és del reg istro d e funciones especiales SSP-
BUF. C u alq u ier d a to o dirección q u e se v a a tran sm itir al b u s d eb e s e r co lo ca ­
d o en SSPB U F. C u alq u ier d ato o dirección q u e se reciba p o r el b u s p u e d e ser
leíd o e n SSPBU F. El reg istro SSPSR e s invisible p ara el p ro g ra m a d o r. C a d a
v ez q u e se transm ite o recibe un b y te, el bit SSP1F d el reg istro PIR es puesto
a 1, lo q u e p u ed e g e n e ra r una solicitud d e in terru p ción si el bit SSPIE d el re ­
g istro PIF. está en 1.

L a interfaz cu en ta tam bién co n el reg istro SS PA D D , q u e realiza funcio­


n es d iferentes en los m o d o s serv id o r y cliente. Si el d isp ositivo es cliente, el
reg istro d e funciones especiales SS PA D D alm acen a la d irección del disposi­
tivo. A n te u n a llam ad a del s e n a d o r, q u e d eb e p o n e r la d irección del cliente
e n el b u s, se co m p a ra la d irección en v iad a p o r el se rv id o r co n la d irección del
cliente, la cu al está en SSPA D D . Si a m b a s d ireccion es so n iguales, el cliente
realiza alg u n a acción p a ra resp o n d er a la llam ad a d el se rv id o r y establecer
la com u n icació n . L a acción p u ed e ser sim p lem en te g e n e ra r u n a solicitud d e
in terru p ción (el bit SSPIF del reg istro PIR se p o n e a 1).
E n u n disp ositivo q u e o p era c o m o serv id o r, el reg istro SS PA D D sirve
p ara fijar la frecu en cia d e la señ al d e reloj q u e gen era el serv id o r. E n este caso,
la d irección , q u e el se rv id o r d eb e p o n er en el b u s p a ra lla m a r a u n cliente,
llega al reg istro d e d esp lazam ien to SSPSR a tra v é s del reg istro d e funciones
especiales SSPBU F.
F.1 d isp ositivo se rv id o r cu e n ta tam bién c o n circu ito s p ara gen erar las
con d icion es d e inicio (S) y p ara d a (P ). E n un d isp ositivo cliente, só lo h ay cir­
cu ito s p a ra d e te cta r estas con d icion es. El co n tro l y ob servació n d e e sto s cir­
cu itos se realiza m ed ian te los reg istro s d e fu nciones esp eciales SSPSTA T y
SSPC O N 2.
En un d isp ositivo serv id o r, la frecu en cia d e la señ al d e reloj en la línea
SC L se ob tien e m ed ian te la expresión :

f _ ______ f o se______ (8.5)


JSCL 4 x (SSPAD D + 1)
2 7 2 — Microcontroladores PIC

d o n d e f ^ L e s la frecuencia (en h ertz) del reloj en la línea S C L del bus, e s la


frecuencia (en h ertz) del oscilad or principal del m icrocon trolad or, y SSPA D D
e s el n ú m ero form ad o p o r los 7 bits m en os significativos del registro SSPADD
(SSPA D D <6:0>).

B u s d e D atos

R e g is tro S S P B U F l

T erm in a l --------- _ ■---------------------- -J - —


SD A r 1
4 ____ - J SS P S R
1 1
1 R e g istro d e d e sp la za m ie n to 1

T erm in a l h >
SCL R eloj

>
C o m p a ra d o r de D ire cción
D e te c to r d e 1 d ire c c io n e s co rre c ta
in icio y p a ra d a |

A lo s b its S y
P d e l re g is tro
SSPSTAT
í
R e g is tro S S P A D D

G e n e ra d o r de
(s ó lo e n M S S P )
in icio y p a ra d a

T
D e lo s b its SE N .
R S E N y P E N d el
re g is tro S S P C 0 N 2
G e n e ra d o r de
(s ó lo en M S S P )
reloj

Figu ra 8.22 Diagrama d e bloques de la interfaz SSP en el modo PC. Los datos y direcciones
se transfieren hacia o desde el bus mediante el registro SSPfíUF. El registro de
desplazamiento SSPSR es invisible para el programador. El registro SSPADD
almacena la dirección del dispositivo cliente o la velocidad de la comunicación si el
dispositivo es servidor. Los generadores de las condiciones de inicio y parada, así
como el generador de reloj sólo existen en los dispositivos que son servidores.

La figura 8 .2 3 m u e stra los bits d e los registros S S P C O N , SSPSTA T y


S S P C O N 2, seg ú n so n u tilizad os p o r la in terfaz I2C. El reg istro SS P C O N 2 sólo
existe en los d isp ositiv os que p u ed en s e r serv id o res, e s d ecir, q u e tienen un
p u erto d el tipo M SSP.
La en trad a y salida en serie — 273

L o s bits SSPM 3:SSPM 0 d el reg istro SS PC O N p ro g ra m a n el disp ositivo


c o m o interfaz I2C serv id o r o cliente, c o n d irección d e 7 ó 1 0 bits. El bitS S P E N
(S S P en a b le bit) asigna los term in ales S D A y S C L al interfaz P C o al p u erto
p aralelo C . El bit W C O L (w rite collision d etec t bit) d el re g istro SS PC O N infor­
m a s i se h a p ro d u cid o una colisión e n el reg istro SS P B U F, es decir, si se ha
in tentado escribir un d ato en SSPB U F cu a n d o el d ato a n te rio r aú n estaba en
el registro. El bit SSPO V (receiv e o v erflo w in d ica d or bit) indica si se ha dejado de
leer u n d ato recib id o y d ep o sitad o en SSPB U F. El bit C K P (clock p o la r ity select
bit) se utiliza p a ra el co n tro l del reloj e n el cliente.
E n el reg istro SSPSTA T, los bits S (sta rt bit) y P (stop bit) indican la detec­
ción d e las cond icion es d e inicio y p a ra d a , resp ectiv am en te. R / W # (readfivri-
te bit in jbrm ation ) es el bit q u e a co m p a ñ a a la d irección , e indica si el clien te es
recep to r o tran sm isor. U A (u pdate ad d ress) s e utiliza sólo c o n direccion es d e 1 0
bits, in d ican d o q u e s e d eb e actu alizar la d ire cció n d el clien te e n el reg istro SS-
PA D D . El bit B F (b u ffe r fu ll sta tu s bit) indica si el registro S S PB U FF está lleno
o v acío . D /A # (d ata/ad d ress bit) indica si e l últim o byte tran sm itid o o recibido
fue un d a to o u n a dirección. El bit S M P (sam p le bit) p e rm ite estab lecer el co n ­
trol d e la v elocid ad d e tran sición (slew rate) d e las señales en e l bus en e l m od o
d e alta v elocid ad (400 kH z).

SSPCON
7 6 5 4 3 2 1 0
W COL | SSPOV SSPEN CKP SSPM 3 1 SSPM 2 SS P M 1 SSPM O

SSPSTAT
7 6 5 4 3 2 1 0
SM P CKE D/A# p s R/W # UA BF

SSPCON2
7 6 5 4 3 2 1 0
GCEN ACK STA T ACKDT ACKEN RCEN PEN RSEN SEN

Figu ra 8.23 Registros SSPCON, SSPSTAT y SSPCON2 utilizados en el control de la trans-


misión y recepción de datos p o r la interfaz FC. El registro SSPCON2 sólo existe
en los dispositivos que tienen un puerto del tipo MSSP.

El reg istro SS P C O N 2 se u sa p a ra co n tro la r la interfaz P C con fig u rad a


c o m o serv id o r. L o s bits SE N (sta rt con dition en a b le bit), RSEN (rep eated start
con d ition en able bit) y PSEN (stop con diction en a b le bit) g en eran las co n d icio ­
n es d e inicio, inicio rep etid o y p a ra d a . R C E N (receiv e en a b le bit) habilita la
2 7 4 — Microcontroladores PIC

recep ción del serv id o r. A C K E N (ackn m oled g e seq u en ce en a b le bit) habilita la


gen eració n d e u n b it d e reco n ocim ien to (A ); el v a lo r d e este bit d eb e e s ta r en
A C K D T (ackm n vledge d a ta bit). A C K S T A T (a ck n o w led g e sta tu s bit) in form a qué
bit d e recon ocim ien to s e h a recibido. G C E N (g en eral cali en able bit) habilita la
solicitud d e in terru p ción p o r una llam ad a general.
Las entradas y salidas analógicas. Adquisición y distribución de señales — 275

9 Las e n tra d a s y salidas an aló g icas. A dquisición y distrib ució n


d e señales
En los cap ítu lo s an teriores se h a e x p lica d o c ó m o los m icro co n tro lad o res
pueden ad q u irir, p ro ce sa r y gen erar señales digitales, p o r ejem plo p ara c o ­
m un icarse c o n o tro s circu itos y subsistem as. En este cap ítu lo se estu d ia có m o
s e pu ed en ad q u irir y g e n e ra r señales an aló g icas e m p le a n d o m ód u los o d is­
positivos in tegrad o s en el p ro p io m icro co n tro lad o r, o en circu itos periféricos,
y se dan los criterios básicos p ara d ise ñ a r el sistem a.

L as señales an aló g icas tienen la in fo rm ación en su am p litu d o d u ra ­


ción, d e m o d o q u e p a ra p ro cesarlas co n circu ito s digitales, p rim e ro h ay que
digitalizarlas y esto exig e a d a p ta r s u s características a las d e los digitalizado-
res. A d e m ás, d a d o q u e los term in ales d isp u esto s p ara las e n tra d a s y salid as
an aló g icas pu ed en ten er co n exio n es a p u n to s relativam en te alejad os del m i­
cro co n tro lad o r, h a y q u e p rev er la instalación d e p roteccio n es que eviten los
d a ñ o s q u e p rod u cirían las ten siones o corrien tes excesivas.

9.1 Funciones y estructura de un sistem a de adquisición y distribución de


señales
L as señales an aló g icas p erten ecen a sistem as d e m ed id a y con tro l, y
tam bién están p resentes en las com u n icacio n es co n in terven ción h u m an a,
p o r ejem plo m ed ian te m icrófon os, altav o ces o cám aras.

9.1.1 Fundones básicas en los sistemas d e m edida y control

L as señales q u e s e d esea m ed ir so n n o rm alm en te m agn itu d es físicas o


quím icas n o eléctricas. L a s m ag n itu d es q u e se d esea co n tro lar (co m o la tem ­
peratu ra d e una sala o la posición d e un cab ezal d e im p reso ra), o las señales
em p le a d as p a ra co m u n ica r un resu ltad o d e m ed id a al u su ario , tam p o co son
m agn itu d es eléctricas. P o r ello, las fu nciones básicas en u n sistem a d e m e­
dida son : d e te cta r la m agn itu d (con un sen sor), p ro cesar la in fo rm ación , y
com u n icarla (al usu ario u o tra m áquina). C u a n d o el sistem a es electrón ico,
a e sta s tres fu nciones h ay que añad irles el su m in istro d e u n a alim entación
eléctrica, y el co n tro l u o rgan ización d e las funciones, se g ú n se indica en la
figura 9 .1 . El p ro cesad o r e s tá b a sa d o en u n d isp ositivo digital, tal co m o un
m icro co n tro lad o r, q u e p u ed e realizar tam bién las funciones d e control. Si el
objetivo del sistem a e s co n tro lar una m ag n itu d , tras la m e d id a y el p ro ce sa ­
m iento h ay u n a acción con u n actu ad o r, q u e co n v ierte u n a señal eléctrica en
2 7 6 — M icrocontroladores PIC

la acción física d esea d a; p o r ejem plo, p o n e r en m a rc h a u n calefacto r o a ctiv a r


un m otor.

Figura 9.1 Funciones básicas en un sistema d e medida. Las fluctuaciones de la alimentación


y las señales de control pueden repercutir (indebidamente) en las señales de salida
d e cada bloque.

L as señales d e salid a d e los sen so res suelen ser an aló g icas y d e baja a m ­
plitud. Sólo alg u n o s sen sores digitales, c o m o los cod ificad ores d e posición,
ofrecen u n a salid a digital, q u e si tiene los n iveles d e ten sión a d e c u a d o s se
p u e d e co n ectar d irectam en te a u n p u e rto d e en trad a del m icrocon trolad or.
P ara d igitalizar las señales an aló g icas se utiliza u n co n v ertid o r an alóg ico-d ig ital
(C A D ). P a ra a d a p ta r la señ al d e salid a d el sen sor a l ra n g o d e am p litu d es d e
en trad a del C A D , s e em p lea u n a co n d icio n a d or d e señ al y , en a lg u n o s caso s, un
p ro ce sa d o r an aló g ico (p o r ejem plo, p ara o b ten er el v a lo r eficaz d e la señal
a n te s d e digitalizarla, o para d esm o d u lar su am p litu d ). L a salid a del C A D es
p rocesad a p a ra ob ten er la in form ación d ese a d a , p o r ejem p lo el v a lo r m edio
d e u n a señ al d u ra n te u n cierto tiem p o, o bien s e co m b in a la in fo rm ació n de
v a rio s sen so res p ara to m ar una decisión , p o r ejem p lo sob re la p resencia o
au sen cia d e u n in tru so en u n recinto. L a ca d e n a d e bloques prin cipales de
la figura 9.1 se p u ed e am p lia r segú n m u e stra la figura 9.2. G lob alm en te hay,
pues, d o s tipos d e funciones: las d e co n v e rsió n (d e una m a g n itu d física en
u n a señ al eléctrica en el sen so r; d e u n a ten sión an alógica e n u n có d ig o digi­
ta l, en el C A D ), y la s d e ad ap tació n d e la señal d e salid a d e u n a eta p a a las
ca racterísticas d e e n tra d a d e la etap a siguiente, c o m o su ced e e n los a co n d i­
cio n a d o res d e señal.

L a co n v ersió n an alógico -d igital ( A /D ) es e n esen cia la co m p a ra ció n d e


una ten sión d escon o cid a V co n u n a ten sión d e referencia, Vr(f (figu ra 9.3). E n
la d en o m in ad a co n v ersió n A / D d irecta, la co m p a ra ció n se realiza en tre V y
fraccion es d e V if d e v a lo r L x V ^ / 2 N, d o n d e L y N so n n ú m e ro s en tero s. E sta
co m p a ra ció n se p u ed e h acer d e form a sim u ltán ea c o n to d o s los v a lo re s entre
Las entradas y salidas analógicas. Adquisición y distribución de señales — 277

O V y Vref (con v ertid o res fla s h o p aralelos), o d e fo rm a su cesiv a c o n v a lo re s frac­


cion arios eleg id o s en u n ord en q u e agilice el p ro ce so d e decisión (con v ertid o­
res d e ap ro x im a cion es su cesivas). Los C A D in te g ra d o s en m icro co n tro lad o res
su elen s e r d e ap ro xim acio n es su cesivas. L a característica d e tran sferen cia de
la co n v ersió n s e m u e stra en la figura 9 .3 (p a ra N = 3).

Figura 9 2 La etapafrontal en la adquisición de señales: un acondicionador de señal adapta la se­


ñal de salida del sensor al rango de entrada del CAD. Un procesador analógico puede
extraer un parámetro de ¡a señal antes de digitalizada, por ejemplo, su valor eficaz, o
puede desmodular su amplitud.

Codlgo
binario 4

V..

<1 h i,

20 3Q 40 50 60 70 80 V,
ÍV—+V. ■K2 V*»

F ig u ra 9.3 El proceso d e conversión analógica-digital (directa) y su característica d e transfe­


rencia.

En la co n v ersió n A / D in d irecta, u n circu ito gen era, p o r ejem plo, u n


in terv alo d e tiem p o d e d u ra ció n p rop orcion al a la tensión d e entTada, y dicha
d u ració n s e c o m p a ra c o n la d e u n in terv alo d e tiem p o g e n e ra d o a p a rtir d e la
ten sión d e referencia y el m ism o circu ito. A m bos in tervalos s e m id en co n el
m ism o co n ta d o r digital. O tro s co n v e rtid o re s obtien en u n a frecu en cia p ro p o r­
cion al a la ten sión d e en trad a, y lu ego m iden la frecuencia c o n u n co n tad o r
digital. A q u ello s sen so res q u e o frecen u n a salid a c u y a in fo rm ación está en
278 — Microcontroladores PIC

la frecu en cia, p eriodo, in tervalo d e tiem p o, a n ch o d e p u lso, ciclo d e trabajo,


fase, e tc. s e d en o m in an casid ig ita les (o cu a sid ig i tales), p o rq u e , a u n q u e su sali­
d a n o e s digital, basta u n c o n ta d o r p a ra o b ten er u n có d ig o q u e rep resen te la
inform ación d e en trad a; e s d ecir, el p rop io sen sor realiza parte d e la co n v e r­
sión A / D in d irecta. D ad o q u e el resu ltad o d e c o n ta r es u n n ú m e ro en tero, la
característica d e transferencia d e la co n v ersió n in d irecta e s tam bién la d e la
figura 9.3, q u e se p u e d e d escrib ir m ed ian te

D , = e n t ^ 2 'vj + 1 (9.1)

d o n d e D x es el n ú m e ro d e o rd en del có d ig o d e salida (en tre 1 y 2 |V), en t (a) d e ­


sig n a el m ay o r e n te ro m en o r o igual que a, V_ < V ^, y N e s el n ú m e ro d e bits
del co n v ertid o r. E n el có d ig o binario natural, sin sign o, el p rim er có d ig o es
0 0 0 ...0 y el có d ig o su p e rio r e s 1 1 1 ...1 . Si el v a lo r d e Vntf s e p u e d e seleccion ar,
c o m o s u c e d e en alg u n o s m icro co n tro lad o res, el ra n g o d e ten siones d e en tra ­
da v a ria rá segú n la selección.

La fo rm a escalo n ad a d e la característica d e tran sferen cia d e u n C A D


significa q u e to d as las ten siones d e en tra d a q u e c a e n d e n tro d e u n intervalo
[V ü, Vu + Q] son asig n ad as al m ism o có d ig o ; Vu es cu alq u iera d e las tensiones
um bral a p artir d e las cu ales el có d ig o asig n ad o es o tro , y Q es el d en om in ad o
in tén salo d e cu an tificación ,

Q =|f (9 -2 )

En un C A D , Q = 1 I.SB. La cuantificación conlleva p o r una parte una in-


certid u m b re, p o r cu an to a partir d e un cód igo d e salida no se p u ed e sab er a
ciencia cierta cu ál h a sido la tensión d e en trad a que lo ha p rod ucido. P o r otra
parte, la cuantificación determ in a el m en or cam b io d e tensión que el sistem a
p u ed e d etectar, e s decir, s u resolución.

9 .1 .2 M argen o rango dinám ico

Las e tap as n ecesarias en tre el sen sor y el C A D , q u e con stitu y en la d e n o ­


m in ad a etap a an aló g ica frontal (A n a lo g F ro n t E nd, A F E ), s e diseñ an ten iend o
en cu en ta el m a rg en o ran g o d in á m ic o (d y n a m ic range, DR) d e m edid a, definido
co m o

DR = Rango d e medida = .rmj. (9 4)


Resolución Ax
Para cada etapa se puede definir su rango dinámico, a su entrada o a su salida,
Las entradas y salidas analógicas. Adquisición y distribución d e señales — 279

f ) R —
Vm a x - V* m i n (9.5)
AV
d o n d e A V es la resolu ción d e la etap a. L a resolu ción en la en trad a d e u n a etap a
e s el m ín im o cam b io d e la en tra d a q u e p ro d u ce u n cam b io co rresp o n d ien te
en su salida. L a resolu ción en la salida e s la resolu ción en la e n tra d a m ultipli­
c a d a p o r la g an an cia d e ten sión d e la etap a. P o r con siguien te, las e ta p a s co n
g an an cia u n idad tienen la m ism a resolu ción e n su e n tra d a y en su salida.
P ara un C A D ,
y' m a x _ V m i n (2
\
n - 1 )Q
' (9.6)
CAD “ 2 ,v
Q Q
El d isen o d e la etap a frontal p arte en ton ces del ra n g o d in á m ico d e la m e­
d id a, y a p artir d e é s te s e determ in a el n ú m e ro d e bits del C A D . Éste tendrá
u n ra n g o y un nivel d e tensiones d e e n tra d a d eterm in ad o s, y la e ta p a frontal
deb erá a d a p ta r la salid a del sen sor a esas características. A s í pues, las etap as
d e la figura 9 .2 n o se diseñ an d e fo rm a su cesiv a d e izq u ierd a a d e re ch a , sino
q u e la elección del C A D y del sen so r d eterm in a n las e ta p a s in term ed ias. Para
ten er un d iseñ o co rrecto , el ran go d in ám ico d e e n tra d a d e c a d a eta p a en tre el
sen sor y el C A D d eb e s e r igu al o m a y o r q u e el ra n g o d in á m ico d e salid a d e
la eta p a an terior. L a figura 9 .4 describe e s ta situ ación . El "ruido" es el v a lo r
eficaz d e las flu ctu acion es d e ten sión erráticas q u e se o b se rv a n a la salida d e
u n a eta p a cu a n d o la en tra d a e s nula, y e s el factor q u e d eterm in a e n últim o
térm in o la resolución. Si u n a etap a tiene u n a g an an cia m u y ele v a d a , el ru id o
q u e te n g a la en tra d a d e la etap a sigu iente será insignificante fren te a la señal
que o fre ce la etap a anterior.
Tensión d e alimentación positiva

Entrada Salida
V o, max CAD CAD
m ax
'm a x
/m ax

Xmax
N b its
Xmm
Ax Ym<n
Ruido \ \ ^ o , m in
,
del sensor V m in Drnn
Ruido del Q 1 LSB
procesador

Tensión d e alimentación negativa

Figura 9.4 El rango dinámico del CAD debe ser superior al rango dinámico del sensor; y las
etapas entre ambos deben tener mayor rango dinámico que el CAD.
Las entradas y salidas analógicas. Adquisición y distribución de señales — 281

ñ al de, p o r ejem plo, 1 M H z a 2 M H z e s d e b an d a estrech a, una señal d e 1 H z


a 1 0 0 H z e s d e banda an ch a. L a s señales d e b an d a a n ch a so n m ás difíciles de
p ro cesar, p o rq u e las características d el p ro ce sa d o r deben ser u n iform es en
to d o su a n ch o d e b an d a. L a s señales q u e sólo tienen co m p o n en tes d e m uy
baja frecuen cia, m e n o re s d e 0,1 H z p o r ejem plo, se d e n o m in a n con tin u as, y las
d e frecu en cias su p erio res s e d en o m in an altern as.

A m plitud A m p litu d
I A

Ir r tn f e f< n a x

Figura 9.5 Señal de banda estrecha (izquierda) y de Ixinda ancha (derecha).El criterio para de­
t e r m i n a r y f mn depende del tipo de señal concreto. La fnáxima amplitud no co­
rresponde necesariamente a f ni las atnpliludes son necesariamente uniformes para
todas las frecuencias entre f ^ y f mm.

El a n c h o d e ban d a d e un circu ito es el c a m p o d e frecuen cias e n e l q u e la


re sp u e sta a u n a señ al d e en trad a está d e n tro d e ± 3 d B d e la resp u esta a las
frecu en cias en el ce n tro del in tervalo d e frecu en cias (figu ra 9.6). L a fr ec u en c ia
cen tra l se define c o m o la m ed ia g eo m étrica d e las frecu en cias a -3 dB.

Figura 9.6 El ancho de banda de un circuito se defm e respecto a las frecuencias donde la ga-
n a n á a está dentro de ±3 dB respecto a la respuesta en las frecuencias centrales.

C u a n d o la con exión d e u n a señal a un circu ito o en tre circu ito s se realiza


sin in terp on er co n d en sad o res en serie, se dice q u e los circu ito s está n acop lad os
en con tin u a. Si e n cam b io s e intercala u n co n d e n sa d o r en serie, los circu ito s, o
282 — Microcontroladores PIC

la señal, están aco p la d os en altern a. E n este ca so , la am p litu d d e las frecuen cias


inferiores p u ed e q u e d a r aten u ad a, seg ú n se v erá e n el a p a rta d o 9.2.3.

9 .1 .4 M uestreo de señales
E n los co n v e rtid o re s A / D d irecto s, el v a lo r d igitalizad o es el que tiene
la ten sión d e en tra d a d u ra n te el p ro ceso d e co n v ersió n . P o r ello, d ich a ten­
sió n d e b e p erm an ecer co n stan te m ien tras está sien d o d igitalizad a, y e s to se
co n sig u e co n el am p lificad o r d e m u estreo y reten ció n (sa m p le a n d h o ld a m p li-
fie r , S H A ) (a p a rta d o 9 .2 .6 ). El n ú m e ro d e m u estras q u e h ay q u e to m a r p o r
u n idad d e tiem po, y p o r tan to la v elocid ad d e co n v ersió n , d ep en d en d e có m o
s e p ro cesen los v alores m u estread os. E n el m ejor d e los casos, q u e sería al
e m p le a r un filtro in terpolador digital ideal, la frecu en cia d e m u estreo viene
d a d a p o r el criterio d e N y q u ist, segú n el cu al d ich a frecu en cia d e b e s e r m a y o r
q u e el d o b le del a n ch o d e b an d a d e la señ a l d e en trad a (q u e incluirá siem p re
la señal d e se a d a y u n a cierta can tid ad d e ru id o n o d e se a d o ). E n c a so co n tra ­
rio, a p a recerán señ ales fa ls a s (alias), tal c o m o m u estra la figu ra 9.7.

Figura 9 .7 Señal falsa (alias) que aparece cuando se muestrea una señal a una frecuencia
inferior a la frecuencia de Nyquist.
Si la señal d e entrada es periódica, las m uestras se pueden tom ar de ciclos sucesivos
(figura 9.8), lo cual reduce la velocidad de m uestreo necesaria. Se habla entonces
d e muestreo repetitivo secuencial, en lugar de m uestreo en tiempo real, y es común
en los osciloscopios digitales.

' W - - c

T+3&T

Figura 9.8 En el muestreo repetitivo secuencial, se loma muestras en instantes progresivamen­


te alejados y que corresponden a áclos sucesivos de la señal periódica de entrada.
Las entradas y salidas analógicas. Adquisición y distribución de señales — 283

9.1.5 Arquitecturas para la adquisición de señales. Sistemas de alto y bajo nivel

C u a n d o s e d eb e digitalizar v arias señales y el C A D es suficientem ente


rá p id o , n o es n ecesario em p lear u n C A D p ara c a d a señal, sino que éste p u e d e
ser co m p a rtid o p o r tod as las señales m ed ian te u n m u ltip lex or an a lóg ico , que
es u n conjunto d e in terru p to res an alógico s c u y o term inal d e salida e s co m ú n
(a p a rta d o 9 .2 .4 ), y d o n d e en c a d a in stan te d e tiem p o só lo u n o está ce rra d o :
aquél c u y a en trad a será digitalizada.

Sen*»
1

AMUX

Sensor
2

FPB SHA « - CAO

Conlroeoof d ig tal
FPB

Bus det

Figura 9.9 En el multiplexado de alto nivel, cada señal debe ser acondicionada antes de ser muí-
tiplexada. (rPB: filtro de paso bajo; SFIA: amplificador de muestreo y retención).

La ubicación del m u ltip lexo r d e n tro d e la cad en a d e fu nciones p rev ias


al C A D , d a lu gar a distintas arq u itectu ras p a r a la adq uisición d e señales. Las
d o s m ás co m u n e s so n las d en o m in ad as d e alto nivel y d e bajo nivel. Los siste­
m as d e a d qu isición d e a lto n iv el (figu ra 9 .9 ) acep tan sólo señales g ra n d e s y ofre­
cen u n a g an an cia peq u eñ a, n o rm alm en te p ro g ram ab le (1 , 2 , 4 , 8 ), p o sterio r al
m u ltip lexor. Es n ecesario , p u es, aco n d icio n a r p reviam en te c a d a señal, y esto
tiene u n co ste aso ciad o . L a ven taja es q u e la v elocid ad d e co n m u ta ció n del
sistem a (y p o r lo tan to, la v elocid ad d e m u estreo) p u e d e s e r ráp id a, p u es el
a co n d icio n am ien to p revio al m u ltip lexad o estará a d a p ta d o a las característi­
c a s específicas d e c a d a señal. L o s m icro co n tro la d o re s que in clu yen un C A D
c o n v a rio s ca n a le s d e en tra d a an alógico s (h a sta 1 6 ), in teg ran el m ultiplexor
p ero n o el am p lificad o r ni el filtro, p o r lo q u e e sta s funciones d eb en s e r pro-
2 8 4 — Microcontroladores PIC

v ista s e xtern am en te. A lg u n o s co n v ertid o res A / D d e v a rio s can ales tam p o co


in cluyen el am p lificad or ni el filtro. Si se d esea m u e stre a r v a ria s señales si­
m u ltán eam en te, h a y q u e d isp o n er u n am p lificad o r d e m u estreo y reten ció n
p ara c a d a u n a d e ellas, antes d e m ultiplexarlas.

San sor AM UX
1
I

sh a ► cao
T
Sensor
2 _L T'-

Com roladoi digflal

Sensor
o

Busdtf
sistem a

Figura 9.10 En el multiplexado de bajo nivel, no hace fa lta acondicionar cada entrada antes
de multiplexarla, pero la velocidad de conmutación entre canales es más lenta,
porque hay que esperar a que se estabilicen las salidas del amplificador y del filtro.
(FPB:filtro de paso bajo).

L o s sistem a s d e a d qu isición d e d a to s d e bajo n ivel (figu ra 9.10) in clu y en u n


a m p lificad o r d e g an an cia p ro g ram ab le c o n g a n a n cia s en tre 1 y 5 0 0 , grosso
m odo. L as señales d e e n tra d a p u ed en ten er m e n o r a m p litu d q u e e n la adqui­
sición d e alto nivel, p ero los e rro re s d el m u ltip lexo r s e les su m arán , y la su m a
s e rá am plificada. A d em ás, al co n m u ta r d e uno a o tr o ca n a l h ab rá q u e e sp e­
r a r a q u e estabilicen las salid as d el am p lificad o r y del filtro (que p u e d e ser
tam b ién p ro g ram ab le), y este tiem p o d e esp era red u ce la m áxim a velocidad
d e e x p lo ració n d e canales. E sto s sistem as está n disponibles co m o circu itos
in tegrad os periféricos.

9.2 La etap a fro n ta l para la adquisición d e señales


La etap a frontal en la adq uisición d e señales d eb e a d a p ta r los niveles
d e ten sión, co rrien te y p o ten cia d e la señal d e e n tra d a a las ca racterísticas del
C A D , y tam b ién d eb e a d a p ta r el a n ch o d e banda d e la señ al segú n el p ro ce ­
sa m ien to p o sterio r p revisto.
Las entradas y salidas analógicas. Adquisición y distribución de señales — 285

9.2.1 A tenuadores

Si la a m p litu d d e la ten sión d e e n tra d a e x ce d e el v a lo r m á x im o que a d ­


m ite el C A D , h ay q u e aten u arla. L a figu ra 9 .1 1 m u estra la e stru ctu ra general
d e u n a te n u a d o r d e tensión, fo rm ad o p o r d o s im p ed an cias Zx y Z2, cu a n d o la
im p ed an cia equ ivalente d e salid a d e la fuente d e señ al e s Zp y la im ped ancia
eq u ivalen te d e en tra d a es Zr L a aten u ació n es

A = Yl = M Zi - — g*. - (9.8)
Va Z „ + Z , + Z 2||Z i Z , + Z 2

d o n d e la ap roxim ación es válid a siem p re y cu an d o Zjn » Zo y Z » Z2, y el


sím bolo ||representa la com binación en paralelo d e d o s im pedancias. Zme s la
im pedancia equivalente d e en trad a del aten uador, u n a v e z co n e cta d o a la eta­
pa siguiente, es decir, Z n es la im ped ancia q u e v e la fuente d e señal, y vale

(9.9)
Zin= z 1+ z2||zi
El cu m p lim ien to del criterio "m u c h o m a y o r" (o "m u c h o m e n o r") hay
que ju zg arlo segú n la reso lu ció n d el C A D : u n p a rá m e tro será suficientem en­
te g ra n d e, si el h ech o d e q u e n o ten ga u n v a lo r infinito p asa d esapercibido
para el C A D . E s d ecir, el efecto d e su ca rá cte r finito e s, e n el p eo r ca so , inferior
a Q (o a u n a fracció n d e Q si s e están co n sid eran d o v a rio s facto res sim u ltá­
n eam en te). P ara ev a lu a r el efecto d e u n p a rá m e tro q u e id ealm en te debiera
ser nulo, se p ro ce d e d e form a análoga.

Z;n

Figura 9.11 Atenuador de tensión conectado a una etapa cuya impedancia equivalente de en­
trada es Zr

P a ra ate n u a r u n a ten sión co n tin u a bastan d o s resisten cias co n ectad as


segú n m u e stra la figu ra 9 .1 2 /7. L a aten u ació n y la resisten cia eq u ivalen te d e
en trad a del aten u ad o r so n , resp ectiv am en te,
2 8 6 — Microcontroladores PIC

A- V - ^ 1R. - *2 <9 -10)


V . R0 + R i+ 1 ^ | R ¡ R ,+ R 2

Rm= R ] + R2 )|R, (9.11)

E stas d o s ecu acio n es p erm iten ca lcu la r el v a lo r d e R, y Rr La tolerancia


e n su s v a lo re s, y el efecto d e su coeficiente d e te m p e ra tu ra , cre a rá n u n a in-
c e rtid u m b re en el v alo r real d e A. Para co n o ce r este v a lo r h a y q u e calib rar el
sistem a (a p a rta d o 9.4).

F igu ra 9.12 A tenuador de tensión para señales (a) continuas y (b) alternas.
Ejemplo 9.2

D iseñar un atenua dor resistivo que presente una resistencia d e entrada d e 1 y que perm ita m edir
una tensión d e 4 2 V con un circuito que adm ite hasta 5 V y que tiene una resistencia d e entrada de
1 MQ.
Las condiciones d e atenuación (9.1 0) y resistencia d e entrada (9.11) llevan a

A=ü — gg_
42 V R, + RW
R n = R , + R „ = 1 M Í2

don de R ^ = R2||Rr D e aqu í se obtiene, R , = 881 kO y R . = 135 k £ l Si se eligen resistencias con toleran­
cia del 1 % , lo s valore s m ás convenientes son R , = 887 kC2 y R2 = 133 k Q . L a atenuación será un poco
m ayor, p e ro así asegurarem os que n o se excede el rango d e señal.
Las entradas y salidas analógicas. Adquisición y distribución d e señales — - 287

Si p a ra ate n u a r señ ales altern as se utilizara e l m ism o circu ito que p ara
señales co n tin u as, la cap acid ad equ ivalente d e e n tra d a (en paralelo c o n R)
aten u aría m á s las señales d e alta frecu en cia que las d e baja frecuencia. Para
e v ita r esta aten u ació n d esigu al, que im p ed iría d eterm in ar el v a lo r d e la señal
d e e n tra d a cu a n d o fuera d e b an d a an ch a, los a te n u a d o re s d e altern a in cluyen
u n co n d en sad o r C, e n p aralelo c o n R 1 (figu ra 9.126). Si C, se elige d e form a
q u e se cu m p la R ,C , = (R 2|)R.)C./ se tendrá

/ y - V|- Z,N - Z|-'" - ^\'R' (9.12)


V. Zo+ z, + Z .+ Z * , R , + R 7|R ,

Zé1=(R 1+R1|R1)|(Ci ®C1) <9'13>

d o n d e Z ^ e s la com b in ación en paralelo d e R2, Ri y C , y el sím bolo © rep re­


sen ta la com b in ación en serie d e d o s co n d en sad o res, e s d ecir, el recíp ro co d e
la su m a d e sus recíp ro co s. L a aten u ación e s, p u es, c o n sta n te y se dice que el
a te n u a d o r e s tá com p en sa d o en fr ec u e n c ia . C o n e s ta s d o s ecu acio n es y la co n d i­
ció n d e co m p en sació n se p u ed e ca lcu la r R ,, R 2 y Cr

E jem plo 9.3

D iseñar un atenua dor que perm ita d ividir por 10 una tensión alterna (sea cual se a su frecuencia) y
presente una resistencia de entrada d e 10 M Q a baja frecuencia, cua n d o se conecta a un sistem a de
adquisición d e d a to s cuya im ped ancia d e entrada es de 1 MC2||125 pF.
Para o b te n e r la atenuación deseada, d e (9.12) resulta

A= — =0, 1
Ri+Rm
y d e a qu i, R , = 9R w. La condición d e igualdad d e las constantes d e tiem po im plica C, = C /9 = 125 pF/9
=14 pF. que es u n valor estándar. Para te n e r la im pedancia d e entrada deseada a baja frecuencia, de­
berá ser

R n = R, + ^ = 1 0 M Q = 1 0 R eq

Luego. R = 1 M Q , que im plica R? = *» (circuito abierto). Entonces, R , = 9 M Q . P odríam os elegir R , =


8,98 M Q (±0,5 % ), o R , = 9 ,09 M Í2 (±1 % ).

Si la im p ed an cia d e salid a d e la fuente d e señal ( Z ) en la figura 9 .1 2 no


e s suficien tem en te peq u eñ a, p o r ejem p lo p o rq u e a la frecu en cia d e la señal,
Zm e s baja d eb ido a las cap acid ad es p arásitas, la a p ro x im a ció n en (9.12) deja
de s e r v álid a, y la aten u ació n a u m e n ta co n la frecu en cia d eb ido al den om i­
nad o efec to d e carga, q u e e s la aten u ació n in d esead a d e una tensión ca u sa d a
p o r la im p ed an cia finita d e en tra d a d el circu ito d o n d e se aplica. L a situ ación
general se p u ed e d escrib ir m ed ian te la figura 9.13a, q u e p a ra tensiones alter-
2 8 8 — Microcontroladores PIC

ñ a s p ro ced en tes d e u n a fu en te resistiva se co n v ierte en la fig u ra 9.13b, q u e a


su v ez se p u e d e sim plificar seg ú n s e m u estra en la figu ra 9 .1 3 c, d o n d e R ^ =
R o1'IIRm . L a ten sión a la en tra d a n o e s Vo sino Vin ,'

1 i
V = V — 5o_ ( 9 .1 4 )
,n ° Z + Z in X X l+ * 1 + / 2^ Cu

AAAr
Z ¡n V, C,n Veq [ • l_,

± 1
\ 7

(C)

Figura 9.13 Circuitos equivalentes para analizar el efecto de carga en tensiones alternas.

L a diferen cia en tre lo s m ó d u lo s d e la ten sió n ob ten id a y a p lica d a será


el erro r ab solu to, q u e d iv id id o p o r el m ó d u lo d e la ten sión d e e n tra d a será el
e r ro r relativo. Si se d esea que éste s e a m e n o r que u n a cie rta c o ta e, s e deb erá
cu m p lir
iit / l _ h / II
v -- <*■ (9.15)
K\
que lleva a la condición,

y ¡ A 20 - \ - £ 2 + 2 e ^A ) ~ 1 + _ 4 l£
2 x f R .j C * < ( 9 (1 6 )
\-e ' \-e \-e

d o n d e A 0 = Rm/ ( R 0 + R J , y d o n d e la p rim era ap roxim ación es válida si í : « 1 ,


y la seg u n d a es válid a cu a n d o A 0 a 1. C o n esta e cu ació n s e p u e d e d eterm in ar,
p o r ejem plo, la m áxim a frecu en cia d e la ten sión para q u e el e rro r relativo sea
inferior a

E jem p lo 9.4

C a lcular la m áxim a frecuencia d e una sinusoide que procede d e una fuente d e 600 Q d e resistencia
interna y se co n e cta a un circu ito que tie n e una im pedancia d e entrada d e 10 M Q ||1 0 0 pF, si e l e fe cto de
carga d e b e se r im perceptible en un sistem a con 12 b its d e resolución.
Para que el efecto d e carga sea im perceptible, la atenua ción (indeseada) que expe rim e nte la seña l debe
se r inferior a 1 LS B, y 1 LS B = V J 2 '2. L a diferencia entre la tensión del generador y la tensió n a la en­
trada d e l circuito será m áxim a cua n d o la tensión sea m áxim a. P o r lo tanto, e = 1/212. La condición (9.16)
se pue de escrib ir com o
Las entradas y salidas analógicas. Adquisición y distribución de señales — 289

f < — -— ^
2 1-*

donde, en este caso, R^ = 600 Q y Cf = 100 pF. De aquí resulta, f < 58,6 kHz.

9.2.2 Amplificadores

Los am p lificad o res sirven p ara a d a p ta r el ra n g o d in ám ico, el nivel y la


con figu ración d e los term in ales d e la señal d e en tra d a , a las características c o ­
rresp o n d ien tes d e la etap a siguiente, a la v e z que ofrecen una alta im ped ancia
d e e n tra d a p ara m in im izar el efecto d e carga.

L a con figu ración d e los term in ales d e u n a señal se refiere a la relación


en tre d ich os term inales y el term inal d e referencia p a ra la m edid a d e tensio­
nes p ro p io del sistem a (term inal co m ú n , 0 V , "m a s a e léctrica") (figu ra 9.14).
Una ten sión q u e se m id e en tre d o s term inales, u n o d e los cu ales está co n e cta ­
d o d irectam en te al term inal co m ú n , s e d en om in a a sim étrica (sin g le-en d ed vol-
tage). U n a tensión q u e se m id e en tre d o s term inales, n in gu n o d e los cuales
está co n ectad o d irectam en te al term inal co m ú n , s e den om in a d iferen cia 1 si se
cum ple,

vd
v i, = u ( + —
c 2
(9.17)
vi = vc ~ y

d o n d e v c es la d en om in ad a tensión en m o d o co m ú n y v 6 es la tensión en m o d o
diferencial. E n un sistem a alim en tad o en tre 0 V y 5 V, p o r ejem plo, si una se­
ñal diferencial tiene = 2 ,5 V, s e p u e d e n p ro ce sa r ten siones x;d positivas y
n eg ativ as, p o rq u e sólo cam b ia la p o larid a d d e éstas, sin q u e s e reb asen las
tensiones d e alim en tación. Si n o s e cu m p le la con d ición (9.17) y la señal n o es
asim étrica, se d en om in a seu d od iferen cial. E n cu alq u ier caso , si Z o = Z f , s e dice
q u e la señal está b alan cead a o equ ilibrad a. Si Z mc e s m u y alta, la señal s e califi­
c a c o m o fh t a n t e . T an to las señales diferenciales c o m o las seudodiferenciales
vienen d escritas m ed ian te tres term inales: alto, bajo y co m ú n , m ien tras que
una señal asim étrica viene descrita m ed ian te u n term inal alto y u n term inal
co m ú n .

U n am p lificad or lineal ofrece a su salida una tensión prop orcion al a la


tensión q u e h ay en tre su s d o s term in ales d e en tra d a , "a lto " y "b a jo ". Pero, de
form a an álo g a a las señales, la en trad a d e los am p lificadores p u e d e s e r asi­
m étrica, diferencial o seu dodiferencial (figura 9.1 5 ). E n una en trad a asim étrica,
290 — Microcontroladores PIC

el term in al bajo es el term inal co m ú n (0 V ) d e la fuente d e alim en tación del


am p lificad o r, q u e su ele estar co n e cta d o a la m asa m etálica del eq u ip o , y ésta
a la to m a d e tierra d e la instalación. E n una en trad a d iferen cial, n in g u n o d e los
d o s term inales d e m ed id a está co n e cta d o a m a sa , y la im p ed an cia en tre cad a
term in al y m asa e s sim ilar. E n u n a en trad a seu d od iferen cial, el term inal bajo
está co n e cta d o a la m asa d el am p lificad o r, p ero ésta n o e s tá co n e cta d a d ire c­
tam ente, co n una im p ed an cia baja, al term in al d e to m a d e tierra d e la instala­
ción. Si tan to Z , c o m o Z H son m u y elev ad as, se tiene u n a en trad a flo ta n te .

3 -0 H '— o H
3— o h

Y -O L
o C
l-o L

(a) (b)

Figura 9.14 Tipos de señales según la configuración de sus terminales, (a) Asimétrica (single
ended). (b) Diferencial, (c) Seudodiferencial. Zm es la impedancia en modo com ún
y puede ser nula.

H o*- | HOr H o-
I
Zo 1 x i
T*-C
C o .- L o ff Zc ->-c

Zc

(a ) (í> ) (c)

Figura 9.15 Tipos de amplificadores según su entrada: (a) asimétrica (single ended), (b) dife­
rencial o (c) seudodiferencial; si Z, y ZH son muy elevadas, la entrada es flotante.

P a ra m in im izar el efecto d e c a rg a , la im p ed an cia en tre los d o s term in a­


les d e m ed id a (Z¡ o Z ,y segú n el caso ), d eb e s e r suficien tem en te alta. P ara que
la tensión d e m o d o co m ú n n o influya en la tensión d e salid a, en un am plifi­
c a d o r diferencial Z c d eb e s e r lo m a y o r posible e igu al p ara c a d a term inal d e
Las entradas y salidas analógicas. Adquisición y distribución de señales — 291

en trad a. E n caso co n trario , Z o y Z t p o r una parte, y Z 'o y Z 'c p o r o tra , form a­


rían sen d o s d ivisores d e ten sión c o n aten u a ció n d istinta, y u n a señ al d e m od o
co m ú n p ro d u ciría una señ al diferencial a la en trad a del am plificador. E n un
am p lificad or seudodiferencial, Z L y Z H d eb en s e r cu a n to m ás altas, mejor.
O b viam ente, una señ al diferencial o seu dodiferencial n o s e d e b e co n e cta r a
una en trad a asim étrica, pu es "s o b ra ría " u n term in al d e la señal. A d e m á s, al
co n ectar una señ al asim étrica a u n a en tra d a tam b ién asim étrica, h ay q u e res­
p e ta r la p o larid ad d e los term inales, m ien tras q u e la p o laridad d e las señales
diferenciales, y la d e las seu d od iferen ciales e n m u ch o s casos, es irrelevan te.
N o ob stan te, siem p re h ay q u e a s e g u ra r q u e las tensiones d e m o d o co m ú n no
co n trib u y an d e form a significativa a la ten sión am plificada.
C u an d o el term inal o term inales d e e n tra d a d e un am p lificad or se c o ­
nectan a m asa, la tensión d e salida n o es nula, sino que tiene un cierto nivel d e
continua que d ep en d e d e su gan ancia y d e las resistencias dispuestas en tre sus
en trad as y m asa. P ara co n sid erar estos d o s efectos, el am plificador se m odela
anteponiéndole una fuente d e tensión continua, d en om inad a tensión d e offset, y
una fuente d e corrien te continua (d e polarización o d e fugas) en tre c a d a term i­
nal y m asa. La figura 9 .1 6 m uestra el circuito equivalente al co n ectar u n a señal
diferencial a u n am plificador diferencial que tiene un as im ped an cias d e en tra­
d a m u y altas, den om in ad o am p lificad or d e instrum entación. \& presencia d e las
fuentes d e corrien te continua obliga a que en tre c a d a uno d e los d o s term inales
y m asa haya u n cam ino d e resistencia suficientem ente baja. P o r esta razón, el
term inal com ú n d e la señal se co n ecta norm alm en te a la m a sa del am plifica­
dor. A d em ás, n o se p u ed e co n ectar sin m ás la señal al am plificador co n un
con d en sad o r en serie co n cad a term inal, p orq ue los dos con d ensadores se irían
carg an d o y acab arían satu ran d o la salida del am plificador.

Figura 9.16 Circuito equivalente al conectar una señal diferencial a un amplificador de ins­
trumentación. Obsérvese que la serial y el amplificador están conectados al mismo
terminal de masa.
2 9 2 — Microcontroladores PIC

Si las corrien tes d e en trad a son suficientem ente p eq u eñ as, y las ten sio­
nes d e alim en tación están bien filtrad as, la tensión a la salid a del am plificador
se p u ed e e x p resar, en p rim era ap ro xim ació n , d e la form a

p» = g ( i + ^ +5 ^ +v“K - <9'18 )

d o n d e ec e s el e rro r relativo en la g an an cia, eN]Q es el e rro r d e n o linealidad


en la g an an cia, esp ecificad o a v eces c o m o u n a co ta d e tensión, y C M R R e s la
d en om in ad a relación d e rechazo d el m o d o com ú n . El C M R R d el am p lificad or se
define c o m o el co cien te en tre la tensión d e salid a p rod u cid a p o r una d e te r­
m inad a ten sión ap licad a e n m o d o diferencial, y la ten sión p ro d u cid a cu an d o
la m ism a tensión d e en tra d a se ap lica en m o d o co m ú n . Si las im ped an cias
d e e n tra d a en m o d o co m ú n n o so n m u y g ra n d e s o están desequ ilibradas, el
C M R R e fectiv o es m en o r q u e el del am p lificad or sólo. L o s e rro re s d e g an an cia
y offset h ab itu ales e n am p lificad o res d e in stru m en tación n o im piden ob ten er
ran go s d in ám icos d e 1 0 0 dB e in cluso su p eriores, p ero h a ce n m u y difícil co n ­
seguir, sin calib ración , u n a exactitu d a d e cu a d a p ara sistem as d e m ás d e 1 0
bits. C on calib ración , las d ificu ltades cre ce n cu a n d o se d esea o b ten er m á s d e
u n os 1 4 bits, a baja frecu en cia o p ara señales d e banda estrech a. P ara señales
d e banda an ch a, es difícil con segu ir u n a ex a ctitu d d e m á s d e 1 2 bits.

La g an an cia d e cu alq u ier am p lificad or s e re d u c e a p a rtir d e una d e te r­


m inad a frecuen cia, tan to m en or cu a n to m a y o r sea la g an an cia. L a figura 9 .1 7
m u estra este efecto p ara un am p lificad or d e in stru m en tación . En m u ch o s a m ­
plificadores, la red u cción d e la g an an cia co n la frecu en cia se p u ed e describir
m ediante

G {f)< G ° j á i f (9 -19)

d o n d e G0 es la g an an cia a baja frecu en cia y f e s la fr e c u e n á a d e c o r te (-3 dB). A


efectos p ráctico s, esta d ep en d en cia significa q u e, si s e a ce p ta un e rro r relativo
e, la m áxim a frecu en cia p erm itid a para una e n tra d a sin u soid al es

J2 e-e? V2 f (92Q)
J, na* J* x_ £ j — £

E je m p lo 9 .5

S i se am plifica una señal sinusoidal con un am plificador d e instrum entación que tie n e un producto G BW
d e 1 M H z y gan ancia 1000, ¿cuál puede se r la m áxim a frecuencia para q u e la atenuación sea im percep­
tible en un sistem a co n 12 bit de resolución?
Las entradas y salidas analógicas. Adquisición y distribución de señales — 293

Para G = 1000, la frecuencia d e co rte (a -3 dB) será fa = 1 M H z/1000 = 1 kH z. A plicando (9.20), con e =
1 ls b /^ 3,

= 1 k H z V 2 x 2 ° = 22 Hz

E sta frecuencia e s m uy baja, p e ro h a y q u e te n e r en cuenta que -3 dB es una atenuación d e l 3 0 % , y aqui


se acep ta una atenuación d e s ó lo 0,024 %.

»g'
• a « a 'a

Figura 9.17 Relación etitre la ganancia y la frecuencia en un amplificador de instrumentación


típico: la ganancia empieza a decrecer a una frecuencia tanto menor cuanto mayor
sea la ganancia a bajas frecuencias.

9 .2.3 F iltro s y protecciones de entrada

L a ten sión m á x im a que se p u ed e ap licar d irectam en te a la en trad a de


cu alq u ier d isp ositivo electrón ico sin d añ arlo, está siem p re lim itada (cu a n ­
d o m enos p o r debajo d e las tensiones d e alim en tación del dispositivo). La
m á x im a co rrien te en los term inales d el disp ositivo está tam b ién lim itad a (<
2 0 n iA en m u ch o s term inales d e los P IC , < 1 0 m A o 1 m A e n am plificadores
y m u ltip lexo res, seg ú n su tecn ología). P o r ello, e s n ecesario in co rp orar cir­
cu itos d e p ro tecció n en aquellos term in ales q u e a ce p te n co n exio n es a pu ntos
extern o s al circu ito. La figura 9 .1 8 m u estra que los lim itad ores d e c o rrie n te se
c o n e cta n en serie y los lim itadores d e tensión s e c o n e cta n en paralelo co n la
en trad a q u e se d esea p ro teg er. Si la en trad a es diferencial, h ay q u e a ñ a d ir un
lim itad or d e co rrien te en serie co n el term inal bajo, y u n lim itad or d e tensión
(d e m o d o co m ú n ) en tre c a d a term inal y m asa. C u a n d o actú a el lim itador d e
tensión, la tensión a la en tra d a del d isp ositivo es co n stan te, e in d epen dien te
d e la señal, d e form a que n o h ay d añ o s, p e ro se p ie rd e la inform ación.
Las entradas y salidas analógicas. Adquisición y distribución d e señales — 295

O tra p recau ció n en las en trad as an aló g icas es filtrar las interferencias
a co p la d a s d esd e o tro s circu itos, c u y a am p litu d p u ed e s e r suficiente p ara sa­
tu ra r la en tra d a d el am p lificad o r. E ste filtro d eb e ser n ecesariam en te pasivo,
p o rq u e los filtros a ctiv o s n o acep tan tensiones m ay o res que la ten sión d e ali­
m en tación d e los circu ito s in tegrad o s. P ara d iseñ ar un filtro d e p a so bajo de
p rim er o rd en , la resistencia del filtro p u ed e ser el resisto r que lim ita la co rrie n ­
te y p ara ten er u n a ca p a cid a d suficien tem en te g ra n d e , s e p u e d e c o n e c ta r un
co n d e n sad o r en p aralelo c o n el lim itad or d e tensión. L a m á x im a frecu en cia
de m ed id a cu a n d o s e ace p ta un e rro r relativ o 8 s e p u e d e calcu lar co n (9.20),
d o n d e f e s ah o ra la frecu en cia d e co rte del filtro a -3 d B (fa = 1 /(2 n R C )).

Figura 9.20 Cuando la diferencia de potencial entre tornas de tierra es excesiva, hay que em­
plear aisladores para la señal y para la tensión de alimentación, para que la tensión
entre tomas de tierra no fu erce una corriente peligrosa en el circuito.

C u a n d o la señ al q u e s e d esea ad q u irir está c o n e cta d a a tierra en un pun­


to distin to d e la to m a d e tierra d e la fuente q u e alim en ta al am plificador, si
la diferencia d e potencial en tre to m as d e tierra es su p erior a la ten sión d e
alim en tación (p o r ejem plo, en tre to m as alejadas y en u n e n to rn o industrial),
los lim itad ores d e tensión actu arían co n tin u a m e n te y n o s e p o d ría adquirir
in form ación alg u n a. L a solución pasa en ton ces p o r e v ita r toda con exión gal­
ván ica (óhm ica) e n tre la señal y el am plificador: s e em p lea u n a isla d o r lineal
o u n am p lificad o r d e aislam iento p a ra la señal an alógica, o bien s e digitaliza
la señal co n u n sistem a c u y o term inal d e referen cia n o esté co n e cta d o a tierra,
y lu e g o se co m u n ica la señ al digital m ed ian te o p to a co p la d o re s u o tro tip o de
aislad o r digital. En cu alq u ier ca so , h a y q u e e v ita r la con tin u id ad ó h m ica tan ­
to en el circu ito d e la tensión d e alim en tación, c o m o en el circu ito d e la señal
(figura 9.20).
296 — Microcontroladores PIC

9 .2 .4 M u ltip le x o re s analógicos

U n m u ltip lexo r an aló g ico (A M U X ) es u n circu ito q u e con tien e un c o n ­


junto d e in terru p to res an alógico s c u y o term inal d e salida es co m ú n , y cu y a
activ ació n está o rg an izad a p a ra q u e e n c a d a in stan te sólo u n a d e las señales
d e e n tra d a esté co n ectad a a la salid a. L a figura 9.21 m u e stra la e stru ctu ra d e
u n m u ltip lexo r (periférico) p a ra señales asim étricas y o tro p ara señales dife­
renciales. P ara éstas, los d o s in terru p to res in v o lu crad o s se cie rra n al unísono.
L o s m u ltip lexores d e alg u n o s m icro co n tro lad o res p erm iten m e d ir la dife­
rencia en tre d iv erso s p ares d e señales, n o só lo en tre pares p red eterm in ad os
c o m o en la fig u ra 9.21b.

(a ) ( i»

Figura 9.21 Estructura funcional de un multiplexor analógico para (a) señales asimétricas, y
(b) señales diferenciales.

L o s in terru p to res d e un m u ltip lexo r ideal tienen resisten cia nu la c u a n ­


d o están ce rra d o s e im p ed an cia infinita cu a n d o están ab iertos, q u e les confie­
re un aislam ien to total en tre su en tra d a resp ectiva y la salid a co m ú n . E n un
m u ltip lexo r real, los in terru p to res, que n o rm alm en te so n tran sistores CM OS,
tienen u n a resistencia finita RON cu a n d o está n ce rra d o s, y una cap acid ad fi­
nita (C,^, CGIV Ciso) en tre su en trad a y la salid a co m ú n . R o x p ro v o ca u n efecto
d e c a rg a (adicional al d eb id o a la resistencia in terna d e la fuente d e señal, R J ,
d e n o m in ad o p érd id a s p o r in serción , e x p re sa d o a v e ce s en decibelios p ara una
resistencia d e c a rg a d eterm in ad a (la resistencia eq u ivalen te d e en trad a d e la
eta p a sigu iente). L o s m u ltip lexores q u e in teg ran u n a resisten cia d e protec­
ción e n serie c o n c a d a in terru p to r, tienen m ay o res p érd id as p o r inserción.
Ron (y R o) in trod u cen ad e m á s u n re ta rd o cu a n d o s e c o n m u ta d e u n ca n a l a
o tro , p o rq u e lim itan la co rrien te d e c a rg a d e la ca p a cid a d equ ivalente co n e c­
Las entradas y salidas analógicas. Adquisición y distribución de señales — 297

tad a a la salida d el m u ltip lexor. C o n los térm in os d e la figura 9 .2 2 , si la señal


a la en trad a del in terru p to r es d e baja frecuen cia, al cerrarlo, la ten sión a la
salid a au m en ta p au latin am en te según

vl ( 0 " V o ( l - e " í/f) (9 -2 1 )

d o n d e x = [(Ro + RON)||RJCL. E n ton ces, si se d esea q u e la diferencia relativa


en tre la tensión d e salid a e n u n in stan te d a d o y su v a lo r final sea inferior a e,
d esp u és d e c e rra r el in terru p to r h a y q u e e sp e ra r u n tiem p o

tc = - r \ n e (9 -2 2 )

E ste tiem p o lim ita la m á x im a velocidad d e exp loración d e can ales, y no


vien e esp ecificad o p o rq u e n o e s inherente al m ultiplexor, pu es d ep en d e en
p a rte d e factores extern o s (Ro y C L).

R, s K on V D
—WA \
A /—
— o— AA'W
O— A ——
A r --------------"V »- —C—
C i
r
<*-
=)
" I

Figura 9.22 Circuito equivalente de un interruptor analógico que se cierra, y evolución de la


tensión a su salida. C, es la capacidad equivalente entre la salida del multiplexor y
masa, e incluye la capacidad de. salida del propio multiplexor y la capacidad equi­
valente ile entrada d e la carga (la etapa siguiente).

E je m p lo 9.6

Un determ inado m ultiplexor analógico, con cada cana l protegido fre n te a sobrecorrientes, tie n e una re­
sistencia equivalente de canal d e 1 k Q , y su salida está conectada a una carga d e unos 100 pF y resis­
tencia m uy alta. ¿C uánto hay que espe rar d e sp u é s d e conm utar un cana l para que la salida se aproxim e
suficientem ente al valor final si e l sistem a e s d e 12 bits?
H a y que aplicar (9.22) co n i = 1 k O x 100 p F = 100 ns, y e = 1 L S B /2 ’2. Resulta,

te = - T \r \e = -<100 ns)ln2'12 = 832 ns


Este tiem po es m ucho m ayor q u e el tiem po de conm utación entre cana les e n u n m ultiplexor com ún.

El aislam iento finito en los in terru p to res d e u n m u ltip lexo r p ro d u ce la


d ia f o n í a e s tá tic a ( s t a t ic c r o s s t a lk ) : c u a n d o u n in terru p to r está abierto, la señal de
su en trad a co n trib u y e in ad v ertid am en te a la salid a del m u ltip lexor, d o n d e
298 — Microcontroladores PIC

ten dría q u e h ab er só lo la señal d e en trad a del in te rru p to r (canal) seleccio­


nad o. Según el circu ito eq u ivalen te d e la figura 9.23, cu a n to m a y o re s sean
la frecuencia d e la señal ap licad a a los can ales abiertos (d esco n ectad o s) y las
resisten cias e n el can al 1 ( R 1 y RQN1), m a y o r será la diafonía del ca n a l 2 sobre
el ca n a l 1 .

R|1 *ON1

Figura 9.23 Circuito equivalente para analizar la diafonía estática en un multiplexor analógi­
co: cuando se selecciona el canal I, el canal 2, y todos los demás canales abiertos
contribuyen (indebidamente) a la tensión de salida porque el aislamiento de los
interruptores abiertos no es infinito.

O tras lim itaciones d e los m u ltip lexo res so n el tiem p o q u e tra n scu rre
d e sd e q u e s e d a u n a o rd en d e cam b io d e can al hasta q u e el can al q u ed a efecti­
v a m e n te ce rra d o , d en o m in ad o tiem po d e con m u tación , y las teasio n es esp u rias
in yectad as a su salida p o r las señales d e co n tro l (selección d e can al). A d em ás,
al cam b iar d e u n can al al sigu iente h ay u n b reve in tervalo d e tie m p o d u ra n ­
te el cu al n o h a y n ingú n can al ce rra d o , y esto h ace q u e a la salida co n serv e
d u ra n te d ich o tiem p o la tensión d el can a l seleccio n ad o an teriorm en te. L a
m á x im a v elocid a d d e con m u ta ción (th rou g h p u t rate) esp ecificad a p o r los fabri­
ca n te s s e refiere a v eces a la situ ació n ideal e n la que hay u n a m ism a tensión
co n tin u a ap licad a a to d o s los canales y el único fa cto r lim itante es el tiem p o
d e establecim ien to d e la salid a cerca d e su v a lo r final, sin tiem p os d e esp era
ad icion ales ni v alo racio n es d e la posible diafonía q u e su fren y p ro v o ca n las
señales altern as.

9.2.5 Filtros anti-alias

Para ev itar la aparición d e señales falsas al m u estrear, e s necesario que


la am p litu d d e cualquier señal d e frecuencia igual o su p erior a la frecuencia
d e N yquist (la m itad d e la frecuencia d e m u estreo), sea im perceptible p ara el
C A D . L o s circuitos que discrim inan las señales segú n su frecuencia (u o tro cri­
terio), se den om inan filtro s. U n filtro q u e aten úe las señales d e alta frecuencia
respecto a las d e baja frecuencia, tal c o m o se requiere p a ra que n o aparezcan
señales falsas al m uestrear, se den om in a filt r o d e p a so bajo, o filt r o p asabajas. Un
Las entradas y salidas analógicas. Adquisición y distribución de señales — 299

filtro ideal (figura 9.24a) elim ina totalm ente las señales n o d esead as, y n o m o ­
difica ni la frecuencia ni la fase d e las señales d e interés. E n un filtro real (figura
9.24b), la aten uación e n la b an d a rech azad a es lim itad a; la respuesta en la banda
d e p a so n o es constan te para tod as las frecuencias; y la transición d e una a otra
banda n o es abrupta sino progresiva. A d em ás, el desfase n o es necesariam ente
p roporcional a la frecuencia, y esto distorsiona la form a d e la señal. En cu a n to a
la respuesta transitoria (frente a una en trad a c o n u n cam b io d e am plitud brus­
co), el filtro ideal sería aquél que respondiera in m ed iatam ente y sin rebasar la
am plitud final. Un filtro ideal en su respuesta en frecuencia tiene una respuesta
tem poral q u e dista m u ch o d e ser ideal.

m \i

Banda

re c h a z a d a

Figura 9.24 Respuesta en frecuencia de un filtro de paso bajo (a) ideal, y b) real

U n filtro se caracteriza en p rim er lu g a r p o r su o rd e n n . E n la b an d a re­


ch a z a d a, los filtros co m u n es ofrecen u n a aten u ació n q u e au m en ta e n 2 0 x n dB
p o r c a d a d é ca d a q u e au m en te la frecuencia. E n la b an d a d e transición , en
cam b io, la aten u ació n inicial d ep en d e d el tipo d e filtro, q u e recibe u n n o m ­
b re se g ú n el polinom io d el d en o m in ad o r d e s u resp u esta en frecuencia. Los
m á s co m u n e s so n los filtros d e B u tterw o rth , C h eb ish ev y Bessel. L o s filtros
d e B u tterw orth ofrecen una resp u esta m uy p lan a en la b an d a d e p aso . Los
filtros d e C hebishev ofrecen una m a y o r aten u ación en la banda d e transición,
p ero a co sta d e una resp u esta q u e d ista d e ser p lan a en la b an d a d e p aso , y un
d esfase m u y n o lineal. L o s filtros d e Bessel tienen u n d esfase casi lineal con
la frecuencia y n o reb asan la a m p litu d final cu a n d o se aplica u n escaló n a su
e n tra d a, p e ro tienen una m a y o r aten u ació n en la b an d a d e p a s o y una m en or
aten u ación en la b an d a d e transición.
300 — Microcontroladores PIC

L a elección del tipo d e filtro e s u n a resp onsabilid ad del d iseñ ad o r. U na


v ez d ecid id o , los fabricantes ofrecen p ro g ra m a s d e a y u d a p ara d e te rm in a r el
ord en e n fu n ció n d e la frecuencia d e co rte (-3 dB) e n la b an d a d e p aso , la fre­
cu en cia d e m u estreo y la relació n señ al a ru id o d esead a. P a ra realizar el filtro,
h a y v a rio s circu itos posibles, c u y o diseñ o es tam bién a u to m á tico m edian te
p ro g ra m a s c o m o F ilterW izard ® (A n alo g D evices), FilterC A D ® (L in ear T e ch ­
nology), Filterlab® (M icroch ip ), o F ilterP ro ® (T exas Instrum ents).

E je m p lo 9.7

D iseñar un filtro anti-alias para una señal q u e tiene un ancho d e banda (a -3 d B ) de 70 Hz, y una relación
señal a ruido d e 4 0 dB , cuando s e m uestrea a 1500 Hz, co n u n conve rtid or d e 12 bits.
Con la herram ienta “ A nti-A liasing W izard" d e Filterlab® . si se e lig e una frecuencia d e co rte del filtro de
70 H z (para n o m odificar la señal) y se introducen la frecuencia d e m uestreo, el núm ero de b its y la
relación d e seña l a ruido en la entrada, se obtiene com o respuesta u n filtro d e segu ndo orden, tip o But-
terw orth. que da una atenuación d e 4 1,3 d B a 750 H z (1500 Hz/2).
G rosso m odo, para q u e a la m itad d e la frecuencia d e m uestreo, la am plitud d e l ruido sea in ferio r a 1 LSB,
e n u n sistem a d e 12 b its hace falta que e l ruido e s té unos 72 dB por debajo d e la señal (supuesta con
am plitud d e fondo d e escala). D ado que a la entrada el ru id o ya está 4 0 dB p o r deb ajo d e la señal, hacen
falta 3 2 dB d e atenuación adicionales. Si la frecuencia d e corte s e tom a a 7 0 Hz, al cabo d e una década
(700 H z) se tendrá una atenuación d e 2 0 x n dB. Luego, debe se r n = 2, y a 750 H z se tendrá incluso
m ás atenuación que la m ínim a necesaria.

9 .2 .6 A m p lific a d o r d e m u e s tre o y re te n ció n

F.1 m u e stre o id eal d e u n a señ al co n siste en to m a r su v a lo r in stan tán eo


en un in stan te específico. F.n la p ráctica , to m ar una m u estra d e tensión lle­
va u n tiem p o finito, q u e d eb e ser suficientem ente b re v e p a ra q u e la incerti-
d u m b re e n el v alo r d e la ten sión m u estre a d a s e a im p ercep tib le p a ra el C A D .
El v a lo r m á x im o p erm itid o p a ra el tiem p o d e m u estreo es ta n to m á s b reve
cu a n to m ay o res sean la pen d ien te d e la señal m u e stre a d a y el n ú m e ro d e bits
del C A D .

E je m p lo 9.8

S e desea m uestrea r una señal sinusoidal d e 1kHz con un CAD d e 12 b its sin q u e la variación d e la señal
durante el tiem po d e m uestreo sea m ayor que el m á xim o error d e cu a n tifica d ó n . ¿C uál d e b e valer com o
m áxim o d icho tiem po según se m uestree en el pico o e n e l cruce p o r cero?
Si se tom a la m uestra cerca del valor d e pico, la cond ición es

A V = / l - / í s ¡ n [ | + 2 r t m) < 1 L S B = p

que lleva a
Las entradas y salidas analógicas. Adquisición y distribución de señales— 301

y + 2 / r f t r , >1.5395 rad

0,03125 s c
t < —---------= 5us
m 2 * ( 1 0 S) M

que es un tiem po relativam ente grande. Si e n cam bio se tom a la m uestra en el punto d e cruce p o r cero,
la derivada d e una tensión sinusoidal v(f) = A s\n(2nff) en d icho punto es 2n fA . Si se desea que el cam bio
de tensión A V durante un tiem po A t = (tiem po d e m uestreo), sea inferior a 1 LS B, se deberá cum plir

A l/ 1 LSB 2A

*m ‘m “ F

'” < ^ ( T k H Í ) = 7 '8 n s

que es un tiem po m uy breve.

Si el C A D tu viera q u e d igitalizar (cuan tificar y cod ificar) la en trad a en


un tiem p o ta n b reve c o m o el p erm itid o p a ra el m u estreo , la resolu ción posi­
ble sería m u y pobre. P o r esto, al C A D le p re ce d e un am p lificad o r d e m u e s­
treo y reten ció n (sa m p le a n d h o ld am plifier, S H A ), c u y a e stru ctu ra funcional
s e m u estra en la figu ra 9.25. Se p u ed e describir c o m o u n in te rru p to r que se
cie rra p ara c a rg a r un co n d en sad o r d e rete n ció n (C^) al v a lo r d e la tensión de
en tra d a , p reced id o d e un am p lificad o r seg u id o r, p ara ofrecer alta im p ed an ­
cia d e en trad a, y c o n un se g u id o r d e salid a, p ara n o d e s c a rg a r el co n d en sad o r
m ien tras d u re la co n v ersió n . Los co n v ertid o res q u e in tegran u n am p lificad or
de m u estreo y retención s e d en om in an , en inglés, sa m p lin g con verters.

C o n tro l SI H

Figura 9.25 Estructura funcional de un amplificador de muestreo y retención. En los SHA


integrados en microcontroladores no suele haber ninguno de los dos seguidores
de tensión.

C u a n d o el S H A está e n la fase d e m u estreo , id ealm en te d eb ería c o m ­


p o rta rse c o m o u n am p lificad o r d e g an an cia u n id ad . C u an d o está e n la fase
d e reten ción , la ten sió n en born es del co n d e n sa d o r d eb ería m an ten erse co n s­
tante; sin em b arg o , las corrien tes d e en tra d a del buffer d e salid a, y la s co rrie n ­
tes d e fuga d el in terru p to r y del p ro p io co n d e n sa d o r, lo v a n d escarg an d o
lentam ente. La v elocid ad d e d escarg a (droop rate) es
302 — Microcontroladores PIC

^ c . = jd _ (9.22)
dt C„

donde id es la corriente de descarga (resultado de todas las fugas). La descarga será


tanto m ás lenta cuanto m ayor sea CH.

E n la transición d e reten ció n a m u estre o , el co n d e n sa d o r ta rd a u n cierto


tiem p o en ca rg a rse al v alo r d e la tensión d e en tra d a , d en o m in ad o tiem p o d e
ad qu isición . Este tiem p o será tan to m ás b re v e cu a n to m e n o r s e a CH, p o r lo que
h ay u n co m p ro m iso en tre el tiem p o d e ad q u isició n y la v e lo cid a d d e d e sca r­
g a . Si el tiem p o d e co n v ersió n del C A D es suficientem ente b reve, este co m ­
p ro m iso se p u ed e reso lv er u tilizan d o el llam ad o m odo d e seg u im ien to y reten ­
ción (track a n d h old ): en lu g ar d e to m ar u n a m u estra ráp id am en te y reten er su
valor d u ra n te u n tiem p o relativam en te larg o , s e cie rra el in terru p to r d u ran te
u n tiem p o larg o que p erm ite al co n d en sad o r ca rg a rse y se g u ir las flu ctu acio­
n es d e la tensión d e en trad a; en u n in stan te d a d o , s e ab re el in terru p to r y se
digital iza la ten sión del co n d en sad o r d u ran te u n tiem p o relativ am en te breve.
El tiem p o q u e tard a el in terru p to r en ab rirse d e sd e q u e se d a la o rd e n hasta
q u e la tensión en el co n d en sad o r s e "d e sc o n e cta " d e la en trad a, se denom ina
tiem p o d e ap ertu ra, y con lleva u n a in certid u m b re en el instante e n q u e s e tom a
realm en te la m u estra, p o rq u e n o es u n tiem p o con stan te sino sujeto a flu ctu a­
ciones erráticas (y breves).

9.2 .7 C o n ve rtid o re s A/D

El co n v ertid o r A / D in tegrad o en los m icro co n tro lad o res, y la m ayor


parte d e los co n v ertid o res A / D periféricos, están b asad o s en el alg oritm o
d e ap ro xim acio n es su cesiv as (figura 9 .2 6 ): p rim e ro se co m p a ra la ten sión d e
en trad a (i>J c o n la m itad d e la tensión d e fon d o d e escala ( = V¡eí = 2 N * Q,
para u n C A D d e N bits); si vx > Vñ / 2 , el b it d e m á s p e so d e la salida (MSB)
del C A D s e p one a 1, y s e in crem en ta la tensión d e co m p a ra ció n e n Vpg/4;
si v x < V ^ /2 , se tom a M SB = 0, y la n u eva tensión d e co m p a ra ció n e s VFS/ 4 .
P ara decid ir el sigu iente b it s e p ro ced e d e fo rm a an áloga: si el resu ltad o d e
la se g u n d a co m p ara ció n es positivo (vx > Vcoinparador)/ el bit se p one a 1 ; en caso
co n trario , se p o n e a cero . El tercer nivel d e co m p a ra ció n será, resp ectivam en ­
te, el an terio r m ás o m enos VK/ S , y así su cesivam en te. vx d eb e p erm an ecer
co n sta n te d u ran te to d o el tiem p o d e co n v ersió n , q u e será tan to m á s largo
cu a n to m a y o r s e a N . Esos n iveles d e co m p aració n los obtiene u n co n v ertid o r
d igital-an alógico (C D A ) (a p a rta d o 9.6.1).
Las entradas y salidas analógicas. Adquisición y distribución de señales — 303

V fs/32

B u s d e salida
E n tra d a C D A 1 0 0 0 0 1 1 0 0 0 1 0 1 0 0 1 0 1 1 0 1 0 1 0 1
S a lid a C A D 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 1 0 0 1 0 1 0 1

Figu ra 9.26 Estructura funcional de un CAD de aproximaciones sucesivas, y proceso de deci­


sión del valor de los bits de salida. VFS: tensión de fon d o de escala.

L a relación en tre la ten sión d e en tra d a d el C A D , v ¿ y el có d ig o d e salida


D , q u ed a d escrita m ed ian te la característica d e tran sferen cia d e la figu ra 9.3.
M u ch o s co n v ertid o res se diseñ an co n d ich a característica d e sp la z a d a Q / 2
h a cia la izq uierda, tai c o m o se m u e stra e n la figu ra 9 .2 7 (línea a tra z o s); es
d ecir, los um brales d e transición d e u n có d ig o a o tro s o n ten siones m últiplo
d e Q / 2 , n o d e Q . E n realid ad , la tran sición d e u n có d ig o d e sa lid a a o tro n o se
p ro d u ce siem p re p a ra el m ism o v alo r d e la ten sión d e en tra d a , sino q u e unas
v e c e s s e p ro d u ce p a ra una tensión ligeram en te su p erio r y o tra s p a ra u n a ten­
sión ligeram en te inferior. El ran g o d e tensiones que llevan a u n m ism o cód igo
d e salid a se d en o m in a an ch u ra d e cód ig o (cod e zoidtli). C o m o u m bral d e transición
se to m a aq u ella ten sió n p a ra la que h ay una prob abilidad d el 5 0 % d e que la
tran sición se p ro d u z ca en una ten sión m a y o r o en u n a tensión m en o r. P ara
u n C A D ideal, la a n ch u ra d e có d ig o es 1 LSB p ara to d o s los cód igos, y la línea
que u n e los cen tro s d e los escalon es d e la característica d e tran sferen cia es
u n a recta d e pen d ien te u n idad q u e p asa p o r el origen.

E n u n C A D real, la linea a tra v é s del ce n tro d e los escalon es p u e d e p re­


se n ta r u n e rro r d e c e ro (offset) y u n e r ro r d e g an an cia (g ain error, f u l l scale
error). Si h ay u n e rro r d e cero , to d o s los um brales d e tran sición están despla­
z a d o s en el m ism o sen tid o y e n la m ism a m a g n itu d (figu ra 9.27íj). Si h ay u n
e rro r d e gan an cia, una v e z c o rre g id o el e rro r d e cero , resu lta q u e dicha línea
es una recta que n o tiene pen d ien te u n id ad (figu ra 9 .2 7b).

T am b ién p u ed e su ce d e r q u e la an ch u ra d e có d ig o cam b ie d e u n o a o tro


có d ig o , e n c u y o c a so se habla d e n o lin ealid ad diferetreial (D N L , d ifferen tial n on -
3 0 4 — Microcontroladores PIC

lin earity ). D N L se define c o m o la diferen cia en tre la a n ch u ra d e c a d a cód igo


y la a n ch u ra id eal (1 LSB), y p u ed e s e r p o sitiv a o negativa. Si p ara un cód igo
co n cre to , D N L = -1 LSB, quiere d ecir q u e o bien el có d ig o p reced en te n o se
o b serv a n u n ca, o bien D N L está esp ecificad a en u n as con d icion es extrem as
e n las que difícilm ente se o b serv aría el có d ig o p reced en te. El resu ltad o global
d e D N L es la d en o m in ad a no lin ea lid a d in teg ra l (in teg ral n on lin earity , IN L), que
es u n a m ed id a d e cu á n to s e a p arta la línea a través del ce n tro d e los escalones
d e la característica d e transferencia a ctu al resp ecto a la línea recta d e p en d ien ­
te u n id ad , u n a v ez se h an c o rre g id o los e rro re s d e c e ro y d e gan an cia, si los
hubiere. Si los erro res d e c e ro y d e g an an cia se co rrig e n m ed ian te calibración,
IN L es el factor q u e (junto co n la cu an tificación) lim ita la in certid u m b re sob re
el v a lo r d e la en trad a q u e h a d a d o lu g ar al có d ig o d e salid a ob servad o. Si no
h ay calibración, la in certid u m b re viene d e te rm in a d a p o r e l error absolu to, que
es la su m a d e los e rro re s d e ce ro , g an an cia y n o linealidad.

C ó d ig o i C ó d ig o A

(a) (b)

Figura 9.27 Característica de transferencia de un CAD que presenta (a) un error de cero, y (b)
un error de ganancia. La característica d e transferencia ideal es la línea gruesa a
trazos.

P ara las señales alternas es im p ortan te co n o cer cu án to ruido y distorsión


in trodu ce el C A D . E n u n C A D ideal, las m uestras d e salida reflejarían sólo el
ruido d e cuantificación, q u e es una form a d e describir la incertidum bre sobre el
v a lo r d e la tensión d e en trad a a partir del có d ig o d e salid a, debido a que todas
las tensiones del m ism o intervalo d e cuantificación p rod u cen el m ism o código.
Su valor eficaz es Q / V l2. El v alo r eficaz del ruido a la salida d e un C A D real
(m edido c o n un procedim iento estan d arizad o), e s m ay o r. S e define entonces el
n ú m ero d e bits efectiv o (E jfective N utnber o fR its , EN O B) co m o
Las entradas y salidas analógicas. Adquisición y distribución de señales — 305

CK, _ D ..R u id o CAD ..R u id o CA I) ., V j t t


ENOB = N - Ib---------r~r= — = N - l b —TT— - ------= lb — ,n
Q -JÍ2 / /r ? Ruido CAD (9 -23)
2NT

En gen eral, p a ra u n m ism o v alo r d e N , E N O B es m a y o r en u n C A D p e­


riférico q u e en u n o in teg rad o en el m icrocon trolad or.

L a con figu ración d e los term inales d e e n tra d a d e u n C A D se p u e d e des­


cribir co n los m ism o s térm in os em p lead o s p a ra los am p lificad o res (ap artad o
9.2.2), p ero aqu í d ich a con figu ración v a lig a d a al có d ig o digital d e salida. Si la
e n tra d a es asim étrica (sin g le-em ied in pu t) o seudodiferencial, só lo se adm iten
tensiones positivas y el có d ig o d e salida suele ser binario d irecto ( u n ipolar
s traig h t bin an /). Si la en tra d a e s diferencial, s e acep tan tensiones positivas y
n eg ativ as resp ecto a la ten sión d e m asa, y e l có d ig o d e salid a su ele s e r binario
co n com p lem en to a 2, p o rq u e e s m ás có m o d o para los cálcu lo s aritm éticos. El
ra n g o d e tensiones d e en trad a (fu ll-sca le in p u t ran g e, FSR) e s V ef si la en trad a
es asim étrica y 2 x Vrof si e s diferencial, p ero para u n n ú m e ro d e bits d eterm i­
n a d o N , el intervalo d e cu an tificació n tiene doble an ch u ra p ara u n a co n v erti­
d o r c o n en tra d a diferencial que p a ra u n o co n e n tra d a asim étrica.

Según (9.1), la salid a del C A D representa la relación (cociente) en tre la


tensión d e en trad a i?x y la tensión d e referencia Vref/ p o r lo que la incertidum -
bre q u e s e tenga en V t, p o r su tolerancia y sus variacion es con el tiem p o y la
tem p eratu ra, repercutirá directam ente en la salida. A h o ra bien, si la tensión de
en trad a (z\) proviene d e u n sensor d e resistencia variable alim entado co n una
tensión d e referencia, d e m od o que v x = x V iei, con x proporcional a la m agnitud
m edida, si s e em p lea la m ism a Vief p ara el sen sor y el C A D , la salida no depen­
d erá d e la in certid um bre d e V e(. S e h ab la entonces d e m edidas p o r relación, p o r
contraposición a las m ed id as resp ecto a u n a tensión d e referencia independien­
te, que se d en om in an m ed id as absolutas. P ero conviene reco rd ar que un C A D
siem pre m id e una relación d e tensiones, n u n ca tensiones absolutas.

9.3 El m ódulo d e conversión A /D d e 10 bits en los microcontroladores PIC

9.3.1 Arquitectura d el m ódulo de conversión A/D

L o s m icro co n tro lad o res P IC d e g a m a m e d ia tienen co n v ertid o res A /D


d e a p ro xim acio n es su cesiv as, n o rm alm en te d e 1 0 bits, c u y a e stru ctu ra in ter­
n a sim p lificad a se m u estra en la figu ra 9.28. Los co m p o n en tes prin cipales de
este m ó d u lo son:

• M ultiplexor an alógico d e h asta 8 canales d e entrada.


3 0 6 — Microcontroladores PIC

Am plificador d e m uestreo y retención (sin seguidor d e en trad a ni salida).

C on vertid o r A / D d e aproxim acion es sucesivas, d e 1 0 bits.

Registros p ara con tro lar el m ó d u lo (ADCONO y A D C O N 1) y p ara a lm a ­


ce n ar el resu ltad o d e la con versión A / D (A D RESH y A D RESL).

Vso

AN7

AN6

AN6

AN4
AN3

A N 2

AN1

AN O

P C F G 3 .P C F G 0

Figura 9.28 Bloques que componen el módulo de conversión A/D de 10 bits en los microcon­
troladores PIC d e gam a media. CAD: Convertidor A /D de aproximaciones sucesi­
vas, de 10 bits; SHA: amplificador de muestreo y retención; A M U X : multiplexor
analógico.

Este m ó d u lo puede ten er h asta o c h o e n tra d a s an alógicas, que están dis­


ponibles c o m o funciones altern ativ as d e los term inales d e los p u erto s p arale­
los. El n ú m e ro d e en trad as an aló g icas o can ales d e e n tra d a d ep en d e del PIC
en p articu lar. P o r ejem plo, el P IC 16F 873 tiene 5 en trad as an alógicas, disp on i­
bles en igu al n ú m e ro d e term inales del p u e rto paralelo A (RAO /ANO, R A I /
A N 1 , R A 2 /A N 2 /V R E F -, R A 3 /A N 3 /V R E F + y R A 5 /A N 4 ). E n los P IC que
tienen m ás d e cin co e n tra d a s an alógicas, c o m o el P ÍC 16F 874, q u e tiene ocho,
se utilizan tam bién tres term in ales del p u erto E para las e n tra d a s analógicas
A N 5, A N 6 y A N 7. L a selecció n del can al se realiza c o n los bits C H S 2:C H S0
del reg istro ADCONO.

El am p lificad or d e m u estreo y reten ció n e s tá co m p u e sto b ásicam en te


p o r u n co n d en sad o r (sin am p lificadores d e e n tra d a ni d e salida), q u e em p ie­
za a ca rg a rse e n cu a n to se seleccion a en el m u ltip lexo r el ca n a l d esead o . La
tensión e n el co n d e n sa d o r sig u e la ev o lu ció n d e la tensión d e en trad a (m od o
Las entradas y salidas analógicas. Adquisición y distribución de señales — 307

track), y cu a n d o s e d a u n a o rd e n el co n d e n sa d o r s e d esco n ecta d e la en trad a


an alógica y em p ieza la con versión .

El resu ltad o d e una co n v ersió n s e d ep o sita en los reg istro s A D R E S H y


A D R ESL. D en tro del esp acio d e 1 6 bits co n fo rm a d o p o r e s te p a r d e registros,
los 1 0 bits resu ltan tes d e u n a co n v ersió n se pu ed en d e p o sita r justificados " a
la izq u ierd a" o " a la d e re c h a ", c o m o m u e stra la figu ra 9.29. L a op ción d e d e­
p o sitar el resu ltad o justificado a la izq uierda (figu ra 9.29a) resu lta m u y ap ro ­
p ia d a p a ra o p e ra r el C A D c o m o un co n v e rtid o r d e 8 bits, c o n el re su lta d o de
la co n v ersió n e n el registro A D R ESH .

--------------- ADRESH --------------- ► j^ --------------- A D RESL ----------------►)


A D FM 7 6 5 « 3 2 1 0 7 6 5 * 3 2 1 0

(a)

A D FM r

m c
(b )

F igu ra 9.29 El resultado de una conversión A/D se puede leer en los registros ADRESH y
ADRESL, en un form ato qu e se especifica con el bit A D FM del registro ADCON1.
En (a) el bit A D FM = 1 y el resultado queda "justificado a la izquierda", por lo
que en A D R SH quedan los 8 bits más significativos de la conversión. En (b) el bit
A D FM = 0 y el resultado queda "justificado a la derecha", con los 8 bits menos
significativos en ADRSL.

L a ten sión d e referencia p a ra la co n v ersió n A / D p u e d e s e r la tensión


d e alim en tación d el m icro co n tro lad o r o u n a tensión extern a q u e se aplique
en tre los term in ales A N 3 /V R E F + y A N 2 /V R E F -. L a selección s e h a c e p o r
so ftw a re, c o n los bits P C F G 3:P C FG 0 del re g istro A D C O N 1. E n la o p ció n p o r
d efecto (es decir, la q u e s e tiene d esp u és d e u n a a cció n d e reset), la tensión d e
referencia s e tom a d e la alim en tación del m icro co n tro lad o r.

Las con v ersio n es A / D se realizan e n sin cro n ism o c o n u n a señal d e re ­


loj. Este reloj s e ob tien e o bien d el o scila d o r p rin cip al del m icro co n tro lad o r
m edian te u n d iv iso r p ro g ram ab le, o bien d e u n o scilad o r R C in tern o d e fre­
cu en cia fija, n o rep re se n ta d o en la figura 9.28. C o n los bits A D CS1 y ADCSO
del re g istro ADCONO s e seleccion a la fu en te del reloj y se p ro g ra m a el divisor
d e frecu en cia si la fu en te e s el o scilad o r prin cipal del m icro co n tro lad o r. P ara
q u e el C A D funcione m ien tras el m icro co n tro lad o r está e n el m o d o d e bajo
co n su m o (sleep), h a y q u e seleccio n ar el o scilad o r R C interno.
3 0 8 — Microcontroladores PIC

P ara in iciar u n a co n v ersió n A / D h ay q u e a c tiv a r el bit d e control GO.


C u an d o h a term in ad o la co n v ersió n , se activ a el b it d e e sta d o D O N E # . En
re alid a d , G O y D O N E # están realizad os en un m ism o bit: el b itG O /D O N E #
del reg istro ADCONO (figu ra 9.30). El p ro g ra m a d o r d eb e p o n e r a 1 este bit
p a r a in iciar u n a co n v ersió n A / D y cu a n d o este bit to m a el v a lo r 0, el resu l­
tado d e la con versión e s tá disponible en A D R ESH y A D R ESL. C u a n d o fina­
liza una co n v ersió n A /D , se activ a tam bién el bit A D IF del reg istro PIR para
solicitar in terru pción . Si el bit A D IE del reg istro P IE está activ o y el sistem a
d e in terrupción d el m icro co n tro lad o r e s tá habilitado (el b it GIE del registro
IN TO N e s 1), la solicitud d e in terru p ción s e h ace efectiva.

ADCONO
7 6 5 4 3 2 1 0

AD CS1 AO CSO C H S 2 C M S I CHSO G O / D IN E # - A D O N

ADCON1
7 6 5 4 3 2 1 0

A D FM - • - P C FG 3 P C FG 2 PCFG 1 P CFG O

Figura 9 3 0 Registros ADCONO y ADCON1 en un PIC.16FS73.

L a figura 9 .3 0 m u estra los bits q u e co m p o n e n los reg istro s d e funciones


especiales ADCONO y A D C O N 1 en un P IC 16F 873, co n los cu a le s s e co n tro la
la o p e ra ció n del m ó d u lo d e co n v ersió n A / D . En el reg istro ADCONO, el p ar
d e bits A D C S 1:ADCSO selecciona la fuente del reloj d el co n v e rtid o r A / D y su
frecuencia, segú n la tabla 9.1. L a en tra d a an alógica s e seleccion a co n los bits
C H S 2, C H S1 y CHSO. G O /D O N E # e s el b it d e c o n tro l/e s ta d o p a ra iniciar
u n a co n v ersió n A / D y co n o ce r si h a finalizado. El bit A D O N = 1 habilita el
fu n cion am ien to d el m ó d u lo d e co n v ersió n A / D del m icrocon trolad or.
T ab la 9.1 Selección de la fuente del reloj del convertidor A/l') y su frecueticia con los bits
AD CS1AD CS0 del registro ADCONO. Fa < es la frecuencia del oscilador princi­
pal del microcontrolador. La frecuencia del oscilador RC interno es fija y puede estar
entre los valores especificados en la tabla.

F recuencia del re lo j
ADCS1 .ADCSO Fuente d e reloj
del c o n v e rtid o r A/D
00 Oscilador principal
01 Oscilador principal
10 Oscilador principal F c J 32
11 Oscilador RC interno 167 kH z a 500 kHz

E n el reg istro A D C O N 1, el bit A D F M d eterm in a la justificación (a la


d e re ch a o a la izquierda) del resu ltad o d e la con versión A / D en los registros
A D R ESH y A D R ESL. L o s bits P C F G 3:P C FG 0 con figu ran los term in ales del
Las entradas y salidas analógicas. Adquisición y distribución de señales — 309

m icro co n tro lad o r u tilizad os p o r el m ó d u lo d e co n v ersió n A / D c o m o en tra ­


d a s an aló g icas d el m ó d u lo o c o m o term in ales d igitales d e los p u erto s p a ra ­
lelos corresp o n d ien tes. A m o d o d e ejem plo, la tabla 9 .2 m u estra los v alores
q u e to m an e sto s bits en u n P IC 16F 873. D esp u és d e u n reset, los bits PC FG 3:
PCFGO q u e d a n en el v a lo r 0, p o r lo q u e los term in ales R A 5, R A 4 ;R A 0 están
a sig n a d o s al m ó d u lo d e co n v ersió n A /D . P ara asig n ar estos term inales al
p u erto paralelo A, h ay q u e p ro g ra m a r la op ción co rre sp o n d ie n te en el regis­
tro A D C O N 1.
T a b la 9.2 Asignación de Junciones a los terminales d e entrada del puerto A en un PIC16F873
mediante los bits PCFG3:PCFG0 del registro ADCON1. A : entrada analógica,
D: entrada digital.

9 .3 .2 T iem p os d e u n a conversión A/D

L a d igitalización d e u n a señ al an alógica se realiza en d o s etap as sucesi­


v a s: el m u estreo y retención, q u e tiene lu g a r en el circu ito d e igual n o m b re, y
la co n v ersió n A / D . C ad a u n a d e estas e ta p a s d u ra u n tiem p o d eterm in ado.

En los P IC d e la g a m a m ed ia, el c o n d e n s a d o r d e re te n ció n e s d e 120 pF


y el tie m p o q u e d e m o ra su c a rg a es el tiem p o d e ad q u isició n (T ACQ). U n a v ez
tra n s c u rrid o este tie m p o p u ed e c o m e n z a r la co n v e rsió n en el co n v e rtid o r
A / D d e 1 0 b its, q u e d u ra un tie m p o TCONV (tiem p o d e co n v e rsió n ). L a figura
9 .3 1 m u e s tra e sto s tiem p os.

S eg ú n el fabricante, el tiem p o d e adq uisición e n los P IC d e g a m a m edia


está en tre 1 0 ms y 2 0 ms, es d ecir,

1 0 ms <; TACQ £ 2 0 ms (9.24)


310 — Microcontroladores PIC

Tm
T*cc Tccwv

T ie m p o

Tac
fig u ra 9.31 Tiempos relacionados con la digitalización de una señal analógica en el módulo de
conversión A/D. T : tiempo de adquisición, T4{): tiempo de conversión de un bit
en el convertidor A/D , TC0NV.' tiempo de conversión A /D de un dato, Tnic: tiempo
de digitalización. El tiempo de adquisición está entre 10 p s y 20 p s y depende en
gran medida de la resistencia d e salida de la fuente d e señal. El tiempo de conver­
sión de un bit debe ser mayor que 1,6 ps. El tiempo d e conversión de un dato de 10
bits es 11,5 veces el tiempo de conversión de un bit.

L a falta del se g u id o r d e ten sión d e en trad a m o stra d o e n la figu ra 9.25


h ace q u e TAty d ep en d a m u ch o d e la resistencia d e salida ( / y d e la fuente
d e señal. El fabrican te d e los P IC reco m ie n d a q u e Rs sea siem p re m e n o r que
1 0 kQ . Si K. = 10 kD , resu lta T = 20 g s, y p ara = 5 0 Q se obtiene T =
1 0 ns.

E n el co n v e rtid o r A / D d e 1 0 bits d e los PIC d e g a m a m ed ia, según el


fabricante, el tiem p o d e co n v ersió n es:

Tconv= 1 , 5 x Tad (9.25)

d o n d e TADe s el tiem p o d e co n v ersió n d e u n bit.

P ara la operación correcta del convertidor A /D , el fabricante recom ienda:

TAfí > 1 ,6 g s (9.26)

P ara TAD = 1,6 g s, el tiem p o d e co n v e rsió n A / D d e 1 0 bits es


T conv = 1 8 '4 MS-

El v alo r d e TAÜ e s igu al al p erío d o d el reloj d el co n v e rtid o r A / D . D ad o


q u e el reloj d e co n v ertid o r A / D se p u ed e ob ten er del o scilad o r prin cipal del
m icro co n tro lad o r (tabla 9.1), el v a lo r d e la frecu en cia d e este o scilad o r debe
establecerse d e m o d o q u e s e cu m p la la co n d ició n e x p re sa d a en (9 .2 6 ). L a ta­
bla 9 .3 señala el v a lo r m áxim o d e la frecu en cia del o scilad o r prin cipal del
m icro co n tro lad o r en las d iferentes con figu racion es posibles.
Las entradas y salidas analógicas. Adquisición y distribución de señales — 311

T a b la 9 .3 Valor (máximo) que debe tener la frecuencia (FQ.C) del oscilador principal del mi­
crocontrolador para que el tiempo de adquisición (mínimo) por bit (TAfJ sea de
1,6 ps, en las diferentes configuraciones.

AD CS1:AD C S0 en Fose
ADCONO (para T*,,® 1.6 ms)

00 1,25 MHz

01 W» 5 MHz

10 3 2 /r* 20 MHz
32'Fosc
11 2 p s a 6 ps - -

L a su m a d e los tiem p o s d e adquisición y co n v e rsió n co n stitu y e el tiem ­


p o d e digitalización (TD1G) d e la señal analógica,

T ^ = T ACQ+ T mm (9.27)
P u ed e calcu larse q u e, en los PIC , el m e n o r v a lo r d e T m . está en tre 2 0 ,4 jí s
y 3 8 ,4 ms.

Si una señal analógica se d igitaliza p erió d icam en te co n u n p erío d o


d en o m in ad o p erío d o d e m u estreo, la frecuencia d e m u estreo e s Fs = 1 / T S.
d eb e s e r m ay o r o igual q u e la d u ració n d el p ro ceso d e digitalización . Se re­
co m ie n d a esp e ra r un tiem p o igual a 2 TAD segu n d o s a n te s d e c o m e n z a r una
n u e v a con versión A /D . P o r tanto:

r ^ C r D,G+ 2 T AD) (9.28)


En términos d e la frecuencia d e muestreo, esta expresión se convierte en

F^ r l 1T (9.29)
D IG AD

E je m p lo 9.9

C álculo del tiem po de digitalización para una conversión A /D d e 10 b its en u n PIC 16F873 con un oscila­
d o r principal d e 4 MHz.
Si la frecuencia d e l oscilador principal es Fosc = 4 M H z, teniendo e n cuen ta la ta b la 9.3. se selecciona
la configuración dada por los b its A D C S 1:A D C S 0 = 01, con lo cual resulta Tm = 8/F0SC = 8 /(4 M H z) =
2,0 ms que cum ple co n la cond ición expresada e n (9.26). E l tiem po d e una conversión A /D de 10 b its es
entonces

7'coW = 1 l -5 x T 'W) = 1 1 '5 x 2 '0 lJ S = 2 3 Ms -


S i s e c o n s id e ra e l p e o r tie m p o d e a d q u is ic ió n , e s d e c ir, 7 ^ = 2 0 m s , q u e c o rre s p o n d e a l c a s o e n q u e la
re s is te n c ia d e s a lid a d e l s is te m a m e d id o s e a la m á s a lta p o s ib le (1 0 k O ), e l tie m p o d e m u e s tre o re s u l­
ta n te e s
312 — Microcontroladores PIC

Tm = Tk o + U = 2 0 MS + 2 3 MS = 4 3 MS
Si la conversión A /D se realiza periódicam ente, el m uestreo d e la seña l analógica debe hacerse a una
frecuencia m enor o igual que 1 /( r 3|G + 7 J Hz, de don de resulta que Fs < 2 2 222 Hz.
Si se considera e l m e jo r tiem po d e adquisición, es decir, TA03 = 10 p s, q u e corresponde al caso e n que la
resistencia d e salida d e l sistem a m edido sea d e 50 f i, el tiem po d e m uestreo resultante es
roic = TAco + rco™=1°MS + 23MS = 33MS
E n e stas condiciones, si la conversión A /D se realiza periódicam ente, la frecuencia d e m uestreo debe
se r in ferio r a 28 571 Hz.

9 .3 .3 Programación d el m ódulo d e conversión A/D

El m ó d u lo d e co n v ersió n A / D s e p u e d e a te n d e r u tilizan d o las técnicas


d e en trad a p o r co n su lta o esp era, o p o r in terru pción . Los p asos q u e h a y que
se g u ir p a r a m ed ir la tensión an alógica en u n can al d e en trad a son:

1. C on figu rar el m ó d u lo d e conversión A /D :

• C on figu rar los term inales d e los p u erto s A y C co m o en trad as analó­


gicas, referencias d e tensión, o en trad as o salidas digitales, colocan ­
d o los valores ap rop iad os en los bits P C FG 3.P C FG 0 d e A D C O N 1 y
en los registros TRISA y TR1SC.
• C on figu rar el form ato del resu ltad o d e la co n v ersió n A / D c o n el bit
A D FM d el registro A D C O N 1.
• Seleccionar la p roceden cia del reloj del m ód u lo d e con versión A /D
y el valor ap rop iad o del tiem p o d e con versión p o r bit (TAD) m edian­
te los bits A D C S1:A D C S0 d e ADCONO.
• Seleccionar el canal an alógico d e en trad a m ed ian te los bits CHS2:
C H S O de ADCONO.
• A ctiv ar el m ó d u lo A / D m ediante el bit A D O N del registro
ADCONO.

2. Si el m ód u lo s e atiende p o r interrupción, configu rar la interrupción del


m ód u lo d e conversión A /D .

• Poner a 0 el in dicador d e in terrupción del co n v ertid o r A / D, que es


el bit A D IF del registro P1R.
• H abilitar la in terrupción del con vertid or A /D , poniendo a 1 el bit
A D IE del registro PIE.
• 1 labilitar el sistem a d e interrupción del P IC , p onien do a 1 el bit GIE
del registro IN TCO N .
3. E sp e ra r el tiem p o d e adquisición (T A C Q ) requerido.
Las entradas y salidas analógicas. Adquisición y distribución d e señales — 313

4. C o m en zar la conversión A / D al p o n er e n 1 el bit G O /D O N E # del regis­


tro ADCONO.

5. E sp erar q u e se com p lete la con versión A / D:

• Si el tratam iento es por consulta o espera: cu and o el bit G O / DONE#


del registro ADCONO vaya a 0 o el bit ADIF del registro PER v ay a a 1.
• Si el tratam iento e s p o r interrupción: cu a n d o s e p ro d u ce la interrup­
ció n del con vertid or A /D .
6. L eer el resu ltad o d e la con versión e n los registros A D RESH y ADRESL.
Po n er el bit A D IF a 0 si fuese necesario.

7. P ara realizar o tra adquisición, ir a los p asos 1 ó 2 segú n p roced a. E sp erar


al m en os un tiem po igual a 2T A D antes d e co m e n z a r o tra adquisición.

El ejem plo 9 .1 0 m u e stra c ó m o p ro g ra m a r el m ó d u lo d e co n v ersió n A /D


p a ra ad q u irir señales an aló g icas utilizando la técn ica d e e n tra d a p o r esp era.

E je m p lo 9.10

P rogram ación del m ódulo d e conversión A /D en un PIC 16F873 con un oscilador principal d e 4 M H z, para
a dquirir la señal d e cualquiera de lo s 5 cana les analógicos d e entrada en este m icrocontrolador.
L a program ación consta básicam ente d e 3 partes:
1. E l bloque d e iniciación d e l m ó d u lo de conversión A ID , con etiqueta Inicio, que configura la s entra­
das del pu e rto A co m o analógicas y establece el form ato del resultado de la conversión A/D.
2. La rutina Canal, que configura la palabra que h a d e colocarse e n e l registro ADCONO, según el
canal que se desee medir.
3. L a rutina M ide, q u e recibe en W el núm ero del canal que se desea m edir y devuelve, tam bién
en W , el valor d e la m edición. Esta rutina le pasa a la rutina C anal e l núm ero del canal que se
desea m e d ir y obtiene d e e lla la palabra que se coloca e n el registro AD CO NO para term in ar así
la configuración del m ódulo d e conversión A/D , seleccionar el canal y com enzar su adquisición.
A continuación, hace una pausa acorde a l tiem po d e adquisición recom endado y una ve z trans­
currido este tiem po, inicia la conversión A /D a l pon er a 1 el bit G O /D O N E # de ADCO NO ; espera a
q u e este b it vaya a 0, lo cual ocurre cuando finaliza la conversión A /D , y entonces devuelve los 8
bits m ás significativos del resultado e n W.
A continuación, s e d a el listado del program a e n lenguaje ensam blador.
; E jem plo d e program ación d e l conversor A /D d e 1 0 bits.
¡F o s e = 4 M Hz

List p=16F873
include "P16F873.IN C "
AUX equ 0x2 0 ; Variable auxiliar.

o rg 0x 00
g oto Inicio
314 — Microcontroladores PIC

org 0x04
retfie

Inicio:
bsf STATUS, R P O ; S e leccionar banco 1.
movlw Oxff W con ffh.
m ovw f T R IS A PO RTA en entrada.
clrf ADCON1 Todas la s entradas d e PO R T A com o analógicas y
el resultado d e la conversión ju stifica d o a la izquierda.

A q u i va el program a principal.

R utina M ide:
Esta rutina realiza la conversión A /D d e 10 bits d e l canal analógico seleccionado.
L a rutina selecciona e l canal dese ado y espera a que el resultado esté listo e n los
registros A D R E S H y A D R E S L. D evuelve e n W lo s 8 bits m ás significativos d e la
conversión, es decir, el valor d e AD RESH.
La rutina sup o n e un tiem po d e conversión por bit Tad = 2 m icrosegundos y un reloj
principal d e 4 M H z en el PIC.
Entradas: e n W el núm ero d e l cana l a medir.
Salidas: e n W e l resultado, en 8 bits, d e la m edición.

M ide:
nop ; E sp e ra r 2Tad = 4 m icrosegundos
nop
nop
nop
bcf STATUS, RPO S eleccionar banco 0.
cali Canal S eleccionar la palabra que hay que depositar en
m ovwf ADCONO ADCONO, según el canal.
cali Dem IO us E sp e ra r un tiem po d e adquisición d e 10 m icrosegundos
bsf ADCONO, G O C om enzar la conversión A/D.
i.
btfsc ADCONO, G O Term inó la conversión?
goto Mide01 N o - se g u ir esperando.
m ovf ADRESH, W S i - pon er resultado en W.
b cf ADCONO, AD O N Inhabilitar el conve rtid or A/D.
retum Retom ar.

Rutina Canal.
E sta rutina recibe en W el núm ero d e l cana l y devuelve en W la palabra
q u e debe pon erse en ADCONO para habilitar el conve rtid or A /D , seleccionar un
cana l d e entrada y fija r el reloj d e l m ó d u lo d e conversión A/D .
El reloj d e l m ódulo d e conversión A /D ha sido fija do e n Fosc/8.
Si Fose = 4 M H z, entonces el tiem po d e conversión por bit es Tad = 2 m icrosegundos.
Las entradas y salidas analógicas. Adquisición y distribución d e señales — 315

Canal:
addw f P C L, f
retlw 41h ; Palabra para seleccionar el canal 0.
retlw 49h ; Palabra para seleccionar el canal 1.
retlw 51 h ; Palabra p a ra seleccionar el canal 2.
retlw 59h ; Palabra para se le ccio n a r el canal 3.
retlw 61h ; Palabra para se le ccio n a r el canal 4.

R utina D em IO us.
Esta rutina dem ora m ás d e 10 m icrosegundos.

D em IO us:
m ovlw .3
m ovw f AUX

decfsz AUX
goto Dem01
return
end

9 .4 Calibración
P a ra p o d e r in terp retar el có d ig o obtenido en la co n v e rsió n A / D e n tér­
m in o s d e ten sión d e e n tra d a , es n ecesario c o n o ce r la característica d e trans­
ferencia real d e la etap a frontal y del p ro p io co n v e rtid o r A /D . Idealm ente,
si se p rescin d e d e la cuan tificación , esta ca ra cte rística e s u n a línea recta cu y a
p en d ien te es la g an an cia del sistem a, d e m o d o q u e s e tiene

D = G X Vx + V0 (9.30)

E n la p ráctica, la característica real en un as con d icion es d eterm in ad as


(ten sión d e alim en tación, te m p eratu ra am b ien te, frecu en cia d e en trad a) p u e­
d e s e r u n a recta c o n p en d ien te distin ta d e G y o rd e n a d a en el orig en (offset)
distinta d e Vn (figu ra 9.32/7). P a r a d eterm in ar estos d o s p a rá m e tro s se puede
ap licar a la en trad a d o s ten siones V, y V2 co n o cid a s, y a p a rtir d e las lecturas
resp ectivas (D, y D ,), o b ten er la relación en tre cu a lq u ie r có d ig o D y la tensión
Vx q u e lo p rod u ce:

V- - ^ { n - D')+V ' (9-31)


E ste p ro ce so s e d en om in a calib ración y p erm ite co rre g ir las desviaciones
sistem áticas (con stantes) en tre la resp u esta ideal y la real. A m e n u d o , s e tom a
V, = 0 V, y V2 es la ten sión q u e p ro d u c e la ten sión a fon d o d e escala a la e n ­
316 — Microcontroladores PIC

tra d a d el co n v ertid o r, V ^ q u e si V0 = 0 V, será V2 = Vre/ G = Vrpi/ G . L a figura


9 .3 2 b m u e stra una form a d e realizar esta calib ración , válida cu a n d o las c o ­
rrien tes d e en tra d a d el m u ltip lexo r (o las resisten cias d e salid a d e los canales
m ed id os) so n suficientem ente pequeñas para q u e su repercu sión sea inferior
a 1 LSB. E n c a so co n trario , tan to en la con exión a m asa c o m o e n la salida del
g e n e ra d o r d e tensión d e referencia hay q u e incluir u n a resistencia igual a la
d e salid a d e los can ales m ed id os. O b sérv ese q u e só lo s e calib ra la p a rte del
sistem a e n tre los p u n to s d e ap licación d e las e n tra d a s co n o cid a s y la salida,
en el m o m en to d e a p licar las tensiones con o cid as.

Acondicionado*
;ionaoc*
Sonsor
de señal
eñal

AM UX

V^IG o
0 r-
■s

Figura 9.32 La calibración de un sistema de adquisición d e datos en dos puntos consiste en


aplicar dos tensiones conocidas (Vy V / para determinar la recta de transferenáa
real.

Si la característica d e transferencia es u n a recta d e pendiente m u y próxi­


m a a la cara cte rística ideal, p u ed e s e r suficiente un so lo p u n to d e calibración,
que su e le s e r V, = 0 V.

Si la resp u esta real del sistem a n o e s u n a línea recta, s e p u ed e d ivid ir el


ran go d e ten siones d e en tra d a en d o s o m ás in tervalos co n tig u o s (sub ran gos)
e n los q u e la característica d e transferencia real sea u n a recta, y calib rar en
c a d a u n o d e d ich os su brangos. A p artir d e una lectu ra D , h a y q u e d eterm in ar
p rim ero a q u é su b ran g o co rresp o n d e, y d esp u és ap licar la e cu a ció n resp ec­
tiva. L a p o sible n o linealidad d e la resp u esta se p u ed e d e te rm in a r ap licando
u n a ten sión co n o cid a Vy tal q u e V1 < V3 < V2: si el v a lo r obtenido al ap licar
(9.31) n o coin cid e c o n Vy la resp uesta n o es lineal.

9.5 Interfaces directas e n tre sensor y m icrocontrolador


L as señales an aló g icas c o n in fo rm ación e n s u d u ració n , n o en su a m ­
plitud, pu ed en s e r d igitalizad as m ed ian te u n sim p le te m p o riz a d o r (o c o n ta ­
d o r) digital, c o m o los disponibles e n m u ch o s m icro co n tro lad o res, siem p re y
c u a n d o su en tra d a sea del tip o S ch m itt T rig g er (ST). En c a so co n trario , h a y que
Las entradas y salidas analógicas. Adquisición y distribución d e señales — 317

p o n e r u n ST extern o . L a d u ra ció n d e la señ al s e d eterm in a c o n ta n d o ciclos del


reloj in tern o d esd e u n flanco d e la señal hasta el siguiente. Si los flancos n o
so n ab ru p to s y tienen su p erp u esto ru id o d e am p litu d m a y o r que el a n ch o d e
la banda d e h istéresis d el ST, el inicio y el final del co n te o se p u ed en p ro d u cir
en instantes errón eos.
P a ra in tro d u cir la in form ación en la d u ració n d e u n a señal, cu a n d o el
p u n to d e p a rtid a es un sen so r b asado en la variación d e u n a resisten cia, se
p u e d e em p lear el circu ito d e la figu ra 9.33: prim ero s e c a rg a el co n d e n sa d o r
co n la tensión d e salid a alta (" 1 " , VOH) d el term in al 1 , m ien tras se m antiene
el term inal P en esta d o d e alta im p ed an cia; d esp u és s e p one el term in al 1 en
esta d o d e alta im p ed an cia y el term inal P a 0 (VOL), co n lo cual C se d e sca rg a
a tra v é s d e R x. L a d u ració n d e la d escarg a (h asta V ^ ), d ete cta d a c o n el ST, es
prop orcion al al p ro d u cto R C , y d ep en d e tam bién cíe las tensiones d e salida
VOHy VJL. A u n q u e en p rin cip io se p o d ría a p lica r el m ism o m éto d o m id ien d o
los tiem p os d e c a rg a , está d e m o stra d o q u e el u m bral d e d etecció n "b ajo " del
S ch m itt T rig g er (V n ) e s m en os su scep tib le al ru id o q u e el u m bral d e d etección
"a lto " (Vm ).
P ara ten er u n resu ltad o in dependiente d e C y d e las tensiones V0|, y Vn ,
se p u ed e em p lear el circu ito d e calib ración d e la figu ra 9.34«, d o n d e Rcl y R ;
so n resistores conocidos. Se procede tres veces co m o en la figura 9.33, pero la
d escarg a se h ace c a d a v ez a trav és d e u n resistor distinto. L a resistencia d esco­
nocida s e p u ed e estim ar m edian te

(9 3 2 )

d o n d e N , N , y N 2 son los tiem pos d e descarga (en ciclos d e reloj) a través de,
respectivam ente, R^ Rcl y Rc2. U no d e los d o s resistores conocidos p u ed e ser un
cortocircuito, p ero es m ejor elegir valores próxim os a los valores extrem os d e Rt.

PnP ‘

MCU

Pin 1

Carga Descarga

Figura 9.33 M edida de un resistor desconocido a partir del tiempo necesario para descargar un
condensador. R.( limita la corriente de carga del condensadora menos de 20 mA.
318 — Microcontroladores PIC

Rc2
P in 4 AAAr
«d
P in 3 A A /V
M CU R,
P in 2 A A /V
R>
P in 1 - AAAr

T
(a)

Figura 9.34 (a) Si con el m étalo de. lafigura 9.33 se miden dos resistencias conocidas, se puede
determinar Rt sin conocer C ni las tensiones de salida del microcontrolador. (b)
Un puente de sensores se puede conectar como un circuito con tres tenninales de
entrada y uno de salida, y aplicarle el mismo método.

Si s e ap lica este m ism o m é to d o a un p u en te d e sen sores co n e cta d o tal


co m o se m u e stra en la figu ra 9.34b, si las lectu ras resp ectiv as al d e sca rg a r el
c o n d e n sa d o r a trav és d e c a d a term inal (d e 2 a 4 ), so n N , , N 2 y N y s e tiene

N ,-N 3 aR
(9.33)
N- "R o
E n la figu ra 9.34, el sen sor d e resistencia variab le y el pu ente d e sensores
están co n e cta d o s al m icro co n tro lad o r sin o tro elem en to q u e un con d en sad o r,
que no influye en el resu ltad o. Se habla en ton ces d e in terfa z d irecta, p o rq u e no
m ed ia ningún circu ito in teg rad o en tre el sen sor y el m icro co n tro lad o r. Los
m icro co n tro lad o res q u e in tegran u n co n v e rtid o r A / D d e reso lu ció n suficien­
te p a ra la ap licación p reten d id a, p u ed en co n e cta rse d irectam en te a sensores
d isp u esto s en circu ito s c u y a salida sea una ten sión, sin necesid ad d e am plifi­
c a rla ; p e ro si el sen sor e s un p u e n te d e resisten cias, la e n tra d a del co n v ertid o r
d eb e ser diferencial. E n la figura 9.34, basta q u e el m icro co n tro lad o r te n g a un
tem p o rizad o r, n o hace falta u n C A D .

El m éto d o d e la figura 9 .3 3 se p u ed e ap licar tam bién a sen sores basados


en una variación d e ca p a cid a d , in tercam b ian d o las p o sicio n es d e la resistencia
y el co n d en sad o r. El circu ito d e calib ración co rresp o n d ien te in cluye entonces
d o s co n d en sad o res co n o cid o s, u n o d e lo s cu ales p u e d e ser un circu ito abierto
(C = 0, figu ra 9.35). E n to n ces, en la fase d e c a rg a se c a rg a n las cap acid ad es
p arásitas en tre el nod o N y m asa, y en la fase d e d e sca rg a se d escarg a dicha
ca p a cid a d a tra v é s d e R . Si p a ra ten er u n tiem p o d e d e sca rg a suficientem ente
larg o , R se elige g ra n d e (m ás d e 1 M Q ), el circu ito será m u y suscep tib le a in­
terferencias, in cluso si las co n exio n es a C x son m u y co rtas.
Las entradas y salidas analógicas. Adquisición y distribución de señales — 319

Figu ra 9.35 M edida de un condensador desconocido a partir del tiempo necesario para des­
cargarlo a través de un resistor R. K limita la corriente de carga del condensador
a menos de. 20 rnA. Si con el mismo método se miden dos capacidades conoádas
(circuito abierto y C J, se puede determinar C sin conocer R ni las tensiones de
salida del microcontrolador.

E ste m éto d o d e m edid a d e resisten cias y ca p a cid a d e s vien e lim itado


p o r una p arte p o r la cuantificación al co n ta r (el re su lta d o só lo p u ed e ser un
m ú ltip lo en tero del ciclo d e reloj), y p o r o tra p a rte p o r la in certid u m b re en el
in stan te d e cru ce del u m bral d e d etecció n deb ida al ru id o su p erp u esto a la
ten sión d e d e sca rg a del co n d en sad o r o a la p ro p ia ten sión u m b ral, VTl.

L a cuantificación d ep en d e d e c ó m o se atienda a la d etecció n d el cru ce


del u m bral d el S ch m itt T rig g er (a p a rta d o 5.1.2). Si se h ace p o r co n su lta, puede
q u e la d etecció n o cu rra ju sto d esp u és d e h ab er co n su ltad o , co n lo cu al la in­
d eterm in ació n p u ed e ser d e en tre u n ciclo d e reloj y el n ú m e ro d e ciclos en tre
con su ltas. Si se atiende m ed ian te in terru p cion es, la in d eterm in ación p u ed e
ser d e en tre u n ciclo d e reloj y el n ú m e ro d e ciclos d e la in stru cción m ás larga,
cu y a ejecución d eb e a c a b a r an tes d e aten d er la in terru pción . Si se d isp o n e de
u n m ó d u lo d e ca p tu ra (a p a rta d o 6 .2 ), el v a lo r d el tem p o rizad or q u e va co n ­
ta n d o el tiem p o d e d escarg a, es ca p tu ra d o e n cu a n to s e d etecta e l cru ce del
u m bral VT!.

El efecto del ru id o e n el d isp aro d el S d in ü tt T rig g er d ep en d e d e la pen­


diente d e la señal: p ara una am p litu d d e ru id o d eterm in ad a, cu a n to m ás lenta
sea la señal, m a y o r será el e rro r en el tiem p o d e d isp a ro . P o r ello, si la cons­
tan te d e tiem p o del circu ito R C fo rm ad o e s g ra n d e (p a ra tener u n n ú m e ro de
cu e n ta s alto), la p en d ien te será m ás lenta y el e rro r a u m e n ta rá . P ero si la co n s­
tan te d e tiem p o e s m u y b reve, p ara ten er una pen d ien te alta, el n ú m e ro de
cu en tas obtenido será tam bién p eq u eñ o, y la cuantificación te n d rá u n m ayor
efecto relativ o. El valor óp tim o d e la con stan te d e tiem p o d ep en d e d el nivel
d e ru id o en el u m bral y en la señal. E n u n circu ito im p reso bien d iseñ ad o , y
co n la ten sión d e alim en tación d esaco p lad a , p u ed e e star en tre 1 m s y 3 m s,
320 — Microcontroladores PIC

y o b ten er u n a reso lu ció n d e 1 0 a 1 2 bits. Si p red o m in a el efecto d el ru id o , se


p u ed e m ejorar la resolu ción p ro m ed ian d o v a ria s lectu ras.

9.6 La e ta p a d e salida p ara salidas analógicas


P ara disp oner d e u n a señal d e salida analógica a partir d e los datos inter­
n o s del m icrocon trolad or, d eb e proced erse d e fo rm a inversa a c o m o se proced e
en la eta p a frontal: h ay q u e reconstruir una señal a partir d e su valor e n instan­
tes determ in ad os, y a veces h a y que su m in istrar o distribuir v arias señales a la
vez. Estas funciones las realiza la etapa d e salida (analog back end)

9.6.1 C o nvertidores D/A

Un co n v e rtid o r d igital-an alógico (C D A ) (figu ra 9 .3 6 a ), ofrece en c a d a


instante d e tiem p o una ten sión (o u n a corrien te) d e salida c u y a am p litu d c o ­
rre sp o n d e al có d ig o digital d e en trad a ( B ^ B ^ . - . B ^ ) , se g ú n fraccion es de
u n a ten sión d e referencia,

C a d a bit B. p u ed e v aler 1 ó 0 . L a fu n ción re alizad a es, p u es, el p ro d u cto


d e una ten sión an alógica ( V J f y u n có d ig o digital. L a figu ra 9.36b m u estra un
circu ito clásico p a ra realizarla: c a d a b it co n tro la (abre o cie rra ) u n in terru p to r
c u y a p o sición en la red R -2 R e s tá tan to m á s lejos d e la salid a cu a n to m a y o r
sea la significación (o p eso) d el bit. L o s co n v ertid o res D / A actuales, incluidos
los in tegrad o s e n m icro co n tro lad o res, s e re a liz a n c o n u n a red d e ca p a cid a d e s
(C -2 Q , q u e so n m ás fáciles d e in teg rar, y c u y o co n e x io n a d o es ligeram ente
distinto, p e ro q u e tiene el m ism o efecto final.

(< h h i R R R

0 1 1 o— MSB
1 1 1 o—
1 1 1 o—
1 0 1 c-— rnA
1 0 1 o— C D A
0 1 1 °—
1 0 1 °—
0 1 1 °—

F igu ra 9.36 Convertidor D/A: función y circuito clásico basado en una red de resistencias de
valor R y 2R.
Las entradas y salidas analógicas. Adquisición y distribución de señales — 321

L as características d e transferencia id eal y real d e u n C D A s e pueden


describir c o n los m ism o s p a rá m e tro s em p le a d o s p ara u n C A D (figu ra 9.27).

9.6.2 Desm ultiplexado analógico

P a ra ten er sim u ltán eam en te v arias señales an aló g icas d e salida, hay
co n v ertid o res D / A m ú ltiples d e hasta 1 6 can ales y 1 6 bits. P ero si la frecu en ­
cia d e las señales n o e s m u y a lta , s e p u ed e e m p le a r u n só lo C D A ráp id o y un
d esm u ltip lexo r an alógico , c o n función in versa a la d e los m u ltip lexores d e
e n tra d a (figu ras 9 .9 y 9.10). L a figura 9 .3 7 m u e stra la co n exió n : la ten sión d e
salid a co rresp o n d ien te a c a d a can al e s co n e cta d a al am p lificad o r d e m u estreo
y retención resp ectivo , ce rra n d o e l in terru p to r co rresp o n d ien te d el d esm ul­
tip lexo r. El co n d en sad o r d e reten ció n d e cad a can al d eb e s e r suficientem en­
te g ra n d e p ara n o d escarg arse d e form a ap reciab le hasta q u e s e refresq u e o
a ctu alice la ten sión d esd e el co n v ertid o r D / A , p e ro cu a n to m a y o r sea, m ás
ta rd a rá e n carg arse. L a desm u ltip lexación an a ló g ica se h a c e c o n los m ulti­
plexores d escritos e n el a p a rta d o 9 .2 .4 , pues, a diferencia d e los m ultiplexores
digitales, so n reversibles (figura 9.21).

Figu ra 9.37 Desmultiplexado analógico para obtener varias señales analógicas de salida cotí
un solo convertidor D/A.

9.6.3 M étodos d e extrapolación

L a ten sión d e salida d el co n v e rtid o r d igital-an alógico co rre sp o n d e al


có d ig o ap licad o a su en trad a en c a d a instante. Si el C D A tiene u n registro
d e en tra d a, su salid a p erm an ecerá co n sta n te h a sta q u e s e actu alice el valor
de d ich o registro. Del m ism o m o d o , si el C D A s e co n ecta b rev em en te a un
am p lificad o r d e m u estreo y reten ción , la salid a d e éste p erm an ecerá (ap ro xi­
3 2 2 — Microcontroladores PIC

m ad am en te) co n stan te h asta q u e s e m u e stre e o tra tensión. E n am b os ca so s se


dice q u e h ay una ex trap olación , o reten ción , d e o rd en cero, (zero-ord er h old , Z O H ),
p orq ue el v alo r d e la salid a se m an tien e co n sta n te hasta que llega o tro valor
d istinto. L a salid a tien e fo rm a d e señal escalo n ad a y si s e d e se a ob ten er una
form a ap aren tem en te lisa, h ay q u e actu aliz a r a m e n u d o el v a lo r d e la salida
(figura 9.38). El m ó d u lo d e la fu n ción d e transferencia d e la e x trap o lació n de
ord en c e ro es
7 -sirwrf T
N / ) |= K fl
(9.35)

d o n d e T e s el tiem p o q u e d u ra la retenc ón. A efectos p ráctico s, e s to significa,


p o r ejem plo, q u e p a ra q u e la a m p litu d d e u n a sinu soide d e a m p litu d A y fre­
c u e n c i a / n o difiera d e la sinu soide ''escalo n a d a " en m ás d e A / 2 10, el p erio d o
d e retención d eb e cu m p lir: f T < 41; es decir, q u e h a y q u e a p ro x im a r la sinus­
o id e m ed ian te 41 tram o s escalon ad os.

rig u ra 9.38 Efecto de Infrecuencia de las muestras de salida en la form a de onda de una señal
reconstruida cuando se emplea extrapolación de orden cero. Para que la forma de
onda reconstruida se aproxime suficientemente a la form a deseada, hay que pro­
porcionar un número de muestras elevado (izquierda). Si se sacan pocas muestras
por unidad de tiempo, la form a reconstruida dista mucho de la deseada (derecha).

9.6 .4 S alidas PWM

El nivel d e co n tin u a (v alo r m ed io ) d e un p u lso d e an ch u ra m o d u la­


da (figu ra 9 .3 9 ) d ep en d e d e la d u ració n relativ a del p u lso, o ciclo d e trabajo
(a p a rta d o 6 .2 .3 ), segú n
V o= (V 0n ~ V OL) ^ f ^ V DD^ L (9.36)

d o n d e T es el period o del p u lso. S e h a su p u esto q u e d u ra n te TON la salid a es


VDP y d u ra n te TOFF la salida es 0 V. En la p rá ctica , segú n el p ro ce sa d o r y la
co rrien te d e salid a (/OH, íOJ) , VOH p u ed e tener u n v a lo r m ín im o d e h a sta VDD -
0 ,7 V , y VOI un v alo r m áxim o d e hasta 0,6 V . En cu alq u ier ca so , aju stan d o el
ciclo d e trabajo se p u ed e ob ten er u n a tensión con tin u a d el nivel d e se a d o , con
u n a estabilidad que d ep en d erá d irectam en te d e la d e VDD. Si la co rrien te que
p u ed e d a r la p u erta d e salid a n o e s suficiente, s e p u e d e co n e cta r u n c o m p a ra ­
Las entradas y salidas analógicas. Adquisición y distribución d e señales — 323

d o r d e tensión en tre la salida P W M y el filtro d e p a s o bajo. P a ra ob ten er una


salid a d e m a y o r am p litu d , s e p u ed e em p lear u n co m p a ra d o r c o n salida d e
c o le cto r o d re n a d o r abierto.

¡Ton
V o n ------------
t
V0

V<x._

Figu ra 9.39 Una señal PWM se puede descomponer en una tensión continua y una tensión
rectangular sin nivel de continua, que a su vez se puede descomponer en varias
sinusoides armónicas, la primera con amplitud (VQH- Vo:)2/n.

Si la señal P W M s e filtra c o n u n filtro d e p a s o bajo d e p rim e r o rd e n y


frecuencia d e co rte la am p litu d , d e p ico a valle, del p rim e r a rm ó n ico a la
salid a d el filtro será
V = -V i»
K (9.37)
/
1 +¡
fe
L o s a rm ó n ico s d e o rd en su p e rio r tien en u n a a m p litu d q u e d ecrece co n
el cu a d ra d o d e su o rd e n , y su frirán u n a ate n u a ció n m ay o r. Si se d esea q u e el
riz a d o d e la salida d eb ido al p rim er arm ó n ico sea in ferior a 1 L S B /2*, e n un
sistem a d e N bits, la frecu en cia d e co rte del filtro d eb erá cum plir,

f 1 -2 5 /
r.<& 2 N* * - l 2 n** (9.38)

P o r ejem plo, si / = 2 0 k H z y N = 8 , p a ra q u e el riz a d o sea in ferior a Va


LSB, d eb erá s e r f < 25 ¡I z . IJn filtro activ o p erm ite o b ten er u n a m e n o r im p e­
d an cia d e salida q u e u n filtro p asiv o, p ero a ñ a d e u n a tensión d e offset a P 0
y lim ita los v a lo re s m á x im o y m ín im o d e V Qa los disponibles a la salid a del
am p lificad o r op eracion al.

A d e m á s del rizad o, tam bién la reso lu ció n e n TON(ATQN), q u e e s d e u n os


8 ó 1 0 bits e n los PIC d e g am a m ed ia (ap arta d o 6 .2 .3 ), lim itará la resolu ción en
V0. S e g ú n (9.36), & VQ se p u ed e h a c e r m á s p eq u eñ a a u m e n ta n d o T, p ero esto
con lleva la n ecesid ad d e red u cir la frecu en cia d e co rte del filtro d e p a s o bajo,
y p o r lo tan to , una resp u esta tran sito ria m á s len ta cu a n d o s e d esee cam b iar
d e u n v a lo r d e V0 a otro.
324 — Microcontroladores PIC

Si interesa obtener u n a tensión d e salida sinusoidal (con u n nivel d e conti­


nua su p erpu esto), basta q u e la m od u lad o ra d e la señal P W M tenga la frecuen­
c ia d eseada. A h ora bien, el filtro p aso bajo d e salida deberá s e r necesariam en te
activo y d e ord en 3 o su p erior si se desea u n riz a d o com patible co n u n sistem a
d e u n o s 8 bits o m ás. Si la m áxim a frecuencia disponible p ara la señal P W M es
de u n os 2 0 kH z, con este m éto d o s e pu ed en gen erar señales d e hasta 1 kH z,
válidas c o m o señales d e prueb a o para com unicación acústica.

9 .6 .5 P rotecciones de salida

L a tensión, c o rrie n te y potencia q u e p u ed en su m in istra r y so p o rta r los


term in ales d e salid a d e los m icro co n tro la d o re s está n lim itados a v alores re­
lativam en te bajos, del o rd en d e - 0 ,3 V a VDD+ 0 ,3 V, y ± 2 5 m A . E sto obli­
g a , p o r u n a p arte, a e m p le a r activ ad o res (d riv ers) p ara a ccio n a r las c a rg a s de
m a y o r p o ten cia, y p o r o tra p a rte a p ro te g e r d ich os term in ales fren te a sob re­
tensiones y sob recorrien tes. A h o ra bien, a diferencia d e las p roteccio n es d e
en tra d a , q u e deben d iseñ arse en función d el nivel d e protección q u e se d esee
obtener e n u n a situ ació n a n ó m a la (a p a rta d o 9.2.3), en la salid a p u ed en a p a re ­
c e r ten siones y co rrien tes p eligrosas en con d icion es ordinarias.

C u a n d o se in terru m p e el su m in istro d e co rrien te a u n a c a rg a in ducti­


v a , la ten dencia d e la c o rrie n te a segu ir circu la n d o p ro v o ca una diferencia
d e p o ten cial en tre los term in ales del in te rru p to r ab ierto, q u e p u e d e ser d e
v a ria s d ecen as d e v o ltio s incluso p ara co rrie n te s e in d u ctan cias pequeñas.
P ara e v itar d ich a tensión, s e p u ed e p o n er un d io d o (o u n v aristo r) co n e cta d o
segú n m u estra la figura 9 .4 0 a: al abrir el in te rru p to r (i.e., p a sa r d e 1 a 0 ), la
c o rrie n te q u e circu lab a p o r la bobina circu lará in icialm en te p o r el d io d o , y se
irá extinguiendo.

P ara las c a rg a s cap acitiv as, el p rob lem a es la co rrien te al con ectarlas,
p u es v ie n e lim itad a só lo p o r la resisten cia interna d e la fuente d e tensión.
L a solu ción es p o n er u n lim itad or d e co rrien te, tal c o m o una resisten cia con
coeficiente d e te m p eratu ra n eg ativ o (N T C ) (figu ra 9 A 0 b ): el e le v a d o v a lo r d e
esta resisten cia en frío (u n os 2 5 0 Ll c o m o m ín im o), lim ita la co rrien te inicial;
co n fo rm e s e v a calen tan d o , s u resisten cia d ism in u y e y p erm ite la c a rg a rápi­
d a d el co n d en sad o r.
Las entradas y salidas analógicas. Adquisición y distribución de señales — 325

Figura 9.40 Protecciones de salida al alimentar (a) una carga inductiva: limitación de ¡a ten­
sión, y (b) una carga capacitiva: limitación de la corriente. El interruptor rejne-
senta la acción de pasar de Oa l (cerrar) y d e ] a O (abrir) en la puerta de salida.
Bibliografía — 327

B ib lio g ra fía
[1] A n ó n im o , E D N 's 2 0 0 5 M icrop rocessor/M icrocon troller D irector}/. ED N .
A g o sto 5, 2004.

[2] A n ó n im o , E m b ed d ed C on trol H a n d b o o k U p d ate 2000. C h a n d le r (A Z ):


M icroch ip T ech n o lo g y , 1999.

[3] A n ó n im o , F u n dam en táis o fR S - 2 3 2 S erial C om m u n ication s. A pplication


N o te 83. D allas (T X ): D allas S em icon d u cto r.

[4] A n ón im o, M C S ® 5 1 M icro co n tro ller F am ily U ser's M an u al. S an ta C lara


(C A ): Intel, Feb rero 1994.

[5] A n ó n im o , M P L A B ® ID E user's g u id e. C h a n d le r (A Z ): M icrochip


T ech n o lo g y , 2005.

[6 ] A n ón im o, P 1C 16F87X D ata S h eet 2 8 /4 0 -P in 8 -B it C M O S F L A S H M i­


cro con tro ller s. C h an d ler (A Z ): M icroch ip T ech n ology, 2001.

[7] A n ó n im o , P iC m icro ™ M id -R an g e M C U F am ily R eferen ce M an u al.


C h an d ler (A Z ): M icrochip T ech n ology, D iciem bre 1 9 9 7 /D S 3 3 0 2 3 A .

[8 ] A n ón im o, T h e P C -b u s s p ed fic a tio n . V ersión 2 .1 . E in d h ov en : Philips


S e m ic o n d u c to r, E n ero 2000.

[9] B. Baker, A n ti-aliasin g, A n a/og Filters J b r D a ta A cq u isition System s.


A N 699. C h an d ler (A Z ): M icroch ip T ech n ology, 1999.

[10] F. P ard o C arp ió, E du -P IC : T arjeta d e d esa rro llo p a ra sistem as b asa d os en
PIC. M an u a l d el usuario, U n iv ersitat d e V alén cia, íhttp://tapec.uv.es/edu-
Gic), Julio 2002.

[11] F. R everter y R. Pallas A ren y, D irect S en so r-to-M icrocon troller ln terfa ce


C ircu its: D esig n a n d C haracterization . B arcelona: M arco m b o, 2005.

[12] F. V aldés P érez y A. Selva B arth elcm y, F u n d am en tos T écn icos d e C om ­


p u tación . L a H abana (C uba): E d ito rial ISPJA E, 1986.

[13] J. W h arto n , A n in tr o d u c ía n to the In tel9 M C S -5 1 ™ sin g le-ch ip m icro-


com p u ter fa m ily . A P -69. S an ta C la ra (C A ): Intel, 1980.

[14] J. A . G o n zá lez V ázq u ez, In trod u cción a lo s m icrocon trolad ores: h a rd w a re,
softw are y ap licacion es. M ad rid : M cG ra w -H ill/In te ra m e rica n a d e Es­
p aña, 1992.

[15] J. B. Peatm an , D esig n w ith m icro c o n tro llers. N u eva Y o rk : M cG raw Hill,
1988.
328 — Microcontroladores PIC

[16] J. B. P eatm an , D esign w ith P IC m icrocon trollers. U p p e r S ad d le R iver


(N J): P ren tice-H all, 1997.

[17] J. M . Irazab al, S. Blozis, P C M an u al. A N 1 0 2 1 6 -0 1 . Ein d h oven : Philips


S em ico n d u cto rs, M arzo 24, 2003.

[18] R. C rav o tta, T he 3 2 ^ a n n u al m icro p rocessor directory . E D N , A u g u s t 4,


2005.

[19] R. Pallas A ren y, A d q u isición y d istrib u ción d e señ ales. B arcelona: M ar-
co m b o , 1 9 9 3 , reim p resió n 2003.

[20] R. R ichey, H o w lo h n p lem en t IC S P ™ lls in g P 1C 16C X X X O T P M C U s.


C h an d ler (A Z ): M icroch ip Technology, 1999.

[21] S. B ow ling, U n d erstan d in g A /D C on v erter P erform a n ce S pecification s.


A N 6 9 3 . C h an d ler (A Z ): M icro ch ip T ech n o lo g y , 2002.
Anexo. Siglas y acrónim os utilizados en el libro — 329

A nexo. Siglas y acrónim os u tiliza d o s e n e l lib ro

A /D A n aló g ico /D ig ital.

ACC A ccu m u lator. A cu m u lad o r.

ADEM UX D esm u ltip lexor analógico.

A FE A n a lo g fr o n t en d . E tap a d e e n tra d a analógica.

ALU A rith m etic a n d L og ic U nit. U n id ad aritm ética y lógica.

AM UX M u ltip lexor analógico.

A m erica n S tan d ard C od e f o r In form ation In terch an g e. Códi-


A SCII g o am erican o n o rm alizad o p a ra el in tercam b io d e infor­
m ación.
IB M B in a ry S y n ch ro n o u s C om m u n ication s P rotocol. P ro to ­
B IS Y N C
co lo binario d e IBM p ara co m u n icacio n es sincrónicas.

BOR B row n - o u t R eset. R eset p o r fallo d e la alim entación.

CAD C o n v ertid o r anal ógico-d igi tal.

C C ITT C om ité Consultivo Internacional d e Telefonía y Telegrafía.

CCP C om p are/C ap tu re/P W M . C o m p a r a c ió n /C a p tu r a /P W M .

CDA C o n v ertid o r digital-analógico.

C EI C om isión E lectro técn ica Internacional.

C otn plex In stru ctio n S et C om p u ter. C o m p u ta d o r c o n re p e r­


CISC
to rio d e in stru ccion es com plejas.
3 3 0 — Microcontroladores PIC

CM C iclo d e m áquina.

PN/fOQ C o m p lem en ta n / M etal O x id e S em icon d u ctor. S em ico n d u c­


V_JVIvO
to r co m p lem en tario d e ó x id o d e m etal.
C om m on M o d e R ejection R atio. R elación d e re ch a z o del
CM RR
m o d o com ú n .

CPU C en tral P rocessing U nit. U n id ad central d e procesam iento.

C arrier Sen se, M ú ltip le A ccess w ith C ollision D etection . A c­


C S M A /C D ceso m últiple p o r d etecció n d e p o rta d o ra c o n d etecció n
d e colisión.
D ata C om m u n ication E q u ip m en t. E q u ip o d e com u n icación
D CE
d e datos.

DIP D u al In lin e P ackage. E n cap su lad o d e doble fila.

DMA D irect M em o ry A ccess. A cce so d irecto a m em oria.

DNL D ijferen tial N on L in earity . N o linealidad diferencial.

DR D yn am ic R ange. M argen o ran go dinám ico.

DSP D igital S ign al P rocessor. P ro ce sa d o r digital d e señales.

D TE D ata T erm in al E qu ipm en t. E q uip o term in al d e datos.

E lé c tr ic a 1 E r a sa b le P r o g r a m m a b le R ea d - O n ly M em o ry .
E E PR O M M e m o ria d e so lo le c tu ra q u e s e p r o g ra m a y b o rra e lé c ­
trica m e n te .

FÍA E le c tr o n ic In d u s tr ie s A s s o c ia tio n . A s o c ia c ió n d e In d u s ­
trias E le ctró n ic a s.

EN O B E q u iv a le n t N u m b e r o fB i t s . N ú m e ro d e bits e q u iv a le n te .

E r a s a b le P r o g r a m m a b le R e a d - O n ly M em o r y . M e m o ria
FP R O M
d e s o lo le c tu ra q u e s e p r o g ra m a y b o rra .

FIFO F ir s t In F ir s t O u t. P rim e ro e n e n tra r , p rim e ro e n salir.


Anexo. Siglas y acrónim os utilizados en el lib ro — 331

FPB F iltro d e p a s o b ajo, o filtro p asab ajas.

F ie ld P r o g r a m m a b le G a te A r r a y . M a triz d e p u e rta s p ro -
FPG A
g ra m a b le in situ . __________

FS F u ll S ca le. F o n d o d e e sca la .

F u ll S c a le (In p u t) R a n g e. V a lo r d e fo n d o d e e s c a la (d e
FSR
e n tra d a ). .__________________________________________
G lo b a l In te r r u p t E n a b le b it. Bit d e h a b ilita ció n g lo b a l d e
G IE
la s in te r r u p cio n es.________________________________________

G PR G en era l P u rp o se R eg ister. R eg istro d e p ro p ó s ito gen eral.

H ig h - le v e l D a ta L in k C o n tr o l. C o n tro l d e e n la ce d e alto
H D LC
n iv el d e d ato s.
In te r -ln te g r a te d C irc u it. B us p a r a c o n e c ta r c irc u ito s in ­
PC
te g r a d o s . ______________________
In -C ir c u it S e r ia l P r o g ra m m in g . P r o g ra m a c ió n " e n el c ir­
ICSP
c u ito " .

IN L In te g r a l N o n L in e a r ity . N o lin e a lid a d in tegral.

LCD L iq u id C r y s ta l D isp la y . P a n ta lla d e c rista l líq u id o.

LE D L ig h t E m ittin g D io d e. D io d o e m is o r d e lu z.

LIFO L a s t \n F irst O u t. Ú ltim o e n e n tra r , p rim e ro e n salir.

LSB l.e a s t S ig n ific a n t B it. B it m e n o s sig n ificativ o .

m ódem M o d u la t o r - d e m o d u la lo r . M o d u la d o r - d e s m o d u la d o r.

MOV M e t a l- O x id e resisto r. R e sisto r d e ó x id o m e tá lic o .

M PA SM M a cro e n s a m b la d o r p a r a lo s m ic ro c o n tr o la d o r e s PIC .

M SB M o s t S ig n ific a n t B it. B it m á s sig n ifica tiv o .


332 — Microcontroladores PIC

M5>SP M a s te r S y n c h r o n o u s S e r ia l P ort. P u e rto s e rie sin cró n ico


s e rv id o r.

x q -p N e g a tiv e T e m p e r a tu r e C o e ffic ie n t. C o e ficie n te d e te m p e ­


r a tu r a n e g a tiv o .
o ct O s c illa to r S ta r t - u p T im e r . T e m p o riz a d o r d e a rra n q u e
U b r __________ d el o scila d o r._________________________________________ ____

OTP O n e T im e P r o g ra m m a b le. P ro g ra m a b le u n a vez.

PC P ro g ra m C o u n te r . C o n ta d o r d e p ro g ra m a .

PCO N P o w e r C o n tro l. C o n tro l d e la a lim e n ta ció n

P r o g r a m m a b le In te g r a te d C irc u it. A c ró n im o d e P lC m i-
P IC e ro , n o m b re u tiliz a d o p o r M ic ro c h ip p a r a d e n o m in a r
___________________ s u s m ic ro c o n tro la d o re s.__________________________________
p> j- j P r o g r a m m a b le L o g ic D ev ice s . D isp o sitiv o s ló g ic o s p r o ­
g ram ab as.

PO R P o w e r - o n R eset. R e s e t p o r e n c e n d id o .

PSP P a r a lle l S la v e P ort. P u e rto p a ra le lo e scla v o .

,yyQ P o s itiv e T e m p e r a tu r e C o effic ien t. C o e ficie n te d e te m p e ­


r a tu r a p o sitiv o.

PW M P u lse W id th M o d u la tio n . M o d u la c ió n d e p u lso s e n a n ­


c h u ra .

P W rt P o w e r - u p T im er. T e m p o riz a d o r d e a rra n q u e d e e n c e n ­


d id o .

RAM R a n d o m A c c e s s M em o r y . M e m o ria d e a c c e s o a le a to rio .

RDD R e g is tro d e d ire c c io n e s d e d a to s.

RI R e g istro d e In stru cció n .

p, R e d u c e d In s tr u c tio n S e t C o m p u ter. C o m p u ta d o r c o n re ­
p e rto rio d e in stru cc io n e s re d u c id a s.

ROM R ea d O n ly M em o r y . M e m o ria d e s o lo le ctu ra .


Anexo. Siglas y acrónimos utilizados en el libro — 333

R S-232C R e c o m m e n d e d S ta n d a r d n ú m e ro 2 3 2 r e v is ió n C .

RTC R e a l T im e C lo ck . Reloj d e tie m p o real.

S e r ia l C o m m u n ic a tio n In terfa ce. In te rfa z d e c o m u n ic a ­


SCI c ió n se rie . N o m b re a lte rn a tiv o d el p u e rto U S A R T en
los m ic ro c o n tro la d o re s P IC .

SCL S e r ia l C lo ck U n e. L ín ea d e reloj d e l in te rfa z PC .

SD A S e r ia l D a ta L in e. L ín e a d e d a to s d e l in te rfa z PC .

S y n c h r o n o u s D ata L in k C o n tro l. C o n tro l d e e n la ce s in ­


SDI C
c ró n ic o d e d ato s.
S p e c ia l F u n c tio n R eg is te r . R e g istro d e fu n cio n e s e s p e ­
SFR
cia le s.

SI S iste m a In te rn a cio n a l d e U n id a d e s.

SP S ta c k P o in ter . P u n te ro d e la p ila.

SPI S e r ia l P erip h era l In terfa ce. In te rfa z s e rie p a ra p e rifé rico .

SPP S la v e P a r a lle l P ort. P u e rto p a ra le lo e scla v o .

SSP S y n c h r o n o u s S e r ia l P o r t P u e rto s e rie sin cró n ico .

ST S c h m itt T r ig g e r. D is p a ra d o r d e S ch m itt.

STA TU S R e g istro o b its d e e sta d o .

UIT U nión Internacional d e T elecom unicaciones.

í KJrtíx
A R T1 U n iversal S y n ch ro n o u s A sy n ch ro n o u s T ran sm itter R eceiver.
U
T ran sm iso r re ce p to r un iversal sin crón ico asincrónico.

USB U n iversal S erial B us. B us serie universal.

W W o rk in g R egister. R egistro d e trabajo.


334 — Microcontroladores PIC

WDT W atch d o g T im er. P erro gu ard ián .

XTAL C ristal.

ZO H Z ero -o rd er h o ld , R etención d e o rd e n cero .


índice alfabético — 335

ín d ic e a lfa b é tic o

$ [o p e ra d o r $], . . 1 1 4 ,1 3 0 ,1 3 2 ,1 3 4 B a n c o ,......................................... 6 8 , 69, 70


A c a r r e o , .................. 1 5 ,3 0 , 7 4 ,9 4 , 99 B anda d e p a s o , ................................299
A C C , v e r acu m u lad o r. B anda d e t r a n s i c i ó n , .....................2 9 9
A cce so d irecto a m em o ria, . . . 154 B anda r e c h a z a d a ,............................ 299
A ccu m u la to r, v e r acu m u lad o r. B an k, v e r banco.
A co n d icio n ad o r d e señal, . . . 2 7 6 B ase d e la p i l a ,...................................... 85
A co p lam ien to en altern a, . . . 282 B ase d e tiem p os, . . 200, 2 3 4 - 240
A co p lam ien to en con tin u a, . . 281 Biblioteca, . . . . 82, 1 3 6 , 1 4 5 - 1 4 7
A c tu a d o r ,.............................................. 275 Biestable a lm a ce n a d o r d e u n bit, .
A cu m u la d o r, 14 - 1 5 , 2 4 , 3 1 , 8 8 , 220 .................................................... 1 5 0 - 1 5 1

A islam ien to (g alván ico), . . . . 295 Biestable D 1atch , ................. 1 5 0 - 1 5 1

A lias, v e r señales falsas Bits d e con figu ración , . . . 36-37

A m p lificad or d e instru m en tación, B o rrad o d e la m e m o ria FL A S H , 60


................................................... 2 9 1 - 2 9 3 B us d e d a t o s , . 1 1 , 2 2 , 1 6 2 - 1 6 3 , 1 8 2
A m p lificad or d e m u estreo y reten ­ B us d e d i r e c c i o n e s ,................... 1 1 , 22
ción , 2 8 2 - 2 8 4 ,3 0 0 - 3 0 1 ,'3 0 6 ,3 2 1 Byte, v e r octeto.
A n ch o d e b an d a d e un circu ito, . . C alib ración , . . . 2 9 2 , 3 0 4 , 3 1 5 - 3 1 8
........................................... 281, 2 9 4 , 3 0 0
C ap a cid a d d e la m e m o r i a ,..............
A n ch o d e b an d a d e u n a s e ñ a l,. . . ........................................ 4 5 , 5 5 - 5 6 , 6 2
................................................... 2 8 0 ,2 8 4
C aracterística d e transferencia, . .
A n ch u ra d e c ó d i g o ,.........................303 . . . 2 7 7 - 2 7 8 ,3 0 3 - 3 0 4 , 3 1 5 - 316
A n id am ien to d e su b ru tin as, 87, 231 C a rg a cap acitiv a, 297, 3 1 7 - 3 1 8 , 325
A rch iv o h ex a d e cim a l,. . . 1 3 6 - 1 4 3 C a rg a in d u ctiva, ............... 3 2 4 - 3 2 5
A rith m e tic a n d L o g ic U n it (A L U ), v e r C en tral P ro cessin g U n it (C P U ), ver
u n id ad aritm ética y lógica. u n id ad cen tral d e procesam iento.
A te n u a d o r co m p en sad o en frecu en ­ Ciclo activ o , v e r ciclo d e trabajo.
c i a ,.........................................................2 8 7 C iclo d e i n s t r u c c i ó n ,.........................
A te n u a d o r d e ten sión alterna, ................................. 3 0 , 7 6 , 8 8 , 9 1 , 1 0 3
................................................... 2 8 6 - 2 8 7
C iclo d e m á q u in a ,..................... 3 2 - .34
A te n u a d o r d e ten sión con tin u a, C iclo d e trabajo, 210 - 2 1 5 ,2 7 8 ,3 2 2
................................................... 2 8 5 - 2 8 6
3 3 6 — Microcontroladores PIC

C iclo útil, v e r ciclo d e trabajo. C R M , v e r relació n d e rech azo del


C ircu ito s in tegrad o s m o d o com ú n .
in d e p e n d ie n te s ,...............................25 C u an tiflcación al co n tar, . . . . 319
C od e w id th , v e r an ch u ra d e cód igo. D latch, ver biestable a lm a ce n a d o r d e
C ó d ig o a b s o l u t o , ................................. u n bit.
...........................8 0 - 8 2 , 1 2 2 , 1 3 7 - 1 3 8 D ebou n ce, ver rebote.
C ó d ig o binario c o n com p lem en to D esb ord am ien to d e la pila, . . . 88
a 2, ..................................................... 305 D esm u ltiplexor an alógico , . . . 321
C ó d ig o binario d i r e c t o , 305 D e s p l a z a m i e n t o ,.................................
C ó d ig o d e o p e r a c i ó n , . . . . 82-83 ...................... 5 7 - 5 8 , 6 3 , 7 0 - 7 1 , 1 8 4
C ó d ig o relativo o relocalizab le, . . D iafonía e s t á t i c a , 2 9 7 - 298
8 0 - 81, D ijferen tial n o n lin earity , v e r n o linea-
115,121 - 1 2 2 , 1 3 0 - 1 3 1 , 1 3 8 - 1 3 9 lid ad diferencial.
C o m e n t a r i o ,....................................... 104 D ig ital S ig n al P ro cesso r (D SP), ver
C o m p le m en to a 2 , 1 1 0 , 1 4 0 , 1 9 3 , 305 p ro ce sa d o r digital d e señales.
C om u n icació n bidireccional n o si­ D irección d e u n a celda, . . 56-57
m u ltán ea, ...........................................262 D irección lógica, ...............................5 7
C om u n icació n bidireccional sim u ltá­ D ireccion am ien to d i r e c t o ,...............
nea, ..................................................... 259 . . 7 0 - 7 1 , 7 3 ,8 4 - 8 5 , 9 5 , 1 2 6 - 1 2 7
C o n d en sad o r d e reten ción , . . . . D ireccion am ien to in d irecto , . . . .
.............................................3 0 1 , 3 0 9 , 3 2 1 . 15, 6 9 , 7 0 - 73, 8 4 - 85, 9 1 , 9 3 , 1 2 7
C o n s ta n te s ,............................... 105 - 1 0 6 D ireccion am ien to in m ed iato , 8 4 - 85
C o n ta d o r d e p r o g r a m a , .................. D irect M em o ry A ccess (D M A ), ver
................................. 1 5 , 1 8 , 3 2 , 6 2 - 64, a cce so d ire cto a m em oria.
. .72, 8 6 - 8 7 , 9 5 , 2 2 0 , 2 2 4 , 2 2 9 , 2 3 1
D ir e c tiv a ,...................................103 - 1 0 4
C o n tro la d o r i n c r u s t a d o , 12
D isp lay ........................................1 4 9 , 1 7 7
C o n v e rtid o r an aló g ico -d ig ital,. . .
D roop rafe, ver velocidad d e descarga.
2 7 6 - 2 7 7 ,3 0 2 - 3 0 6 , 3 1 8
D u ty cy cle, ver ciclo d e trabajo.
C o n v e rtid o r d e ap ro xim acio n es su­
D ynarnic ran g e, v e r ra n g o dinám ico.
ce siv a s, ....................... 2 7 7 , 3 0 2 - 3 0 6
E /S por c o n s u lta , 153-154
C o n v e rtid o r digital-an alógico, . .
................................................... 3 2 0 ,3 2 1 E fecto d e c a rg a , . 2 8 7 - 2 9 0 , 2 9 4 ,2 9 6
C o n v ertid o r f la s h ,......................... 2 7 7 E ffectiv e n u m b er o fb it s , v e r n ú m ero
C ore, ver núcleo. d e bits efectivo.
E m bed d ed con troller, ver co n tro lad o r
C riterio d e N y q u ist, ..................... 282
in crustad o.
índice alfabético — 337

E n c a p s u la d o s ,......................................6 0 H a n d s h a k e , ...........................................151
E n l a z a d o r ,.................................... 8 1 - 8 2 In -C ircu it S erial P rog ram m in g (1CSP),
E n s a m b l a j e ,..........................................80 v e r p ro g ra m a ció n e n circuito.

E n tra d a asim étrica, . 2 8 9 - 2 9 1 , 3 0 5 I n c l u d e , ..................................... 1 1 9 - 1 2 0

E n trad a diferencial, . . . . 2 8 9 - 290 ¡nsertion loss, ver pérdidas p o r inserción

E n tra d a flotante, ............................ 290 In teg ral n on lin earity, v e r n o lineali­


d a d integral.
E n tra d a seu d od iferen cial, . . . 290
I n te r f e r e n c ia s ,................................... 295
E rro r d e c e r o , ...................... 303 - 304
Interrupción, [ E / S p o r], . . . . 154
E rro r d e d i s p a r o , ............................ 319
In terru p cio n es en m ascarab les, . .
E rro r d e g an an cia, . . . . 3 0 3 - 304
...........................................2 1 8 - 2 1 9 , 2 2 4
E ta p a an alógica fro n tal, 278
In terru p cio n es no e n m a sca ra b le s,.
E t i q u e t a , ..............................................104
.....................................................2 1 8 - 2 1 9
E x trap o lació n d e o rd e n ce ro , . 322
Intervalo d e cuan tificación , . . . .
Fases d e u n a in stru cción , . . . . 32 ......................................... 2 7 8 ,3 0 4 - 305
Fetch.............................................................32 Labei, ver etiqueta.
Filtro d e B e s s e l , ................................ 299 L im itad o r d e c o r r ie n te ,......................
Filtro d e B u t t e r w o r t h , 299 ............................. 2 9 3 - 2 9 4 , 3 2 4 - 3 2 5
Filtro d e C hebishev, ..................... 299 L im itador d e te n s ió n ,. . . 2 9 3 - 295
Filtro d e p aso b a j o , ............................. L in ker, v e r enlazador.
.............................. 2 9 8 - 2 9 9 ,3 2 3 - 324 lo n g itu d d e p a l a b r a ,........................55
F i l t r o , ........................................ 2 9 8 - 3 0 0 M acro, v e r m acroin stru cció n .
F recu en cia ce n tra l, 2 8 0 - 281 M a c ro in s tru c c ió n ,.................................
Frecu en cia d e c o r t e ,............................. .................. 1 0 4 , 1 2 7 - 1 3 0 , 1 3 5 - 1 3 6
...................... 2 9 2 - 2 9 3 , 2 9 5 , 3 0 0 , 3 2 3 M arg en d in ám ico, 2 7 8 - 2 7 9 , 289, 2 9 2
F recu en cia d e m u e s t r e o ,.................. M a sk a b le in terru pts, v e r in terru p cio­
...................... 2 8 2 , 2 9 8 , 3 0 0 , 3 1 1 - 3 1 2 nes enm ascarables.
F u e n te d e a l i m e n t a c i ó n ,.................. M a s te r - slav e, v e r se rv id o r - cliente.
................................. 1 3 , 3 8 , 4 0 - 4 2 ,2 9 0 T érm in os u tilizad os p a ra d en o tar
F u ll d ú p lex, v e r co m u n icació n asin­ relacion es d e su b o rd in ació n entre
cró n ica bidireccional sim ultánea. d o s disp ositivos. E n castellan o se
F u ll scale error, v e r e rro r d e ganancia. utilizan los térm in os a m o - escla­
vo, m a e stro - seg u id o r, p rin cip al
G a in error, v e r e rro r d e ganancia.
- su b o rd in ad o, serv id o r - cliente.
H a lf d ú p lex , v e r co m u n icació n bidi­
M ed id as a b s o l u t a s ,.........................305
reccional n o sim ultánea.
M ed id as p o r r e l a c i ó n , 305
338 — Microcontroladores PIC

M em oria d e d ato s, . 2 2 - 2 4 , 2 9 - 30 P alabra d e con fig u ración , v e r bits d e


M em oria d e lectu ra y escritu ra, . . configuración.
....................................................15, 2 2 , 5 9 P érd id as p o r in s e r c ió n ,................. 296
M em oria d e p r o g r a m a ,. 2 2 , 2 9 - 30 P eriférico , ............................. 1 4 9 ,1 6 4
M em oria n o volátil, . . 1 6 , 36, 60, 75 Period o d e m u estreo , . . . 311 - 312
M ic ro c o n tro la d o r,...............................12 P ipelin e, v e r seg m en tad o .
M od elo d e p ro g ram ació n , . 8 8 - 8 9 P ollin g, v e r E / S p o r consulta.
M ód em , ................................. 2 5 1 - 2 5 3 P ort, v e r puerto.
M od em , ver m ód em . P o s t -d i v is o r ,...........................................
M u estreo en tiem p o r e a l , . . . . 282 . . . . 4 4 , 1 8 9 - 1 9 0 , 1 9 2 , 1 9 9 - 201

M u e stre o rep etitivo secu encial, 282 P ostscaler, v e r p ost-d ivisor.

M u ltip lexor a n a l ó g i c o ,...................... P ow er-on R eset (PO R ), ver reset p o r


.................. 2 8 3 , 2 9 6 - 2 9 8 , 3 0 5 - 3 0 6 en cend ido.

N o linealidad diferencial, 3 0 3 - 304 P ow er-u p T im er (P W R T ), v e r tem p o­


riz a d o r d e a rran q u e d e en cend ido.
N o linealidad i n t e g r a l , 304
P re -d iv is o r,...............................................
N on-trtaskable in terru pts, v e r in terru p ­
. . 7 4 - 7 5 , 1 0 3 , 1 8 9 - 2 0 2 ,2 0 5 - 207,
ciones n o enm ascarables.
. . . . 209,213-215,235,237,241
N ú c l e o ,................................. 2 4 - 2 7 , 7 2
P rescaler, v e r p re-d ivisor.
N u il m odem , .......................... 2 5 2 - 253
P ro ce sa d o r digital d e señales, 2 6 - 2 7
N ú m e ro d e bits e f e c t iv o ,..................
P ro fu n d id ad d e la p i l a ,.................... 86
................................................... 3 0 4 - 3 0 5
P rogram C ou n ter (P C ), v e r co n ta d o r
O c t e t o , .................................................... 55
d e p ro g ram a.
O ffset, ver d esp lazam iento.
P ro g ra m a f u e n t e , ......................8 0 - 8 1
O p eran d os, . . . .8 2 -8 3 ,1 0 5 ,1 1 5
P ro g ra m a o b j e t o , ......................8 0 - 8 2
O rgan ización L IFO d e la pila, . . .
P ro g ram ació n e n circu ito, . 3 0 , 1 6 0
............................................... 8 5 , 8 7 , 230
P ro to co lo d e com u n icació n , . . 248
O scilad o r d e cristal, 1 4 , 3 4 - 3 5 , 1 9 7
P u en te d e s e n s o r e s ,........................ 3 1 8
O scilad o r e x te rn o , ................... 34, 36
P u erto........................................... 1 4 9 - 1 5 0
O scila d o r RC, 3 4 -3 6 ,3 9 ,3 0 7 -3 0 8
P u lT u p , 1 5 9 - 1 6 0 , 1 6 6 , 1 7 2 - 1 7 3 , 254
O scillator S tart-u p T im er (O ST), ver
te m p o riz a d o r d e arran q u e del os­ P u n tero d e la p i l a , . . 1 4 - 1 5 , 3 0 , 8 6
cilador. R an g o d in ám ico, 2 7 8 - 2 7 9 , 2 8 9 , 292
P ág in as d e la m em o ria, .................. R eal T im e C lo ck (R T C ), v e r reloj de
4 5 , 4 7 , 5 6 - 5 8 ,6 2 , 64, 6 8 , 8 4 , 9 5 - 9 6 tiem p o real.
R e b o te , 166 - 1 6 8 , 1 7 0 , 1 7 6
Indice alfabético — 339

R e c o r d , .................................................. 140 Señal d e b an d a e s t r e c h a ,..................


R efrescam ien to, . . . . 5 9 , 1 7 7 - 1 7 9 ........................................ 2 8 0 - 2 8 1 , 2 9 2

R egistros d e fu nciones especiales, Señal d iferencial,. . . 2 8 9 - 2 9 1 , 2 9 6


............................. 2 9 , 6 8 - 7 0 , 7 2 , 1 0 7 Señal f l o t a n t e ,................................... 289
R elación d e re ch a z o del m o d o co­ S eñ al P W M , 2 0 3 , 2 1 0 - 2 1 3 , 3 2 3 - 324
m ú n , ..................................................292 Señal seudodiferencial, . . 2 8 9 - 291
Reloj d e tiem p o r e a l , ......................... Señales f a l s a s , 2 8 2 ,2 9 8 ,3 0 0
.................. 1 9 7 , 2 3 4 - 2 3 7 , 2 3 9 - 241
S erv id o r - c l i e n t e ,.................................
R eset p o r e n c e n d i d o ,......................... . 2 5 3 - 2 5 4 , 2 5 8 ,2 6 2 , 265 - 2 6 6 , 270
................................. 1 8 , 3 6 , 3 9 - 4 2 , 7 4
Sím bolos, 5 6 , 1 0 6 - 1 0 7 , 1 1 1 , 1 1 3 , 1 2 4
R esolu ción d e la señal P W M , . . .
S in g le-en d ed in p u t, v e r e n tra d a asi­
...........................................2 1 1 , 2 1 3 - 2 1 4
m étrica.
R e s o lu c ió n ,.............................. 2 7 8 - 280
S in g le-en d ed sig n al, ver señ al asim é­
R eten ción d e o r d e n c e ro , . . . . 3 2 2 trica.
R uido d e cuantificación, . . . . 304 Sistem a d e ad q u isició n d e d a to s d e
Ruido, .................. 2 7 9 , 3 0 0 , 3 1 7 , 3 1 9 alto n i v e l ,............................. 2 8 3 - 284
S am p le a n d h o ld a m p lifier, v e r am plifi­ Sistem a d e adq uisición d e d a to s de
c a d o r d e m u estreo y retención. bajo n iv e l,............................. 2 8 3 - 284
S atn plin g c o n v er te r,............................ 301 Sistem a d e n u m eració n h e xad eci­
S ch m itt t r i g g e r ,........................................ mal, . . . . 5 6 , 1 0 5 - 1 0 6 , 1 1 6 - 1 1 8
156 - 1 5 8 , 1 6 1 - 162, 3 1 6 - 317, 3 1 9 S la c k P o in ter (SP), v e r pu n tero d e la
Sección l ó g i c a ,........................ 1 4 3 - 1 4 4 pila.

S e g m e n ta d o ,...................... 2 9 , 3 2 - 34 S tan d -alon e d ev ices, ver circu ito s inte­


g ra d o s independientes
Segu im ien to y r e t e n c i ó n , . . . . 302
Static. crosstalk, ver d iafon ía estática.
Sen sor c a s id ig ita l,............................2 7 8
S u b ru tin a q u e atien d e a u n a inte­
S en so r d e ca p a cid a d variable, . 318
rru p ción , ............................. 2 2 0 - 2 2 1
S en so r resistivo, . . . 3 0 5 , 3 1 7 - 3 1 8
T am añ o d e las in strucciones, . . .
S e n s o r , ..................................... 2 7 5 - 277
.................................................. 2 9 , 4 5 , 88
Señal alterna, 2 8 1 , 2 8 6 - 2 8 7 , 2 9 8 ,3 0 4
T e m p o riz a d o r d e a rran q u e d e en ­
Señal a n a l ó g i c a ,.................................... ce n d id o , ....................................3 9 - 4 2
1 2 , 2 7 5 - 2 7 6 , 2 9 5 , 3 0 9 - 3 1 2 , 3 1 6 , 321
T em p o rizad o r d e a rran q u e del osci­
Señal asim étrica, . . 289 - 291,296 lad o r, ........................................... 3 9 - 4 0
Señal co n tin u a, . . . 2 8 1 , 2 8 5 - 287 T ensión d e o f f s e t , 2 9 1 ,3 2 3
Señal d e b an d a a n c h a , ...................... T ensión d e r e f e r e n c i a ,......................
280 - 2 8 1 ,2 8 7 ,2 9 2 . 1 5 9 , 2 7 6 - 277, 305, 3 0 7 , 3 1 6 , 320
340 — Microcontroladores PIC

T e rm isto r P T C , ................................294
T h ro u g h p u t rate, ver v elocid ad d e
co n m u ta ció n m áxim a.
T iem p o d e a d q u i s i c i ó n ,..................
........................................ 3 0 2 , 3 0 9 - 3 1 4
T iem p o d e a p e r t u r a , .....................3 0 2
T iem p o d e co n m u tació n , 2 9 7 - 298
T iem p o d e c o n v e r s ió n ,......................
.................................30 2 , 3 0 9 - 3 1 2 , 314
T iem p o d e esp era, . 1 6 7 , 2 4 3 - 245
T iem p o d e establecim ien to, . . . .
................................................4 0 - 4 1 , 2 9 8
T iem p o d e laten cia, . . . . 2 2 4 - 225
T im e-ou t, v e r tiem p o d e esp era.
T op e d e la p i l a , ......................... 6 4 ,8 6
T o t e r n - p o le ,............................... 1 5 5 - 1 5 6
T rack a n d h o ld , ver segu im ien to y re­
tención.
U m b ral d e transición , ................. 303
U n id ad aritm ética y ló g ica, . . . .
.................................1 2 , 1 4 - 1 5 , 3 0 - 31
U n id a d cen tral d e procesam ien to,
...................... 1 1 - 1 2 , 1 4 - 1 5 , 2 0 - 2 5 ,
. 3 0 , 3 2 , 4 3 , 4 8 , 1 5 3 - 1 5 4 , 2 1 8 - 222
V aristo r d e ó x id o m etálico , . . 294
V elocidad d e con m u tación
m á x i m a , .......................................... 298
V elocidad d e d escarg a, . . 301 - 3 0 2
V elocid ad d e tr a n s m is ió n ,...............
2 4 7 - 2 4 8 , 2 5 8 , 2 6 0 , 2 6 3 - 264
Z ero -o rd er hold , v e r reten ció n d e o r­
d en cero .
L o s m ic r o c o n tr o la d o r e s e s t á n p r e s e n t e s e n m u c h o s d e lo s p r o d u c t o s e le c tr ó n ic o s q u e e m p le a ­
m o s e n n u e s t r a v i d a c o t i d i a n a . S u e n s e ñ a n z a e s u n r e t o d e b i d o a la v a r ie d a d d e m o d e l o s
e x is t e n t e s e n e l m e r c a d o y a la g r a n c a n tid a d d e a p l ic a c i o n e s p o s ib le s . S i n e m b a r g o , a p e s a r
d e su d iv e r s id a d , h a y u n id a d e n lo s p r in c ip io s d e fu n c io n a m ie n to y la s a r q u ite c tu r a s d e
m u c h o s m ic r o c o n t r o la d o r e s . E s t e l ib r o a p r o v e c h a e s a u n id a d p r e s e n t e e n la d iv e r s i d a d p a r a
m o s t r a r l o s f u n d a m e n t o s d e l d is e ñ o y la p r o g r a m a c i ó n d e l o s m ic r o c o n t r o la d o r e s .

E l o b je t iv o d e l lib r o e s e n s e ñ a r la a r q u ite c tu r a y la p r o g r a m a c i ó n d e l o s m ic r o c o n t r o la d o r e s
e n g e n e r a l, t o m a n d o c o m o e je m p l o s l o s m i c r o c o n t r o la d o r e s P I C d e M ic r o c h ip . L a d o c u m e n ­
ta c ió n q u e o f r e c e n l o s fa b r ic a n te s e s ta n a b u n d a n t e q u e s u m e r o a c o p io o c u p a r ía v a r io s v o lú ­
m e n e s . E n e s t e l ib r o s e h a n s e l e c c i o n a d o l o s t e m a s d e f o r m a f u n d a m e n t a d a , b u s c a n d o e l
r i g o r e n la s d e s c r i p c i o n e s y la c l a r i d a d e n la e x p o s i c i ó n d e l o s c o n c e p t o s . S e h a n i n c lu id o
fig u r a s q u e c o m p le m e n t a n e l te x to d e f o r m a s u s t a n c i a l , e v i t a n d o f o t o g r a f ía s u o t r o m a te r ia l
g r á f i c o q u e a u m e n t a e l n ú m e r o d e p á g in a s p e r o a p o r ta p o c a in f o r m a c ió n ú til.

C a d a t e m a e s t r a t a d o c o n u n e n f o q u e q u e v a d e lo g e n e r a l a l o p a r t ic u la r . P r im e r o s e e x p l i ­
c a n la s c u e s tio n e s p r o p ia s d e l te m a q u e s o n c o m u n e s a la m a y o r ía d e lo s m ic r o c o n tr o la ­
d o r e s , y s e g u id a m e n t e s e p a r t ic u la r iz a p a r a l o s m ic r o c o n tr o la d o r e s P IC . L a s e x p l i c a c io n e s s e
ilu s tr a n c o n e je m p l o s p r á c t ic o s . E n n u e v e c a p ít u lo s s e e x p l i c a n la e s t r u c t u r a y c o m p o n e n t e s
d e lo s m ic r o c o n tr o la d o r e s , y e n p a r tic u la r : l a m e m o r ia , la e n t r a d a y s a lid a p a r a le la s , e l r e p e r ­
to r io d e i n s t r u c c i o n e s y la p r o g r a m a c i ó n e n l e n g u a je e n s a m b l a d o r , l o s t e m p o r iz a d o r e s , la s
i n t e r r u p c i o n e s , la e n t r a d a y s a l i d a s e r i e y la a d q u i s i c i ó n y d i s t r i b u c i ó n d e s e ñ a l e s c o n la s
e n t r a d a s y s a l i d a s a n a ló g ic a s .

E l l ib r o e s t á d i r i g i d o e s p e c i a l m e n t e a e s t u d i a n t e s y a p r o f e s i o n a l e s d e la e le c t r ó n ic a , p e r o
t a m b ié n r e s u lta r á ú til a l o s le c to r e s in te r e s a d o s e n c o n o c e r e l f a s c in a n te m u n d o d e l o s m ic r o ­
c o n t r o l a d o r e s , e n p a r t ic u la r d e l o s P I C , y u t il iz a r lo s e n u n s i n f í n d e a p lic a c io n e s .

F e r n a n d o E u d a i d o V a l d é s P é r e z e s I n g e n ie r o E le c t r ic is t a ( 1 9 7 7 ) y M á s t e r e n A u to m á tic a
(2 0 0 1 ) p o r la U n iv ersid a d d e O rie n te (U O ) e n S a n tia g o d e C u b a . E s P ro fe s o r T itu la r d e C e n tr o de
E s tu d io s d e N e u r o d e n c i a s v P r o c e s a m ie n to d e Im á g e n e s y S e ñ a le s (C E N P I S ) d e l a F a c u lta d
d e Ingeniería Eléctrica e n la LÍO. C o n 2 9 añ os d e ex p e rien cia a cad ém ica, h a im p artid o a sig n a tu ra s de
p re g ra d o y re la c io n a d a s c o n la a rq u ite c tu r a y la p ro g ra m a c ió n J e m ic ro p ro c e s a d o re s ,
m ic ro c o n tro la d o re s y las c o m p u ta d o r a s p e rs o n a le s, a s í c o m o lo s c irc u ito s e lé c trico s, la e le c tró n i­
c a d ig ita l y e l p ro c e s a m ie n to e s ta d ís tic o d e s e ñ a le s , c o n é n fa s is e n la s a p lic a c io n e s b io m é d ica s. Fs
e l a u to r p r in c ip a l d e l lib r o d e te x to p a r a la c a r r e r a d e A u to m á tic a 'F u n d a m e n to s T é c n ic o s d e
...
C o m p u ta ció n ", p u b lic a d o p o r ila. iEditorial iÍSPJA
c n i . r
F., C iu d a d dj e. iL _a H
n . u .
a b a n a , 1986. H a tra b a ja d o e n t
d ise ñ o d e m o n ito re s d e h e m o d iá lis is y p la sm a fé re sis. S u a ctiv id a d d e in v e stig a ció n a ctu a l s e c e n - I
tra e n la a d q u is ic ió n y p r o c e s a m ie n to d e s e ñ a le s d e l s is te m a c a r d io v a s c u la r ,

R a m ó n P a l i . á s - A r e n v c s p r o fe s o r d e la U n iv e r s id a d P o lité c n ic a d e C a t a lu ñ a (L 'P C ) d e s d e 1 9 7 5
y c a te d r á tic o d e u n iv e r s id a d d e s d e 1 9 8 9 . A c tu a lm e n te tr a b a ja e n la E s c u e la P o lité c n ic a S u p e r io r
"de C a s t e lld e f e ls , d o n d e d ir ig e e l G r u p o d e I n s tr u m e n ta c ió n , S e n s o r e s e I n te r fa c e s ( h t t p : / /is i.-
u p c .e s ). E n te m a s d e in s tr u m e n ta c ió n e le c tr ó n ic a y m é d ic a , h a im p a r tid o c u r s o s p a r a fo rm a c ió n
d e p r o fe s o r a d o y p o s tg r a d u a d o s e n E s p a ñ a , A r g e n tin a , C u b a , Ita lia , M é x ic o y R u m a n ia . H a re ci­
b id o , e n tr e o t r o s g a la rd o n e s , e l P r e m io a la C a lid a d e n la D o c e n c ia U n iv e rs ita ria , o to r g a d o p o r el
C o n s e jo S o cia l d e la U P C (2 0 0 0 ) y la M e d a lla N a r t ís M o n tu n o ! d e la G e n e ra líta t d e C a ta lu ñ a (2003).

M IC R O C O N T R O L A D O R E S I SE N i -9 0- 5-114? -7
VA LD ES *2007 P I Í C 7
6789261511497

A A ltao m e^ _______ A 0 14C O C 01:

xor 9 7 8 9 7 0 1 ' 51 1 497

También podría gustarte