Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Valdés Pérez
Ramón Pallas Areny
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
A u to re s
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)
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
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
.
4 .1 .3 M odos d e direcc'ionar los d a to s ................................................................................................................... 84
4.1.4 L a p ila .................................................................................................................................................................. 85
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
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
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 .4 Velocidad d e la comunicación........................................................................ - ............... - ....... 263
9 .4 C alibración.......................................................................................................................................................315
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 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
^ P e rifé ric o s
B u s d e C o n tro l
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
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.
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. .
1 .2 .2 Reset
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
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.
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
---------------------------------------------------------------------------------------------------------
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.
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.
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.-
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).
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.
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.
• 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.
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.
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,
2 .1 2 G d o s d e m á q u in a y ejecución d e instrucciones
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.
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.
2 .1 .4 Osciladores
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
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
VdO
Figura 2.6 Oscilador RC. Rfxr 3 k O a 100 k íl; Ctx r > 20pF-
R e lo j
e x te r n o
A b ie rto
P IC 1 6 C x x x
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.
• 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 .
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
1. R eset externo.
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.).
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.
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.
Voo
7 2 ms
R ES ET#
Voo
<72 m s 72 ms
R ES ET#
V«>
-----------------
72 m s
R ESET#
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 ) .
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.
2 .1 .8 Perro guardián
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.
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
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 -
PIC17 X -
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.
• 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.
G P 5 -G P 0
VSS
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.
Figura 2.19 Arquitectura interna del PIC16F873, utilizado como ejem ploile microcontrolador
PIC d e gam a media.
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
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.
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
B it n ú m e r o 7 6 5 4 3 2 1 0
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.
D = 0,1,2, (N - 1) (3.1)
N = 2" (3.2)
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.
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
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
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.
RAM
IDM
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 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
FLASH
------- ► 0 1 2 3
0 800h 1000h 1800h
3F F h
400h
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).
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
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.
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
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
6. Escribir A A h en EE C O N 2.
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 .
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.
B a nco — ► 0 1 2 3
B0n 100h 180ti
SFR SFR SFR SFR
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.
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.
GPR GPR
96 96 mapeados mapeados
GPR GPR en en
Banco 0 Banco 1
banco d e s p la z a m ie n to
a
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
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
INTCON
Interrupciones P IR 1.PIE1
PIR2, PIE2
PORTA. TR ISA
PORTB, TRISB
Puertos paraleles PORTC, TRISC
PORTO, TRISO
PORTE. TRISE
CCPRxH, CCPRxL,
Módulos C C P x (x = 1. 2. 3)
CCPxCON
□ registro STATUS
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).
El registro 0PTI0N
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
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 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
R e g istro Función
EEADR Contiene la dirección del dato (8 bits)
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
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.
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:
(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.
• Un d ato d e 8 bits.
»
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 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 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
E jem p lo 4.4
4 .1 .4 La pila.
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
cuando se guarda algún dato y disminuye cuando se extrae un dato. DÍR1, DIR2
y DIR3 son direcciones almacenadas en la pila.
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.
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.
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).
retfie re to m a r de interrupción - 2
retlw k retornar de subrutina co n k e n W - 2
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
clrf f z
II
V
o
clrw o => w z
sw apf f.d { + ~ * fH => d -
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.
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
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.
E je m p lo 4.6
E je m p lo 4.7
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.
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 :
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 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
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.
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:
; 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.
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
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:
goto Acción3
A cd ón2:
Repertorio de instrucciones y program ación en lenguaje ensam blador— 101
Figura 4.8 Diagrama d e bloques con el algoritmo que se desea program ar en el ejemplo 4.13.
m ovw f CO NTADO R
Lazo:
4 .2 .5 Otras instrucciones
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.
4.3 Elem entos del lengu aje ensam blador (para el ensam blador
MPASM de Microchip)
4.3.1 Introducción
• Un com entario.
104 — Microcontroladores PIC
• U na etiqueta.
• U na línea e n blanco.
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
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.
• 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 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.
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
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.
Register Definitions
w EQU H'0000’
F EQU H'ooor
,—
• DrtfiíctAr rPw
rcegibier í Iqcr-
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
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 .
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
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.
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
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
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.
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.
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.
La instrucción:
g oto S
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
líneas que con tienen d irectiv as c o n las que con tienen instru ccion es al m icro
con trolad or.
4 .3 .3 .1 D irectivas d e u so g e n e ra l
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.
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.
processor tipo.procesador
radix siste m a jiu m e ra ció n
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.
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.
m ovlw DATO
m ovwf REG1 ; E n el registro REG1 se alm acena 15.
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
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 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 4 ; El seudo P C se p o n e en 4.
Directiva end
C on estas d irectiv as se p u ed e:
• 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
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 ...]
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 ):
lis t p = 16Í873
#include p16f873.inc
udata_shr
REG re s 1 ; S e define e l sím bolo REG.
: 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
lis t p = 16Í873
tfinclude p16f873.inc
: 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
list p=16f873 t
#include p16f873.inc
; D atos constantes:
D A T 01 equ 0x55
D A T 0 2 equ .10
¡ 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.
SRutina:
retum
end
4 3 .4 Macroinstrucdones
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
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:
udata_shr
HEXA1 res 1
HEXA2 res 1
ASCII1 res 1
ASCII2 res 1
Program as
Rst_vector co d e 0
:>rog_Principal co d e 0x800
PP:
m ovlw 9
m ovw f HEXA1
m ovlw OAh
m o vw f HEXA2
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,
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.
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.
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.
Definición d e constantes:
DAT01 EQ U 0x1 ;
D AT02 EQ U 0x2 ;
Definición d e vanables:
X equ 0x22
Y equ 0x23
C u e rp o del program a:
PP:
clrf X ; Iniciar variables.
clrf Y ; Iniciar variables.
A q u i se escriben instrucciones d e l |
D efinición de constantes:
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.
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. •
. 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.
4 .4 .1 .2 G en eració n d e c ó d ig o relocalizable
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
:LLAAAATTDDDD...DDSS
d on d e:
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.
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.
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
movwf PCLATH
goto PP >
org 0x0123
PP:
d rf X ; Hacer X = 0.
d rw
addlw 1
m ovwf Y ; H acer X = 1 .
.*0600000001308A002329F3
:020008000900ED
142 — Microcontroladores PIC
:08024600A0010301013EA1002B
:00000001FF
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 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
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 ,
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
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:
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 :
list p = 16f873
«in d u d e p16f873.inc
global SR2
code
SR2:
nop
nop
retum
end
A rchivo biblio3.asm :
9
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
end
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.
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
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.
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.
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.
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.
• E / S p rogram ad a.
• E / S p o r interrupción.
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.
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.
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.
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,
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
5.2.1 ElpuertoA
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
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
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.
5.2.3 Elpuerto C
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
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>.
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)
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.
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 ( ^ )
Ejemplo 5.3
_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
P O R TB < *> T ‘O ’ T
H H- H k
< 2 0 ms < 2 0 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.
lis t p=16f873
#include <p16f873.inc>
retum
end
La entrada y salida en paralelo — 169
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)
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
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
LEETEC:
m ovlw OFOh
m o vw f PO RTB ; Todas las filas en ‘0’ .
174 — 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.
retum
end
La en trad a y salida en paralelo — 177
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.
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.16 Tratamiento de software que se puede, dar al visualizador de elementos de 7 seg-
mentos de ¡a figura 5.15.
180 — Microcontroladores PIC
□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□
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.
] i
O T o c ]□ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □
iooooc ]□ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □
P a rte visible
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).
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.
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.
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>
¡Otras declaraciones:
TEMP equ 0x020 ; Registro temporal utilizado por las subrutinas.
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
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
6.1.1 El m ó d u lo TimerO
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
r ; , 4x7o*
T,>— — (6 .1)
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.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.
Td = P x N x Ti (6.3)
N,-mRu = 2 5 6 - N (6.4)
194 — Microcontroladores PIC
N tmro = 2 5 6 - N+ 2 (6.5)
_______________________________________________ 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).
; 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"
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
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
R e s e l (d e l m ó d u lo C C P )
j - ; ^xrosc 66
( . )
P
Los tem porizadores — 197
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
T d = P x N x Ti (6.7)
Ntmri = 2 16 - N = 65536 - N (6 .8 )
198 — Microcontroladores PIC
T d = 2'b x P x T i (6.9)
E je m p lo 6.2
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
return
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
T2CO N
7 6 5 4 3 2 1 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.
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
T d = P, x P2 x ( N + l ) x Ti (6.10)
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
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;
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.
C C P xC O N
7 6 5 4 3 2 1 0
11 XX PWM
6.2.1 M o d o d e ca p tu ra
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.
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.
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 ”
end
6 .2 .2 M o d o co m p a ra d o r
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
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
: 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,
(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.
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.
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.
T = (N + 1) x P x 4 x Tqsc (6.16a)
Ton= M x P x (6.16b)
M =4x Ms + M 2 (6.17)
A To k = P X T osc (6.19)
r = ( N ± 1^ P x 4 ^ = 4 x ( N + 1) (620)
P x¿osc
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
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
end
2 1 8 — Microcontroladores PIC
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 .
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.
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.
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 :
• Interrupción p o r desbord am iento d e los tem p orizad ores TimerO, Tim erl
y Tim er2.
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
Latencia
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).
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.
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.
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
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
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
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
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
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.
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.
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).
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
list p=16f873
#indude < p16f873 .ino
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
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.
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
(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
lis t p=16f873
#¡nc!ude <p16f873.inc>
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
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
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
(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.
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.
, T = i bit/s (8 . 1 )
2 4 8 — Microcontroladores PIC
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.
• 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
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.
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
• 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.
Canal de comunicación
D TE DCE
— (Linea telefónica, equipos de
la central telefónica, etc.)
(Ordenador) (Módem) (M ódem ) (Ordenador)
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
3 2 ReceivedDala (RxD) X
5 8 CleartoSend (CTS) 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
.
16
18 Test X
-
19
-
21
23 Speed Select X
.
24
25 -
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
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
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
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.
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
Información transferida
SDA
r \ c z n n
SCL
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
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.
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
(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
Figura 8.11 Im s direcciones d e los dispositivos conectados al bus PC pueden ser de: (a) 7 bits o
8.2.1 D escripción g e n e ra l
(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.
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.
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
B u s d e Datos
G e n e ra d o r d e reloj
T e rm in a l
RX/DT
TXSTA
7 6 5 4 3 2 1 0
R C S TA
7 6 5 4 3 2 1 0
Figura 8.16 Registros TXSTA y RCTA, para controlar la transmisión y recepción d e datos
por el puerto serie USART, respectivamente.
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#
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
v fose_______
1,1 4x(S P B R G + l) (8 -4 )
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.
¡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:
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:
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.
SDI ^ ► SDI
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.
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
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.
E je m p lo 8.2
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 :
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:
bsf STATUS, RPO ; S e selecciona el banco 1
8 .3 .2 In te rfa z PC
B u s d e D atos
R e g is tro S S P B U F l
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.
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
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.
Codlgo
binario 4
V..
<1 h i,
20 3Q 40 50 60 70 80 V,
ÍV—+V. ■K2 V*»
D , = e n t ^ 2 'vj + 1 (9.1)
Q =|f (9 -2 )
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
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
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.
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.
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
Sen*»
1
AMUX
Sensor
2
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).
San sor AM UX
1
I
sh a ► cao
T
Sensor
2 _L T'-
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).
9.2.1 A tenuadores
A = Yl = M Zi - — g*. - (9.8)
Va Z „ + Z , + Z 2||Z i Z , + Z 2
(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
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á
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
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.
y ¡ A 20 - \ - £ 2 + 2 e ^A ) ~ 1 + _ 4 l£
2 x f R .j C * < ( 9 (1 6 )
\-e ' \-e \-e
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
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 .
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.
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 )
G {f)< G ° j á i f (9 -19)
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
»g'
• a « a 'a
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.
9 .2 .4 M u ltip le x o re s analógicos
(a ) ( i»
Figura 9.21 Estructura funcional de un multiplexor analógico para (a) señales asimétricas, y
(b) señales diferenciales.
tc = - r \ n e (9 -2 2 )
R, s K on V D
—WA \
A /—
— o— AA'W
O— A ——
A r --------------"V »- —C—
C i
r
<*-
=)
" I
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,
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.
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
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.
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
C o n tro l SI H
^ c . = jd _ (9.22)
dt C„
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
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.
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.
(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.
ADCONO
7 6 5 4 3 2 1 0
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
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
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.
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 - -
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.
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
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.
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)
Acondicionado*
;ionaoc*
Sonsor
de señal
eñal
AM UX
V^IG o
0 r-
■s
(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.
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 .
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.
(< 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
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.
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).
¡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.
f 1 -2 5 /
r.<& 2 N* * - l 2 n** (9.38)
9 .6 .5 P rotecciones de salida
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.
[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.
[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
[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.
CM C iclo d e m áquina.
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 .
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.________________________________________
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 " .
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.
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.
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 .
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 .
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 .
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.
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 .
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 .
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.
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.
í 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.
XTAL C ristal.
ín d ic e a lfa b é tic o
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.
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