Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
50% encontró este documento útil (2 votos)
649 vistas106 páginas

Microcontroladores PDF

Descargar como pdf o txt
Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1/ 106

- Pro.

gr:_amación

~r=----
~ INDICE GENERAL

1_
éonccptos básicos de programación 1
Subpn)grao1a.~ , ;}1
lnuoduccién 2
Fu.ncion:uuientn de: los rcgi.nro~ Je pi1" del
Fundamentos dt' program;ici<'to - , 2-
n)ic:roconcJ'ol:Ldor ..................••.......................•.......... 35
l 1:uh'll:tj,·sde prog.r:1n1ac.:ión . 4 Puertos .
El Jiar.r:'lnl<l t.lt' bloques o de Huju 6 ............................. 3(,
El puerro A .. .. ... 36
))._, la computadora al ruicrocorurclador ~
El pucno ll 36
2. Sistemas de numeracrén en ta progromación de ConJlgul'adón de lo:..•puerrosJ\ y B 36
microcontroladores 9 5. Herramientas de software para el desarrollo de
f~üu.:."ft1r:t de los d:uv:o 10
aplicaciones uasanas en microcnlroladot1!$PIC 37
Bil.. .. .. 14 f.lt'utcnro.s crientsdosdJ J,11,dw.1rc 38
Nfübl< 14
Elcmcnros basados en ll!fiu1;11r........• , ••.............•••.......•. 38
RCl) . 14
Bytt· , _.............. . 14 €1 editor de rearo 38
El cnita1nl1l<1dor . 1) 3
Wurd , 14 E.l en: tmblador MPAS.i\-1 de- Microc;hip 39
R<tl)&'"O de .los rnín1f't•->-'> binarios . 14
1\r<.·hiv0$ascciados al en~mblador 1V(PA8M ...•........... 40
Opoacíooe, l>ásic.";ls .... . ....• 15
Códi~o ;l.b$oluro y o.6Jigo objeto /iO
l.a suma de dfgircs binaño:. 15 Ejét.1.1ci6n Jd prl)graro.1 M PASM desde la
SuoJ:l de números binarios ,. l 'l
1f11\',1 de comandos . AO
Núuiems biaaeios ncgadvos . ............ ,. lf~ Dirtcñ~..... . 42
E.j<-Jnplo ·-······················ ....• f (i Dlrecrivas <le control . -i2
Rcsca de números hinaribs 1 (,
Directivas condicionales ..................••............... , 43
Directivas orientadas a los daws ........ 4.~
3- Programción de micl'O(;onlroladores __ 17
Dircctiv::rti. J.,, control Je li.c;r;~Jo , 44
Control o 'l'.>l ..·m.1 embebido 18
Direcrivas oriemodas al archivo objeto ·11
A1•chivos- generados por el prog.rarn.1 ensamblador J9
Macros . .. 44
Términos usu!llt"... . 20
Si1uaxi:o; de un nt:1cro . 45
Fxnucrura de un prog¡~;uuaescrito cu lcngu:ljé
Din.'<'.riY:'l~t.lrit:nmdas a Jos nli:lc.~ros •• . 45
cnsamblsdor • . 10
l'w Jt< los macros . 45
Tlpos de llo<-a c111i:: v: pueden incluir en un prof,can1:1 .. 2 !
Mensajes gt'11cr:1dos por d ensamblador (rnCJSJJgo) 4S
r:.J entorno de progratlláción . .... 22
Alguno.\ OlC::Us.1jcc; bñsrcos . ·'15
El coruador de prog1a1.ua . 2).
Advc:nencia.s (w11nn'ng1) deu'-caJas (l(lf el ensamblador 4(1
Ccnjuruo (1<1) J._. instrucciones 23
Algunas advertencias L:h·ic:i:s 46
1 nsrrucciencs Je- dcspla·t.atnit•11(0de biu . 25
Errores (rl'ron)Jt·r('(;l~<los(>('11' d cns-;¡m.bla<lor 46
Aplicacién d~I dc:.1>lawrnienfo cuvular . .. 16
1\lgu11o;o. t.~l'{On:.s hd:tic;.o.s 4(1
El 'qdsrrnde C:.t:ulo ". . 26
Opctador(.-;s~opc:r:indo$ y c:xptl'SÍuncs 47
Modos de dr r.;.·~c:ion~J):?icnco ,.... . 27
Cadc:nas (¡1ri11gs) _........................ . 47
4_ Modelo de programación para tos Lt sc:c:ut"nd,1d..- códigos <le c-.:;capé ANSI'C 47
Slstt"cn;i~ n1lu1éricos 47
microcnlroladorcs PIC _ - _ .. 29
1,,¡,¡, de <(<ligus ASCU .. .. 48
l .r).s dcmcn10~ .. . 31
Lt aquitectura del 1•1< 16F84 6. Ejercicios de programnción básica con
(L~ vi~ián dC'I pro¡.:;r.1n\~dorj . . ........•...• 3J microcontroladores PJC - _., 49
EJ r<"yistro de crabajo W 31 Eje.cckio No. l
J:'.r rc.gt.\tn:.d<"· vsmdo (¡r4tus n·girtrr) .) 1 EnL1:11dido de un dioJo LEI) _5(>
L1 rnu110Ú;\ dé pru&r;)nl:l 32 c:i(cuho h.-i,s;lJo en un JnicrOC(tlltrobdor 50
L.:. rucmorin de daros <'O IV\lvl . ~):) Muotajt: del cir'-'lli[o uliJjz3nc.fo un pro1()b(Jard .. 50
Lo.'> rq~i.stros de prop<i$iitvt'spc:c;faJ .3.3 Mo1Hájt' drl circuito utilizando un entrenador SO
Los registros de 1•1-opósiro general ~{3· J )~u rollo del proyecto . .....•.... 50
l.os f(1;ÍSlros de pib (stltl·/t} . J4 Rcgis1.tos urifi~tdos 5J
L.1 mcnunill EJ;.J>ROfvl de daros·····- ,,, ;)1 t)i..~t1lo Jd programa usando d lenguaje eúsamblador , 5 J

Curso praclíco sobre Microcontroladores ~IT..;. •


dice,general
11~~· -· -
.

'Tr-1n!ift:re11Li.a de informscién i1á..,i:'l el puerro R ..........• 52 Ejcrdc:lo No. 12


Alrnoccnamicmo del daro Ox01 en el ptt(J to I~ 52 1Vl:lnejo del conjunto <le in:.:trucclonc.s 113
Conll~·.ur<ltil.n del puerro B 5'2 Modos Je dircccion;i.mic:nu> 11;;
Insrruccioncs Je: salto ·-···· ................. 117
Dcreuciéu del flujo de elecuoóu S:l
Directivas J(' control . S:)
c:OOiy.o Iccorc del prvyccro 54
Ens:unl,1aut.ln el programa . ....•. Sú 9. E]ercic1os de progrrunción con el
BASIC Stamp _ - 125
( :r:th.tn<lo d rrugr.ut'l.• r-n d nncroconuolndor )7
l)~t11)1lo de 11rogt~m:i..; . .. 126
Haciende espacio al vecror Je iuu-rmpcioncs SS
1 )i:tg;r:tn\a <le Rujo Ji.:J rr()yec.:.tO ,.,. ········•······· 59" F.jc:rcicio No. 13
&l<.Y;-11J('r y apagar un diodo l .El) . l '.!8
Instrucciones urilizadas en esta lección . 5~)
EjercicioNo. 2 Ejl':t'cicioNo. 11
(:onlu)l:indo el diodo LF.l) con un pulsador ..... l ,iU
Encender y ~plr,:lr u11 diodo LEI) S()
l'rop<ls.il<>p.cn-cral "9 Ejt'ocicio No. 15
Sc~·ue,1ó:tdor ('0Jl diodos LI~I) . IJ J
Prop(~sth) 1,;srocih<.-u . .....•••................... (,O
1\n6lisis . (.O
Eji:rcjcio No. 16
l'r;w.-\.nüi:iOo de: d~t(')s scri:tk., vfo ltS~2:·(~ ... . ...... J.-;:!
F...rruc1u1':1 repetitiva . úl
Ejercici() No. 17
h'
1'-n:(.-JUCÍÓO • . 61
Suhruti11:1<: .
Re1.cjxióndi: daros scri:•i._·., vfo RS-232 ..: 131
1 nsrruccién ( '.ALL 62 Eiercicic No. 18
Comunicacióu serial siucrvnicn l.1':i
losuucción RIEl.VRN 62
Esrruceura de una subnuina 6'2
Llamadosn una sub1\1dn:t desde un programa 62 10. Programación de microcontroladores INTEL _ 137
Insrruccién J1.: M)pvric . ()3
Modos de dirt'l.:1.ion:imieulo •... . ~ 1,)8
(:ido de inserucción . l.i15.
Rc·r$i.'>tl't.lóde uahajo . 63
'fipos de: insuucciones . J .)9
( .onucl de estructuras repetitivas 63
Estru<.lur:t.; repetitivas anidadas 64 lnsu uccioncs aritméticas .. . 1 ii.O
1 nscrcccicnes lógic:i~ . 140
(;,udiíteadón de Ull ciclo anidado , 64
lnsuucciones de transfereuci»de <la.lo..-:....... . l'ÍO
Listado dcl programa - ('4
lnsuuccioncs booleanas 14 1
<.:0111.:lusión 66
lnsnuccionesde saleo 141
Efcrel<:i(l No. 3
l.ecwra dc un:t hucrmpción externa{IN'I) -66
Moddo de prog<J.nl:lción . l 45
()t'sc:11pd.5n Jd pl'Og_l'am.1. . 67 Ejc:r(;ido No. 1?
E.-..uucr~1r.i rondk(on:t.l . 143
Ejcrcicio No. 4
(~c:11t>ra(1(1n de .\'Cftal..i tli¡r.il.tk'S 3 través dct ·rMRV ...... 70 Ejercicio No . .tO
Retardo ror )'(l}IWt1rr. . 1 l'i·í
Iijcrcicio No. 5
Contando CVC:-UU)S C'X(C:.l'llOS,., .. ................. 71 Eje-rcicia No. 21
Subsurinas . t-1')
l~crclcio N<.>. 6
{ ieueracién de ~ítalt;t. mediaruc el Ej..-rx.~i<:io No. 22
. 7.l Manc]o de kl pil;'l y de las rotaciones ....... . ... L..-\(,
·rMH.O e· inrci:ru¡"'-i1'ln~ .

7. Ejercicios avanzados de programcion con 11. Programación de microcontroladores ATMEL 149


microcontroladores PIC , _ 77 .tvfauc-jo de rcgisnos J SU
Rc:gl~trQ'>epunradores . 150
Ejercicio No. 7
Conexlóu de" rneJ\lO'fi!lssenalcs al l1IC 7R. Recomendaciones p.1r;t d uso de registros .. . , 152
Desarrollodd ejercicio . SO Los puerros e-11 lo~ míerocourroladores AV R - 1-SJ.
La 1111.·mori.J SR:\M 112
Ejcrcl<:io N(). 8
,¿Pata quC po<lt·n)QS U$lr la. SRA~1? J 53
tv1.uu.:jo de un 111ód11lo 1.(:0 84
¿CóO)Ontili'l.ar la SRA}vl? . 1 ).1
Módulos de cristal lfquido ó 1 J. :1) . a.4
UtilWcic'ln <lc:- la SRAt-.1 t'OffH) pil-a . ..•• 153
lnrcrfaz con miceoconrrolador a 8 biu 86
üd'i.nk·ndn La SRl\~1 c:oll)(1pib . 1 )1
Ejercicios con m1crocontroladores Motorola 91 Uülí~cfón d~ pib l.1 l Yi
8.
No111l·Jlcbrura 97 fnuv.Ju<:Ción a la progr.un;l(iónJe
1ni<.~1·ooonrrol,-tdorc..;AVl~ . 155
Ejercicio No. 9
........ ')] Bs1<tJo den·~..... . _ 1">°'
l:'.nc:1gimr uu diod<1 1.EU .... .,
Ejecución l.int:";J di.' progr:'un:1y salto:. l ~6
Ejercicio No. 1 O
............ 101 'íen1pori1:icit'>n du.r.-.ntc: la t'j('(J1cicln de un 1uo~1~11n:-'I 156
E.itLt:n..ícr y apagar un diodo l,F.1) ..
Ma.:tos . 156
t:j~rdda No. 11 . l)o
~1uh:pl<'X3i<' de indicedcres (d.tJplaJ'1' de <ietc ;o;:ubru1in:ls .
1 ntcrtu1x:ii?1tes . ··················· 157
CONCEPTOS BÁSICOS
,
DE PROGRAMACION
Cuando se incluye un microcontro­
lador en un circuito o en un apararo
electrónico, se debe establecer la com­
binación adecuada de hardware (cir­
cuiros) y software (programas). A esto
se le llama un diseño con microcon­
trolador. Cuando éste se adquiere del
fabricante o a través de un distribui­
dor, no incluye el programa el cual
debe ser planeado y escrito por el di­
señador del hardware o por un pro­
gramador, que en la mayoría de los
casos, es él mismo.

Curso práctico de Microcontroladores ~IT.: ~


Introducción configurar el hardware o los circuitos sin mayo­
Los microconrroladores permiten configurar un res dificultades. Sin embargo, el aspecto de la
sistema de acuerdo con Jos requerimientos im­ programación puede resultarle un poco comple­
puestos por el problema que se va a resolver, gra­ jo. De.todas maneras. independientementedelas
cias a una caracrerfstica fund~menc~I <1uc com­ bases teóricas y prácticas que usted posea, encon­
parten con las computadoras convencionales:son rrará en csrc curso los conocimicnros de progra­
programahles. Por esto es posible incorporarlos a mación necesarios para realizar con éxito los pro­
un sistema electrónico, normalmente orientado yectos propuesros en otras secciones de la obra.
a la captura y enuega de información, permitien­
do decidir lo que debe hacerse con los daros y Fundamentos de programación
señales procesados. Para iniciarnos en los fu aclamemos ele la progra­
mación, veamos primero un sencillo ejemplo de
El arce de trabajar con microcontroladores la vida real tomando corno elemento de control
requiere del dominio de dos habilidades funda­ una compuradoragenérica. El diagrama de la fi­
mentales: la primera es la destreza para selec­ gura 1.1 correspondeal esquema de control uti­
cionar componentes electrónicos y conecrarlos lizado en algunos aeropuerros para derecrar la
adecuadamente, y la segunda, es el dominio de presencia de objetos metálicos escondidos en la
las técnicas de programación, gracias a las cua­ ropa o adheridos al cuerpo de los pasajeros.
les se puede lograr que e] microcontrolador se
comporte según los requerimientos de la solu­
ción propuesta.

Si el lector ya ha estado inmerso en el mun­ Figura 1.2 Oiagmma Cle bloques del .siSlem.1 lle detección de
óbjelos melálíeos
do de la electrónica, entonces tendrá las bases
necesarias para entender el funcionamiento in­
terno y operativo del microcontrolador y podrá La misión del detector de me cales es la de
producir una señal eléctrica cada vct. que una
persona cruce frente al detector portando algún
objeto metálico. En cuanto a la alarma sonora,
ésta debe producir una señal audible en presen­
cia de: un elemenro peligroso, con el fin de aler­
tar a las autoridadescorrespondienres.figura1.2.

¿Cuál es el papel que cumple la computado­


ra en este proceso? Como seguramente podrá
deducir el lector, la computadoraestá conectada
de modo permanente ramo al detector de meta­
les. como al dispositivo sonoro. figura 1.3.

La interfaz <le entrada se enea rga de adapta r


la señal provenience del detector, inrroduciéndo­
la en la memoria de la computadora. El amplifi­
cador de salida se utiliza para aumentar d tama­
ño de la señal eléctrica generada,aplicándola a la
alarma sonora y generando un sonido perccpri­
Figura1.1 Sistem;11Jecontro/par;¡~1delecdóndeobjetosmetálicvs ble por el oído humano.

~ 4Íc1T..;.Curso práctico de Microcontroladores


• 1 ... ,

Figura 7.3 Oiagr:.ima rfe bloquas rfe/ sistema de rfetlxción rfe objetosmet;j]icos

Ahora .'\urge una pregunta rnás inrcrcsanrc En palabras sencillas. ¿qué funciones debe­
que la anterior: ¿cómo es posible que la compu­ ría realizar la computadora de la figura 1.J p­~ra
tadoraactive la alarma sonora únicamente cuan­ ser eficiente en la tarea de detectar objetos merá­
do un pasajero cruza portando un objeto meeíli­ licos?. Observe los siguientes pasos presentados
co, mientras yuc la mantiene en silencio cuando en la figura L5.
no detecta el metal? Ames de responder a esra
pregunca, es necesario comprender un aspecto
clave relacionado con el funcionamiento inrerno
de Lula computadora.

En contra de lo que pudiera pensarse, ésta


no "observa" ni controla el mundo exterior de
manera continua. Ella utiliza pequeños perío­
dos de tiempo par~ realizar las acciones qL1c le
son encomendadas, por lo que la única opción
que le queda es la de organ izar sus tareas de for­
ma secuencial en el tiempo. figura 1.4. Esre
punro debe recordarsesiempre, ya que es la base
del funcionamiento de cualquier sisrema basa·
do en computadoras, microprocesadores o mi­
crocontroladores.

Figura 1.5 Programapara resolverelproblemadel detectrx de mel¡¡fes.

Ahora le preguncamos al lecror: ¿en dónde


piensa usrcd que debe almacenarse este conjun­
to de instrucciones? La respuesta no es compli­
cada: en el interior de la. computadora, de un
microcontrolador o de un sistema con micro­
procesador.

Pues bien, el conjunro de instrucciones que


Figura 1.4 La computarfora trabaja a imervetoeae tiempo
predeñnidos acabamos de presentar es lo que se conoce con el

Cursopráctico de Microcontroladores. cti(;cIr.'..:. ~


nombre de PROGRAMA y representa el cora­ Pero, ¿será posible que una computadora,
zón de los sistemaselectrónicos modernos, en los c.omo una de las muchas utilizadas en un aero­
cuales es tan importante la interconexión de los puerro, pueda entender esre cipo de programa?
circuitos eléctricoscomo el desarrollo delos pro­ El sentido común nos dice que no: es necesario
gramas orientados 3 la solución del problema. convertir cada una de las instrucciones al "idio­
Recuerde que: ma" que comprenden las computadoras. Fxis­
ten varios idiomas o lenguajes utilizados por las
Los programas son escritos po.r computadoras modernas. Algunos de ellos tie­
PROGRAMADORES nen como finalidad ayudar a resolver problc­
mas de caracrer adminisrrarivo, como el lenguaje
La misión de un programador es la de en­ COBOL, por ejemplo, rnicnrras que ortos ayu­
tender el problema que debe resolver, escribir la dan a crear programas de utilidad para ingenie­
secuencia de instrucciones requeridas en el len­ ros. como FORTRAN •.• PASCAL, para citar
guaje apropiado, almacenar la secuencia de i ns­ solamente dos ejemplos.
rruccioncs en la memoria interna de la computa­
dora y, por último, ejecutar o poner en marcha Cuando se rrara de resolver un problema
el progranrn creado, figura 1.6. cuya caracrerísrica es el control de componen­
tes electrónicos, como en el caso de los micro­
controladores, se debe recurrir a un lenguaje es­
pecializado. El más común de dios recibe el
nombre de LENGUAJE ENSAMBLADOR o
A.SSF.lv!BLER. Este lenguaje está compuesro por
un conjunco de palabras sencillas que permiten
describir acciones básicas, como por ejemplo el
movimiento de datos entre las difcrcnrcs panes
del sistema.

Una de las dificultades que aparece cuando


se utiliza el lenguaje ENSl'\j\ffiLADOR tiene que
ver con el hecho de que cada computadora o cada
fomilia de microcontroladores tiene el suyo pro­
pio. Sin embargo, y de acuerdo a nuestra expe­
riencia, estarnos convencidos de que si usted
aprende a progrnmar correctamentedesde la base,
Figura 1.6 El tra/Jajo oc un programador
en un cieno lenguaje. sin importar cual sea, esca­
Lenguajesde programación rá en condiciones de transferir Sus habilidades a
¿Qué lenguajedebe utilizarse para escribir un pro­ un sistema diferenre.
grama? La respueSta depende de la computadora
o en nuestro caso, del microcontrolador utiliza­ Con el objero de aclarar las ideas, y empe7~'U'
do y del problema que se va a resolver. Si su pro­ a currar en materia, vamos a mostrarle como es­
blema es únicamcnrc describir los pasos que de­ cribir el programa de la figura 1.5 en lenguaje
ben seguirse para alcanzar el resultado deseado, ENSAMRl.ADOR. Por comodidad y facilidad
es suficicnrc con emplear fr.aSC>i tornadas del id io­ didáctica, vamos a utilizar por ahora instruccio­
ma español, naturalmente en el orden que resul­ nes para una computadora genérica> es decir, una
re más adecuado. Un ejemplo de ello es el pro­ computadoraque ccnga la mayoría de elementos

.O clí7c1T..:.
grama que presemamosen la 'figura l. 5 . presenres en las rcsrantcs computadoras.

Curso práctico de Microcontro/a®res


Detector de
.
metales
Posición de
memoria

Alarma sonora

'­­­­­­1~ -----'-?-----1--------•lll~
Vale O 1 Vale 1

¿Qué valor tiene dato


en memoria?
Para facilitar las cosas. vamos a mostrar el
proceso gráfie<1menre, figura 1.7.

mi­+ Móver él daro desde el detector de


Figura 1.7 Soluckln visual de! problemadel aetect« de metales
metales hacia una posición de la
memoria.
Ahora que usted ha visto la solución gráfica
mi­+ Comparar el dato almacenado en
del problema, podrá entender la conversión a
la memoria con el valor l.
palabras del mismo proceso, figura 1.8.
­+ Si de la comparación resulta que el
Ya estamos preparados p:ira escribir la so­
­­­ dato almacenado NO es 1, el
lución en lenguaje ENSAMBLADOR gené­
derecto r no ha percibido la
rico. En realidad, todo lo que cenemos que
presencia de un metal, y debe
hacer es utilizar palabras más corras, y esta­
regresarse al paso 1 para continuar
blecer convenios que permitan realizar una
con una nueva lectura.
escritura uniforme.
IR}­+ En caso contrario, el valor del dato
Cada paso se numera en forma ascendente,
es l (presencia de metal) y debe
y en cada uno de ellos se almacena la corres­
activarse la alarma sonora.
pondiente instrucción. figura 1.9. La column.a
de "Comentario" se utiliza para dar una expli­
~ Terminar el proceso
cación de cada instrucción y si la instrucción es
muy obvia, no se utiliza.
Rgura 1•8 Sc/ucíón en pa/abtasdel problemadel detectorde rootales L "_ _ .~
curso procticQ de MicroclJntrotadores ~11/:.... 'V'
Paso Instrucción Comentario

0001 mover (Jato_detector, memoria...interna


0002 comparar memoria_interna, 1
0003 saltar _si_di.ferente..a paso 0fJfJ1 di.ferente_o
0004 octi.var alarma.externo
000$ parar

Figura 1.9 8 programa escrito en Je119u;lje ENSAMBIADOR genMco.

El lccror debe acostumbrarse a traducir


menralmenre las instrucciones escritas en len­ .Paso Instrucción Comentario
guaje ENSAMBLADOR. Para ilustrar este
proceso, vamos a realizar las correspondicn­ 0001 mov detector, mem
res conversiones de Jos pasos mostrados en la 0002 comp mem, 1
figura l. 9. 00.03 sdi.f 001()1
0004 eser alarma, 1
0005 fi.n

liH.\.J•l1l1Jt_.. Tomarel dato correspondienre al Figura 1.10 El priJgrama escrito en lenguaje ENSAMBLADOR
éseado dél detector )' almacenarlo generlco,pero m;ls compacto.
en una posición de memoria en el
interior de la computadora. Simplemente, hemos ucilizado palabras
más corras. Vamos a repetir, nuevamente, la
IÍ.l...1.:1\•f' • Comparar el. dato almacenado en traducción mental de instrucciones. Sin cm­
La memoria con el valor 1. bargo, le sugerimos que observe con cuidado
la instrucción cid paso 0004, ya que en ella
....,.__.._.­. Si de la comparación resulta qt•e. hemos realizado una mejora que confiere ma­
el dato almacenado es difercnre al yor claridad al proceso de programación.
valor 1, debe salear al paso OOOJ
para coorinuarcon la ejecución del En lugar de indicar que se activa la alarma
p[ograma. sonora .• es preferible escribir (enviar) un dato al
dispositivo físico: 1 para activar, O para apagar.
ié~.\.~j,j~,~¡,¡~,tl·­' +• En caso de que el dato almacenado
sea igual al valor 1, se debe acrivar Más adelante estudiaremos programas simi­
la alarma sonora. lares a los mostrados en las figuras J.9 y 1.1 O,
pero utilizando el lenguaje ENSA.i.\fBLADOR
ij!·i•!•lilfl • Detener la ejecución del programa. de un microcontrolador real.

El diagrama de bloques o de flujo


Es bastante común, para facilitar su trabajo, que
El lenguaje ENSAMBLADOR de las los programadores utilicen elementos gráficos
computadoras reales es aún más compacto p:!ra realzar visualmente las caracrertsricas de los
que el mostrado en la figura 9. Una versión componentes que hacen parte de la solución de
más cercana a b realidad se muestra en la un problema. Por esre motivo, no es tampoco
figura l. lO. de extrañar que los programas de las computa­
doras se diseñen a partir de esc¡uermis concretos,
r
~ 4Íc1T..:. Cu=práctícodeMicrOCQntroladores
• ; .• t 1. Mover el ­daro correspondíenre al
estado del detector de .meralcs,
almacenándolo en la posición
de memoria denominada mem.
No debe preocuparse por d
nombre urilizado para esta
posición de memoria, ES suficiente
con saber que todos les elementos
internos de una. computadora
poseen algún nombre.en particular,

@JH•l1!1(._. Compar_ard dato almaccnádc en


la posición de rncmona (deno­ NO
.minada mem), con el valor l.
SI
11:,.;..;....;.....;...,. Si de la comparación resulta que
el dato guardado en la memoria
(proveniente del detector) es
diferenre al número· l, se debe
salear al paso 0001 para continuar
con una nueva lectura del esta­
do del derecror,

~Wf~.! ~~·~· ~1·~1,~fh~•~En caso de que él claro guardado Figin 1.11 Oiagran)a de tJ/tJques~el programa deldelectu: de metales
en mem sea i gua! al valor 1, es
decir, se detecta la presencia de un can acciones concretas que deben ser ejecutadas
objero metálico, se debe escribir el
número l en la dirección asignada
por la computadora, figura 1.12.
a la alarma sonora. Esca acción
inicia el sonido de la alarma. En
caso de necesitar apagarla (quizá Acción
un poco más adelante) se urilizaría
la instrucción: eser alarma, O
(escribir el número O en la
dirección asignada a la alarma). Figura 1.12 Una lJCCión simple

~ Detener la ejecución del programa. Las flechas indican el flujo que debe se­
guir la computadora para ejecutar las acciones
lo que ha dado origen a una representación de­ indicadas. No es necesario numerar los elemen­
nominada DlAGRA!v1A DE BLOQUES, cono­ tos gráficos, ya que estas indican con claridad el
cida también con el nombre deDL'\GRA.MA DE camino que debe seguirse, figura 1.13.

­f
FLUJO. Observe a cominuación el programa de
lafigura l. 9, pero presentado mediance un dhgr­a­

1
ma de bloques, figur.t 1.11.

En esca construcción se observan varios ele­


ruemos que es conveniente enumerar. En primer
lugar, las Hguras con forrna rectangular represen­

­O
Figura 1.13 Flecl>asqua indicanel nujo de ejecucióndel programa

CUts0 práctico de Microcontroladores c6ic1z:


Un figura con forma de rombo representa De la computadora al microcontrolador
una condición que debe ser evaluada o analiza­ En esta primera visión del mundo de la pro­
da. y en base a este análisis, tornar una decisión. gramación. sólo nos resra observar un detalle
de gran interés: ¿es lógico utilizar una podero­
Si la respuesta es sarisfaccoria, es decir, si se sa y costosa computadora personal para dcrcc­
cumple la condición, debe tornarse un derermi­ tar la presencia de objetos merilicos? Es evi­
nado camino: en caso contrario, cuando no se dente que en el caso de que existan alternati­
cumple la condición, debe tornarse un camino vas más simples y económicas, éstas deben ser
diferente, figura 1.14. escogidas. Pero, ¿cuáles son estas alternativas?
A la pregunta planteada en el párrafo anterior
se puede responder haciendo referencia al com­
ponenre electrónico más notable de nuestro
SI NO tiempo: el microcontrolador.

Desde ocro punto de vista. podemos defi­


nir un microcontrolador como una computa­
Figura 1.14 Romro que indica una decisión dora en miniarura alojada en un solo circuito
integrado, pero con la capacidad suficiente parn
Un rcc1.ángulo con los extremos redondea­ resolver problemas específicos de diferente
dos indica una acción especial. En particular, si complejidad, con lo que se obtiene un signifi­
la ~lgura contiene la palabra Inicio se indica a la carivo ahorro en los recursos físicos urilizados.
compuradora el punro en donde comenzar el figma 1.16.
programa.
L~ arquitectura y el modo de operación del
Si el componenrecontiene la palabra Fin, se microcontrolador se estudian en 1:. sección de
indica a la computadora que el proceso ha rcr­ reorfa de esta obra. I .os aspecros relacionad.os
minado, figura 1.15. con las técnicas de programación aplicadas al
rnicroconrroladorserán descritos complerarncn­
re a lo largo de las próximas lecciones.

Figura 1.15 Inicioy Fin del progmma • ~·

Los textos presentes en los diversos corn­


ponenres hacen referencia a fas acciones que se
deben ejecutar. La información que se cnm:g~
en los párrafos anteriores brinda una perspecri­
v• de las posibilidades visuales de las. que dis­
ponemos al elaborar un programa. Naruralmen­
re, en programación existen otros elementos que
deben considerarse, pero las esrudiaremos cuan­
do sean necesarios. Figura 1.16 Estmctura interna de un microcontrolador

~ 4KIF.'.:. Curso practico de Microcorrtroladotes


SISTEMAS DE NUMERACIÓN
EN LA PROGRAMACIÓN DE
MICROCONTROLADORES
Los seres humanos trabajamos con el sis­
terna decimal, los microcontroladorestra­
bajan con el sistema binario y para facili­
tar la escritura de los prograinas de estos,
se trabaja en el sistema hexadecimal. Por
esto es importante conocer estos dos últi­
mos sistemas de numeración si queremos
aplicar en forma eficiente esta tecnologfa.

Cursopracticosobre Microcontroladores ~IT...:. ~


1­Qs microcontroladores son sistemas cuyo ¿Cómo hace el microcontrolador para cono­
comportamiento no se define en el momenro de cer y manipular los daros que corresponden a la
su fubricación. Para que un rrúcroconcrolador sea rcmpcrarura del medio ambiente? Recuerde: co­
útil, se debe grabaren su memoria internad con­ dos los daros manejados por un microconrrola­
junco de acciones que debe ejecutar. Una vez dor son de tipo digital. Esro significa que la in­
hecho esro, se dice que el microcontrolador ha formación se representa internamente mediante
.tid(J programado, y se encuentra preparado para niveles de voltaje discretos. Por ejemplo, un ni­
ejecutar los procesos de control que le han sido vel de voltaje de O voltios se representa con el
encomendados. l Iabirualmente, un microconrro­ número cero (0), mientras que un nivel de volia­
lador embebido (ernbedáed) o incluido en uncir­ je de: +5 voltios se representa con el número uno
cuiro de control electrónico, mantiene su pro­ ( l ), figura 2.1.
grama original, en ramo no se prcscrue ningúo
desperfecto en el circuito integrado.

¿Qué técnica se utiliza para programar un ~-o Fv--1


microcontrolador? En la sección dedicada a
o vouoe, numero O +5 voltios, número 1
los conce.pros básicos, se mencionó que las
instrucciones del programa se deben codifi­ Rgura 2.1 Representaciónde un digitobinario
car utilizando el lenguaje llamado ENSAM­
BLADOR. Esro, aunque en principio parece ¿Cómo se puede represencar una tempera­
correcto, no refleja exactamenre lo que pasa ruca de 20°C, utilizando para dio unos y ceros>
en el interior del microcontrolador. En ülri­ Una solución a este problema se basa en el uso
rna insrancia. los microcontroladores sola­ dd sistema binario (base dos).
mente comprenden el lenguaje de los "unos"
y los "ceros" o sisrcrna binario; en otras pala­ El sistema binario se caracreriza por em­
bras, son circuitos digicales. plear únicamente los dígiros O y l. Para empe­
zara entrar en materia, vamos a mostrarle cómo
El programador, inicialmenre, codifica la se pueden represenra1· las icrnpcraruras OºC y
solución del problema en lenguaje ENSAM­ l ºC en este sistema. Para el ejemplo plantea­
BLADOR. A continuación, utilizando una do, !:< representación es directa: hasta con uri­
computadora desoporte, rransforrna el progra­ lizar un simple dfgiLO binario (también deno­
ma convirtiéndolo a código de MÁQUINA minado bit).
(unos y ceros). Esre código binario se graba en
la memoria del microcontrolador, y es el que Temperatura Número binario
realmente se ejecuta al iniciar el ciclo de ope­ OºC o
ración del sistema. JºC l

Estructura de los datos Pasemos ahora a n.:presenrar con núme­


Un concepto fundamental a la hora de pro­ ros bi narios las remperacuras OºC, 1 ºC, 2ºC
gramar un microcontrolador, es el relacionado y 3ºC. Si sólo disponernos de dos valores en
con la manipulación de los daros provenientes el sistema binario, O y L. ¿cómo es posible
del mundo exrcrior. Suponga. por un rnomen­ representar cuatro temperacuras difererucs? La
ro, que usted decide construir un sistema que solución se obricnc agregando a la izquierda
mida la ternperarura de una habir.ación y que del número binario un segundo dígiro (bit)
active una alarma sonora cuando la rempera­ con el cual se puedan crear combinaciones que
tura sobrepase los 26ºC. no se repitan.
~ L.':._
~ "1fl/l,K"IT..: ClltSo práctico sobre Microcontroladores
Temperatura Número binario Las combinaciones de dígitos binarios son
OºC o fOI únicas; esto garantiza que cada ce.mperarura se
i­c oW representa, también, de manera única. Podría­
2ºC 1 f01 mos continuar haciendo crecer la tabla rnostra­
3ºC 1W da, pero es evidente que se debe encontrar un
mérodo que permita representar cualquier rern­
pcrnmra, sin importar cual sea su valor.
El dígito (bit) situado .más a la derecha del nú­
mero binario, roma los valores O)' 1 pa1>1 las cempe­
raruras O"C y l"C (cxacramenre igual qu<: anres). Para empezar, observe el d.ígito (bit) del ex­
Sin embargo, observe que esta situación se repite tremo izquierdo de los números binarios de ta
par.¡ bs tempetaruras correspondientes a 2"C y 3ºC cabla anterior. Este dígito vale O para las prime­
ras cuatro temperaturas, mientras que vale 1 para
las últimas cuatro. Gracias a la presencia de este
La clave para diferenciar los dos rangos de rcm­
tercer bit, se puede disponer de ocho temperaru­
peratw­a (OºC ­1ºCy2°C ­3°C) está en d bít más
ras diferentes.
a la izquierda del número binario. Este bit toma el
valor O para las dos primeras temperaturas (OºC y
1 ºC), y adquiere el valor 1 p:ira las dos rernpcratu­ Como regla general, cada bit que se agrega a
ras restantes (2ºC y 3ºC). De este modo, aunque la izquierda de un mí mero binario, permire du­
d bit de la derecha se repita en los rangos mosrra­ plicar la caru idad de elementos que se podían
dos. la combinación de los dos bies permite rcpre­ diferenciar anees de agregarlo.
sentar las cuatro temperaturas de manero única.
El esquema de la figura 2.2 ilustra el peso o
Número binario valor relativo que tiene el tercer dígiro (de dere­

D~
Temperatura
OºC cha a izquierda) en cualquier número binario,
tºC

o~
,.. ....... - Hunlero<tiinonoo; El terur bll de lo tz­

.. ........,de~'­
de dm dfgitos dO tres digft~ qult."fdaagu:gJ:el vtltor .t
2ºC
3ºC Tcrccrdlgito
eo'ó 000 o 00 o

LºlP
Rqm..sentemosahora las temperaturasO°C, l °C, 011 001 1 01 1
2°C, 3ºC, 4"C, 5"C. 6"(: y 7°C. Cómo podrá adivi­ 2
O+ 10 2
nar d lccror, es necesario agregar un nuevo bit en el 011 3 11 3
extremo izquierdo del número binario, de modo que 100 4 00 4
se creen combinaciones únicas, Observe el resultado: 101 5 01 5
4+
6 6
l
1 H) 10
Temperatura Número binario 111 7 11 7
OºC oo T

JºC o 1 Fígura 2.2 El pesa de un l)ít de acuerdoCM su posición


2ºC 1 ()
E.l cf<:'<.."tOde colocar el valor 1 al tercer dígito
3ºC ~1 l es similar a sumar 4 al número binario de la dere­
cha. En este senrido. d peso del tercer dígito es 4.
4ºC oo
5ºC () 1
6ºC 1 o Al hablar de un bü, es conveniente conocer
7ºC ~1 1 su posición <lena­o del número binario. Es usual

Curso práctico sobre Microcontroladores ciic1r..:. ~


.
roim.s . e umer:aeron
­ . ­­~
que los dígiros binarios se numeren de dere­ de la suma de los pesos de los d ígi ros binarios
cha a izquierda, en orden creciente, em peza n­ cLryo valor es 1. El dígiro situado más a Ja iz­
do con el valor O. Para ilustrar los conceptos vis­ quierda rieue el peso más aleo, mientras que
ros hasta ahora. presentamos la estructura que el dígito situado más a la derecha es el dígiro
tiene u11 número binario de 8 bies, con los pesos que tiene el menor peso. El dígico con mayor
asociados a cada dígito binario, figura 2.3. peso se denomina MSB (1\1ost Significan/ Bit),

••••••••
mientras que el dígiro con el menor peso se
f'es<I drl bit 128 64 32 16 8 4 2 1
denomina l.SB (Least SignijiC1mt Bit) .

D111ito con 1unvor IH.-~o 1J1clln ron rr.P'llir 11•r:!


l'{i(,tc,llll d"I bit 7 6 5 4 3 2 1 O
(Mi\1~ ll SRI
"El peso de cada bites el doble Que el peso
del bitsilllado a su derecha"
Figura2.3 Pesos ;,,,-ociados a cada bit
001111
Figura2.4 l.()s dígitos MSBy LSB

Los pesos pem1 i ten establecer d valor deci­ Los primeros 16 números binarios son de
mal de un número binario. Observe el número gran importancia en el dominio de la electrónica
binario 101 l. correspondiente a una rernpcraru­ digital, de los microconrroladores, de los micro­
rn de; 11 ºC. Si queremos encontrar el valor deci­ procesadores y de las computadoras . Estos nú­
mal a pan ir de esca representación binada, basta meros form:m la base del sistema hexadecimal,
simplemente con sumar el peso de los digicos el cual consiste de 16 símbolos diferentes. En la
cuyo valor es 1 . tabla de la figura 2.5 se muestran los números
~ dd ú al 1 5 en su rcpresenración bina­
rúmero binario. o ria, decimal y hexadecima l. Además, se
indica cómo derivar los valores dccirna­
Pesos 8 4 2 les a pa rri r de los pesos asociados a los
bits W)'O valor es 1.
(8xl) + (4x0) + (2xl) + (lxl) =
Número decimal 8+0+2+ =ll F.11 cl sistema hexadecimal, los úlri­
mos seis números se r(;prcsema11 con las
"Únicamt:nre imporran los pesos de los bits letras A. B. C, D, E y f. tomadas rodas ellas del
del n umero binario, cuyo valor es 1 " alfabeto. b conversión Je un número binario al
sistema hexadecin 1:.l 110 cambia el valor del nú­
Facil, ¿verdad> ¿Podría el lector indicar qué mero representado. Sin embargo. es una norma
u;mperarum se representa con t;I número bina­ en electrónica utilizar números hexadecimales en
rio l IOO 11O1? Observe abajo la solución: lugar de números binarios ¿por qué? Observe la
siguiente simplificación: (fado el número binario
Hemos resal cado en negrilla los pesos de los 1 1 00 1 l O 11 O l J 00 1 1, encuentre el número hexa­
hitt cuyo valor es l . .El número decimal resulta decimal equivalente.

Número binario l o o l o
Peso de los dígitos binarios .128 64 32 16 8 4 2
( l28xl)+(64x1)+(32x0)+( J 6x0)+(8x 1 )+(4xl )+(2xO)+(lx!)
Número decimal 128 + 64 + o •· o + 8 + 4 + o + l = 250

~ 4Ñ-1r..:. CUrso ¡rictico sobre Microcontroladores


~ . Derivación decimal
~ Equivalente Equivalente
Número bmario a partir
: Decimal
-
11 Hexadecimal
; ,.. de los dígitos binarios
-
Peso 8 4 2 1 8 4 2 1
oo o o o Q O+O+O+O
oo o 1 1 1 0+0+0+1
oo 1 o 2 2 0+0+2+0
·oo 1 1 3 3 0+0+2+1
o1 (} o 4 4 0+4+0.+0
g 1 o 1 5 5 0+4+0+1
o 1 1 o 6 6 0+4+2+Ó
o 1 1 1 7 7 0+4+2+1
1 o o o 8 8 8+0+0+0
1 o o 1 9 9 8+0+0+1
1 o 1 o A 10 8+0+2+0
1 o 1 1 B 11 8+0+2+1
1 1 o o G 12 8+4+0+0
1 1 o 1 o 13 8+4+0.+ 1
1 1 1 o E 14 8+4+2+Ó
1 1 1 1 F 15 .l!+4+2+1

Figura 2.5 Equivalente birmrio, heudecimal y decimal

El primer paso 'I""' se debe dar para resolver El segundo paso en la solución del problema
el problema propuesto consiste en dividir el nú­ consiste en buscar en la tabla de números hexa­
mero binario en grupos de 4 bits: se empieza decimales el grupo binario a ser reemplazado,
agrupando los 4 bits a la derecha del número bi­ escribiendo en su lugar el número hexadecimal
nario, se agrupan luego los 4 birs ubicados in­ correspondieure, figura 2.6 .
mediatamente 'l. la izquierda, y el proceso corui­
núa hasta que se agotan todos los dígitos del nú­ ffóiiüi oj~ O 11.001] Némero binario original
mero binario original. Si el último grupo creado
no contiene exactarnenre4 bits, se recurre a com­
l l l l
1100 l 101 1011 0011 Grupos de 4 bits
plerarlo agregando ceros (no significarivos) a su
izquierda. Apliquemos este proccdirnicnro al
l lD l13 l3
C Números hexadecimales
número binario 110011011011001 l. equivalentes
Rgura 2,6 Generación de un numerohexadecimal
Número biuari1'
original Una consecuencia positiva de la representación
hexadecimal escriba en que es mucho más l:ilci) re­
Grupos de 4 bits cordar el número CDB3 en base 16, que su equiva­

Curso pracüco sobre Microcontroladores 4íc ITs..:. ~


lenrebinario 11001 1 O 11O110011. Otra vencaja que pesos. Para ilusrrar lo anterior, consideremos el
se deriva del uso de los números hexadecimales rie­ número 32; su representación en binario es:
ne que ver con la disminución del espacio emplea­ 00100000. Ea la figura 2­7 puede apreciar s11
do para su rcpresenracién en documentos escritos, representación en BCD.

En los próximos aparcados vamos a estable­ 3.2


cer :ilgunas definiciones que serán útiles más ade­
lante. [Q:·1r{1~~
Figura 2.7. Represent,1ción en BCD del número 32
Bit
Un bit es la unidad mínima de información en Byte
un sistema binario, y puede tomar sólo uno de Un byte es un grupo de 8 bits. En un byte, el bit
esros valores: l ó O. de mayor peso, usualmente el de la izquierda, se
denomina bit MSB; el bit de menor peso, usual­
Nibble mente el de la derecha, se denomina bit LSB. El
Un rúbhle es un grupo de 4 bits. El nibble es útil byte es una de las estrucruras de datos más utili­
para representar conjuntos de dígiros decimales, zadas en todos los sistemas de computación.
como se ved :l conciauaci6n.
Word
BCD Una palabra (word) es un conjunto de 16 bits, y
Un dfgit:P decimal: O, 1, 2, 3, 4, 5, 6, 7, 8 o 9 se equivale a la unión de 2 bytes. Ocasionalmente.
puede represencar mediante 4 dígiros binarios (un es necesario agrupar un conjunto de 32 bits como
nibble). U. siguienterabia muestra los dígirosdeci­ si se tratara de una sola entidad. Esca nueva es­
males y su equivalente binario, al cual se lo conoce trucrura (4 bytes) se conoce con el nombre de
con el nombre BCD (Binary CodedDecinuzl). palabra doble (do-uble).

Dígito decimal Dígito BCD L, figura 2.8 presenta un resumen de los ele­
mencos vistos. ·
o 0000
r 1 0001 o
[lll
3
!illl
2 1 o 76543210
2 0010
3 ool l Bit Nlbble Byte
4 0100 15 14 13 12 11 10 9 8 7 6 s 4 3 2 1 o
5 o1o1 1 r 1 r r 1 r r:1 e 1 i 1 1 1 IJ
6 o 11 o Worrl
7 o 'l l 1 Figura 2.8 Reµrt!$enlaciones binarias
8 1000
9 1 oo1 Rango de los números binarios
Si urilizamos únicamente 2 dígitos binarios, po-
Algunos sistemas permiten Ja representación drernos diferenciar entre 4 entidades distintas:
de los números decimales en formare BCD. 00, 01, JO y 11. ¿Cuánros elementos podremos
Cuando se utiliza esta forma de representación, diferenciar con 16 birs? La respuesca a esta prc­
se reemplaza cada dígico decimal por su equiva­ guma no se obtiene generando todas las posibles
lente en BCD, uno después de orro. El resultado combinaciones y luego contándolas, ya que csro
que arroja este proceso difiere del que se obren­ llevaría demasiado tiempo. En su lugar se ern­
dría aplicando la numeración binaria basada en plea la siguiente fórmula:

~ ~IT..:. Curso práctj¡;o sobre Mícrocontro/adorcs


cero. El w10 ·qttc sobra se acumula y pasa a la
Número de combinaciones = 2" siguiente columna,

en donde n es el número de dígitos binarios. La operación binaria: 1 + 1 + 1, se puede


Aplicando la fórmula al problema planteado se resolver recurriendo a sumas sucesivas. Obser­
obtiene: ve la figura 2.10. En el paso (a) se suman los

~úmerode combinaciones= 216 = 65536 l dos primeros unos. La respuesra es cero y "lle­
vo" u no. En el paso (b) St: roma el valor calcula­
do en el paso <interior (1 O) y se agrega al rercer
une> que teníamos pendiente por sumar. La res­
Operacionesbásicas puesta final es J 1 .
Los microcontroladorespermiten el uso exrensi­
vo de las operaciones maremáricas básicas: es
Oh oOllff
posible surnar o restar números binarios, realizar
operaciones de tipo lógico y desplazar el conte­ 1 01~01 + 10110
­1
­~­1
+ 01 ­
nido binario de un registro o posición de memo­
ria. A continuación, vamos a ilustrar las opera­ 10 11 1

ciones ele suma y resta binaria.


. __¡
(a) (b)
La suma de dígitos binarios Figura 2.10 suma de tres dígitrr.i binarios CUYIJ valor es 1
La suma de números binarios es similar a la suma
de números decimales. Basca con recordar qne Suma de números binarios
en el caso del sistema binario, sólo se utilizan dos La suma de números binarioses similar a la suma
dígiros: el cero y d uno. La figura 2.9 permite de números decimales: se empieza con los dígitos
entender el mecanismo empleado cuando se su­ situados '1 la derechadel número binario, sumán­
man números binarios, dolos entre sí, y calculando, ramo el resultado de

u
o o 1 1 la suma como el valor del acarreo (carry) que se
+ 1 + o + 1 transfiere a la siguiente columna.

l 10 El proceso se repite para cada nueva co­


Figura 2.9 La suma bit41tia lumna a la izquierda, pero comando en cuenta
el bfr de acarreo que viene de la columna más
La primera suma es evidente: al sumar dos a 1 a derecha.
cerosse obrieneun cero. La segunda suma, al igual
que la tercera,tampoco presentaninguna dificul­ El proceso descrito en el párrafo anterior pue­
rad: al sumar el número uno con el número cero de resultar difícil pa.rá quien no renga experien­
S<.. obtiene como resultado el número WlO. cia previa con los sistemas binarios. Por esta ra­
zón, sugerimos que las sumas binarias que ren­
El caso más inrercsancc corresponde a b gan algún grado de complejidad (números con
cuarta columna: si suma el número uno con el muchosdígicos binarios) se resuelvan convinien­
número uno, obtiene como respuesta el núme­ do primero los números al sistema decimal, rea­
ro dos. Recuerde: el número dos se r·epresenra lizando a continuación la suma y por úlcimo, pa­
en el sistema binario con la combinación 1 O. sando la respuesta a su equivalente binario (un
mérodo más simple consiste en utilizar una cal­
Sumar dos dígitos con valor uno en el sis­ culadora que renga incluida la posibilidad de su­
tema binario produce corno resultado el valor mar números binarios).

Curso practico S1Jbre MicrocontrDladoros cflic1T.: •


Númerosbinarios negativos (.11yo valor es cero se cambian por uno. A esto
En aparradosanteriores hemos visto como r<.'Prescn­ se lo llama complemento a uno.
rar números decimales en notación binaria. Pero 3. Por último, se suma el bit 1 al número obreni­
podríamos prcgunrar: ¿ysi el número de­cima! es ne­ do en el paso anterior, El resultado es el núme­
garivo? La respuesta a esta cuestión es clave para las ro negativo buscado.
operaciones de resta binaria. En primer l11g­<1r. ames
de entrar en materia, vamos a recordar como se re­ Ejemplo:
presenm ( utilizando ocho bits) el número decimal 3: Rcpresenrar en binario el númcro­25.

Decimal Binario l\plicación del algm·i1 mo


l. Converrir el número 25 a binario.
00000011
Peso 128 64 32 16 8 4 2 1
¿Cómo se representa, en binario, el número Número 25 0001 001
decimal ­3 ?.
2. Complementar los dígiros binarios.
Para empezar, si usted suma el valor 3 al nú­
mero ­3. debe obtener como respuesta el núme­ Número 25 00011001
ro O. Entonces, ¿qué valor debe sumarse al nú­ Complemento a uno 1 1 1 oo 1 1 o
mero binario 000000l 1 (3 decimal) para obre­
ner el número 00000000 (O decimal)? Observe 3. Sumar al número en complemento a uno con
la respuesta en la figura 2.1 l. el valor 1.
Decimal Binario
Complemento a WlO 11100110
3 00000011 Suma con bit l 0000000[
+ -3 + llLIJ]Ol+­­
Número (­25) 1 1 1 OOl 1 1) Respuesta
o 100000000

Rgura 2.11 Número bin;;rio negativo Resta de números binarios


Del aparcado anterior debe resultar evidente
Supongamos, por 1111 momento, que el bit de que el proceso par:. realizar restas binarias con­
acarreo no importa)' puede desecharse. Si cfü: ll1c­ sisre simplemente en encontrar el número ne­
ra el caso, podríamos asurn ir que el valor gativo del valor a resrar, sumándolo a conri­
11.1111O1 equivale al número ­3, )':l que al su­ nuación :<I número positivo. Esto es equiva­
marlo al número 3 produce el valor O. lente (en decimal) a 111l:l operación del cipo:
48 ­32 = 48 + (-32).
¿Cómo puede representarse, en general. un
número decimal neg>ll ivo usando el sistema bina­ De nuevo, al igual que en la suma binaria,
río? 1-1 respuesta está contenida en el algoritmo es más cómodo realizar primero la conversión de
denominado complementoa dos lo cual se logra­ los números binarios a su equivalente decimal
de la siguiente manera: antes de proceder a realizar la resta. El resultado
l. Se convierte el número decimal a su repre­ obtenido se convierte al equivalente binario ne­
senración en binario. garivo, obteniéndose la respuesta deseada. En
2. S<.: invierten los dígitos binarios: aquellos cuyo ca pirulos posteriores tendremos la ocasión de

~v4;;;;. ::::~:::::·:~:n:'.~::do~plicru
este mérodo.
- ~1 J

,1<-1 ~· tllfl
.l!l!Ul) '
Programa
ensamblador
;n.r¡;. ll'f' .u. 1 1 j •.11"

·-......~·.
•••
'1n~ 111

., .... ..,. "'''


,, '
­~
'

PROGRAMACIÓN DE
MICROCONTROLADORES
Uno de los aspectos más importantes
en el diseño y en la ejecución de pro­
yectos y aparatos con microcontrola­
dores, es la planeación y escritura ade­
cuadas de sus programas, los cuales
varían según la marca y el modelo del
dispositivo utilizado, los circuitos ex­
ternos a él conectados y la función a
realizar. A partir de esta lección ire­
111os explicando, paso a paso, la me­
todología y Las técnicas apropiadas
para hacerlo.

Curse práctico sobre Microcontroladores cfii.icIT..:. ~


L~ solución <le un problema de control elec­ En lo sucesivo emplearemos el término en­
rrónico, basado en microcontroladores, incluye samblador para referimos al conjunto completo
dos etapas fundamenrales: escribir el programa en de programai; que genera un archivo binario a par­
lenguaje ensamblador y generar el archivo binario ur del código fuente de un programa de usuario.
ejecutable que debe gmbarse en la memoria del ,­­­­­­­­­­­­­­­­­­­­~
microcontrolador. Para empezar, estudiaremos el Un programa de usuario es un progra111" escrito
proceso de ensamblado de código. usando el lenguaje ensamblador. Su objetivo es la
solución de un problema de control electrónico.
El ensamblador está conformado por varios
módulos independientes, cada uno de los cuales Un programa ensamblador es aquel que reci­
cumple una función específica. Los módulos más be el código fuente de un programa de usuario
importantes son los siguientes: y genera un archivo binario ejecutable. Esre
código se almacena en la memoria de progra­
F."'.imbl.ulur busico, Cenen, a partir del có­ ma, y es ejecutado por la unidad cenera! de
digo fuente, un archivo binario rclocalizable. proceso cada vez que el microconrrolador se
Este archivo puede ser almacenado en cualquier pone en marcha.
segmento disponible <::JJ la memoria del micro­
controlador. Controlo sistema embebido
Un proyecto de conrrol o sistema embebido
Enlazador (/inl.·al. Crea, a partir del archivo bi­ (embeddedsysumi)utiliza un microcontrolador ¡Y<lra
nario relocalizablc, un archivo binario ejecuta­ gestionar de manera autónoma los proce.o;os de ad­
ble. Este código es el que ejecuta directamente el quisición de daros)' la acnvación de las líneas de sali­
rn icroconrrolador, da coneceadas a periféricos externos. Debido a que el
precio de un microcontroladores insignilicame com­
Control J~librerías (/ib). Esre módulo permite parado con el de una computadora personal (PC) y,
crear archivos binarios que pueden ser unidos además, su tamaño es bastante reducido, se entiende
(e11 lazados] con otros bloques de código binario, que se lo prefiera en el con crol de procesos clcctróni­
lo que facilita la rcurilización de panes de pro­ cos y en el diseñe de ap:1r:11·0~ electrónicos modernos
gramas generados en otros pro)'ccros. El uso de dotados con cierta "inreligencia".
librerías simpliflca d desarrollo de programas de
gran tamaño y complejidad. El desarrollo de un proyecto embebido está
sujeto a un ciclo de vida particular, según se aprc·
la figura 3.1 muestra la estructura dél en­ cia en la figura 3.2.
samblador, así como el flujo de información en·
ere sus módulos.

Cudiqo ,-:,w1'.,..j ,
fuMte 1 , ••
tt f11rnl11>~l<t

Ens:.tmblador Métodode diseño


encascndl!

Figura 3.1 Estructura del enS3mblador Figura 3.2 CíCIO de vid,1de un proyecto embebido

~ 4.Íc17.:: Curso práctico sobre Microcontroladores


Este ciclo de vida se atiene a principios sóli­ Archivos generados por el programa
dos utilizados durante décadas por los ingenie­ ensamblador
ros especializados en d desarrollo de programa.5 Además del código binario, el ensamblador ge­
de tipo general. Un esquema mds siro ple. y tal nera un conjunto de archivos adicionales, gra­
ver. más cercano a la realidad de quien programa cias a los cuales es posible controlar la evolu­
un microcontrolador,se muestra en I" figura 3.3, ción del proyecro. La extensión que acompaña
en donde se indica. de manera concrera cuales a cada nombre de archivo, y que consiste en
son los pasos que debe seguir un programador eres letras después de un punro (.), indica cual
para obtener el programa o código final. es el cipo de información que contiene el ar­
chivo. Un ejemplo tomado de un ensambla­
dor ú pico es el sigu ien te:

Tipo de archivo Extensión

Código fuente del programa ,\SM primero.asm


Código biliario ejecutable HEX prímero.hex
Figura 3.3 Ei1pas en el desarrollo de una aplicaciónpaJa Listado del programa LST prirnero.lst
microcontroladores
Lista de errores ERR primero.err
En la figura 3.4 se plantea. el mérodo de tra­ Código objeto ejecutable OBJ primero.obj
bajo que recoge las ideas presentadas previamente Archivo de librerta LIB rutinas.lib
y que son la clave para desarrollar un progr:ima
con éxito. Aunque el proceso es de naturaleza se­ Un archivo con extensión ASM (ó asrn, dado
cuencial, es común que se elabore uno en espiral qu(' aquí no importan las mayúsculas o minús­
en el que, cada cierto tiempo, se practique una culas) con cien e el código fuente del programa_
revisión minuciosa de los objetivos alcanzados El nombre del archivo (la palabra primero, en el
basta el momento. Esto implica u na revisión per­ ejemplo mostrado) está separado de su extensión
manenre del Lr:<bajo desarrollado. mediante un punto, y debe cumplir con las res­
tricciones impuestas poi·el sistema operativo. El
método más simple para crear un nombre co­
rrecto consiste en empezar con 11 na letra (y en
algunos casos con un carácter de subrayado U),
agreg¡1ndolc a continuación una combinación ar­
bicraria de letras, números y caracteres de subra­
yado. Alguno~ sistemas operativos resrri ngen la
longitud del nombre a un máximo de ocho ca­
racreres. Ejemplos válidos de nombres de archi­
vos fuente son los siguientes:

pnm<cro.asm
_conuol.a.~m
alarrna , 1 .asrn
­ 11<1dJ<sl•
­ l'n)!¡r:)mJdOI tempX20.asm
Re1uenloo del ~:;tem.1
Un archivo con extensión HEX u OBJ con­
Rgura 3.4 Método de tro/Jiljo para el desarrollode programas riene el código binario ejecutable, y se deriva au­
basadcsen microcontrolador tomáricarncnrede un archivo con extensión ASM.

Curso práctico sobre Microcontroladores 4Íc1T..:. ~


El proceso de ensamblado puede generar tam­ naruraleza particular, cada ensamblador ricncsus pro­
bién. de manera aurornárica, dos archivos de gran pias reglas que deben ser respetadas. Aforrunadamen­
importancia práctica. El primero de ellos (con exren­ re, existen ciertas normas de tipo general, comunes a
sión tsn <::< un listado que contiene d texto del la mayoría de los ensambladores. que es necesario
programa fuente debidamente formateado, lo que conocer para reducir el tiempo invertido en el proce­
permire documentar con claridad el desarrollo del S(> de escribir un programa de usuario. A continua­

mismo. Esrc listado incluye la numeración de pági­ ción. comentarnos algunas de estas caracterfsricas,
nas, la lecha y la hora en que se hizo d proceso de
ensamblado. la rabla de símbolos del programa füen­ Un progranu escriro usando instrucciones
re, la distribución de los daros en la memoria, así como del lenguaje ensamblador debe organizarse según
los erroresy advertencias que se derivan dircceamcnrc un diseño basado en columnas. En la figura 3.5
del código fuente. Las instrucciones se organizan eo se muestra la estructura de un programa escrito
columnas de acuerdo con una tabulación <'>­C:ln(hr. en ensamblador.

El segundo 1 ipo de archivo (con extensión


ERR) le sirve al programador para estudiar los
errores cometidos (cuando éstos se producen),
facilitan.do d proceso de corrección y depuración
del código fuenre.

Los ripos de archivo dcscriros anreriorrnenre Figura 3.5 División en columnas de un programa fuente escrito
pueden diÍt:rir ck acuerdo con d microconrro­ en efüamM'ldor
lador utilizado.
Cadauna de las columnas cumple una fon­
Términosusuales ción específica, según se indica a continuación.
fa importante establecer el ·signilk:.do de algu­
nos términos qt1c serán muy utilizados en las Ftiqu~l;o
próximas lecciones: Un:. <.:I iqucra es un nombre con el wal se identi­
fica una posición de memoria del microconrro­
Rq;i>tru. Es un depósito de números binarios que lador, y sirve para marcar puntos espt~dficos den­
permite guard~r daros en forma temporal. El nom­ tro del programa. 'Ioda etiqueta debe empezar a
bre del registro sirve para identificarlo plenamente escribirse: en la primera columna de bi línea y su
y cwibkcc d tipo de información que almacena, longitud no puede sobrepasar (usualmente) los
Por ejemplo, el registro W (disponible en los mi­ 31 caracteres; puede incluir, además, caracteres
croconrroladores de la familia PIC) se utiliza en la ~lfanuméfiws. el carácter de subrayado L) y d
mayoría de operaciones que manipulan daros. Su símbolo de interrogación (?).
nombre viene de l:i palabra inglesa toorlc (e rabajo].
lu-,lruuic'in
1 'ter.i]. Se refiere a un valor consrante, usualmen­ Una instrucción hace referencia a una de las ope­
te 1111 número escrito en formato hexadecimal. raciones básicas que puede ejecutar un micro­
Ejemplos de literales: 3, 12, 3F. controlador. Un ejemplo de una instrucción tí-
pica es MOVL\'(f, utilizada para cargar el regis­
Estructura de un programa escrito ea tro W con un valor literal. f.l término cargar se
lenguajeensamblador inrerpreta en este contexto como almacenar en,
Todos los microcontroladores disponen, como mí­ por lo que la instrucción MOVLW puede leerse
nimo, de un ensamblador, Ahora bien, debido a su así: "almacenar uo valor literal en el registro W".

~ J°'Qi.Í<
1z;. Curso práctico sobre Microcontroladores
Operando namiemo del ensamblador, Para ilustrar lo ante­
Un operando es un elemento utilizado por una rior, considere la familia de microcontroladores
instrucción. Algunas instrucciones, debido a su PIC, la cual utiliza d ensamblador M.PASM. En
simplicidad, no utilizan operando. Orras, un este ensamblador la directiva lisr indica la versión
poco más complejas. requieren el uso de un sólo del m icrocorurolador 11tiliza<lo, lo que establece el
operando. Por último, existen instrucciones que tipo de progranu binario generado. F.<t:< directiva
requieren el uso de dos operandos parn cumplir es obligaroria, ya que cada microcontrolador ge­
cabalmente su función. El primer operando, nera su propio código binario )' el ensamblador
cuando está definido. se denomina operando debe adaptarse al modelo utilizado.
fuente. El segundo operando, complemento del
anterior, recibe d nombre de operando destino. Para ilustrar lo expuesto en e], párrafo an­
La información fluye desde el operando fuente terior, supongamos que usted utiliza en un pro­
hacia el operando destino. yecto el microconcrolador J6C84. La directi­
va que debe incluir al comienzo del programa
Comen rario es la siguiente:
Un comentario es uu bloque de rexro que le sir­
ve al programador para documentar sus progra­ li.st p=16C84 microcontrolador· 16(84
mas. Los comentarios son ignorados por el en­
samblador, y se reconocen porque empiezan con Consranrcs
el caracrer punro y coma (;). En esca sección se i ncl ll)'(:n las dcfin iciones de
constantes que son reconocidas en los demás
Tipos de linea que se puedenincluir en pwHos del programa. El uso de constanres sim­
un programa plifica la lectura de un programa, ya que, en
Los programas en ensamblador se deben escribir lugar de referirse a un valor hexadecimal en par­
SCf.>Ún un esquema que permita estructurar de ticular, se puede utilizar el nombre de la cons­
manera sólida al trabajo desarrollado. En la fi.gu­ tante asociada. La mayoría de los ensamblado­
ra 3.6 se mucsrra la arquirecrura general de un res utifo.'1n la ¡x1bbn1 equ para definir una cons­
programa para microcontrolador. tante. Por ejemplo, la línea

Enll<'!bezado puertoA equ 05


Constllntes
le indica al ensamblador que se puede utilizar la
DeflnlclOn de origen palabra pnertoA en lugar del número 05.
Instrucciones
Final del programa Definición del origen del progrnma
Al prognunar un microcontrolador es necesario
Figura 3.6 Atquitectum gencr¡1Jde un programa en cn&1mblador indicar explícitamente en que sirio de la memo­
ria se debe almacenar d c:údigc> binario del pro­
grama que está a puoco de ser ensamblado. Esro
A continuación presencamos el significado se consigue con la palabra org (origen). Por ejem­
de cada uno de los bloques mencionados. plo, la siguiente· línea

org 0
Es el primer componente del programa, y en él se
definen algunas directricesde cipo general, cono­ indica al ensam bbdor q uc debe almacenarse, a
cidas e.orno directivas, que modifican el funcio­ partir de la línea O en la memoria de programa,

Cursoprácticosobre Microcontroladores c(á.._.Íc1r..;. ~


el código binario generado. Existen algunas va­ nos (medianre el uso de puerro> de entra­
riaciones que indicaremos oporrunamente cuan­ da), debe almacenar esca información en la
do sea necesario, memoria de daros; esto perm i re que los
daros estén disponibles para ser utilizados
1 nM rucciones dd program;1 mds adelante.
Esta sección se utiliza paro almacenar las insrruc­ 5 El microcontrolador posee una unidad arir­
cienes del programa. Una instrucción rfpica in­ mérica y lógica que se encarga de realizar
cluyc los siguientes campos: operaciones sobre los datos. De acuerdo coo
los resultados obtenidos, el m icrocon1 rol:t­
etiqueta código de opcrando(s) ; comentario dor toma decisiones sobre la acriv ación de
insrrucción líneas en los puercos de salida.
6 Un sistema embebido (basado en microcon­
A excepción del campo código de instrucción, rrolador), cumple con el objetivo de con­
los restantes campos pueden aparecer (o no apa­ trol J"r•ra el cual ha sido diseñado gracias a
recer) dentro de una línea de programa. la existencia de un conjunto de instruccio­
nes (programa) que indica de ma ncra pre­
ri11alcid pro¡?.r.UnJ cisa lu q uc debe hacerse en cada insranre
Esca sección contiene una instrucción simple que del tiempo.
marca el final del programa. El ensamblador 7 Un programa (conjunto de instrucciones)
MPASM (de la familia de ruicrocontroladorcs se almacena en la memoria de programa
PTC} utiliza la siguiente instrucción para conse­ cid microcontrolador,
guir este propósito: 8 Un microcontrolador puede recibir señales
del exterior (en insranres del tiempo que no
end es posible predecir}, ante las cuales debe re­
accionar sin pérdida de tiempo. Esto impli­
Et entorno de programación ca el abandono temporal de aquello que se
H objetivo de cualquier programa de usuario es, está ejecutando, para dar cumplimien ro a una
en principio, muy simple: leer daros de periféri­ fimción que atienda b interrupción, A los
cos externos, calcular, y activar líneas de salida procesos implicados en este tema se los co­
que produzcan cambios en el ambicnrc externo. noce con el nombre de procesospara el ma­
nejo de interrupciones.
Las siguientes afirmaciones permiten entender la
estructura del entorno ele programación cid mi­ La figura 3.7 presenta un modelo sirnplifi­
crocontrolador: cado del enromo en el 9ue se desenvuelve la eje­
cución de un programa de microconrrolador.
1 El microcontrolador accede al contenido o
a las señales de los componentes externos, a El contador de programa
través del uso de puerros de entrada, 1:.1 microcontrolador utiliza un regisrrn especial,
2 El rnicroconrrolador modifica el comenido denominado conradorde programa,parasaber cuál
o envía señales a los componenres externos, es lasiguienre insrrucción que debe ejecurar, El pro­
mediante el uso de puertos de salida. ceso <"'5simple: al comienzo de k• ejecución, el con­
3 Los daros leídos en un puerro de entrada radorde programa apunta a la primera instrucción
son almacenados, en primer Jugar, en un del programa, cada vez que ejecutauna instrucción,
registro interno del microcontrolador, el contador de progrnma incrementa su valor, de
4 Cuando un microcontrolador lee muchos modo que la instrucción que se ejecuta la próxima
daros provenientes de compone me.~ cKtcr­ vez es la siguiente en la memoria de programa.

$ ~IT..: Cursq proctico sobre Microcontroladoms

-.:: 'l. - . ­
o
o
• •
.

Figura 3.7 fJ entorno de programación iun<lamental

La ejecución de las instrucciones, y el carn­ alreran componcnccs conectados a los puerros


bio en el contador de programa, es un proceso de salida. lo que en cierro sentido implica un
automático y rransparenre para e.l programador, proceso de escribir información. Este proceso
lo que significa que se produce bajo el control se ilustra en la figura 3.9.
inrerno del microcontrolador. • Un conjunto especializado de instrucciones pcr­
mire acceder a información almacenada en la
Algunas veces el contador de programa memoria, realizando :.1 continuación sobre ellas
cambia su contenido por un valor que no co­ operaciones aritméticas o lógicas. L­0s resulta­
rresponde a la siguiente posición de memoria. dos intermedios pueden ser devueltos nuevarnen­
faro se verá en el siguiente apartado. La figura ce a la memoria, o almacenados en registrostem­
3.8 muestra el flujo probable en la ejecución porales, para ser utilizados posteriormenre. La
de un programa. figura 3.10 muestra este cipo de instrucción.

Conjunto(set) de instrucciones
Anees de iniciar el estudio de las técnicas de pro­
gramación, y su aplicación a problemas concrc­
ros en el campo de los microcontroladores, es Conbdoc dci programa
importante comprender la naturaleza de las i ns·
rruccioues disponibles y la forma como se orga­
El contador de programa
nizan jcr..ir<.1uicantcntt;, ~cg1~1n las fi.Jnciones para almacena la dirección de la
siguiente instrucción CJ1edebe
las que han sido diseñadas. ejeartarse.

• Cada instrucción permite actuar sobre un de­


terminado elemento del entorno de programa­
ción: algunas de ellas permiten leer informa­
ción proveniente de periféricos externos (me­
diaure puertos de entrada}, mientras que otras Figura 3.8 Flujoprobable,i!n la cjecoci6n tic un prog~ma

CursoprácticosabreMicrocontrol:Jdores ~IT.: ~
•Los programas no siempre se. ejecutan de ma­
nera lineal; algunas veces es necesario alterar
' h~tll J el conrenido del contador de programa, lo
.1~
tp.1c deriva en una ejecución no secuencial
de las instrucciones. Esra caracrer ísrica con­
fnstruccX>n de escritura fiere una mayor flexibilidad a los programas.
Las instrucciones de salro se dividen en dos
caregorfas. La primera de ellas corresponde a
las instrucciones de salto condicional. en las
cuales el salto se produce si, y s61o si se curn­
Rgura 3.9 Instrucciones de entrada/salida. ple una determinada condición.

J
Uáhl 1ruc1n1oo.>
La segunda caregorfa corresponde • las instruc­
ciones de salto incondicional. Como su nombre
lo indica. no se requiere que se cumpla ninguna
condición previa p:m1 generar el saleo. La figura
3.12 muestra los dos cipos de sal ro indicados.
0.1 tv U!X!<.kJ Memoñ.1 <te progn11n:t Mornuó3 de programa
1ml-e1111rttlt'fl'I,

Figura 3.10 lnstroccifHlfiS ae /ronstcrcncia a memoria y


c.1/Cu/()S.aritmóliCtJsy /6gicos.

• En ocasiones es conveniente manipular dircc­


ramcnte los bits individuales de los daros alma­
cenados en la memoria o disponibles en un re­
gistro interno. El microcontrolador dispone de
instrucciones que aislan cada bi: de manera in­
dividual. De este modo se puede tornar una Safto condicion..11 Stt!to incondJc:1unal
El t:amino 5e9(li(IO de!)eflde El camino seguido siempre
decisión según el valor del bit o alterarsu con­ de una <:Qn<Jiciún es el mismo
tenido cambiándolo por un valor diferente. L~
Figura 3.12 Sal{() condicionale incondicional
figura 3.11 muestra algunas posibilidades brin­
dadas por estas instrucciones. • F.n ocasiones, algunos proces<ls del rnicrocon-
IJ¡f~l~cdlJIMCIO
rrolador 1\0 se pueden encasillar en ninguno de
los grupos mencionados. Lis instrucciones im­
plicadas en la ejecución de estos procesos se co­
nocen con el nombre de instrucciones de con­
trol, y su presencia >lyuda a mejorar de manera
signifk:ativa el funcionarnie.nro de los programas.

-
;.' A título de ejemplo. podemos citar las insrruc­
Acc!On 1: Ton.ar una decisión
seg(sn el vatocdel bit Aoción 2: (;afnbi(lr el valor del bit ciones que habilitan (o inhiben) h1s interrupcio­
nes externas. En su rnornenro se mostrara un
Figura 3.11 nsuuccooeeae m.1nipulación oebits panorama completo de ellas.
JI" "
oC/f<IT..:. Curso práctka sobre Microcontroladores
Instruccionesde desplazamiento de bits F.11 cuanto a la operación de división, d pro·
En ocasiones es conveniente desplazar los bits de ceso es a la inversa: basra co11 desplazar el come­
un registro (o posición de memoria) para ejecutar nido del regis1ro 1111 hit o la derecha, para olue­
una operación ueucmárica scncilla, o simplemente ucr corno resultado la división del número entre
para crear un efecto que pueda rellc:j:u"S<; en J me­ dos. Observe el proceso en la figura 3.15.
dio de sal ida. como es el caso de un display o des­
pliegue luminoso o un con jumo de diodos LEO.
{24) {12)

Para iniciar el rema, vamos a plantear el si­ [ooo 1 1 000!..;...2­+ Joooo 11 ool
guiente problema: se debe multiplicar el conte­ w w
nido del registro W con el lireral 2, reemplazan­
Figura 3.15 OeS(J/,?t;,mumto11111 oetea»
do el courcnido previo del registro con el valor
obtenido en la mulciplicacion. ¿Qué ocurre con el hit que sale del rcgiscro,
canto a izquierda como derecha, después del
:l
w . 2 -->'V'.' desplavnmicnro? Este se debe almacenar en un
sitio preparado especialmente para ello.
F.n el esquema mostrado en la figum 3.13, el
rcgisrro W contiene el valor 2/i. La respuesta (48) El microconrrolador posee un rq,;isrro especial,
reemplaza d courenido previo cid registro W denrnnin:ido n:gistro <le estado, p:1ra el cual el valor
de los bitscambiase!',ÚJl el resultado de las opcracio­
(2~) (48) ncs ejecutadas, Ll llgur~ 3.16 muestra el u.'10 del re-
loo o 11oo.9],.,2 ­+loo 1 1 ooool gimo de estado para almacenar el bit excedcnrcque
Registro W antes resulta de un d"­'plimm1i,11w a la derecha.
Registro W despues

Figura .1.13 El contenido del regis&11 W multiplíca(f()¡¡(lr 2

Si compara el co1 ucn ido del registro W :rn­


res y después de la multiplicación, ved <¡uc I"
diferencia radica en la posición que ocupa cada
bit: L'S suficien«­ desplazar el comen ido original Figura 3.16 El registro de cswdo del microcon1to1ador
del registro W una posición :1 h1 izquierda. para
obrener el resultado de multiplicar el número por Ahora bien, ¿cu~(I es d valor del bir que ingre­
2 (figura 3.14). sa por el extremo m:i~ a la i'l.quicrd:i del rq;isrro en
un desplczarnieuro hacia la derecha? Usualmente,
Registro w antes es el valor cero. Escose apl ica rarnbién ni desplaza­
miento cu st:ntido com rario. en cuyo caso el bi1
que ingresa por el extremo mas a la derecha t."< el
dígiro cero. La figura 3.17 ilustra este proceso.

Figura 3.14 Desul;,1zu1nicnto~1 la izquierda

Desplazar el contenido de· un registro un bit o


<1 la izquierda. es equivalente a multiplicar su
contenido pnr 2.
Figura 3.17 Bits que ingresa11al reyístro

Curso práctico sobre Microcontroladores ~IF.'.: ~


El desplazamiento de bits permite llevar a
cabo careas diferentes a las que se derivan dd cal­
culo 11 umérico: es posible desplazar circularmente
el contenido de un regisrro, de modo q11~ el bit
,.
T
más a la derecha se inserta corno primer bit 111ás
a b izqu icrda (o en sentido inverso, según se de­
see). La figura 3.18 ilustra los desplazarnicnros
---+:
i
mencionados.

Desplazamiento circular ce W
100001101 Dato original

Yooo:o 1 1 o ;+J Desplazamiento


circufar
Puerto de_
salida
w

1100001101 Resultado

F(qurtl 3.18 lk..'Sf)lammicnto·circular


........
~

Figura 3.2iJ Diagrama de flujo


Aplicación del desplazamiento circular
Esmdie el siguiente programa: en d cucontrará El regístro de estado
b solución :1 un problema de animación visual El registro de estado de un microconrrolador
sobre un dispositivo óptico. La figura 3.19 11111cs­ permite verificar condiciones derivadas de pro­
rra el resultado de este pnX:CSQ y la figura 3.20 cesos internos o externos, así como establecer
su diagrama de flujo. condiciones especiales de control. Cada biten el
registro de estado tiene un significado panicular
l. Cargar el registro W con el valor binario el cual puede variar sc:g{111 l:i marca y familia dd
11000010. microcontrolador. A continuación vamos a des­
2. Desplazar circularmente el contenido del re­ cribir los bits más importantes, dejando la expli­
gistro W un bil a la derecha. cación de los rcst:rnl<:S p:ir:1 cuando corresponda
3. Enviar al p11cno de salida d dato almacenado según las aplicaciones desarrolladas, En bi figurn
en el regisrro W. 3.21 se muestra una parte de la estructura opica
4. Hacer una pausa. de un registro de estado.
5. Regresar al paso 2, con lo que el proceso se
repite indefinidamente. N Z C
ln1:errupeiones Cero
1iempoO 111000010 Negativo Acarreo
Tiempo 1 101100001
Figura 3.21 El registrode es/ano

Tiempol ¡10110000 A conrinuacion describimos el significado


Ticmpo3 lo o 1 o o o
1 1
de los bits de con crol.

Ticmpo4 1 O·O 1 o 1 1 oo C­ Control de acarreo. 'Iorua el valor 1 cuando


se produce u11 bit de acarreo ( Ctrry) en una
F¡gura 3.19 Aplicact(¡n del clesplazamicn/o circular suma de números binarios.

~ clári<a:r:.~ CurS(J práctico sobre Microcontroladores

- .!_ .... • -
L - Control de cero. 'Ioma el valor 1 cuando el programa. a pesar de lo cual es úril porque consu­
resultado de una operación es cero. 111 e cierra c;a111id:1d de ciclos d" rn.iquina y por dio

permite la creación de retardos de tiempo.


~ ­ Control de número nc­gativo. Toma el valor 1
cuando d resultado de una operación es nq;ativo. ~ c...io1 t111 n ' innH.~htlf> ,
Se presenra cuando el daro no proviene de l:i
1 ­ Activación global de interrupciones. Al esta­ memoria, sino que está incluido en la misma ins­
hlecer su valor a 1 se activa la derección de rrucción. Por ejemplo:
,
interrupciones: el microconrroladcr puede ser
interrumpido en su Íuncionamienco por ele­ MOVLW 5A
mentes externos.
Esra instrucción almacena el literal 5A en el re­
El microcontrolador dispone de insrruccio­ gistro W. Se.: puede apreciar que d d:Ho no pro­ I!
nes que permiten tomar decisiones de acuerdo cede del exterior ni rampoco de la memoria de
con el valor presente en los bits de estado. Estas datos. La flgura 3.2.Z muesrra el efecro del direc­
instrucciones son útiles para crear ciclos o bifur­ cionarnicnro inmediato.
....ar a otras posiciones de memoria. Literal

·~odos de direccionamie no 5A~


l.'no de los problemas al que se enfrenta un progrn­
mador es d "" ncoxlcr a los d.uos disponibles en la
memoria de una manera rdpida y eficaz. Existen
w
diversos mecanismos para lograr esco, a los que se Figura 3.22 D1r(!C(;J()(IJmie.ntomm1:d1Jl-O
denomina modos de direccionamiento. F.I direccionamienro inmediato se 111ili1.a
ruando los daros qw.: toman las instrucciones son
Los modos de dircccionamicnro más conocidos literales (consranres) conocidos de antemano.
son los siguientes:
l ):rt•1,.-t i 111.H.1!t'1tl > cii"t'4.lO
• Direccionamiento implícico El direccionamiento directo se uriliva cuando d
• Direccionamiento inmediato dato se transfiere hacia, o desde, una posición de
• Direccionamiento directo memoria particular. Por ejemplo:
• Direccionamiento relativo
• Dircccionamicnro indexado MOVWF OxOC
• Direccionamienro extendido
• Direccionamiento indirecto Esca insrruccién mueve el contenido del registre
W hacia la posición de mcrnoria OxOC. l".I con­
i hí1.'( ·i1l11.1rli n10 tl"lPI' u ren ido de la posición OxOC desaparece y en su
Las instrucciones guc usan este modo de dircccio­ lug­.lr S<= coloca el valor del registre¡\'{{, La figurn
namienro se caracterizan por no requerir el uso de 3.23 ilustrad direccionamiento directo.
operandos, debido a que no necesitan acceder :­1 [a
memoria de datos. Por ejemplo, la insrrucción NOTA:
Los números hexadecimales se escriben an­
NOI' reponiéndoles Ox. l )e In anterior se deduce
que el valor OxOC puede leerse: "número
pertenece a csra categoría. La instrucción NOI' no hexadecimal OC". F.ste valor corresponde <tl
produce ningún efecto visible en la ejecución del número decimal 12.

Cu= práctico sobre Microcontroladores ~67.'.: ~


Mcmoña ec datos l )jr,·\.·l 1011.umento extendido
Dirección Dato El direccionamiento extendido permite acce­
OxOB
der ;1 todo el espacio de memoria del micro­
controlador. La dirección se almacena en dos o
OxOC
oxoo
I · 37w tres bpt'S del operando. de modo que sin inipor­
1<1r el rnmaño de la dirección desrino se puede
~
acceder direcramcurc a ella.
Figura3.23 Oircccionamientodirecto
1 .a ligu ra 3.26 ilustra el modo de direccionam ien­
ro extendido.
1 >irc.'<.tjo11.1111it•no re .u \o
Lasinsrrucciones de saleo permiten alterar b eje-
cución secuencial de un progr:un:l. L.a$ insrruc­ Dirección 1--º-ª_10--!~28 I
cienes que urilizau este modo deciden a que posi­ 3A4F 28....
ción deben saltar. realizando para dio 1111 dlculo Ll)ASJMP
sencillo: suman un cieno valor numérico al valor ( '.:1 rgur d c­::.µi1u.u A
del contador de programa. d cual contiene la di­ 111ifo··.md" vl J;11t1
f----l ,thn:i1.x­1t..t<k><:11l.l dire<"l'"l•'•n
rccción de la instrucción dé sa lio. 1 ;1 ejecución .1h,,.,f,,1,1 ~A•I•.
del programa continúa a parcir de la dirección cal­
cnbda. Una ilustración de lo anterior se observa Figura 3.26 {)irerxíonamiento
extendioo
en la figura 3.24.
Instrucción Operando l )irc.·c. t,:Jon;unicnlo inc..lin:t.. lt
1 )~...,rl.u.1n1wnto En el modo de direccionamiento indirecto la
<<'htivoa la
0010 JNE._ 02 - ­ JJt.:u.!1)n t111r dirccx.ión <le una posición de memoria se cal­
ti
cula medianrc una doble referencia.
(.Ul\lt\:ll!:

0011 NOP i11l.lfll(,(:i011

0012 NOP En primer lugar se obtiene el dato contenido


en 1111:­1 cierra posición de memoria, y con base
JNEO!
:\~1h.t• ..id n~tlcl<.!1> pre\•iQ n~ es en este daro, Sé obtiene l:t dirección efectiva de
n•ro, (Lis 1~i._.j.1111o1,­.sm~ adclan«.
la posición dé memoria deseada.
Rgura 3.24 Oitei:CllJft¡¡micnlorcl,~tivo
La dirección cíccriva es la dirección deseada. F.n
1 )ir{.'<..ljnu.u11ÍL'uto iruu­ .1.. lo
d modo de direccionamiento inclirccro tosca se
La dirección de destino se calcula utilizando como
calcula como S<: aprecia en la figura J.27.
base un registro especial. F.n la figura 3.25 se
muestra el caso en consideración.
Dirección Dato Registro base X 3000 5000 5000 28•
A 2

• 3001
'.... 3002 28
WA (S :1000)
'::t1~1JC d f\"g:i~I (ti ¡\
LOA$ ,lOl)I), X t:J'RIJtd 1e~i..;.ro A \l~OlliJ el
mili·1:111ol(1..,~11no l~)l(.' d
d:1111 J.. b (li·~·i.~11 .)000 ­ el
daro courenido ell fa
eoownido de X. r1 decir. d dit(·c<:iún ­l<JOU.
nUml't'O.!K

Figura3.25 Oircccionamienroindex11dó Figura 3.27 Direcc1ona1nien10indirecto

C¬ "//l<IT.:.
Curso pr.ícoco sobre Microcontroladores


~cn.an:i.11
.-:1111
......

'"""'

­..--
h•·~---
-·.......
-"

MODB.O DE PROGRAMACIÓN
PARA LOS
MICROCONTROLADORES PIC
Antes de elaborar cualquier programa,
se· debe conocer el modelo de progra­
mación o estructura lógica de los prin­
cipales con1ponenres de un rnicrocon­
rrolador, En esta lección veremos el del
PTC 16F84, el cual puede ser aplicado,
con algunas pequeñas variaciones pro­
pias de cada familia, a los otros mode­
los fubricados por Microchip.

Cursopréctico sobre Microcontroladores -KIT.. ;. ~


Vamos a iniciar este tema estudiando las ca­ diferentes modelos, explicaremos los detalles es­
racrerfsricas lógicas del PIC 16F8'1 de Micro­ pecíficos de cada u no.
chip, un microconrrolador versátil y de arqui­
recurra simple. Escos conceptos se pueden apli­ Esra lección presenta d estudio sisremñrico de
car en su gr~n mayoría a los demás microcon­ los elementos que codo programador debe considc­
rroladores PIC. M:ís adelante, cuando veamos rar a la hora de elegir un microcontrolador: la orga­
la programación de 01 ros microcontroladores de 1)Í't.:·lctc>11 de la memoria, cJ conjunro de insrruocio­

76543210

I
REGISTROS ESPECIFICO$
(SFR)
BAN&OO BANCO 1
00 H 1-----+--·---4 REGISTRO DE ESTADO
01 H TMRO OPTION
1~~~~~.i.-~~~_,J
02H GIE IRP RPO TO# PO# Z OC C
03H ESTADO ESTAOO

:J ~
04 H
~05H i~...;.....;..,;;.;.~1--~...;..;;;:,;.;__¡
No utllQHdos
PUERTO B
7654321 O 08 H !Wl~4<""'*.:,_:;¿.,;~""­l REGISTROS DE PILA
(Slach)
09H EEADR
OAH
08H INTCON INTtON
i.. . ­. .

OCH ..
68 REGISTROS DE
.

PROPÓSITO GENERAL
(GPR) '
4FH
,­_ .,.,..,,..
8 niveles

00001! Vector de reset

0004H vector de lntcm1pc1oncs


OOOSH

.. Fig11ra 4.1 La arquitectura del PIC 16F84 1lesrfe el punto de vista del programador

<lfi.K l'it:.:. Curse práctico sobre Microcontroladores


ncs disponible, los modos de direccionamiento y las
76543210
particularidades g~n~rak­,; dd sisrcn '" dcgido. Sin em­
bargo. estudiaremos esroselementos desde la óptica w 1 1 1 1 1 1 1 1
del programador, a quien le importa en primera ins­
rancia, sólo hi naturaleza lógica de los componrnm; Figura4.2 El 1cgistro d(: tr:¡MjoW
v no su comporramivnro c.·lét;n·i<.:().
microconrroladorcs PIC se basan en la cecnología
loselementos RISC. la cual se caracteriza por un (:1mj111Ho redu­
­\ continuación se lisran los principales compo­ cido Je ins1 rucciones que se ejecuta en un sólo
nentes del microcontrolador l'IC J 6F84, impli­ cid o de máquina. Las tecnologías mencionadas
cados c.:11 l'I diseñe, y consrrucción de la mayoría conlicrcn a este modelo de microconrrolador una
de aplicaciones basadas en los PI C. enorme potencia en comparación con s,1$ co1npc._"--
1 idorcs, cu cw11110 a la relación cosco/beneficio.
• El registro de trabajo W
• F.I n.:gisrro de estado El registro de trabajo W
• La memoria de progran1;,1 H registro W, de 8 bits, sirve p:11:1:il111;1C<;n:u1111 dnto,
• l.a memoria de datos usualmente­ de forma temporal. curo valor será urili­
• Los registros de propósito especial zado posreriormcnrc cn un clkulo matemático o en
• Los registros de propósito general b 11<u1~forenciaena­e registrosy memoria (6gma 4­.2).
• Los regisrros de pila (s111ck) 'Ioda la información debe pas:lr pores1e registro.
• El puerro A razóu por la cual es de suma importancia para la
• El puerto B mayoría de instrucciones del microcontrolador.

la arquitectura del PIC 16F84 El registro de estado (status register)


(la visión del programador) La mayoría de­los procc.­;os ejecutados por d mi­
Cn programador concibe la arquitecrura del PIC croconrrolador generan efectos que pueden rcpc.r­
161'84 como un conjunto de recursos disponi­ curir sobre el desenvolvimiento del progr:ima.
bles. ~11 que puede acceder mediante d uso sisie­ Corno cjcwplo de lo anterior. considere la instruc­
rnarico de un conjunto de instrucciones. r:J or­ ción que desplaza a la derecha d contenido de una
den con el que escribe las instrucciones iniluye posición de memoria. Esca instrucción puede dar
ca el fuo<:io11amienco del sistema, es por este como resultado. en :tlgLín instante del tiempo. un
motivo que el programador debe: conocer con valor igual a cero. En ocasiones, esta situación
codo detalle d cornporramienro lógico de los di­ puede ser <le interés para el programador.
ferentes elementos q uc conforman la arq ui rectu­
r­• del microcontrolador, La figura 4·.l muestra F.I hfr Z {cero) dd registro de estado coma el
la apariencia qttc prcscnin el PIC J 6F84 a un valor 1 si el conrcnido de la última operación
programador. En los siguientes aparrados vere­ cfocnrnda es cero. En este caso, d uso de u na i ns­
mos cada elemento en detalle. rrucción apropiada permite al progr;11na vcrifi­
car d valor del bit y bifurcar a una posición de
l .os microconrroladorcs de la familia Micro­ memoria no secuencial, continuando desde illí
chip utilizan la arquirccrura l larvaed. la que se la ejecución del programa.
caracteriza por independizar el bus de daros del
OUS de memoria. r.st(I permite ad:lptar el tama­ l .a figura 4.3 muestra la estructura del n.­giStro
ño de los buses de acuerdo con los requcrimicn­ de estado. Los campos en color gris representan es­
ros del sistema, además dc ru unenrnr sensiblernen­ tados cuyo uso se relaciona con problemas de ma­
re la velocidad de rrabajo, Adicionalmente, 10­~ yor complcjid:ul qu~ no aplicaremos por ahora.

Curso práctico sobre Microcontro'3do11:s ~IV.: ~


l
REGISTRO DE ESTADO La memoria de programa
En el PfC 161"84 los prngra.mas de usuario se
almacenan en una 1.01Ht de memoria con un ca­
maño de lK. faro es suficiente par'l albergar la
ílmf'f Out solución de buena parte delos problemas de con­
AciJV<lCKlO glob;ll /1!10 rrol. L~ figur• 4.4 muestra un esquema básico
<lit IJ1lt"?ff1Jpc:lt10t'B S<Jleccl<Kl
de la memoria de prngrn1m1.
banco de
mPmoria
D1qlt carry
Sw1•c:cxn1 {Ir. b(~flCO'.) 1 '<JWt'f tfi)'.Vll l:.n esta memoria hay dos posiciones c.¡ue rie­
par.! ti lflho\:tlUtliilfllit:fl'l) 11e11 especial irucrés para el programador: OOOOH y
1nrt1n:­i:tu
0004H. L1 primera corresponde al pun ro de arran­
Fí_qura 4.3 El registrode estado que de rodo programa y se conoce con el nombre
de vector de reses. mientras que la segunda <'S d
Los blts del registro de estado que más se urilizan
inicio de la rutina de servicio dt· interrupciones y se
son los sigu icnrcs:
la denomina vector de interrupción. En los párra·
fos siguientes se amplían estos conccpros.
C ('nrry(bit de acarreo). Este bit se ~ctiva
cuando se presenm un aca rrco en el bit más
Vector de rrsct. Cuando se aplica una señal de
significativo dd resultado.
nivel bajo a la línea de resct; el contador de pro·
grama roma el valor OOOOH y el programa em­
DC Digir Carry (bitdcacarreo de dígiro). Esrc
pieza a ejecutarse a parcir de la primera insrruc­
bit se activa cuando se presenta un acarreo
ción. La situación anterior se presenta también.
en el bit :l del rcsu Itado. Esro riene rela­
pero de forma au 1 omática. al conectar la energfr1
ción, sobre codo, con operaciones en for­
al circuito del microcontrolador.
mato BCD.

V<:­..­,ur J1.· interrupción. Los programas con un


Z Zero (bit de cero). Este bit roma el valor 1
cierro grado de complejidad admiren la aplicación
cuando cl resultado de una operación 16-
de señales cxrcrnas. denominadas interrupciones,
gica o aritmética es cero.
<}llC alertan sobre Ja aparicióu de condiciones que
deben ser atendidas sin ninguna demora por poir·
RPO Selecciona el banco de memoria c.¡uc se va a
te dd sistema. l.'IS interrupciones también pue­
utilizar; Sí RPO =O, se selecciona el l):)JlCO 1; si
den producirse como consecuencia de variaciones
Rl'O­ l , se selecciona el banco O (ver memoria
en el estado de temporizadores i utcrnos <) debido
de datos en la RAM un poco más adelante).
al cambio en el contenido de cienos registros.

Vector de Un teclado conccrado a un puerro de entrada


OOOOH Resct
del microcontrolador es un buen ejemplo cid ma­
nejo de interrupciones: cada vez que el usuario
del sistema pulsa una ceda. el progn•.rna debe re­
0004 H Vector de accionar sin pC:rdich tk tiempo para dercrminar la
mU!nupciones
recia presionada y almacenar su valor cu un n:gis·
0005H
tro interno. La dirección de memoria 0004H es el
punto de inicio de la rutina de servicio de b inrc­
rrupción. La porción de programa que debe eje­
curarse cuando ocurra la irucrrupción debe guar­
Figura 4.4 la memadade program.1 darse a partir de la dirección 000411.

,. 4,ic1T.. :.curso practicosobreMicroco"troltldores


lle lo expuesro en los parrafos anteriores tene­
mos dos situaciones posibles: OOK Hcg!slros ele Jl'llj)ósito
OBH
especial·
El programa 110contiene rutina de manejo de OCH
Regrs!ros de prOJJO'Jilo
interrupciones, por lo q uc se puede utilizar roda geOtll~I
l:i memoria de manera lineal para almacenar el
program;i de usuario, figura 4.)a. Esto en ti Figura 4.6 Esquema simplificadode la memori(J de (1.?/fJS
C;JSO del I 6F84. En otros modelos esre manejo
puede ser di ferenre. Los registros de propósito especial
El P 1 C 16F84 se caracteriza por disponer de dos
• El programa inc.luy« uunruuna de servicio de bancos dé' memoria de daros: el banco tero y el
interrupciones, lo que obliga a la inclusión de banco t1110. l.c:> anrcr ior implica que cada registro
un saleo al comienzo del programa {dirección está disponible ramo en d banco cero corno en
()OH) 1"'"' omirir el código de progranu que el banco uno. l a figur.a 4.7 muestra los doce pri­
atiende la rutina de servicio, figur.i 4. 5b. meros rcgisrros (OOH­OllH) y su signiílci1du de­
pendiendo del hauco ~k memoria utilizado.
(a) 00 H i­­­­f­­­­'I
BANCO O BANCO 1
UOH 01f&.1011ao11e11t1) 1ldi1eeto

01 H TMRO OPllON Tct11pu1¡¡1100(/l;(1111,11 lnr

02H Pni 11• IJilfi' '"'' r:n11l.Kklr ue PIOQr.lmi'I


03H ..,_ _ _,,, __
ESTADO ESTADO­­.1­H!­iw;tro de r·;laoo
1 1 041! ~)li ir•1 1(:4 Oe felj!s\10!1
05H l"­­­­r­­­"'!
PIJERTOA TRISA ""''''"~
06H
(b) OOK D7H
08 H Aoceoo 11 b mmnort:I
W'ílOM
R1rt1n:1 dr~ :­;orv1r.10 r1r. 09H
interrupción OAH Pa1tu <:~1~• 6ffl coutidor de DJcqrama
05 H • DBH ~==~~=~~ Ct.líllrol <lo 111tcrrupcionc::;

~­­­­­~
_ Programa
• j Prugrai11a prl11c:1~._,,
Figura 4.7 Los regisú<JSde propósito es(Jet:i111

Figura 4.5 La rndna de seJVicio de m1ern1pdonl!S L~ forma de uso de los regi!>tros de propó­
si10 especial se verá en detalle cuando estudie­
la memoria de datos en RAM mos el conjunro (,·et) de ins1 ruccioncs del mi­
l.a mcmoria de daros en RAM del J'IC 161'84 crocout rolador y la programación de los bits
está con1puesca por 64 n.:gisrros almacenados del registro de estado.
en posiciones de memoria consecutivas. Los
primeros 12 registros. comprendidos entre los registros de propósito general
OOH y OBH, cumplen un propósito específi­ Los 36 registros de propósito general (OOl l­
co en el contexto de funt:iona1uicruo dc:I mi ... 2FH) están mapeados sobre el banco de me­
croconrrolador. Los últimos 48 registros, en mor ia cero; csro sig­niffc:a que sello uno de los
el rango comprendido entre OCH y 2fH, se registros, el correspondiente al banco cero,
usan para almacenar inf(>rrn~1ción temporal. estará disponible para el progr:unador. La fi­
l.a figura 1.6 muestra un esquema simplifi­ gura 4.8 ruucsrr« la disposición de los regis­
cado de la memoria de daros, tros de proposiro ¡;<::ner:rl.

Curso práctico sobre Microcontroladores J~HT.:.. ~


La memoria EEPROM de datos
El í'IC 16F84 dispone de una memoria EE­
PROM que consta de 64 kytt:s, comprendidos
Oiteccaoncs m;1peiidn:;
SOl)Ie el banco O cmre OOH y 3l'H (figura 1..10), Para acceder a
estos registros hay q uc utilizar los regisrrosde con­
rrol EF.DATA, EEADR, EECON 1 y EECON2.
t:n capítulos posteriores veremos b forma de
Figuro4.8 Los registros de pro¡Xis110g11ncriJ/ aplicar la programación de estos registros.

Los registros de pila (stack) OOH


Es bastante común dividir un progra111a en EEPROM
pequeñas porciones de código, cada una de
las cuales cumple un propósito especial. F.I
3FH
progr:1ma principal. es decir, a~¡ud que será
ejecutado cuando el microcontrolador reciba Figura 4.10 La memoria EEPROMde datos
una señal de resrt (o cuando sea energizado)
efectuará llamadas a estos subprogramas en
Subprogramas
diferentes puntos. de acuerdo con las nccc­si­
C.Jn subprograma es un conjunto de instruc­
dades cs1 uhlecidas.
cienes que sólo son ejecuraclax como respuesta
a una instrucción CALL. La úlrirua instruc­
Un subprograma debe terminar con una iris­
ción de un subprograma debe ser una insrruc­
1 rucción de recomo. Esrn instrucción deposita en
ción de retorno (RF.T), la cual devuelve el
d contador de programa la dirección de memo­
control a la instrucción inrnccliarnrncnre a
ria en donde debe reanudarse [a ejecución del
conr inuarión de la instrucción de llamado
programa. El microconrrolador utiliza para con­
(CALL). La Figura 4.1 l muestra el llamado
seguir •·stc propósito un conjunto de registros
a un subprograma.
internos denominados registros de pila (stack).
El conjunto de: regisrros de pila t::stá conformado
por ocho registros (figura 4.9).

Almnr.t'na h.1Sta 8 t­­­­­i Pr11ne1nen r.ntr:1r.


líairod..-is Ult.un/JtN1 s:1hr

Figura4.11 U11maefoa .un subprO{Jrama

Rgura 4.9 Los regrstrosde pila (sf;Jcl<J e Por t(U<: son urilcs lo~ .\uhprogram.,s?
lmaginc: que elige 110 rnicroconrrolador 'l''C
En cada nueva llamada a un subprograma 110 posca l:i instrucción para multiplicar dos
se almacena l:i dirección de rerorno en el siguien­ números enteros. Un método para resolver
ce registro de la pil«, lo qt1<' permite regn.:Sar al este problema consiste en idear 1.111 conjunto
sirio correcto cada vez que fin:1lit:c cada subpro­ cJc. i nsrrucciones 'l"" realicen la mul ripl ica­
gr:una. Debe hacerse notar que el prog1"1nrndor ción a p:i rt ir del conreo ido de dos registros
no puede acceder dirccramcnre al contenido de preestablecidos, t!ej:rndo la respuesta en un
ninguno <le los registro' de la pila, tercer regisiro.

­::$> tf11i:K IT..;. Curso práctico S<>bre Microcontroladores


.Rr.ogramactón
El uso más inrel igemc delas instrucciones <¡uc mostrado en b Figura 4.14 hace un llamado al
multiplican dos números enteros consiste, no en subprograma rotulado con la etiqueta SubA. An­
agregarlas cada ver. que se dd>an rnulriplicar dos tes de que el contador de programa modifique
números, sino en escribirlas apanc (fucn• del pro­ su contenido por el de la instrucción CALL, es
gr:irn:¡ principal) y llamarlas cada ver: que se las necesario preserv:i.r la dirección de retomo. F..sro
requiera. Con esta idea en mente observe la Figu­ permitirá <¡u<:, una vez frnalizado el subprogra­
ra 4 . .l2 y siga la dirección de las flechas. ma, el microconrrolador con rin úe Ja ejecución a
partir de b siguicnre instrucción en donde se
produjo d llamado .

:lJ
.' ­ ­' Sub A
+ 1

80
'­82
82
Figura 4.12 Un svoprograma para muli1f1/Jc;1r dos
CAlJ l!!.l.i l!(l l:HlbOOr;:ión l!O
números enteros l 1 Oí4"100} !'O ,.zb c11 IJ dbULlD ~ 1

Rgura 4.14 Ll.1111ado 11 11n subprograma


La pila ( stack)
Los registros de pila están muy lig;ulos al con­ l .a instrucción CALL guard:1 en el fondo de
cepto de subprograma (<1sí como al manejo de la pila b dirección de retorno, la cual corresponde
las interrupciones). l::.n principio, una pila no es a b1 dirección de: la siguiente instrucción.
más que un depósito de daws en donde el últi­
mo dato en entrar es el primero en salir, Cuando En la Figura 4.15, a grandes r..isgos, se observa
se recuperan los daros guardados en la pila, se los la estructura del subprograma SubA. Este suhpro­
obtiene en orden inverso a como fueron almace­ grama contiene un llamado a un segundo subpro­
nados. La Figura 1. U muestra d uso de una pila grama, SubB, lo que gen~ra un dato adicional en
con 3 números enteros. la cima de la pila, antes de proceder a n1odific~tr el
couu­nido del contador de programa.

20­­· SubB

40•D•
Figura 4.13 Fu11ck!l•1111íento de una pila
Píla
·­·JO···
, 28m•mi··•­ ­ •
¡~

Rgura 4.15 llamando a un SiJ/Jf)rogra.rna desde ouo


En el siguiente aparrado veremos la relación que subprograma.
existe entre las pilas)' los subprogramas.
Cuando se ejecuta la instrucción RET del
Funcionamiento de los registros de segundo subprograma (SubB), l:t unidad de con­
pila del microcontrolador trol del microcontrolador extrae el daro alrnacc­
Para entender de manera cabal el funcicnamicn­ nado en el tope de la pila (el cual corresponde a
ro de los regis1 ros de: pila, considere un ejemplo b dirección de retorno) y lo deposita en el con­
simple de llamado :1 suhprogram:1. El programa rador de programa. El programa conrinúa cjccu­

Curso práctico sobre Microc•múo/adores cf-.i<1r..:. •


tandose después de b insrrucción CALL del pri­
rner subprograma. figura 4.16.

·­+ 30 .... Sube


I , PUERTO A
''
'
Continúa en la ' ­,

W instrucción 30 '·mi-

Fl{Jura 4.16 Retomo del segun(io 511/Jprogmma


Puerto A
Figura4.18 E/pue110A

Al ig11,1I que el puerco A. el puerro fl c.<¡,i disponible


al programador en el re­gimo 06'H del banco O de
Laejecución de la insrrucción Rlí.l del primer memoria. l .o línea RBO puede utilizarse para derec­
subprograma causa un retomo al progmma prin(:i- . .
rar totcrrupc1ones externas.
pal. Observe el contenido de 1:1 pila, Figura 4.17.

· ­ ... e2, Sub A


..
U
I ',,
o

..
' i::; PUERTOB
Continúa en la ' ' , !!l
><
lnstrucc1ón 82 ' ­ lil3)- o
'C
e:
:::¡

Figura 4.17 Retomo del primer subprograma


:e
Los procesos relacionados con el manejo de
1" pila son transparences al programador. es de­ Figum 4.19 B p11erlo 8
cir, ocurren <le 111:;u1cr.:.1 automática en el interior
dd microcontrolador, Configuración de los puertos A y B
Cal. bit de un pmcrto puede ser configurado,
Puertos de manera individual, <;01110 entrada o como
Recordemos que 1111 puerro es un elemento a tra­ sal ida, depcnd icndo de las necesidad es J)Hl icu­
vé« del cual S<' introduce o se ext rae in((>rrnación lares del proyecro.
de un microcontrolador. El PJ C 161'84 posee dos
puerros denominados A y B. Un mecanismo simple p:ir:.i nmflgurar los bit«
de los puerros A y B, ya sea como entrada o
El puerto A corno salida. consiste en emplear lo> registros
El puerro A consta de 5 líneas (JUC pueden urili­ ']'RISA y TRlSfl cid banco 1 de la memoria de
zarse corno cm radas o como salidas, dependiendo regis1ros en RA..'VI. La figura 4.20 11111cstrc1 la
de las necesidades de la aplicación, figura 4.18. La relación enrre los puertos i\ y (l y los corres­
línea RA4 puede scrvir como enrrada para los pul· pondientes registros de progranrnci6n. Al es­
sos de reloj aplicados al remporizador interno tudiar el set de insrruccioncs se verán en detalle.
Tlv!RO. F.I pmgmmador puede acceder ~1 come­
PUERTO A PUERTOS
nido del puerto leyendo (o escribiendo) el conre­
nido del regisrro 05H del banco O de memoria.

El puerto B
El puerro B t'>1<Í conformado por 8 lín<:as que pue­
den configurarse como enrrada o como salida se­ Tris A TñsB
gún los requcrirnicnros dc b aplicación, Íif,'t11:a4.l 9. Figura 420 Rcg1slfos TRIS!I y TRJSB

~ ~ IY..:. Curso practico sobre Microcontroladores


•·f~ ­·­
,_,.
: "'°""'
­­.. ­­­
,.,............
,....,...
"°">'o;"'

...........
...~

......
,
.... &v.
, ~
­'!
r~
,..,,º
1·~
~
4i'~f"'

!"'..,,,.
#$1u1'7o
~
.....
ra.,ir--.r.1<.

~~ ...... ~ "" "!­­­­­'


,J;t.,. r.

­
: .. - i1o'li tit. "" .,,... • >,(
j..,1 ~.,.. ........ , ­ _.,. ~ ...,._...
_ _. rt'I :u ~ •t .,,el>
- .,_~.,. o.1""•11• <f.O' •>t•hoeU
...-1 l4•...-.-•., •...:
"'""u.. •.,:.v
ft<;u~ '\Olt• '\I IN•
toft• ..... '" "',_

1- .
,..,.,,. ?"<IN ..

~.;~~·" ::::~
:""-t.. "t'O,.,,. -··· • .
""'"'"" ,,. ..\.
0....:-
..... ,
.. ,
• • .,,.
rH
;<c
¡U~ WU<' ..
~
;u.,.1~, ..~•orl••.,. ..
e.u-.._.,,,.,,,.¡,
••t-

••\­ ,~·­
¡~:r;-::.~~::;.~~\- ., ..... j

"'-' -
• .
• ­1• ·~...
_, , :
--:
:u
~·­
:...u... • •• ..,. ,.,..._,. •~nt • or.. ... ....t• .....
--•-lto"' 11 • ...,.,._,,..(lo
..:~..,
¡ ~
­ ••\~~•lb
.. ·~l>U..
• ..,._,1 ..
l.:t.!>J

HERRAMIENTAS DE SOAWARE PARA a


DESARROLLO DE APLICACIONES BASADAS
EN MICROCONTROLADORES PIC
La elaboración de un circuiro de control embebido
requiere el uso de d ivcrsas herramientas de hardwarey
de software. Estos elementos escín conformados por
tarjetas elccrrónicas y programas de soporte, y son dis­
tribuidos por un gran número de compañías a lo largo
de todo d mundo. Algunas obsequian a los usuarios
los programas básicos, como el ensamblador y el gra­
bador de memoria, lo que ha permitido el uso masivo
de los microcoruroladores.
~
Curso práctico sobre Microcontroladores (t]l!iJIC8'11:.;.
~­­­­­"­'•" ­­ ­ ­"'­•

Elementos orientados al hardware 1. U11 editor de rexro


l .os elementos de lu1rdw11re se utilizan par:l vcri­ 2. Un ensamblador
ficar el correcto funcionamiento del prororipo 3. Un grabador de memoria
construido, <lSÍ como para almacenar en la me­ 4·. Un simulador
moria el código binario ejecutable. A grandes
rasgos, estos con1ponenres son los siguientes: El simulador c.' 1111a alrcrnariva opcional que.
permite probar el funcion:u11ic:ncn de un progr:i­
• Grabador de memoria o programador: es 1111 ma a nivel de so.fiw11re.sin que se requ icrs la cons­
sistema electrónico que permite almacenar el rrucción física del proyecto. Muchos simulado­
programa en la memoria •.Id 111 icroconrrolador. res incorporan las restaures herrarnienras de soji:-
Para conseguir esto, es común que xc conecte toare. lo c¡ue simplifica en gran medida el dcsa­
el gr­:1b,1clor al puerro serie o paralelo de una rrollo de los programas de con crol. Sin embargo.
computadora personal. de modo que median­ debe quedar claro que, una vez. verificado el pro­
re el uso di; un programa especia I mente prepa­ toripo con el simulador, ésrc debe construirse de
rado para ello, se hace d envío al microcoutro­ manera real. Un ejemplo de un simulador es el
lador del c6digo binario ciccurable. Los graba­ MPI..AB de Microchip. Este programa contiene
dores más sofisticados permiten almacenar pro­ codo lo que se necesita para simular el funciona­
e;ramas sobre difercnrcs modelos de microcon­ miento de un prototipo de: courrol.
trohiclor, pcrmiriendo e.legir a voluntad la refe­
rcncia deseada. Un ejemplo de un grabador es En l:i figura 5.1 se observa el papel que jue­
el K­ 1 75 de la com paí\ía CEKTT S.A. g:rn estas herramieruas en el ciclo de desarrollo
de un proyecto . .El orden que debe seguirse es
• Sistema de desarrollo. es un equipo que imporranrc: en primer lugar, escribir el p1·ogr:i-
combina lrardumn:y s11flu1nrey permite rea­ rna fuenre (editor de rcxro), :1 continuación ge­
lizar el ciclo completo en el proceso de cla­ nerar el código binario ejecutable (ensambla­
horación de un prororipo. Al igual que el gr:i­ dor) y por último. programar el microcontrola­
bador de memoria, el sistema de desarrollo dor (grahador de memoria).

­•
es courrolado por LU1 prngr:rn1a de compuca­


dora personal que permite editar, compilar
y depurar (corregir) el programa ele usuario. . .... .............. _..
Alcanzado este pnlll•>. d usuario puede gra '
.'
bar b memoria del microcontrolador con el

­
programa elaborado, así corno esrnbleccr las

1 ~1---
conexiones requeridas con los periféricos de
entrada­salida dispuestos sobre la rarjera base.
Cuando el prototipo funciona adccuadarncn­ 1
.:
1<;.se procede a la construcción del sistema
final sobre una rarjcra indepeudicnre. Un
Figura 5.1 El ciclo 1/e dim1tro/lode un proyecto
ejemplo de un sis1e1n:t de desarrollo es <'I
PlCSTART Plus de Microchip. Vamos a describir cada una de las he1·111u1i.,1­
ras de so(iw11re indicadas en la figura 5.1.
Elementos basados en software
En csra lección nos vamos a ce »iccnrrar en el estu­ El editor de texto
cl io de las herrarnieuras desofiwo.it•imprescindibles El primer paso en la elaboración de un progm­
para el desarrollo completo de un proyccco de con­ ma de microcontrolador consiste en utilizar un
trol con microcomrolador, Estos elementos son: editor de texto, similar al bloc de rtoras de \.\riJJ-

Curso práctico sobre Microcontroladores


Prosr.a.maGión
dvws u c:f progf~lUta l:.dir <lcl <Í.!>tL·ui:.1.opernrivo
1 )()S, par.J. escrihir <"'I au.luvo llJt•nccc--.oo l.t scle-
1.iá11 del probl<:ni:ten lenguaje ensamblador; t.a
e:i:1.c1111Q11 qur: dítl1r11-ti:q111rsc al 11rd1íw rs A!i/11.

Par.1 ahrir el bloc Je noms, .1.11~k~i: en d cerito-


rio de \t:'ir1tÚJu$y pulA~ li. :K."t·ut.'flci:i lni-cio, Progra-
mas. Accesorios, Bloc de Notas. Un.;1 \'e"/. digir:)tio d
progr..1.n~. figt1m 5.2. se lo puc:dc- grabar en disco
rnn b. opción <le nl<'ntl Ardú\v 1 {·;uard.1r-oon)Q....
diJ ?cndn Todos losan:hñ't'.>!' ( •• ·) t'l I la c:1j:t ron :l:ldA
Gl1ru:tlar. corno :irchivo.s <le tipo:. e inaxxluoendo :1
U)ntinu:a1..~011 WI nombre ((IU t'Xlt'llSi(ín asnt ("tl b
(aja n>1ul:id~1 N1.)1ubrt' de archivo. EJ ensamblador MPASM de Microchip
t.l ensamblador M 1•ASM <le Microchip es un

-::... ...
,
,.,., -~ •'"6t'
. .,. - .,.
_,.,,._._O)•"'-· . - ptu~ra1nn que convierte lns instrucciones cscri-
ras <'O formaro .cid nljél'..xonrrolador PlC, a.co-

--
diJ~o binario. $<: d;spon(' de dos versiones b~(.
..,

.... ·- _
,,....._ ..._...., ...,
'"''"

........
u •••

;io-., •••• -· .. ·-·-


. . ... .
¡_.,__ ...
<as: ,vll'A.'1\1 para t>OS y M l'ASM par" \Vindn-
un: f :t\ figuras 5.4 }' 5. 5 muestran esros ~)tóg1·a-

·- -- ..
¡.,,,_ __ .....
.. _ .... ..,, '4<·
,.. __ ..... ·-
-;-
•l '"'"'..... mas en ejecnclou.
:.:..t1., "·-•~ * of1u...u

,._ , , ~.-.
'"' ..
,.. ,,.,_ .. .,_,,._...,,.,_l)lll>M ....U~
,._, ,., ... .,. •I ._._... .. '°"' ,..tlU<• ...
• ---·~ .. Of<.o... •"•»•··-u·
.....,..
-~ J"'
-._,...
,_,, - ••,.'1i*

El ensamblador
Un prog,r:tn:l::.1 cnsarnbfndor o. aquel <111e p<'C-
01i1<.: gt'ut'rJc. :1: p;trli1 Je un archivo J1.· 1:úd.igo
fuente, un archive <fe cófiigo binario.

FJ :ic1.:luvo fice.ne<"' dcbc corueaerunn d~.S(J ip-

--.....~-~-
cién en lengu::tj1o.· ensamblador.. :1.I nivel di:i pm~
.,._
~nt·"~

-
~r;¡oia1..l<Jr, del prohll'Oi.a t¡oe vernos :1 resolver, El f:~~-v.11
archivo bioario, en corurasrc, 1..·li un conjunrn de _, ._.
b1u1que.sólo pueden svr in1crpr<.~r:1d().<. porel mi- ,M.....,..
..~
..... _ lól""'Nio
G"l,111~
oroconerclsdcr [o microprocesador, cnende $1.' -::~'-"·:-.
psograrna en orros niveles). Un cjsruplo de un ··~""'
-C>·· .
r~
"'--
rn,...1''"'
ii!!@ 3
cns..1n)blador es el lvf PASM de Microchif>. e~ ...... p-¡,¡

T.:l figura 5.3 mue..sua la TT:lnsforrn~11.ióu de


uu pf<~n1:;i fut'111c (archivo J<,· wxto} a su co-
-- r====--=====-i
, ... J
1

rrcspondienre pmg(an)a t:"jcc.:umhl<"' (códtgo bina-


rio}. oricill~t<lu :11 mirrot~<>Olrola<lor PI(; 1 (íFS-1.
F.o ambos prvgr:uuas st' puede esrablcccr rl Codigo absoluto y código ob¡eto
nombre cf<'I archivo fiu~(Hc,:, as( (._VIJlc.> las cacac- ~"I P.~\1\11 puede generar dos tipos de nrvluvc eje-
lt:ri~U<.·;.u del microcontrolador <JU~ V':1 n ser u{i· rursbk. El primero <le ellos. con c:x-rcn.<;ión ~<;n\,
[izado. Is. VC't<;i6n n<.)S requiere el USC.) exclusi- se ccnccecomo OOdit;o absclutc y puede ser <.'jcA
vo del teclado. sc:r,iín se epro-ia r-n l:l p;)tlC baja curado direcrameneepttr c:l microconrmlador. FJ
de la panlaU.t. La tecla ENTE!{ perrnire elegir <:c:~undn, cou cetcnsióu obj, es un archive de
emre diversos opciones. micorras qu::- ..:J dcspla- código objetoque puedesor cnlasado (i.'u)paquc:
·¿;u11h:11to emre lint':!:. se logr!l pulsando l:ls r~- rado) evo erres módulos similares.. dondo lug;:tr
eles de A.Y.ha~. Con la tecla Pi :.<: obuene una l pro~~r-:lm:ls qnr combinan diversas funciones
pantalla de: ayuda. El proc:cso de <::n<;;Ullblajc del discdadas por separado. J·J pr<1grant.1 que hace la
arr-hive liJ('OC(' se <.·01t~igut' puls.:tud<1la recla I; 1 O. unión (cmpaquctamicuro) <le módulos es c:I
I'ara terminar el progT:1n1~ basra (00 ¡.n.16~1· l:t Mf•L!NK Je Microchip.
tecla ESCAPE.
Los nrchrvos cnn (")((Cnsi6o obj ~· pueden
Debido a su facilidad dC'i 11.<;n vamos a cm-
:\g1·u •..-a1 cu librerías. Esto es úril. p11c<:r1) (111c: pc-.t·
plcar en las explicaciones <le lu!I próximos mire el desarrollo de modeles especializados,
aparcados la versión NIPA.SM para \'(lJ11.dqu11, dando fa posibilidad d(: incorporarlos rni~ adc
l.as opciones J<.: cnsaurblaie serdn explicadas lanrc en otros progcuuasde usuario. t-1 pro~~r:t-
n1:l~ edelrmre. llll !\1LJB de Microchip pcrmirc realizar la i11t1:-
graciéu de JjJ~re11tl:'-S n1c>du!os objero en una li-
Archivos asociados al ensamblador 1-,n:n:i' C1>pcc:t't'11.:.1.
MPASM
Para su correcto Iuncicuamiemo. el ensambla- Ejecucmn del programa MPASM desde
dor i\•tl'AS/\1 requiere disponer de u110 (o va- la linea de comandos
rios) <1.r~:1Uvo5-Jc .:ó<li'go fnenre. l•.I rcsulradodcl U11a ahcruativa úliJ cuando lic enscmblau pro~
proceso ríe ensamblaje ti. un ccnjuruc de archi- gmm:'ls es ~1ti7<'1r ('f pro<.'<.·S.O <.lt·s<le la li11<.'l c.11."
ves, algunos <le: los cueles son op<:ionalcs y de- <.'Out~tn<lo.s <lt'I si..,:1c:n1:t ttpt~riv<1, nn ciNd(' ('I ('11 •
penden de las n<:«·si<.lad<.".fJ<:"I prcronpo c¡uc se rorno inrcgr;tdo. Eslv 11u ~>art."l'e ue<.-c:sJriu. dad(>
esré dc:.sarr<lll-:1ndo. ln mhla 5.1 muestra los di- (jUC: los pr<>¡.;r:IOl:lS d(';I ;;isf(:O):'I. f;}O((l la Vt'(.~ióu
t('rC:1l.1('S archivos utilizados y gcnc:r:icfos por <'.I 1){)$ ((lll\(ll<i \'Crsión V(lin(/t}t<11,.:.innplcn tn fun-
pro~r-:1m-:1 i\.1Pi\S:Vf. cic)n b.í<:fc::l de cn<::in1bl;1r et cú<lif,<.1 {i1c.:ut.:.

Archtvos de entrada
Tipo de archfvo Extensión Comentario
fucnrc .a.sw Sc>lución d.el pmbktll:) :d tei\tl d,:J l'rog1ant11"ir
lo.<:lusión Ar~:l1ivus <.'~a~rnos que deben ser incluido~

.Archivos de salida
rq>ode archivo Extensión Comentario
l.Í,\l:!tl11 .li.'t S..1lit-l:tÍ<lf1n:·111.::1d:1 (k·I pn)('\.W &: <.>Juamb)aic
Errorc:5 .1'.IT Listadode los cne~ g~ncrJdrtj
H<.'.xad<.•l:Uoal .i\u. l1ivi:) 1·nn .,..1 c:-ódigo hin.lrio t:jccur-.iblc
Ocpur:tl':i1<in ..\n.:hiv111Y.11~1tl(·p111:n.iéon
Objrto
·'' CócJj~"O 4uc se combinn con <ii~ 1n(11f11l11~

,. #

~IT~CurstJ prict/C() ~ M/CJ'(J(;Qtlfrfllo•duros


. "
Nota: Al1ora es 1ná!o· fácil explicar la notai:ióu usa-
Los apanadcs quc> i>ij~ucn son m:lr<'rial ric re- da c:n la lín<"~'l de:- <'•fd.1.·11,~.
fcrC':oc:i:t JY.lr:t los p1og1~011:.u: (1Ut' escribiremos
"' p:.trtir <le la próxima lo-cién. Por esta razón,
no es cbligawrio que usted comprenda rodo
lo que- ~expon(' sobre e~ uso del ensambla- L UUOr1u:t(ión encerrada cnrrr- corchetes ( l
doc cada pn>yct.·n1 subsiguicnrc :ipli(:H'ri una <.-sópl-jon:i.l. 1:.1sfn1bolu1101111.>re·<lt'-a.n:hivo hncc
j'Y.lrcc diÍ-<'1'1;'1uc: del 111:lt~ri:al tc>óri1.·o ~Xf>Ut'.Sttt. rc-f.:rt:u<:i;ta cualquier nombre de archivo vállJo,
<'I nr:tl <5i(\IC: de bsw para la creacidn <IC"I archivo
'·tin,1rit>. En c::ts;, de no in ...-Iuirsc, l'l ,}i.st.:ru;l eje-
l•J pr<>gr:~n13 ensamblador i\ff1ASM puede 1,,ttlari el emurno in1t:r;racfo del tvl P:\SM.
-rjecmarxedesde fa lin(~I (!,~ comnndosdel sistc-
ro» (ll)Ct<,livu DOS ven la eiguienre sintaxis: El rexrc <111c: va c:ntr<" los paréu u::>i~ an-
gul:tr~s-: :-, es un daco que- de-be escogerse ~
O'IJ>asJU (/ •:o¡.n:iott:.-[l<<>pl'ion> ... J 1 nombre-de- pareir de un conjunto que ha sido esrableci-
archivo] du J1: antemano. En el coso del fvlPASM,
<opri(..n::- p11~1.l1..· «nuar uuv Je Jos siguientes
Anrcs de proceder a. explicar c;f.:i uotacion. l.:i valores (iJ<)lii R(l !i:C in<lit"nn rodas las ahcrua-
cnal Se' .1plic:.1 a nlucJtt).\ rtiri.:0$de los 111ic1'<..1COuuu- ,-¡,,~s;. 1,'J) 1,j,.so- J(.'" requerirse se deben con.<.ul-
l<1iio(<~ es <.'OUVl'.UÍ<.'nk' ver un ejemplo efe su ILf.CI! ter las ~•ync!n ... rt<'l cns<ln1hlaJor):

1 Opcittn BreYe e)j)liC~ión


~ pa11u11l:1 ..!c- l}'n'b
( .on ~:1 orden SC' k indi(ti al .VfP;\S~·t <.¡U(;(.'U lN! txs.\l
s:.uubk·(.1 i;udi.i~'O cmcrol.asm. sin1ado en el dirrxro- rNITXSS
rio ( ~\>pmyccrn!I. 1 ~)!!O!')(Jl)lk"S:\i~'l'I <.:U la }ú¡~ Je INHX.l!
csdcncs son ( y t:. ( .a opción Í le in<li<":'t nl m:<::tinhf<i· < luhil1m1)1.'\~ v nu.u~uk~
dor que g1..'flCf('un archivo con l'Xtt11:.ic)n lst, el c11::1I t',t:ni:raan:hivo(lt>~
comiene lns línc-:i.-.dcl pmgm1n;"t t;.cnlcd<bidaol_1.:.utc ~1Xt.'I S:3liJ.. (001w~:1.
IOol\<\ti.:<JLI~. la Oj)CÍÓn t: ~~llCT.l un ndivo con ex-
tcngón crr. l~\n"' archivo comicnc ursa l.i:,w lUH los "',, <k ln\O\.."'Sc
lubil~r.i b t'lo:p.1n\lOO
M.uc d 1ipv Ji.i p1<x.C\.:klcK"M'k<x~in:tfln
cuorcs Jl·I P~-7'Ulla.Si d Jlnlf%"'ª nocxmriMX'C'~ pmoit.- 'i11pn1nir hSJ.ta.t :.t h ¡xtt11a!L.
'I
rrs. <'$!'C:lr<hiv<> <"Sl:.\l'<Í va<.'ÍU, Si ::;1.: producen errores, o;ial~o:xd 1au1:1ñl't (Id ~ibi~
uo Soi!'"J.,'t'lic-r.:i d archivn binario <"~C-01mhlc. dmnc d si!.t~ Llli.X{bá.Sc: 1 G)
' ow1t1.í.i..u ut.ili1JKli>
íJF.\.(b.1~ 10)
El resultado <le ln or(l('n ruosuada es la crea-
1,,i<:i11. dcnwo de} directorio de tr.ifY.ijn, ti!'; l<'t<" .,¡~
()(~I' '"ª~ 8}

guicnecs archivos:
(,)'bs~1 v(' qu(,; uxlas la.) opcion~o: <fc:hen estar
pr«'e<lid:ls por-d nlr:lc(cr b;.tl'l';t i.slcl.iuad... /. Adc-·
Di~1"rio .L>ir«toOO
1ll<Ú:• ._.u«Jtdo l.:i upcidn de-b:s elegir unl) <le-cnu~
Pro}'l'<'lO Jl~>y.."C1·n
""'ric)s ¡Y.1r:imcrros, t.sc(' .sl·s<i <.·oi<X.·;ido::a <.'t>ntinu:t·

-
o'!un)l.:iqn :.- ~1l'~1 -'to .:ouui.J.a...,.u
ción <lt' (;r opci<)n. ()hservc los cj\'ntplos:
cnnrrol.rorl
.:o.:nntol.h~~
(Ym(l'()l,kt
""(:Siio /~i'l(l~C5<1 vrui:tx.1.u~ :pl'O<:<i:-.odor4•u 11>(,\4
n:i12tm /t.l /n!~ll prurl!nl.t1\fl ;l«tivliufvr.3 <r~<.to!.,
1.lllUl'OJ.~·n ;:;;:ilfml ~lloc:ll'<'lflOI
· ollvrare
-~-
parn el desarrollo de aplicaciones basallalt en microcontrolador
••r--r·-• ,.-

Los puntos suspensivos indi<.'.'<u1 qlte el ele- f<U';\ (ttás adelanto et estudio de las dire<.tivas ~UC
mento <.¡Ut' le precede puede repetirse indefinida- se: apliqn<'f~ a Jos. proyectos construidos.
mente, Si :1pli1::wtlll'> este conccpcc a la línea rlc
órdenes, veren10.c. que se pueden colocar tanta." Nota:
epcioacs,una después dc: orra, Ú:tlUO queramos. Las direcrivns C'IO son eeosibles a l:u Oi,aytis<.1.1.b.'io
rninüsculas, t-:... ro -sig1lifi~~i ({Uc: es lo nUs-010
En resumen. 11n.1 cpciéu e11 1:1 linea de cornau- (:()N5fANT c¡uc: ( ~)nsran{.
dos permite cst:ililt'l·eruna cuacterística pcrricnlar
del pnx:i:sode: c1l.'\:ln1blajt-. Ahora bien, dcpcudien- Ptcscntauios ahorn una lista (.UJl las dimc:tiV<lS
do def ~)m)áto ulifil~1do. la opciéu puede h:;hilirar d:.iSifi~:L<>por etccgoúa .• Adicicnalmcmc se Lriocf:t
o inhibir una li1n.:~nali<l.ad CSJ'<'l-:Ít'il-:t'l.l<.'I]\ifPA.')tV1. una <'!l¡ili<-ación hn..'\<r: y cbJa Je: cada direi·riv;i, a.;í
corno l1 sinrnxfs qur corresponde.
N1nnJ11a CoWl"llcario lói=pl•
/ ...·op,Wu,. K+bibt,'1J11 opción ~fr;o.$X.~ /(' J os ptOyt.•t:loSque inicia.c~fuos C'U fa prOxin)a
(.;eu1:n i.:t ;ir.:~hwodt' lcccién h::icin uso <le Ja..,. directivas mostradas.
t:n"OI'($

l·:np('ión.,.-t l l;ihili1011:1 fl!'i6n MP..\SM I~• ( Ionvenciones


Expr Hace n:f::-rc:nci:l :1 una expresión
mnrcrn:.ttica
Ml'1\..~M Je Vnlor Corresponde a. un valor lireml
lnh1bt el 3.!d)ivo J.: N0Jt1hre Nombre ~iado :1 un objeto
crrun:... Addr Dirección

Directivas Directivas de control


! a.o; dir('.CtÍva.-; son cink:ncs del ensamblador que no
sen Lr.:t.'ibd;:id:;,~ .-. cóJigo binario cj<\.-u<abl<:. Hlas ::;e Din:cliva Explit",.i.c.:ión
nriliznn para conrroisr <iíve~ ~-..:osdel 61ncio· CON~TA.','T 1 )c<l:;ira súr1bolo:s c<•ns(:)nccs
11,;unicnn)dd ensamblador.corno 111 salida y la errrm- 1intaxis CVl'!$1am <rriqueta':-f -:.C?.pr>•..• ,
d~ <.i<- i.uí0nu:l(.-i6n. cl Olil.llcjo <le las macros, al igual <~ti.qurlll> [= <.r-.'J(pr>/ /
que la !f'>(;lÍt/a(ióu Ji: los daros en la memoria.
.fDEFJNJ:: Dc:line un:. cric¡uc.ra usa.Ja
Lo, ÚpQ." lxísicos de ditcctivas incluidas. CJl pam susdtuci6u de rexro
el :VI PASM -;011 las :..'lgoic:nfc:·s. sinta.'J(is #(/-tfi11l'<nn1nhnr> {/(<:.«rg>, ...•
/ -:.:rdlur>J
<Jf.:rg-.;)
• Dirccnvasde concrel
• Directivas oondiciouales END FUlalUa un bloque: de ptog.i;una
• Directivas urienmdas :t lo:. <lalos sintaxis md
• Directivas de conucl de Iisrndo
• l)i1'UÚvas de: macros EQU Declara una <:onsmntc
• 1 Jirccrivas or iemadas :11 arcb.i v o cbjero !.-1ftra.\·U <.etiq11~1n> (qu <.apr>

Cada P"Jt7=lm:t requiere sus propias dirccii #fN(.'..LUDE Permko iuciuir un archivoex
por lo que 1)0 es necesario,en uu primeraccr-
V".!:"' terno dentro del program:;.
camicnw al terna, considerar rodas IM posiblli- foco.ti: actual
dod('.(-('XiSlCUt(.-,.-. Explicaremos ..t~ur:llas dirccti- sinraxis incl1.1de ·~-:11rtl1illlJ-incl:uid<J":o·:.
V;(S C.jUt' nos p~~(('.U UlÍ." imporrnntcs, dejando sintaxis i71c/uJe~<an:hlP<J·itrdu/dn>,.
~ 4,íc1r_:C"® práctico'°""' 1.UC-otOntrol>~-----~-
• 1 '

ORG Fseablccc el punw de inicio


del programa Ejccum un ciclo WHIL~
<.t.l"Ít/UtJa> fl'X <txpr> (1uit'nu:i...¡) si )3 condición es
verdadera,
PROCESSOR Define el cipo de procesador whik =r»
udlízadc
pr()Ces.'hr <tipn-dc-prorew/"1';·
Directivas erlentadas a los datos
RADIX 1:.~pccifica.el sistema nuurérico
US3do ¡x1r cfefr.cr<> Directiva Explicación
i'lldi."1: <sis1m11t-¡wr-drftct1J> _BADl\A;'vl Especificaposiciones de me-
moria de- ripo Ri\M 110 válidas
'IF.T Define una variable del 1inU1.XJ's _badra1n <lXpr>
ensamblador
<rJtt1'XU cctiqueta» ser <expr> CJJLOCK Mne un bloque.de coustames
intaxn cbl•dt [<expr»J
~t:1~Dl'~INE t·1imin;l una subsrituciée de
edquecas __ CONFIG EstableceI™' conmutadores de
SU:i.fl.'>:11 #U1idefit1e <.e/.Í.(fut'ta;• configuración
__ cnr.fig <r.xpr> OR__
VARIABLE Defineshubolos variables c®jig <addr», <expr.>
wri.ahk<etV¡uelil'>l- <o:pr.-,....
<rli</Jtera> {= «exnr»] f 01\ .A..ln1.J.ccn3 cadenas en l;:a
Olcmor{a: de programa
01recllvas condicionales
[<iab,l>/ da <"'pr>
Di rcctiva EspJ!caci6n {, <<?rpr2>, ...• <rxpm»]
ELSE Empieza un bloquc alrcrnati-
\'O a la instrucción lf (si) DATA Ahnaceuadaros numéricos y
clse de ripo C<'X<Ual
$intnxit tlarA<.t.'\'/)r>./.<cxpr>,... f
f.~1)11' l;inaliza uc bloqu~ condicional sintaxis IÍll14 .:.t;ttkn<1.-tÍJ:'-tcdil>"
QIJJllXÍJ t'lld~f' {.,.'ccadena-de-teao> ~ ... /

ENDW f m:d'i?;l11n<:ido W'H.llEútOOru-dS) DB 1 )cd:ir:i. daros cuyo tamado es


c!Íllt;l.Xtf mdw un BYJ'E
sintaxis db <expr>f.·<txpr>,.. .]
Empieza un bjoquc de código
,¡la condición <> verdadera llE Declara daros en la EEl'R( )M
if <expr> sintaxis .de <t:xpn/,.<l"Xpr>~···f

IFDE~ l'P:ona ,; el s(orobok><!Slá ddinklo D'I' Define una tabla


.ur. tll.'<is ij(lc,( <aiqtem» #.1111/XJS Jr. <e.xpr>f. <cxpr>,... /

IFNDEF Ej«ut3 si el .sínlhnlo no ('Stá DW Declara datos cuyo (amaño es


dctinido unaPAL\Bl\A(WORD)
r¡r,/.(f..m· ifi1def<eriquct11> ¡)inra.\'is dw <r.tepr>/,<txpr:.-, ... J
----~-'--"--

Curso pclctJcoSOOfe MiCl«óflirO,~ 4íc1i::


fil&~L<les<.ml!Y.I de aplicaciones basadas~ m!crocontrola<J~r

ENDC Fin.1.li7A un bloqueautomédco Directivas orientadas al archivo ob1eto


de constantes
sintaxis ,,,,Je l)irccfi~ Explicación
COL>E lni.:i~ una sección de c.:6di¡~
1'11.1 Especificaun valor para llenar ejecutable
una zona de memoria sintaxis l·~nt>lttb.rt:">j CQ(!e (<a<Úlr>}
jl!t <expr», «conmdar»
F.XTFRN Declara una cuquera qn<' ba
Directivas de control de ñstado .'>ido rlfflnida \':xl:C1'nm11t'.Ule
.JÍ!J.lrlX:'J rxtem <.trit¡urra>f. <f'tiq11t>J1l':•
Directiva Explicación
ERROR Genera un mensaje de error GLOBAL Hxporra n ortosmódulos
sintaxis error •<td<la111-rl~-1r.a11:>11 etiquetas locales
rxtem ,'l.Jií]ltf'ta~·f, r.tfi</U"trt·>
t<:J{R( )Rl.F\'ET, Estableceel nivel de mensajes
de error Macros
1int11.W '7Tilrln.od(Jtlf.21< +·><1nr.1traje> l.Jna maceo Q un ;.:.,>njunul de insrmccioocs de
finicl:» pnr r-l usuario, evaluadasy ejecutadas por
LIST Opciones para generarlisiados el ensamblador. cuando ella ('.$ llamada desde
sintaxis li.<t f ·~ttptióri>[...... <.opc:'hn>JJ orro punto dcmrc del prt>J~r.an1.l.
!Ytl~,s.sc.; Creaun mensaje dc-hnido por lfn~ macro se esuucmra. con m:í~ precisión.
c:l usuario medinnrc una SOCUC'JlC.la de lui.tru<.:~ioncs ele en-
sintaxis nJ('!Sf,"<111~nJ,11jt:-k-JA•J()'> Y snubladcr y un conjunto p::irricula1 de dirvcu-
vas- 1 as maeses pueden ;t<.'c:'por argnmcnros, lo
NOUSJ'" Inhibe r-J proceso de- listar que- las hace cxrromadamenrc tlcxíbles, pue-s se
i.ofon1laCi<)n :tsir11ilru1 a procedimienros o fimcioncs de len
sinmxts noliu ¡~u~jc:s ele afro nivel. f;oll'<: las vt'ut:1.;as de ~.is ma-
1.'(1>s podemos citar:
P.A.(°;I·: lr\S('.11<1 utl saho <le ~~ria
''in:u,,·i> pagi' • Abstracción de pm(.(':SO~
• Código Iuetne mis <.1:ir<,
St•.ti..(:t: fn,.;crr:¡ J(ol.':.:is e11 blancc • f.n·c:tpsukln1icnto .. re p10C\.'-SV$ ~ut' .sc-p~nr.1n
sin.:tA-i.' tpace {<txj>r>i frccuer uememe
• lilc:ilidad de ttt:Uli:JOcuaedc deben realizarse
SUBTrru:: Define nn <11br/1ulo para WJ cambios al c&li~o
progr.:tn1a • \lclili<..::tL'ióu :.in~ple del func:ion:in1iC"nti'I 1..1(' lUJ
simaxis Juh1it! 1t·~Je.x1q..n1/J..títul1J>-~ programa

'I 'l'flJ·: Í'..SJ)CX.í1it.aun rítulo pa!:l un l Jn<l macro ,~· uu bloque de 0X{i~<1 qu<: .(C
progmm:l escribe llT!fl JhÍA t.''Z, }' que luegopuede St'f u1ili1.a-
sintaxis tiú~ «<irxto-tindo>» do desde diversos punr.ttt de un prngc~n\:-i.. &lo
liin1pl1fic-,.1 el desarrollo de progr.anta.'\. tina maero
Directivas orientadas a fas macros puede recibir par:ímC'fm.o;. lo que sigaiG<.~.-que puc-
C.. .nas direcrivas ~<"dn comentadas en la ~ciOn de p11rciclJmitar su Iuncicnamicnro $c-.gón las ne
de 1ua<.:1-o~. cesidades dM fU'O(('.SOque hace el llamado.

~ 4Ñ1r.:eww-so1NeMictoc""""'3dq,
..
• ,!

Sintaxis de una macro MACRO I'crmiec rlt'.'Íi11it una umero


l~l):l 1\):lLIV ~t' puede <lt•finir coe Ja siguieute sinmxis ·~tti1¡;u111_.,.n,'(tt-m ,/<Arg:•.... <tl"J::-/
vtnraxts:
N( )r.XJ>ANI> Elintiu.a la exp:;n-c;ihnde 1\1~·1'ús
<nil,Ut'{a> Jll<l\.ll.J ( ..:.at},'l.lJlldlt<ll >,<:1tglllllC'lllOZ:-..... sintaxis ll(J('Xpdll(i
<úhimo-argnmenros] ------L--'-----------'
Uso de las macros
Uu« ve:t. que: una maceo ha cido definida. ~ la
u1<l111 J>U('(i<: llamar desde cualquier punr(I de un pro
gr~una, coruose dcscrfbc a conuuuación.
En esm noracién, <etiqueta> r~pre'S<'nr:i un
nombre -tiliJo Je eriqnera. nlÍ{'lllf~ ..¡_uL· -.:ar:-,'\l-
mento> es cualquier parñmerro recibido 1)01' l;l
macro. Ll>S valores ni;ig.nad(1$ a estos :uru1n<:rtrt)!I l•:o 1;-i sintaxis mostrada. nombre-maceo es el
en l.'I nlOJJ\L'J1to <.1~1 llamado. son rr:lnsfCridos di nombre de una macro dcfiuida previamente. y
recramenre a Jn~ oombn-s-de los arrumenros. I()~ arguruvuccs.sou valores que: se dcbcu va.:;ar
" en el momento de la llamada.
l~l cuerpo de una macm. es decir, \""I con-
iuueo de elementos(}UC bav en su interior, esté 1 n l'Xl'X.llJ.!>iÓlJ Je la 111auu ~ n':llfra di(\'('{aElK.'11tc
conforo)~c.io pvr 111~t.ruc.::ion\'.c; del tns:t1nbJa en la memoria d<-1 1l1i<r<1.;0J\lloh1Jc.>1~lo que permite,
dur y pnr dirr,·riv:-ts <.·~!>•.:<.Iflcas. 1:.1 Íln'1l del n:'IOll'l.\1111'-·Jlll\ :.tlt:jrt1-1cidn. l .a !i<;r.i 1.Y.~rgu;lk11los<lc
cuerpo Je la macro se marca con 1-. Jir1:c:Uva uru rnncrn n.Yn1Í1l<l.,sj1f1pl-.:u.l<:'i1lc <.'>11 un esporio en
l~1''l)1VI. bhnLUU <.'JU un ctr.krrr flUOf(l 'f \UJJJ<I (;}.

Directivas onentadas a las macros La <.lir<.-uiv:.1 l~XrrM bfi.ud.1 un mecanismo


Exisren directivas cspccüicaspara usar denrrc A~-xibk·J.l<ii-ateruúnar la c:xp:1n!<ii<Sn ~{;" l1n:,.i uiacw.
tic tas macros. A conrinnaeién se prr-sent,a u11.a
1:1.hl:i c<>n las dieccdvas ,,MH.:i.t<.Ías .1 l:is n1:lc:ro,<., Mensajes generados por el
J.. .,.í corno una explicación breve t la siruaxis <le ensamblador (messages)
c:;;d:l uu» de ellas. .
Les mene¡ es gt"ncr:ido.<. ,.. n.)1 1;1 cusauabladcr ~ s-uar-

Explicacién -i- <lll<fns en un archive con exrensién .crr; Si s.: utili.


u la opción lc-, los n~Oli<'lji:'~ 110 aparecen en ln
panralla de Ja computador». Si SC' 1uili~::i la opción
ENDM Finalirn una macro 1 ltJ, conjunmmcrnc oon Ja t.1pl·i6n le-, IM n1<:n<;¡')jr:<.
sintaxis ('fltÍlll 110 ~ráu i:11vi:id0$ :1 1:1 r::inm.lla. ni gr.1.ba<l<>Sen tui
an:·hiv(). :111nqu<.· sl iucluj<los CTI l-:i ~!id:'!.
f'.XITM Obliga 01 salir de 1;1 macro
r.xi111t 1.os ll)('US~t_j<:'S <.'.OllSi!.'.{C'.0 (:Jl un l"Migt.'I 11U.Ul~-
rk:o y un rc:>.TO c:xpli.:~ti\•Q, Alg.unvx u1ensnjc.~ <~<"I
rXl'AND Expande u11:1 macro, es decir. cns.to:il>la.Jor ~>n lo., sir,ui<'nrC'.'>:
1"1 copia t'n I¡¡ pi:•:.i<.·lóu a<::lual
t'Xj)il!Jd Algunos mensajes básicos
l.(l(;A 1 Dcclar:i una variable local a 1.- 1111 i\.11'''1··
macro l~-.:¡1'1~·11cilin:
1• s111(11,'(f.S
• •
local <t'tiq1tt:UJ.'>/,-:.tlir¡ur/11-;../ i\'lc-n~jc del 1Lq1;h·i1.1 •
~----
·(~P!ll~S Op OA!l(:>JC S:.> o¡>ucro) l'JOl!.J.'l!i,l t.nrroa '""S'lrol~):, s1:1·c t:pc.~~'&f'l.9 ruum¡o."> msc onb
ºP!~.:1101.d J!lS.-' oosrp (;) o (t.!p·i:JJU';) ;,p t>•'!lj:t:t: rÁ '01.").'.UJO.'")lf! S.:) (f.l\."1 ºT '\'..)UJI t.'( :.:ip 1..-"UWll~O CJ:nu
lo~ opucn:>) -:llS!X:I ou º"!lPJT P onb e ºP!q:>p -ud t:¡ u:.> uSJ?i:..gcjo :>p ~~~"l."> trn <)pr.nn<')CD1.'\I.!IS'
opt-:"!PU! O")S! p cp uA~lf;:>Jc l:J l!J(jll =>p:ind .l~ ºN :Upf.1V.J!/</..\-;f
:rtf!:JV.:lf/<Í>.."':J · 1 uu111¡1\' u1 ;'P''~!u p11n(1.¡ • u.
,)jt:.! U.)dCJ i<tUUI"'") ~()\
-cpeuárse "t:!JOW:.>lU ~p
·o::ii.1p U;) ::1¡<.1!u<xls!p O!:ll!® P .)nhrr!J . .'.IA"Oll.l;)}U! oraedso I" ua aJU;)Wt:..l:>fdtuu.""l opr.po11ro">t: ,1;:,s
osn op pnodurar o.~lJ:>Jc un ;)SJtl:l.O epend ºN opend on anb JOl~ uo cosod uiu:>wrd:Jc l:J
:u{J[:JVJ!Jth.:¡ .'U?!.''J'J.1¡1/x;_¡
JIJJ.J~I U<•!Jr.1J., ~1t1 dw.>1 t·C)l r-'~11 .J11.1
J1tc.1~!u•t!\ l'il'."~r1~~iur.J11\ tno Ull1n1i.'i1\.' l•tt
-sojcqwrs
.>p l~lqt.!1 ~I wed ";ll"f!Uo<.ls!p t':!JOW:>W Át:t( ºN º:>JUJUle!.~J<.I ºP!UtJ;>p
.-up!-:1m!¡t!>..:J op!i.: cq cu 't!:>U:>J.:lj:>J ":>"lr.q .l$ oub 1' c:t¡<>qUIJS r.:J
IJllJ .lj~rJ llkflU,{(.; t-º(lJ :Ufl!·"'~!l"-'3
·p.)U!J:>p .\l'>lll'IA,,llf u-u l'"lllli\ 1•11
º00.T;)l(J! 1))
ll;"'l!\ll~S~'>OJJ o ~llO!:>! U !J;>p ºSOJ:lOW ;)p U~)!.S seO!S\?Q se¡~ua¡.iaApe seun5JV
-uedsa r.1 ered r.!Jom.:itn u.> O!·:>~c.ft~'I Áe~ ºN
:Uf.VV.J"f/tÍX3 ºSl:..)!d.u !oºCpU;tlJ;)Apn
•,{JOIU.'lTll !!J 111(.) 4 (11 U(}:)- tlS-!( eun SOUTT:lll.)S.::>Jd'JO~J~lUl!' ºI Jt:JlS'llj!
t!.1~ ·1euo!~1!pi: cw:.>1i¡0Jd ;,p odu ª!l~P: •;,111.'l1tr
'O!J-ensn 1-' rod o¡:n.~:.:iu;,jJO.!J:) ;:,p ,,~rs·u;,w •(E!:ltl;)loci 'Jr.f.l{J·''
uapond onb St:.lllJ:JIU.l)-.)o !;:>U
:u{lpmf¡tfx-:J ,.
-o~:T.JIUJSU! t:JU:ll>-:'IJd ,llU==~J o.l!~"' p opnnno acp
'tlOllll ·I 1 OI ·1·¡qnr~c:1t,"> P ,1oJ stp\tr.)u;J13 UOlo" ln!!:..lU:JU;)Api! svt
Jope¡qwesua ¡a Jod
SOO!S~q S3JOJJ;! sounfiJV sepei:ia1ap (sliu¡uieM) se1:Jual)aAPV
·o!Jl:U!'l n?.!f19-"> º9f)P..1;>u;:,';J ·c1
:ir ·io"";)fl"Su.:iur "P e1;i¡d1no.) ~l
trJp!dW! ;)flI> 'élUt:J°3<JJJ ¡;,p tlW~!W U\)!:ln."1.:lf.> r.( -sn eun r.xr.d r.ru~J'aOJd pp ):epit.{t: se1 v. :>st;J~,!J~il
"P omnpord nos ".l:l.lASf:''"g(t! onbuue '.iu!)CW :C)ON
-lUá:i>J<l I;) .rod i.i:-p!l:>WU:> scnr:t uos $..>JO!J.:> "fYJ
JOpe¡qwesua ·opr.J'IUC>."NI;) mrP¡<¡nld :ip 00!1 p SJ W•t> ;Jpw~Jua
ta JOd sope¡!l3l3P (SJOJJa) SGJOlJ:¡ 00 Jope¡qlUC:SU:') 1:) (Jj)Ul!11.') 1:.u.QQ.Jd ;)<; .l!tstl;)IU ;)lS'3
.-Uff.nTJfjd.>.~J
·sr.!:>li,'.l\J.1,..pe .)P l!"l~ldwo-) er ·l:>V~'>'ll\ 1' \\O,'IN11 1 ll
-~l ~un \tlt;J lilUCJ3wU 1:.>l> scpnÁc-sc¡ e ":>~"t'.1?!..f,,)J
:eion -ope...">fP\lf .)f\!Sll"~lU 1.J
e.i-.>o~$ ~.l(JW;)J!P OJClWOJ un JC't.!l!Jn anh º1 J<'I'<{
·u11s1nb;)J =>1s=i uco 'l"J!'/ J:'l ;>p ~uo~:'t,)llJlS~J!m<xJ' XXX: )91 : )Id s;>J
J~IJW~ ured opt:.:>unn F.ll ..>~ l"f:lll ..'le f.).'l!lb!l~ -t.1pt:{WJUO?OJ:>!W =>p C!J~utt:.J r.1 •n1du1.:>(.:l .JO<l T.QT
l?( »nb ~~~Pº! ofesucw :.>ii--:J ·sO.J;>J;,ruo;, =>p z~ -l'fi.OJ1.i l.:lP ~UQ!~l"W:.ll! ~t:J ;,p Ulltl'Wt::I 1-;>P up
J.:lS' ":>c1=>p so.:lnh!i,:i sr.1 sp pn1!Stror tU•?X).tu.1 tr 1 ··c-n:>:>pt-u! oi.-n un e <:!.""lu.>.J-:}.'.IJ .-::rP.T[ .:>fv.S1r;)lll .">lS!J
:U('!JIJ.1fff/xg : l(fi.t.JV.Jfjr/xg
·~."lr"rJrlf' ¡-r 1r p.'.\11··n1u111·N.(1·1 SOL -,>.l!:O.U-0.,UI J>-"Ulº-'lUUj -~;.n, ()ITI fl-!4\\\ uw.1i-:C.1,¡ \ !~
iope¡o.quo>tuo¡w ua sepeseq saUO!~l!!l!ld2 ap ouo"esap 10 eJl!d-aJéMij'ós ~ ¡1
Nota: Los código.o; de escape ANSJ'C les pode-
Rcfi~r;t. <>C';. :l las ayudas <id program« vara una lis- mos ver a cominuaciónr
:.,¡ rompiera de errores,

eÁcltgo de .De<.:ñpd&n
Operadores, operandos y expresiones Bap~
Para terminar lo exposición de los conceptos '~l'3.(t.1kr1) 07
teóricos que- se deben conocer para acorncrcr lli Rc~~u (h..uA·~t) os
1• aarea de cons(rull' programas. vamos a. des- \f $<.ho de p-.{~ua (form_(~4'} oc
cribir algunos elementos que, pese :1 su sim- \n Nt."t.V..tllnl!<I (NW fmt) OA
piicidcd. son de gran irnporrancia pr'ác:iic::i. ~ Retomo de curo (l:<ZrriA.ft NllQn) 00
F..s10 ... elementos SOl\; cadena.'>. códigos de es- \, T;¡jiull(iijn bo~<ál(b,,&,.,,,w~ 09
cape (1\NSI'C), sistemas n\uné-ric:o;, lo.'> opc- 1. 'Jlliul;z<;i()n v~1i-i;;¡I (titflit1tl t4b) U6
radcres ";1:rirn1éci1.·o~ y lógicos y, pee úldmo. 11 R.tfT"J.jn\~lida (lmi:h1A1h) ;<:-
.o'\"(ód.ígos AS(:ll_ \? JJuumg:ióñn (qlleiliun mM'l'k) 3il
I' C:on.ull;.sicnplc (a;fJ/;$trqp/N} 27
Cadenas (strings) \' Dohk oori;.illi (d4ult!fqu17:e) 22
l na eadcaa (Jtri11K) es 1111~ secuencia de carne- \0{10 Núu)cru ocr.il ((J<TIJ/ dip'1)
retes, perrcnccicmcs al código osrándar AS('":( 1. Wlll Ntlmcro~úccimal (}NXl:ti«i11;,;tln'fmJbuj
encerrados entre comillas, La Joni~irucf <le una
...adena e.c;r& comprendida en el ra11~0 O~ 255, Sistemas numéricos
io que .sigitific:a que la ranridad de •:ir;\cté!>es FJ cosausblador MP:\SM reconoce tres sistemas
qu~ se pueden almacenar dentro de: la cadena de nurucracién: hexadecimal (base 16), decimal
no puede sobrepasar estos. lfmitcs. (base 10) y octal (base 8). A esros sisrcmas se de-
ben ~g~ar las reprcscoracicnes AS< :1 r y hin.aria.
L3 dírccriva D\'I almacena una cadena,
de manera nurorndrica, eu pcsicionos succsi- c.:~1<1..lKÍO Mr'A~Mse: inicia, asunte por d<fcctod sis-
-.a:, de la memoria, Es-ro es imporrarue por- terna h<."Xll.dca;i.nla.LEso .,ignific:ique k~ :ui¡;nac:io-
que permite un signlii.(.'.:ttivo ahorro de rieru- ncs utilizan este si~('lll<\ de manera 1111ro.n>átic;i..
po a 1.-. hora <le almacenar cadenas en 1:) me-
merla. Paro ilusuar lo anterior, considere l:i Sistema Sio.tuis Ejernplu
,-igu icruc directiva. Decimal D'<dfgiross-" 1)'200'
.<digÍlOS? .200
IÍ\v "prueba Je: Lexto"'
Hcwdmnl;\I H' <<l'rgttU.S>
. ' H'3f'
Con el US(l de ésta directiva se almacenan Ch:<dfg.Íll)~ heo- Ox3f
en [n memoria los caracteres comprendidos C•\·
ue las comillas {no se incluyen las comillas en Octal O'<dígitos-ocre- . 0'317
d texto almacenado).
Binario IJ'<dígiws-binc-' ll'OQl 10110'
La secuencia de códigos de escape
ANSl'C .~SCll Pl<car.i.c._1.er>-· A'H'
l (b sistemas operativos han pop11l:lri1 ...ado el uso ·<<:'lnictci'-:. • ·11·
..!e fa~ sccueucias de escape ANSl 'C, las cuales
consisten en caracteres especiales de control. Operadores numéricos
1J ensamblador M PASIY-1 a1..·ept:i. este método Los operadores numéricos bdsiccs reeonocidos
..:.: reprcsc-;ncal..""jóu. ¡x>r /\1PASM so111nuy 3hund~nlo .. En csrn St'X".-

c.,...,,,;...,,,.,,,.,,._ 4.t< 1T..:. ~


l::.c ltL-lt::l

(Íó11 vamos a mcoclooar aquellos ~u.: puedan " ()R exclusivo CU(CC bjt)
presentar "1lg1'1n interés c:sp<X".i"11: 1 ( )l{ entre bles
&& AND l6g""
Operador Dcsceipcidn 11 OR lóg;<o
$ Contador de prOj~m:t acru..al ur +- h equivale a ni = m + h
! Com .plcmcruo lógico -= n1 -= h oqoivalc.a nl ~ n1 • b
Negación en complerncnro a dos •'= m "= h equivale a m = m • h
·" Couiplemeutc 1- m /-h1.·q1.llvákau1-ul /L
high Retorna el byte alro de; una pal:lbra ++ m++ equivale a m = m .._ 1
low Retoma el byre bajo <le una pa1abr:o Jlt- equivalea lll - tu - 1
nppcr Retorna el bycc sepoior
% Ñ16Julo Ilo t¡uc: sobra de una P:IJ".tilustrard uso de la t:i]>la dt' u>di¡{t>SAS( ~I J.
divislón eatera) considere ('I cac.:i(<cr 'N., Observe que S<:' cncucu
<e 1 )cspla1~mic:nro a la i1qnicrda era dentro <le la columna 4 y In fil~ 1 (Ox4 I }.
:.:- Desplazamiemo a la Jm:c.11:1.

L 1
== ( ::Omparnl·.iñn (~r:íctcr C6d;go ASCII
Asignación 'A. Ox~I
& 1\N{> entre bits
.;..;_;_;_ __,
Tabla de códigos ASCII
-
Hex
o NIJI.
o 1
DU::
·'-
2
Space
'-
3
o
I 4
@
5
p
6
'
7
p
--
1 SOll DCI ! 1 1 A Q a q
- .
2
3
STX
•.. . ~
J::'IX
-HC1
LX~> #
2
3
11
e x
R ~
e
1

.,
1 EOT DC4 s 4
'-
D 'r d T

; ENQ NAK % 5 E. u e u

6 ACK SYN &


.
6 F V f •
..7 llcll urn 7 G w
- "
o. w
8 llS CAN ( 8 11 X h x
9 H'I F.M ) 9 1 1 y
-
1
-~
y
Lf SUB • .. z
A J ¡ '
B VT ESC + ; K 1 k l
e FF FS > < L
-
1 1 1
1) CR GS M 1 ITI ¡
-
E so RS . ,
-
N A u -
F SI lJS 1
~
> ()
- o oEL
...,

- -··---- -
... ··~:1
~
z- ~-
:~ ~-;
~::-- _.......___,,
... --: ..._--'.._
... ~.:::-. 1
~ •...,.- .. -
,'-.' 1
.--.:'!. ;;-;-1. : . I
- ·-~,,_
t ·--.::···- .t;
-~-...... ---
t.,,
...
::r /

1
·--...
-. ... . ..11

En esta lección vamos a desarrollar va-


rios proyectos de programación en los
que aplicaremos algunas de las técnicas
aprendidas hasta ahora combinándolas
con algunas herramientas, tales como
el ensamblador y el grabador de la me-
moria del microconrrolador.
-.-:· Ejercicios de programación básica con microcontroladores PIC

1:.1 uso di: uu prutobfUl.rdes una t"éCtti·


sv
<a viable cuando el número de elementos
lc+:ó 1()0U urifizados 110 es u1uy alto. J:I inoonv(:t'Ut'1tte
de S1.1 uso tiene que ver con 13 inesrabili-
dad de las conexiones entre componen-
tes, lo t¡uc hao- ditlcil la pucst:1. a punto
del circuito.

Montaje del circuito utilizando


un entrenador
Flg.l.Jm6.·1 Ciu.:uifrJp;xa~:m~(.[{). t.'t/J/,lkanrJolJ(J~'1.,1(y UJ1a. ahemaeiva b<lSl<l.l\ti: cómoda para
probar el funcionamiento del C~l'cuju>
Ejercicio N" 1 consiste en usar un slsrcma de desarrollo o,
l•:J (>(OYCClO iui1:i:J que: vamos a acometer es 1nuy en su defecto, un entrenador de sistemas ba-
simple: el objetivo es euergizar un diodo LED sadc en micreccrurolador. Esta hcrram icnca
conoaado :1. una lfnca dd puerro ~ del micro- c:n esencia, t'S una rarjcra que contiene la
ccnrrolador PfC16F81. A pes:Jr de su simplici- lnJ.yoría de (.C)nlpOut'rtlt':t electrónicos urili-
d:td, este: proy~-i:oconricnc idcas impcnanres <pie xados en los proyectosde control, adernés ele
luego van a ser claveen el desarrollo de pruytt- un sencillo mccauisuw Je inrerconcxléu en-
tos de i112yor envergadura, trc elles. Como es narural, t:-1 cu rrenador debe
disponer <le uu soporre p:.ira la iuscrcién del
Circuito basado en un microcontrolaclor ruicrocomrolador, una \'t':t. que= ésrc hl) sido
A r;l1 ti• Jt>J ccuodmienro de la áJ.•"l.{UÍlCt.Wí:Idel programado.
111ic.·roc<lnrmt:~dor J)lC16F84 se: puede deducir
(-tl:l.l debe ser la estrucrnra ft.Sica del circuiro que Desarrollo del proyecto
rcsudvecl probleuu de energizar 01) diodo LEL>. Ahora bien, si asuruimcs que e~ di.scño Ilsicc del
Este es e) paso inic;i:lJ en 1,:( desarrollo del proyoc · circuitces correcto,)"'<ldc1n.b se ha hecho d mcn-
ro. 1~1figora6.1 muestrael diseño lisic.·o. raje empleando ~'Un:J de las ré.;:.nl~s descritas.
sólo tara diseñar C"I programa que pondr:i (:1\
Rn csedisetiose debe notar que henos ccnec- rnamha el sistema de control.
tado un diodo 1 ID:;. h1 líneaO del puerro J3 (PBO).
Dado l.{ut' sobre d diock> 1 ,F.O ~t.· aplica una tensión
Je 5 voleios, CS necesario que esrn lín<"a se comporte
. ......... ~::;: •.
(Qu10 uua línea de: salida, E.stv ~ c.·onxigue.como se .:; . • • • - • : ·•.• , •.
verd n1;is adelante, usando t6:nirnsOC pte>ói..unaci6n .• ·:· ·~·:-:.•.-:·::::: . , . •·
: ....
Montaje del clrnuito utilizando un
prctcboard

cuvuno en un r:i:hfc:r<> di; (Oue.uone.<v(prorn/)(Mf<fJ, • · • •• •• • • : ; ,.• • .'': • .' : •


1 .O.'< (.Qn1po1~CUl~ s~ .insermn sobre él Je acuer- ~ • • .l.;~ r. ,.,;: •• .: ¡:"_:.
<lo con [a dispooibilidad <lt I<>.'> c;an:i:I~, p!'O<.'e· • • • • • • •
cliC'ndo <lt<spu~ ::a la inrcr.::on<.·xióu <le: l<l~ mis- • ••

+
lliOS con ..;:):bJC'S- del grus<:>r-apropi:,1,dO. La Ú&'Ur.a
6.2 pn.:s::-nl:t d circ11i~(l l1.saodu un prfltohnarrl.

4'Íc1r..: c.... ,....,.,.,_.,~.,,--""'


Pro9r_amacl¡i_l)

\rawos a proceder orden, Para empcxar,


~1 • lfu bis pucsro en 1 en r-l rcgisrro de coufi-
diseñaremos el programa que cumpla GOu los re- gur:.1c1óJ1 hace que la corrcsr..oudienre 11
quisitcs del proyecto, nea Jc:I puerco se tr:>n$tOru1c: en una [Iuea
<le currada.
Registros utilizados • Un bit puesto e-o O en el re~~i$rro de confi-
Antes Je: empezar, querernos que usted recuerde guraeión hace que l.:i corrcspondicruc LJ.
el signifi(.<ldv Je :ilgun()S registros dd microcon- nen del puert<l sr. rrausformc en una lfnca
rrólador; en particular aquellos que van :l ser uti- de salida.
li1.:lrlo.~ cu nuestro proyccw.
Oiseilo del programa usando el
Númerodel B;mcoO Baoco 1 lenguaje ensamblador
registro La visión 1\l~ :,Üuplc del proyectose prcseuca en
Ox03 ESTADO ES'l'AllO d esquema de la Iigura 6.3.
Ox06 Plll?.RTOB TRISB
la idea-es <Jara: i:rnnsti-rir el <ligiro hi11atio. J
La posición OxO.:S.concien, ... <'I í1:gis1.rt> l-:.)•.l'A • :i la línea J>Bo <fcl puerro S. 'Ian prontu se cnru
[)(),sin importar cml S<'.J. el banco dt;;: memoria pla con esto, el diodo J J~D se encenderá.
elegido. En relación con c:f n.-gislrt>t~~·rAJ)() w
tienen las siguienrcs observaciones. 1~1 esquema prcscmado en la figur;t 6.3
no nos dice nada sobre las resueneshncas del
• <:ua1\do el bit 5 del registro E.ST1\D() t:.<;r:Í puerro, ..-~ decir, PI'\ 1 ;t J>o7. l·:~(O resulte s~r
puc-sro en O, el banco de 01c111ori3selecciona- útil, ptlrqur de esta manera podernos situpli-
do t'.'l banco O.
t::J ficar- el diseño. ral
<.'OJllO se ve en la figur:i G.1.
• (::u;lndo el. bit 5 dcl regiscro t.:..\"TADO esrd E.st3 mod iticación no ahcra el Fu ncionaunenro
puesto en 1. cl banco de memoria sc:le<~io11:,¡. dc;l programa.
dn es el banco t.
El propósito del proyecto<.>:J, en pocas va-
U. posición OxO<> hace referencia al put:no B. labras, u'ausferir el dato binario 00000001 al
Podemosh;'IC<'I' las siguientes observaciones. puerto B.

( .uando vl banco seleccionado es é'I banco 1. Nota:


tl registro 0x06 (.'Ontienr \111a iJ11ar~c:n efe lá FJ número binario 00000001 se 1epresenra n}ál);
inforo).t1.:ióu ccnrcnidaen el puerro B. f¡¡<.·ilm<:nt(' (OJl la norncion hexadecimal. El equi-
• Cuando el banco seleccionado es- el banco O, vafcJltc: del número binario 00000001 es OxOl
el f(:gistro <hr0(1 condene la j'Y.llabta <le confi- en haadn·iu1:<l.
J,'tlraciOn de] puerro I~.
Puerto B
Cadn bit de Ja pal:ibr:i de confignracién e.s- o 1 O PB O
rsblcce t'] comportamieneo de: Ja respectiva Jí- 1 1
uea del pucno del microconrrolador. Notemos Sa muel'il et 2 o 2
lo siguiente: oont"'1i<;lo del byre 3 3
PUERTO 8 al puertn n ~ o 4
s
6 o &
7
Pll o 11' 7

FJgura 6.3 OJ;jedr.' ctn!roJ dr.~Pf1J}'«M F~G.4 &a's'sEOO ttel ()/)J't-'liro W'!1r.N ClfN oruyscto

Ctxso.,_,,,...,.,._ 4N-1r.;_$
---
Translerencia de información hacía Dato w Puerto B
el puerto B 1
l>chc recorrlarsc que la uansfereocia de infofOl<l.- o
cién entre él microconrroiador y SU cuwmo SC: h3CC o

--
:1 rravés de r~l1'0:.. Por esca razón es l"•"1nlpti;n~j o
blv qué uUliccmm. la siguicmc secuencia; o ........ ~Diodo
o x 1 ro
o
OxO I > Rcgisuv '3.1
Registro W-:.• Puerro l~
o ........

Lo primero es slmaoorar cu el regisero"X' 1~1


hc:f 1vyi ..uu,J1110
inh:>rm.1.ciÓl'l que va a ser rransfcrida (00000001).
l.:i iosnucciéu lx.f ueiliza dos operandos, El
A conrinunción, se debe- mover él claro en d rcgi.1;-
primero de ello~ es el registre afet:c:tdo~ el se-
rro w (00000001) hacia el pucrro B. El tt'.Sult:i.-
do. si d puerro- n es de salida, es ln ;i.plir~1c:i.ón de- gundu ccnesponde a un bit dentro del regís-
tro. l-~w.i instrucción t.-ól0<.·.a eu el Ót'.tsclr.c;ci~
un \'Oltajt' positivo al diodo 1,í:.D conectado en J3
nado ('I número O, sin sfeerar los restantes hin
línea Pl\0 (bit 0) dd ptt<1to B. l.• figurn. 6.5 pre
del registro.
scuca un é...:quem.:1 que: ri;li.1<:.ra t'.su.""· (.-Onccpux..
nto\lv .. ~1;11..,
Almacenamiento del dato Ox01 en
el puerto 8 La insrruccién movlw tiene un solo operando.
De manera m:iSC$_pc<:(fi<:a el proc:cso puede coun- l~i;r:l ins1ru1.1.'.ióJ1 almacena el valor del operau-
(j<l1'SC' a~i:
do en el regisrro W. ()11·a fOr1na de expresarlo
es 00010 sigue: dato--> \Y/.
el banco O
&lt'c1.'ion:tr
ftl41\'\\·f R'[tÍ~I ni
Almacenar cu el registre W el dato Ox01 ~· ª". ----,-
l.11 in,stnic.clóu movwf dispone de ut'll S...1}0
Mover el contenido dct registre \'<i :ti puc:no B
operando. Esrc operando hace referencia n
un registro. la instrucción movwf u'ansflc-
re el contenido del 1..:gi~lro \Y/ al regisreo es-
bcf ;Co1<;<;o 0 en el bi.t S del pcciflcado. En términos simples:
;registl"4) L\TAOO. Esto <:1cciM W--> registro.
;~;1il<'t(,;iQno el bonc.o0 del
; CO"<jl.l'tlO de N':gl ~i'('O').

0x01 ;~ cercee en 1 el bi.l de «e)C(' Configuración del puerto B


.peso det tti!,¡~~tro w, Anee•..: de que cl pu<.'t'lo B pueda ser urilir.ado, es
;Sigrif\ud:>: ~·Jb.-> l'I' necesario configurar $\ISHncas i:u1110 líneas de en-
:Se lrons;fter(: et <.U'ltEfri.cb rrada O como líoeas <le salida.
;dc,fl registro Vi' al puel"to B.
;Si.gni.fi.ct1do: lf -). PUERTOS
;r~ttl (U,'<:\ón ~etgiza el diooo • Pata transformar una hnca d<-1 pucrLo en
;tro cooectod'> r.J• .,.l bi.t 0 dP.l una línC';:\ Je currada l1asca con ~~cribi1 1
; PUIJl:TO 8 vu el bir corrcspondicmc c11 la palabm <le
c:onfigu~ci611.
F.n csr.a secuencia hemos urili1~do f!éS ius- • f".tr.t r..insforn)~r una línea del puc:nn en lfnca
uucciones <le: uso común. La descripción de ellas de. salida, basca con escribir O C'11 ot.:l bir. <.'Orn.-s-
e~ 1::1 siguiente: pondicnrc c1\ la p;.Jal>r:t de: <:<>nfigu1'<'1(.i6n.

~ 4.ic1r..: CIKs<)pr;ict;(xJS4/NeMl<trJCo<llrolad<NSS
La instrucción clrf 11tili1:1 un operando que
corresponde a un regiscro del microconerola-
olo o_ e oj'o oj .Q der. Esm in$rro(<:ión coloca cctos ~1\ todos
les bit1 del registro seleccionado.

Banco~O PucnoB
TO<!QS lilSIÍ¡)CaS
S1:1n de .sid'ttfa
Detención del flujo de eíecucíon
Ox06 El programa debe cerminar de' manera con-
rrolada. C .nando rodas las tareas 1'1<10 sido com-
pletadas es couvenienee <.1uc- el microconrro-
lador entre en un vivlo cerrado durante el cual
no ejecuto ni ngunn ra rea. l~i>ro dcsicno el pre-
La Gb"llr.t·6.6 estahleve lo anterior y mues- ceso J(.· ~jc:L·t.11..:ÍÓH.
rra corno$C debe configurar i;J puerto D paca
que tedas sus línt':ts sean de salida. La instrucción goro (sahara ... ) permiee con-
figur:;ir cl rocociouade ciclo. Varoosa ·~:xplic:arbre-
V-ara configurar el puerro t\ como puerro de vemenre l:l instrucción goro.
~i<la ~ requieeeu <los v~c;-o~
J;tllO 1.'IUJU~l,l

1. Seleccionar el bance 1 la instrucción &roto utili7.a un operando que


.2. Llenar ron ceros rl cootcnido del 1'(-gf:itL'O J1..~ debe (.oincid ir C(111 1111a et iqucta definida deu-
ccnfiguracién del puerrt'l R ero del pr<>r,r:ln1a. 1.:.... ra instrucción ohfig.a :il
mlcrcccnuoíador a ccnunuar el Flujo <le- eje-
cución a pareir de lsi Hnca que conticoc dicha
t'liqu<!l<l.
0x03,S ;Coloco i e1"1 et bit s
:ckl rL11istro de eseese. Veamos un ejemple que- muestra como crear nn
;L5ta occiM s.elecclor)CJ
ciclo cerrado:
:et l;onCQ 1del conju:"lto
;de r-eg\stro.o;.
ctrf ;Aleo<.:cno ceros en et e t c lo ;la 1ri!ót,rvc.c;-;ón ..goto•
;registro 0xet> (IRl·YJ). :sollo u lo eliqoeto
;tb;lo cp: el lx7K'o 1 cstó. ; "'<'·ieto". /lhor-o bi~.
;s.etecciM.ldc-, el puieM:o ;puest.o q.¡e etlO eli~LO
;B se <:oofiguro ceeo ;c;1,1rr-c~1(Jc a lt: ni.:;tr(I

;puerto d~ so1i.<kl :i.nst.tucd.00, el p1'09rota


inQ pv<..'<fc: ovMZor- y se
;dellMe el flujo de
Esta secuencia contiene alguuas i.1ul1·ucL'~o ;~jc-:tµ;(in. F.1 si.st<mG
nr..·) nuevas, Vamos 3 explicarlas brevemente. ;t~l"!Moeu::nb se retiro
; lo al im1muc-l-Or< del
; et rcui to.
lv,J 1t't1.St.ro.11u111~·ru l1rt 1
T.-in<n11<ción bsÍ\•t;.1¡,•dosvp<<wl<luo..ti p1Ü~
cxresponde.auno de &os n:gi.\mlSdel microamcm- Directivas de control
llcJor. f.J si:-gu1.\dose n:fi.~oca une de los bi{)·.Jd ~ A c:onoinnth·.ión ('llJ)1i(-;tll\0$ e;u detalle ,.lgu
uu. Es1.:1. instrucción coloca en 1 el hit11t:le«.ioo:.OO,
uas directivas c¡ut .<;(}O necesarios cuando se:
pero sin afo.':l:\r los 1~L:.:u1lt'.» bi:sdd rt.'!..;i<itro. escribe un p-Logt;t111a de microccmroladcs.

¡;,,,. • ..--_,,,,,.,,,.._-.. --Í<1r.: ~


-_Elei:i;icios d• program~cló_n básica con mi&rocootroladores PIC

llini..lÍ\ a ll.lt<J . _.,,,,i,11..'C.'<'r ~.-J puuu.1 tlc ini.:in ri.._•I A partir de b ddink:i&í1 :.ullt'rior. b cual :l~ign::i.el
r ··ogr.wu nombre PUER1"t)Hal regi'ITT'O Oxf)I), Lt uola<.lón se
Las insrruccioncs deben almacenarse :l partir de vudv~· m~scnc:ill;¡. ()b.sa\'t'<:J ~'Uieritecnun.,:i;llio:
cierta dirección de memoria. Ahora bien. es ne-
cesario indlru mediante una directiva cuál C$ esa rovwf PiJ[RT0.3 ;~' --> Mt(IOti
dirección de memoria.
l .es'sigoicruo constantes son sufi.::j~f!.l~ para
l .:1 directiva OR(; establece la posición de el prt>}'c:t.T<l que estarnos elabcrandc:
memoria a partir de Ja Cll:tl se vau a ensamblar
J3s iosnuccioncs escritas J comirmacióu. Ob- PUERTCS t:QU ; El registro 0xi>6
serve el i;iguic:nrc: modelo: ot px~Lo e.
;(Ql'T(·~
:si !l ~u0 <.~tó
loRG 0 ;Esto di1'"<.tlv(J establece lo ; seteeeteeeee
;posición o parlir ~~ lu (vul se fRC'\B fQU Ox06 :tl r~i.st.-o 0xQ6
;ero:riblori lrP. i'Jliajiros i.n:strucdooe!..
o(n este ejeecto, to d¡r~<'< iiln de ;permite config_u-.t0.- ~l
~ensa11bloje ~~ ceeo. ;pi~ a. ceec entrodo
:o coco soliao.
( .uando el prog_t;u1.1a uo utiliza inrenupcio- ;~1 C'l bcncc 1 esld
ocs puede usar todo r:I espacie di: memoria par:t ;sele.ccionudo
oln1ac:.cn:,ir cl código binario. En c<;f'C caso, el peo- ESTADO EQU ;Et re_gislro BxB.;:
gr;.uua s.c: v,raha a partir de la posición OxOO ueili- ¡cof're.<;p:)r1de el registro
zando t~ memoria excedente en fornia SCCU.t'll('.i.;J,, ;ESTt.00. -stn ~rt-1:irc1
;bari(Q seleccionado
Nota:
f,.<;:posible colccar varias directivas {)R.(; a lo lar- Dire ..:liV.L\ ini.:l.slc~
go del pror~ram:i. 1 )e csra manera se pueden el- E.I proceso de easarublaje del c:ódig.<1 IÍ1c11tc requiere
maccnar distintos bloques de programa en áreas que seespecifiqucn cicrtosclóucntos que van :i: inci-
JlO 1:onci;~u:i• de memoria. dir en el OOt.~-'Ogeoerado.F.I primero de ellos hace
Mcrmcin ni tipo de microcorurolador uril"acio. El
Directiva ll:'l1>;.1 dcfinrr <.unst.J.ntl.~ .scgu1ll.lo tiene que \'cr con d siseoua iuuuérico em-
Eu párrafos 30t<'!rior~~ urilizamos la siguiente pleado <:n bs diiClttlleS operaciones. l a din.x.1:h<;\ LlST
insrruccién: sirve f>:U3. indicar l:t rr.fc1\m1.JcJ mkroconerolador
ur.ili?~ en el proyecto. Con l:i: dirrcriva Rl\DIX~
: ... ----> 0x.t>b clit,~d si\TCma nun1érioo. Vc.r.wtos Wl ejemplo:

Esta inseucción mueve: d corneuidc de W al LlS'I p-16F84 :Se ULi.lizo et PTC 161=3-"
rq,,ri\Tm ()x(K,. Si u$ll-<l tiene: buena n1c:mori;:i rocor- RADIX liEX ;se vtilizci <?t slslerro
dará, ~.-U1 dada. qnccl n1Ín)Cr(I Ox06~ rdiere al puer~ :hexod~c1irol
ro ij . .Sin ool.baróO o mejor evitar csrc csliscrzo, y
para k)b'T3rlnse rcomc al uso di: lad.irecm-:i t~iLJ. l)1f\_"1;(1v;1 fi11:tl
l.;i t:r:1po <k:cn,saa)bkjc lmttina con la <fi rrr.riv.l P'.i'..,l'D,
~:sci directiva permite definir consrantcs
de propósito general. Vcarnos UJ.1 ejemplo: Código fuente del proyecto
Ya cst:imo~ plX'parados para ul>Scrv:lr ef :l$pCc.to
Pl'[RT08 EQU 0x06 ;Lo ¡X)!>tr.iiln 0x.00 <Ol"r6po(/(le final del <.VJj~s<) fuentG~ 1.-1 cscruclur~t ~~~ncr:tl
;cit ouerto 8 dc:I progmn1a d<'bt' aju.slarsc al ~iguicnce orden:
• Descripción del microcontrolador uulizado ;ensoTblan lo5
• Sistcmn numérico empleado ;prnximos in:.trucciones.
• Definición de consr.mrcs ;(n este ejL'fllplo, la
;clfrecc1ón de P.n.SU71blaic
• Esrablecimicruo dd pumn de inicio del programa ;e~ cero.
• Instrucciones
• Directiva que marca el final dd programa CÓDlGU DEI PROGRAMA

El progr<1.m:i que presentamos en la figu­ i ni c'i n bsf CSlAD0,5 ;Coloca 1 en el bit 5


ra 6.7 resulta de unir las secciones de código ;del r~istro dP estado.
;E~ta acción seleccionu
que hemos descrito en los p.irrafos anrcrio­
; el banco 1 del conjont
res. de acuerdo con el orden que acabamos ; de rcgis t·ro:.
de plan 1 eur. ct rf TR'l '.>B ;Alrrocenn ceros e11 el
;registro 0x06 (TRISB).
;C\:lw que el bci1co 1 cstó
PllOGRA\.lA .. : Pro01.asm ;se1ec<ionodo, el puerL
AUTOR : CEKIT S.A. ; B se configl~r·c. 6. romo
FECllA : Julio de 200t ; pucr-to de so ti.do
C()IENTARTO:· Fl progroTO Pro01.a~M bcf ~STA00,5 ;Color.o 0 en el bit 5
;cner¡¡i¿o un diodo LED. ;del registro ESTAllO.
;El prograTo e~ ensamblado, ¡l:.to acción selerc1ono
; en secuencic , a ;el ban\O 0 del t:onjunt.o
;partir de lo dirección (.Cl'O ;de rcgulros
movlw 0x01 ; Se cal nct1 en 1 e1 bí t.
; HKABEZADO ;de menor peso del
;regi:.tro \'l.
LIST P'­16r84 ;Se tJtiHza el PIC 16FM ; S ignif·i codo: 00000001
RADrx HEX ;Se oti.l i7o el sist.P~(I ;-> 11'
; hcxedec i mc1 l movvvt l'UERTOfl ; (,e transfiero el
;contenido del rog\stro
;W o1 puerLo H.
; ZONA llE ETIQUCTAS ¡ Sigi1Km:b: VI-> f\J(l<l(ll.
;Csto orcion f\11crgi.za
PUF RTOB t;QU Ax06 ; H regls t.r-o 0xA6 ;Pl diodo LCU cooectCiclo
; <Ot"respc11clc al puPrto B. ¡1'1'1 el bit 0 del f\JCRIO 8
;si el banco 0 estó delo goto ciclo ;Lo tns+rucctón "goto"
.setecctonndo ;sol ht a la f'tiweto
TRISB l·QU 0x0G ; H 1"egi st ro 0X0G permite ; "etc lo". Ahora bien,
;confi11uror el puerto ll, ¡puesto (J)e cstn etiqueto
;como entrada o coMO ;corresponden lo misma
;salida, si el bcnco '.!. ; i nstrucci 6n, el progr<roo
;esLó 5cleccionodo ; no puede uvonzur y se
tSTAllO EQU 0x03 ;El regtsLro 0x03 ; deti ene el íl u jo dP.
; corresp()rl(k: a1 regbtro ;ejecuclón. (1 si.slemo
;ESTADO, :.in importar el ;kmrino rumdo se 1·eti.ro
;bani:o seleccionado ;lo o1imentoción dPl
; et rcu'i. t.o .

; INICIO D~L PROGltAMA ; FCNAL DEL VHOGRAMA

ORG 0 ;Esto direc~ivo define ENO ;Tenni no el proceso d


; lo pos ci 6n o pnr+i r
í
; en~am!J loje
; de la cual se Rgura 6.7 Código fuetTte del programa

Curso práctico sobre Mfcrocontroladores 4'.KIT..!. •


~­­ ·­·_'.__ ~ ~~ ­· ­ ~ ·_ ..­_. ­
t i'iff[•}j·ij@i,,M'íf@!.J,1[@11.!,f,,!!ijí,3.W@fPí·1i:}jilt
l-~~riba csrc peogrnma usando un ediror <le
lJn;t Vl'i. t:lcgi1.las las opciones pn:sc1\t:~d1"
rr-xto convc11~ion-:ll, 1..01no el Ef)fl' del sistema por el ~n.san\blador, fib'llrn 6.8, puf$\" el h<"lróu
Dr )::,. o el Bloc de notas Ji: \Xfindo,~. ( ;ua.1.Jc- t'I ~·sro1hl<'{cn.~mblar}. Pasado un breve ricrupo.
programa con el ncrubre:
el CtlS::unhl:ldordc<ipli..:-g:t UIXI caja de dlltlop,o OOJ1
ProOl.Of.!I
t'I estado fin JI de la compilación. Si no h:t come-
rido .errorcs al digi{ar el programa. obtendrá. Ja
pantalla que S(' ve en l:i figura 6.10.
Nota:
MPASM vU213 E;
No olvide que 13 crttnsión di:I pro_grruJ1<.l dclic
ser ASM. t:.\TOC'.S imporrame. sobec todo si uuli- A11•lflbb>Succ¡....._
?:.a L'J Bloc: di." noras. En ~r(" case debe elegir cu PR0(11.:ASM
(\u'!lrdat corno archivos de ripo., la op<:ión '10-
dos los archivos (•. "],

"'._... . . _ o•
==
Enoia:

·-
Ensamblando el programa
l Jn;'l \'CZ escrito <:J programa, ('S necesario COS:lOl- o
liilenages:-
blarlo para generar d c.ód.igo binario corrcspon- o
dicme (ardlivo con extensién H r·:>(}. Vamos a ~u:«t o
[lnn:A,~: 63
urifi~r l.i versión MPASM para \'(lindows dc-
lvlic.·ro<.l\ir. La figura 6.R muesera Ja inrer!S:i:t vl· C<t",2~ 8• ? J;!el¡>

_
s1L1I del cnsarublador,

-~=-
FltJlJm ll 10 ~ 00 tlf'J.r::titUJ.'<;Y!.
~(ú
J.()$ daroxque «egnranrenecnparecerdueu su
~r:r:. 11 r: , pailt:tll::i podrán no coincidir ;,:on los uiosrmdos
:,~
......... en la ÍJh'llr:.l 6.10. Esto se cxpli1.'a porque el n1'1-
.. tioot..s r.ltio(lt~
·~ uiero de lít1c:J$ de $U pr()g(allll podría C:Oll(<.'UCí
,_ ""'<-
..........
"',,,.,,,- l"'t.,,......_..f ..
comcurarios o lint".1~<.'U blanco ttue no apar«.c11
........ ¡;;:;;-·::::;¡ eu la figura 6.? .
-~ EJ:I
Una \'C7. ensamblado el programa, se oñi•,i~
n:lr.í un eoujunro Je ::lrchivos entre lo.." que se
destacan el hexadecimal (pl"()(>l.hcx) y el del lis-
cado (p1'00J.lsr). El archivo del Iistado nos ~iro-
porciona inl-Or1n:ic:ió1l 1nuy 1.1ctl par:i loc«Jjz3r ro
El borón Drov.~ ... pe-m1ite exami1\ar la c:.<;- sibles cerores de escrimra o si nraxis 1.{ue se hayan
<tuc.Ttu~ de tfircx-torit1.'\ d('f sisfc:nl.a. ()h~rvc: b couieeido en el <.ódigo del prvgrama, El archivo
figt1ra 6.9. hexndecirna! rt~pn:."c:nl.-l:t infnr1uac.:i<)n que seal-
ui~cen:tt<t en ln memoria del microconrroladcr

mcdianrc una rarjcra prot~r:in1ador.'.l. l~\ <..'I cnn1C-.r
vio SC': pueden censegnlr muchas uiarcas de pro·
gt<:\U1adorC'S Je grao. calidad. enero ellas l-:1 tar-
jera 1(..224 de c:t:Krr, <.·uy.l csnuctura .• LU11c:in-
naruiento y mancju se hn estudiado en el proyt>c·
ro 9 Je esrc curso. Uua '.'<'.7.prvgmnla<.lo el rni
croconuolador, ~ debe montar <"U el prtJJt>buard
o cu el circircuiroimpreso para haecr las pruebas
TY!1UfJ6.9 ~def;t;chimQt'ts.:P:?Jaei~t;11b.\~r fJll:ll~ y fa depuración del sist ..~Jlta final.
4.icir,,; C4tf:;q prkU(;Q sobll MicrocooVtJladrNes
Lna \'l."7. elegidas las opciones presentadas por El siguieneo paso consisce en rransfcrir el ar-
d ensamblador; fig11r:ct 6.10, pulse el bctóu Ass~ chivo hin.-uiu Prcüt.hce ~ la tucmcria del mi-
nnble (cnsruubl:tr). PaS;lcfo un breve tiempo. el L rocen rreln do r:
Ol'W!nhlndor d<"Splh:g:i. una caja <le di<ÜO",;o con
o estado final <le la con1pílat.:t011. Si no ha t;OJ)\-(' Grabando el programa en el
ti.do errores al digit:u- el progr;\O\á, clnendrd In mícroe-0ntrolador
paaralla t¡ue se ve en la figura. 6.12. I'ara grabar uu archivo binario <:11 la 111c:1n<>ri::i del
MPASM \;(12.13 Ej
microcontrolador \1$-it.:J debe disponer de un dis-
positivo que: cwnpla c-.on l"'~f<t ii.utl·ión. lln huc:n
~s~$111t~Ul t'jc'r11pl<> ele ello <:S ('l Proh'Tamadorl>t(: 1( 221 d~
PR.001..ASM CEKIT $_-\. l.~ ñgn•'i\ G.li 1uue~TI".l d Pr<>gfa
m:1dor K~221~
[,l'OllC< o


W«ninQs;
'R-~ct o
SI«<- o
Mes:~~;
Si;ippi-~ o
linf»A5~ 63.

IL10KJI C1 tto!p

Los liaros q\1(' scgurarnen re :;ip:lrC.:~J"{u.l<:'tl su


pantalla podnln no coincidir (."()U los rnosrrados
en la figura 6.12. Esw se explica porque d 01i-
-soero de lineax de su prog1;wta podría contener
eemenrarios o hneas en blanco que uo aparc<:en
l~J K~21·i debe conecmrsc al puerro serial de
en l:.t figura Í).9.
una ccmpueadora personal. bt<> 5ignifica que el
proceso ..le grabación secl m1J.i.ta<lo a partir de
Haga clic p.-if'.l cerrar la ajade <li~(ogo..Ahora
un prur,mn1:1 ti.:- toulpul~tdc>r:s. 1:1 nt:lllCjo de la
.asred dispone en .su directorio <le rr:ihnjcl de... los
rnrje(;l y del pn·>j?'".lO"l:l Y:l se documenwron am-
u.J1iv<>s J?<'ncrados por el ensamblador, Observe
pliarnenrc en el J)CVJt'l:to 9 de csre obra, Je: 1n~-
~lista mostrada en 1:1 figura 6.13.
ncra qcc preceda n gc:."ib:;u: <:I archivo hexadcci
m:1I dcormdc la memoria inrcrua del rulcrocon-
troladce, Los ~r:Ín'lc:tcw adecuados rlr conli~u~
ración $(.11): Oscilador X'J: )>r<tt.:-<:x.ióu Je- Cild.ig_o
dcslrabilirado. \'V°:\ft:h<l0"6 Tlmer dcshahilimdo y
........ l'owcr-up Tlmer <l('_,.h::ihilif:'ld<t. Inserte ahora C'J
uricroconrrolador cu :Jgu1u• ele- los .'>istcn:1as qut'
~~ 4(11 ~A'>M
b1)F-\.;:m- _.,;e ,,,~ ..... c.oo usted ha cfc:gido p:ir:s probar ~U j)FUft:l:tO: <:I pro~
/l'l""''
~Plo61.~ ,., Atdf~••D<
ijti:I ~(M 1ubwtr1!.el <'•ltcco~cdor o un c-ir<:uitl.l impreso. tan
peoutc e11c:r1:icc· el ~i1'<.'UÍl<>-. deberfa observar
'.g¡l)cf.rl
"'" ~ctifOl.ST
.!.! corno se activa el diodo 1.1:.1 ) . .Si ba tenido éxiro .

:=:.::=--..
~
:J: f(·licital:ionc:s. l~.n Cí1.SQ vouwario. n1'1 $C dcsani-
me: sin duda ha 01niriclo :llgún fY<tSO.l{t:'pir;1 nuc-

¡;g,,,,6.13 '''°'"""°"""°"""'"s1"""""' """""":,.., ~IT.: ~


Algunas observaciones finales Haciendo espacio al vector de
Eu Jo5 próxin1os apartados lc- mostearemos :il~u- Interrupciones
nas variantes 'lllt: 11.<r('(Í puede probar l''lsu pru- Un pro~ra.uiaernpiczn siemprea parrir de l<t di-
yt<<.·r•>y'l""
fj('ut:u cierra in1ro• l..i.uc:ia pnícrira. 1'<'1.'<.'Í'<Ín O. J>ru· este motivo parece razonahlc gra-
h:tr el programa en secuencia, una icstrucción
\o1ri.intc .. t•n 1•l (UUln•I de- 1,·1111i.n.acjt.1u tl._·I después <fr otra, :.1. partir <le la dirección cero,
¡1t1•~¡ran1.i Sin t'1ub:trj_~<>, p:ir:l el case del VIC16F8'1, esm
1:1 mecanismo ti<.· rcrruinacién <1uc I~ prcsvura- rcsulr» invcnvenicnro cuando se utilizan iruc
uros en In figura 6. ')es el n1rlc; indi ...ade p~rn el erupciones. 1_,.. 1'<17.Ótl ~c:i en CJllC el ruicrocon-
proyecto c.iuc estamos desarrollando. F.Jl utu- rrolador c:.per.t cnconrrar cu la dirección 0.:t01
chas ocasiones. sin embargo, es necesario re- un número l111c ~pw1tt' !l la'> instrucciones q11c
grcsar, dentro del ciclo (.'Crr;td(>, a un~ instruc- nl:in('j~u las diferentes interrupciones, qoc pue-
ción :lnlcrior. Aunque nn es el case p:ir:l n111;.s. den producirse.
uo proyccro,observe corno ::e podría aplicar.
Si qu<'(('JJlO~ <LllC: nuestros progrnn1:i~ uc
c.u·lo ITIOV#Í PU[RT08 rse L1'a1tf.f1•·rc.• el interfieran con el manejo de- l:i.o; interrupcio-
;cont('nl.do del
;registro w
nes. debernos almacenarlos .i. purrir <le la di-
;ul f)V(.'rto B, -'S de( 'r, rcvciéo Ox05. Sl11 embargo, recuerde (!Ut: i:I mi·
;W _,, J\ltRTilB. Con este crccoucrclador PI (,;.16F8'1- comienza siempre
;s~•'1K'rqiza el l~ en l:i dirccciéu Ox()O cuando es C"nc:rgi7.:id:o (o
;con-ectodo ol bit 0 cuando St' .lplic;:l una .si:iial de Y'-fl'!). Por t'stc
;d~i PlléR.TO 8 1norivo ~ ol>Jig:itorio c11lrJC..'\t wia insrru(,t;ión
acto ci.clu ;Esto i.tt.'\ti·1.11< ii~ salta
J(· ~a1tt> que: nQS llt·\·e Jirc:crnn1·cntc <l<.·s<lc: (::i
;a tu ('tiqueta •ciclo~.
;Esto C('~fJ 110 ciclo po.<.i<:ióu OxOO h:isr:. la posición Ox05. <.)l>)cr-
; c:errodo escribieod1J \'C: los rnn1hi(l.S que" <lt:hcn hacc1'Sc :ti ¡>ro~rnn1a

: sobre el purrt-o B. l)<lnt logr~r csrc l)bjcti\'o.

El fi1ncion:\01i.:ulo del cirruiro ne M:' :tfocm f;:;.::.::---:---::=._=::-----:====---:---¡


en <'lh~olu(v. Naruralmcruc, dependiendo de la ; tNIC!O Ull PRO<iR,.'IWI
linea en donde se coloque la cclquC'l:1 se: produci-
:--
(11~(. 0 :tsta di r-<:.c:tiw d~finn
r:í11 rcsulcados dife-rt:·Jll<:s. lo que ricnc qw ver con
;lo di.recci6t1 a rortir
l.:1 drn1\·.1ura JC"j program:l fuente. ; de 1 tJ <U:il SC ensarbl.M
; la> ~ i.r'6bu.1:kn:s.
Nota: ; l:fl e~t"' r•icmp\o lo
Es posible csccibir C"l pr<>~ninla sÍJJ emplear un ;di.recci.on e~ Cf1rv.
~i(l(l cerrado :il finalizar t'l cédiao. Observe el \nici.o ; Solt.u u la etiqueto
c6dign fccuw que sigue: .. ;"inicio''. t.<;to 1rtbu:rión
:q~ altt.oc.cnoOO e1l lfJ
;di.recclOO C(<l'e> y :ic
PUERTOB ; IV -> PUERTOS ;oct:lvur-ó ci.r(lndo s~
.-energice et
END ;Termino. el proceso ;111t<.rn<.<.lmrolodQI', <>
;de ensceb'l cje ; evo~ se pnx~T.'co una
; ~ei)OI (k reseL
Este pr<igmnl.a funciona igualmerne bicu, ;-
pc:ro no lo recomendamos corno rfcnica válida ; CODIGO Cf'L PRO<;Rh.'V!
..le prograrnacién. Utilice si~nllll'<:un ciclo cerra-
:-
ORG
do p<lJ.~t tiuali~:ir el programa.

~ 4Íc1r.:. Cwso p.actico S<)/)to /Aic<oconrro-


f •.PJ,ograma.ción,
------
;UK.-rucctancs se ~
;t'r.sa1tb!cn a (}()rtir uc
c:or(t'lll>Clnd~ .i un bit dcin:ro ,f;.:J r~istru. 1-:.sl~«
;io diretc1ón 0"x0.,~. Si iJ1srn1..:;.'i6n coloca ('O <:""J hi1 llt:fc:<:ciuuado <:l nú-
;u lo p1•6x\m ir'~truc<-iU1 mere O. Sto akr1ar los. n.·~t.:1ntN; bits d('I tt,gislt\).
t te risi.~l'- lo f!tt<peto
;-wci.o", lo ir..,trucam UJP\'I\\ J.,1(11
:&e -ene "'noto inicio" l ~'l i1i$tr1h·i."ión mcvlw ricue un wlct operando.
;(al:tlocc:nodo <.:n 0x00)
;1-a. lle.ui'Ci di.rectr:mcnte
Esm in:.1ru\.<i611 al macena el v;1f or del operan-
;b:lsto lo direc:t;lM 0xa'\. <lo cu c:I registro'\,)¡;( Otra forrn;l de t").prt'!\.1rlo
:A portir d(: este punlo es coruo ...i~uL·: d:iro-> W. .
;coolit\lJtJJ"Ó lo t•iecucu~

tniC"io b~t ESTADO,$


;d-~I prOgrt;tOO "'º' w]" n't_;J'>ln"I
;ColOQ.Jc: tAn l m el bit La in ..<;1ru<:i.:itSn movv.·fdi.,pÓ;tt' ele- un solo ope-
;.S <k1 ,..~uls-tro íSTAOO
modo. Este t1pí't.u1,fo hace rcf~rt'nci~ a un o.·.
Diagrama de Dujo del proyecto .,
:..•i.-.[rf).La instrucción n10V\\•f trnn.sficr<' r-l con-
Aunque <.·I di:igr.ur1n de flujo es bñsicamenrc una tenido del RgiStl'() W al n-p.i..stcu especificado.

-
En ténnínos simples, W --> l\"<6isrro.
~11d<11>:3ra viru:ili~r-lo ('Strucn.u•a de: 111\ progra.
ma. y de hecho no lo iremos utili1.a<lu en <."I desa-
h.. r rt.·,e.i~1to,nLu11t>n•_h11
rrollo del jJCO)"C('lo, :>Í C'-S vonvcnienrc t¡uc usted ~~-- --
La in.stru<:ci6u bsf uttliz:t do:supc-ranc.lo ...:. El pri-
lo r<'oga presente, En n':tJjJad. depende <le: fa
mero <.Ol'C1.-spon.Jt> .1 u110 de les l\'{!,i)tro.~ JcJ
mctodoíogiu usada: algunos ~'rugraor:tdorC'$ 111
mi<.ro<:onrrol~tdt1r. El scguudo se.. refiero a uno
usan <:xtc:n$<'Uuenrc y nosouos fa1uhié1~ lo horc
Olos. peto cuando c:I proj·c:c:cv a.-.í lo justifique.
de los lti1:.Jel ttg(,-.rro. I-~-.f;li1J.S:tru<<ÍV11 <.'.010<.·~1
en 1 el bú ~lccciana<l<i. pcr<l sJ11 :i(<X-tar los
l't'sranc~ bitJ Je] r.::gi~tn).
1.a figur.a 6. J 5 muesrra el diagrama de .Ao-
jo 4uc se acomoda af 1-'"º)'CClo que acabamos
dt" concluir, ch+ 1-.:.·~'l!o'E(ol

1.a j;l,.T~1c<:itrncrn urili~.a un operando <-1u<: <:'>-


rrespoude :i un n-gistro del J11icr<i<:onrr0Jadc1r.
Esta insuuccién cnloca c:c:cns en rodos J(\$ bits
<fcl regisrrl) :u:dt."<.<.io11ado,

~la in:>tl'lt<.x.;ón
~U
~· goco nciliz:t un <>pcr-.:indoquedea.e
Ctll]','t'U

coiucidir con una t<ti(pf('la dct~11id3 dcmro del


pmgl'run:t. l~s1.a insn uocién ohfig;:i al microcon-
rtclador a 1.'<H1ri11u:ar M Uuj«"• de- ejecuc iún n par-
tir d(' fa t.'n('-'.t que couri(':ll<.." <lic:h.1 1.'Lil¡t1M;t.
Flgw-¡¡6,15 fNiN)fMl'NlLlc/fuJo
Ejercicio No. 2.
Instrucciones utilizadas en esta lección Encender y apagar un diodo LED
Para que-sirn como n:-1l-rcni::t.tp~nt:u11mun resr 1-
men de l;Q: insrrt1<.'1.'j<>ne'$uülim.da.s en <'Sta lección. Propósito generaJ
EJ objetivo <lcl· siguiente l'jt<ro-,i<.'i1.> <::i 1.o,uinu:cr
h.J 1\-ci,o;ltt;,J.acu ~on I~~ ideas b~isict.<. de...::irr(llJ:icf;¡,_~ l1l l:i l<.'(:<.·icln
[,.a in.-.rn11."t.iónlx:furili~<lMopcrandolo. 1:1 pri~ ~lnf<:rior.Va111os a aprovcc.l1ar (•I 1."lr<.:ui1\1 :.u1r\~rivr.
mc:ro d~ c:JJos es el l~·isn·o afecrado: el ~~~uncfo así <Ofuo los ~fcnlC'utos <f~· progta-Jn:l<.iUJ1 cf,..I

CuroJ-lko SOOrc -tro1>1Ju,es ~ llr',,_: ~


rierupo. Pa1<1 que el ojo h11nlá110 pueda
'" visualizar el cambio de esrado en cl 1.EO,
"'º M.'lAL\'"(> debemos hacer <¡uc ende nivel Je salida
p-<'rrna.nc7.C:'. dtname un inrcrvelo de
""
1114\lll l ri<'rnpo; :.i no I<> hacemos, -:-1 uricrecon-

...., trolador <:j4'<'.utar:i rar: r.ápido c:I pto<.1:.so


que 110 vercrnox ningun cambie .
.
- -
...L 1\ este inrcrva!o de ci(..'.1t1p'J se le conoce
con el nombre de retardo. Pasado este
FtgfNiJ 6.16 Di.WÑJ taco r.t1 tA''l.111odi.: CO.'lrrcf de 11.'I tiempo, el cual se puede "-·onfi;~ur:lr usan
.1ír.d'> UD do técnicas di: programacióu, l.i señn!
aplicada debe pasar a <.:ero. ,;\hora bien,
1)1(,16F84. (.Á')()lO VL'r;i> una p:lffl' imponauce C:J ricmpo durante el c:n:if .:-J vclcaje permanece
del cjvreicic anterior rC';ndrj una.aplicacién com- i:u cero mmbién puede ser controlado can ins-
pf.:1:t en el presente cjt·rc.:ic:i<l. rsuccicues de programa.

1':11';'( eru.p<.·,t;.~.r,recordemos la estructura dc:I Nota:


circuito mostrado C'11 la Ggur:t-6. l(l. Por comodidsd, ambos ricn1po.s pueden ser exnc-
ramenee iguales.
Propósito especifico
I•] proó~ilv especifico de este t'jc:n:icioc_c; harrr En este punto, si quc:rC'mos qoc cl pro.ce.so
tic.il.lr un diodo LED con una fu.(ll<:'•h.ja 1.'0IL\· S<.' desarrolle de manera l'(·pcUtiv~. basrn cou
tame. Este S<: lo~m :1plk_-:tf.u.lv ;11 diodo un VC)l(a ejccuror uucvameme el proceso que $t' descri-
;e: en ~<inl1a de ouda cuadrada, Iigura 6.17. bj(> en el p&rr:lfo :.\Ol<:riot:. La figu~ (). t 8 01u1..':S-
era el dla.g:l'anta de flujo que se :u:o1n<><l:1 ~11 pro-
Aniilisis L'C'st• descrito.
Lo ll ne .'i<' prC';t1• ndc en este proyecto es gc.U\.'t'ar
11 na S<"ua.f Je nivel atro cu l;t puerta PBO du-
ranrc un cieno intervalo de tiempo >' lu~""I~> una
:>CJ1~l de nivel bajo durante c:I mismo periodo de
l
...

• o
Figura 6.18 lht)mtrr.1 l':eJ•'lA:O*1 O!'Q9r'1!'Mqutt permJ:c
a"ICl}~t y~ wi LE!J
Estructura repetitiva Observe corno se opla.au estas ideas :)1
H d!..-.g_t;i.fu~"4: Ilujo prescnmdo en .1<\ G&tlr.t (;.1 s diagramn de flujo Je Ja 11gurn 6.19.
permite ilnsnnr Ul'l aspoaodeh'l"J.O impo~nc.i:l que
~ prcscma al JH'()J;r:tnu1run micrccouuolador; Hste (:.n1ld.ic.lóu inicial (N = 100)
.a."pecr<lose- rcl-l('t\; a las C"·SltU<."lUr.L'>círliC":lS ('(U\lJo.b Punto de rcronto
..hi. mediante c:f u.,;;ode una cou<li1:i<jn l•)y,ici. Algu· lnsrruccién (Insreucciéu]
nascsuucnuas ·~~iti\<:L.. SOn sirupl ezs, come lames-
tradaen l:l figt.ll~l 6.1s. ycro ceras rr~C'nt!ln 011 lusrrucckin {J flStruu.~iú11)
n\.t}'QI' gradode c:i>mpl<iici:ld. L'I. Iigura6.19 pr"-'" Cambiar condición inicia.1 (N N. J)
senm el csquoua gL".iJcr.i.lde una esrmcrum f(1-X11Li· Vc:rifil·~· la condición Iinol
va, pt-:r<.t ilu xrmndo un C\SO partaular: una iusrmc- (<N = 01)
rión sin1~~<: que se eiecum roo \'OC~. Si N() se-cumple fa condición final.
~----~•salrar al punte de' reeorne
...... {Saltar a punr1) de eetornc}


Si se cumple'la coudicidn final,

L
conrirnmr cnn la siguiente
insuuccién después del cicle
Instrucción

Í;.<.l;l~iesuuccionesen ~1cfnl·ódig_c.){insuuc-
vienes en <'.'ip:l1lol) rcprcseruan t>rro punro de
vista de lo t¡ue es 11n:l csrmcrura rcpcuuva. P:1r.1
llo ;ilgunn.< rc1so1w.s es basrame n1:ls claro ll n <lt.agra~
usa <le fiujc>, nunquc" 1..'11 «alidnd u.>tlo depende
del punto de \'bla y del c::>rifo ,fc:I prll~f;uuaJor
t¡ui: t:·St¿ dc:s.1rr<>ll:1ndn .:1 uubaio.

Precaución
Las esuucruras rc:pcriri\.--:1$$("<.~u~i<:leriz:tnpor Í:..)jJll!-'otUllte f()Ol:lf <:n (ll('l\l« cl )tg_uit.'lllt'. punm:
.Jnponr;r de los .i.iguit·11tc elementos: ·¡hda fSITl4'Ju1~11~fil;l1,·1
<Í(hetxncr 1111111('·
(tr1/ñ•111(Jq1«' p(1miraCllJJJÚÜir '11 r:Qndit·itÍn ini-
( .oudición iuicial ,Tt~l Jin rarn 1Í< ,,u Jmct'rlo, el prtJ.r...mv1111pt>drl.f/
.--Pw1to de retorno dttr1r.1elkts ''p.11usi1•1nf'".: ilnpi1/ir111!1Jque las ac-
Instruccién ein11es qu.f' 1dt11nt a rontin .uar.ihn .te l"jrc11J.tu.

Insuuccién El case mencionado es posiblcmcmeel pun-


Cambiar la condiciéu inicial ro nuís import<•,uti: 4llt: se Jebe tener i'n (:tlCtlta a
Vc,;lfi<."3r la condicidn final la l10J-a de pror,ran1:1r C"SfOJClUt<I:; rcpeucivas. No
Si N() se ceuuple Ja condición final. f<.";l¡pt:c:lr csrc principio puede llevar ~ ('(1ü11..·:.·que
sclrcr a! ruo{(> de retorno lnrpidm el normal dcsauollo del programa..
Si se ceuuple la condiciéo hn<'l;
ccnrin 11;1 r con Ja ~guiéntc insm •rcjcin Subrutinas
después del ciclo l Jna ~ub1uU11a es on conjnmo Je: U1.slru<:.'l..·i1>nt:.'i
'--lnsrruc<:i6n que .se eiocuran sólo si son llamadas desde ouc
pu,.,¿.ratn:t. 1:1 c:onc:<"pf1') es <:1 siguieme: un pro-

""'""""""''•-.,Mic(oc°""oi-.. C~Kl'ifu
~
~r:m1tt de microcontrolador eiocura, CI\ cierres J..a etiqueta es una consrmuc que se refiere n
puntos de su desarrolle secuencial. un conjunte una posición en meuwria y t:st:í ligticl~ a la pri-
rlc insuuccicnesexternas mediante el U)'<' de una mera Insuucción de !:l sul)rutiu:t. !vt!is adelante
insrruccién de IL-1.111"<\<lo (C.t\Ll.). A~ p:lquc·ce ,v.~ ~·c-r:lcorno aplicar l:i. inscruccién { "./\ 1.L.
CX<Ctt10 de insuuccionesseto conoce ('OJt el 111>m-
brc de: suhrulil)~. Instrucción RETURN
La iusrruccién RI :l"lfRN pennite retomar <l~\S-
1 a íigun 6.20 pn:scnm t:l estructura ele una de una .subrutin:1. l .:i sinraxis de uJ1 rercruu de
subrutina. subrurina ~ la sigmcnce:

Prognuna RETURN
i;ñn;.:ipilll
SubnlÜOI

CAU. J( 1 a subrudua ~turrut :ti punrc en donde fue'

Lt><ii
llamada, l·~xisr...-.n otras lusnuccioues de retomo de

CAU X . \11b1utl1l<l <.illt' serán vi~:1s en ~1 dcbill<J uromemo •

l
RETURN


Estructura de una subrutina
14-i (:un1r:n1m.gt1b.:r ...J de wusul>n1rim es b .~igtLfc::úlc.:

ins!n1cc:lón 1
¿Qut ventajas tienen las subrurinas? A iusuuccién 2
ccnriuuación useucionarnos :tlg.11oa$ de- lai.
Ut~i.s irnpormnecs.

l. hl programa es ·1u:1s f~c.·ü <le leer y de ~ribir.


L1 razón<le esto se encuC'J\traen l(Uc cada vez Una s11hn1rin:1 debe escribirse ;1p:1rce ,f(';I pr<>-
<JUI'; se- requieren pro(:e.so.'> rcpcririvos se cscci g,r:lnla p1i.11<.·ipal.
be: w1:1 subrurina que couwoga las insrmc-
que deben repetirse. y se Ias lla.i:t\acuau-
~-j<H)t''.<: llamados a una subnrtina desde un
Ju sea convcnicor .e, programa
2. 1\l escribir una sola va. (';f <.<u,ju11t•J Je ins- l .a apanvucia (Jlle rcnclcl, en n~tn1i11(1~ j1J.U1·u1~t.lc:s,
cruccioncs se C'VÍtl la posibilidad de corncrr-r el pr<in.'So de fJ:lOl<lli:Tu' a subrutinas es k1 sig¡1i~nrt';:
errores <le di:~imli7~ción.
3. Se ahorra un considerable especie de memo- instrucción retardo insrruccién
ria> ya que <.."1" mds corro u1ifuár una instruc-
.-:iñn de llamada, ..¡ue escribir en eu l11g...1r tod<l:i
.
( :;\l .I. retardo
/•\ins1ru~i611 ...
las- insrmccioucs cooreuidas eu l:i. submrina. . ......._ - iusnuwiéu
instrucciéu J rcmm
Instrucción CALL
La instrucción qut: permite lf:·11l\:\~a uua subru-
tina <".SI:\ insrru._i;fóu (.J\L-L.. Lo tini<"".o 'l"" se re
quiere es indicar la dirccciéu cu donde lit' en-
csu, "''ªrdºV
instrucción
cucntra t.li<.:lta subrutina. l ..a sinr:lxis de la insuuc-
cit'111 ( :A 1.1. <"-" la sjgui1:uu::
Eu (~l<." l'jefuplo se supon<' '1º" I~ etiqueta
CALI retardo nll"ll\'":'l el punto en dende se encuentra fa
¡I •
~IT.:.. Cl11$'1 practico sctJre IAJtrocontr()fMl()lt$

.
prirnem insuucciéu ele J:i subrutina. ¡_... últinm Nota:
msnuccidn de la ,.,:ul>rurina es rcmru.
Todos Ios ciclos ~<'1l e·1~u1 aJ~1in tipo de rccardo,
Instrucción de soporte
l .a ljgura 6.21 prtsc:nrn e-l 1.li:Jgmn1:,t de Rnjo
['.Jr:t que li>S cic;los n-pcririvu~ se- puedan ejccn-

,J__
d..- la esrmcnna rt:pc·rit.iva h:i~ld~ en el ..-ódi_¡.;,ct
Qc eJ'c:c:riv:1n1tnr(";. <~ necesario tener in.;r1u1.:(.ic.r prescruado.
ces que p(";rn:~jlan vcrilii;:•r uno determinada
..-ondi(:i6.u. El siguiente segmentode c;ód.igo ilos-
era este fU.0((.ºSO.

!nterno decfsz registro3

T
;Se resto uno al rcgi~lro3.
; Si el vol C}f' resut 1 Oíltc es cero
;(~ <lJ!l)lc lo coodit:ión), salto

T
;a la tnsurvcción despuCs de
;1'goto".

~Si el contenido del t'<'gt~'"t1"()3


;oUn no es cero {no sP. cumple
~locondic\60), ejecuta Lo
;inr.tr'{.u:.<.:ión "9oto'1•
~la instrucción goto (soltar)
; llevo nve!var.ente o lo et tqcceo
; "interno"
got·o t neer-nc
,¡. S1
;Ge1lCro un c ic lc
F111ur.,6.21 D,•,%lm.t&¡tk: Ou;c rte l'1S irrstn.v:r.l()llC')tJW
Ji&W"?.f)IN/ f(,1;J{d:J
J:I registro:\ r:. un reg_i.(tro del microcon-
ao!a<lor que coneiene un valor numérico. l.-;L Registros de trabajo
dccÍ$~1.Se caracrc. iz.a por h:i.L·t:r, clhl
Lmtnl(,C:i.611
Usualmcme lo .s c.i<.lix; (t'srructu.l'as rc:pc-tiliv.:is)
snJ~ varias l(u1L·ic>nr.<; n1uy parriculares. l;.n !)Ci-
requieren <'I use de rtgf:sLro.~ p~ra almacenar
ecer lugar, rrsr:t el número lU1<.~ al contenido dr-l inforrna1.·íón (JHr- varia en ~I tiempo. Paea uucs-
..ct:.'l~T.rocorrespondicme. en <:Stc caso al eegis-
rro prc,¡·c:.:.ro vaJT.HlS l'l definir los ,)i¡~uic:nr~ re-
uo3. Si el comcuido ti..;) ~t,...¡.srr-o::S aún no es i~isrros de: rrJh:aju:
cero. L~ decir,no se cumple la condicj611 fin:1l,
::1«11t~• l:i insuucvión $iguicnrc:.
REGISTRO! EQU 0x0C
Dado que esra Insrruccióu e:. un sake :Pr inx1r rPgt strc dP t:rc:ibojo
goco} ;.i J.t eriqtu~l~l interno, el progc:.:tu1aenrra
a un ciclo wperirivo. K~GISTR02 EQU 0xetJ
;~1ncb ~Stt"(l &-: trabajo
Si después de rcscar uno al reg:is11•03 en REGTSTROJ EQ\I 0x0E
..J_gun;i ieeraciéu del ciclo, ,.,:e obtiene el v:t!o1 ¡ tercer-registro de trobojo
uro. se h.abr.í nlc:l11:t.:ld.ct ln condición tiu:.l'J. 1.:.
m<!lu<:ción decfser,C"n~·r:t un salto a.uro1n;ltiL-...> Control de estructuras repetitivas
'
.. L siguiente in.1't1·uL·t.:ión después de gctc in- El tiempo ele un recudo ':c:n.,~r;u.lt) por 111\ ciclo
serno. 1-~«ro g.:tr.•nti7.:l' que cunndu se alcance l..t repctiLivo dcpemle d<·I valor ini<".i:.\I <.¡LtC' se :l$fg .
.u.ndic-ió11 final el 1.·iL·lo terminaré, y el progr:i- ne al rcg,istn> de: trabai«•. Para uucsrro p;(1yec:-
~ podrd Ct.>11lin11:1r su desarrollo normal. ro \>;1.u1os :i 1Jlili:1.ar l<1.<. ~tguic:.nr..-s l..'ou.sranrcs.
, Ejerclclos de pr\l!Jramación
. • •• . e,. • '' • '

MTOl [QU zs r<:o1.j;l. vn muchas 0<::1SiQ1l('4 uo son suficien-


;Ooto usv~o poro et res p:l1~1 l<1gr<11' .:1 objerivo propuesto. Por este
;retardo ~x1~r~o
UA102 EQU 30 urodvo -'>e acostumbra recurrir ~ ciclos dcnrro
; Doto usodo po r-n •t de: ~.i<:lo..... l<J cual <:0111rib11yc: a aumentar el
~rf!t(lr(io mc<lio tiempo ele rcrardo gcocrado. l:.sta récnica di,':
OAT03 EQU 3~ creación J1: retardos muchos 1<1 denominan
; Dalo usado parti el retarde por .~oft11,011n: y ya la hemos 11rili?.:td1)
;rctordo int~rno ('1\ ''ari~s oporrunidadcs en (1111:~tra sección de:
La idea de c:sr:t técnica os ejecutar
¡>royc:crn!>.
Estructuras repetitivas anida<las 1nuLLas veres una serie de instrucciones qu~
{ .omo ss: vc..·1.;l a le lareo efe su uso, las csrrucw-
ras rcpcrU1\':l!li por
" .
~1 :<><>l~, a pesar <le su po-
en rt::ilici;lci •H.i hacen ninguna rarea imponau-
te, pero (111(' .o;Í r.01plt'~u Ljc:lo:> de ru:íquin:l )"
por lo {3.11to ciernpo.

Cicfo exrema
Desde que L1 ::1pli<~11:i.)n qtu: nos encon-
rremos <les;irrollan<lo le permita {cuando el OlJ
crocontrclador enrm ~ esta 1 urina, desnriendc
cnnlquiC'r 011a tar~a a menos que ocurra una
iucerrupcidnl, podcsnos incorporar csrns es-
rru<.tuca~ para lo¡:~r;lr nn «eardo de cualquier
tiempo. l,a figura 6.22 muestra ln csrrucrura
de l~t ciclo ;inid:i1f<).

Codificación de un ciclo anidado


1\ c:<>nri1)uaL'ÍÓu si: prcseurn In (.údi(i(actóu en len·
gu:tjc.- ensamblodcr Je- uu ciclo anidado.

retardo {l')OVl\'I DhTOl


ll'IOVWt REGISTROl
externo l'tl()vlw D.ATOZ
(JK)VWf RF.GISTR02
medio l?lOVlw DAT03
movwf REG!STR03
-i.nte,..-nc; decfs2 RE6'15TR03
.goto i nterl)o
d~cfsz srcrsraoz
goto medio
dccfs.i REGISTX01
goto <'Xt<"f"rlO

No
flegitrr()t 01""'---' Listado del programa
Estudie (.OJt c:uicLldn el ~igu icruc liscadc, el
cual corresponde al prl>gr:tn1J corupk-ro, l3.1
y t·oJ110 debe inrroduch sc cu Ja memoria del

-=·-
microconuoladoe, un:i vez c:<inv('rrido tu <:Ó·
digo hexadecimal.

Clil..JKir:.. ClJ(.. ll'Xlic•-
1.

;t"_<;ta(k), Esto sele<.uqno


; PROGRA>tA .. : Pro05~osrr :e\ bonco 1 de coojunto
AIJTI)R,, ••• : CEKlT $.ti.
;dt- rt:.W.stros de infm;)r\o
FECHA ... ~ . : t&J)'o de 2001 ;RAM
C(l.11;.NTARIO: 1:l progl"<l!!O ftro05.ot.M erlctcnclc el rf TRl~!I ¡ Cu::n:b se oürcx:M'l'l CtTOS
;y opogo oltt!rl'IQtivanente un :en 0x0b, estando
:diodó LEO.
; S('lecci«IOCb· el t.-;n:o l.,
;el ~ 8 se cooñ~
cecee solido
bcf BrAOO,S ;tolo<.:o un 0 en el b1 t
; ENCABEY.00
;-
; s 001 ~' t~ cstocb.
;t..c;t.o seteecteee el
ll!:IT P=16f8-t ;S.c -ut\lizo el :baleo & eet <.'Qnjw.to de
;Plt 16F84 ; f1'..'9i.~ros de IM'm('¡a AA\f
RAOTX HEX ;Se utiliui ~1 ;(ve.r tl'()flu)
:st~tma~1 neto. movtw l ;Se colocoo 1 ~1 bit de
;iun:r fXM d:;:l ro;;{sltO ft.
; ZOO!\ OE EllQIJCTAS ;En 1 'Se 01tloce11a
;--

~~>0000001
0 ; Si t1I dc~'tino 1-'\E:RTI)S, ; Se tn:rtsíltorlt 1•1 untcnic:b
; es W, debe ut J 1 i rerse ;d~I registro W ol
:el m:i~o 0 :weM.o u. r_..,to s\glifico
;Si el dett1rin es F. ;W -> PUERTOS.
;d'*bt! vtt.ttzcrse el ;Eslo o<Ctón pcrfJÍle
;nUnero 1 ;~"'Qi.zor el diodo lED
PU€fflú6 CQU ex06 ;ta posición 8x06 ;conecta*> et bit G dtr!l
:corresponde: CJl puerto 8 ;PUERTO 9
;<:IXll'ldo el banco 0 crtó coll reterdc ;~ rk CJPJ901' el uo,
; se Ieee i <inodo t sc llano o Lo -..avnno:
T'Kl~ll fQU ; Lo posi.ción Ó':ltl.'\> ;di! r1rl'Gf'ÓQ, Esto
;pernritt'! <.:onfigurar el. ;got'Mlizo que el diodo
iP\lt:rto 8 ccec erit,rC1dC1 ;uo µ<;nwnci:eró
;o cese ~alida ;encend\do d~rontc un
E~TJ.00 EOU J,}j<fJj ;Et Registm dr C'itodo ; ti copo cspec{ fil'.u
RroSTJ(n_ [Qtl 0xec ;l(f!gi!.tro de lrabojo B ;Se coloca o cero el
"'~E(!) 0x00 ;Registro Ge tl".QOOjo ¡r•eg i srrc W.
l<EGJSlf(8 ((!.) 0xee ;Regi '>tro die lrobajo : En W se o\nlll:""'5 ~
DATOS EQ!J 25 ;Doto us.odo poro el Pl.QJOO : $4: trtnsfiere el o:ntm!(b
;l"atardo externo ;del N!g\.$trv W et ~to
DAT02 EQU 3~ ;Doto utodo pQro et ;a.
ésto sig'ltfí<:a w ->
; retCJrdo (le.dio ;Pln:!::TCm.
DATO) E(!) 35 ;Doto u~!> para el ;Esto occi6n pr.n11itc
;rc:toróo inte~ ,upügor el Qiodo LtO
;cooccl.Q:fo ol bit 0 del
lNlCTO OEL PROGlt.(i.t.(A
: ruurro B
colt retardQ ;Ante~ da l!né4•Nkr
ORG 0 ;(stoblec.imif!rl~u ;~e et diocb un,
sóro INICIO ;del pum-0 de inicio :se llaio o trJ ~rutina
ORG ~ ; elet orogronu ;tl11 -cterdo.
:Esto garant-i1'o que el
CODTGO OEL P'R()QtAMA
;dio&.> LEO perO'lQ~ró
;~ dsu;ñ:..,, ti~
itnciq Os( ~rNl.>,'i ;Wloco un 1 ti:n et bí t ; <: ··P<:.c:i.fi.co
;5 d~I registro de qoto ciclo ;to ínr.tr~1<.-cl6n ..golo•

CtN'Stl pr;í1:liclJS4bt1 ~11ro1<1dMJ:s 4iC'1T..;.


:-si:iltJJ n lo {tiq.l?!Jl °'cidd', ;.)O ll) h.y tf::s I~~ 1
.tsce il'l".stru<.:ctón de ;de ~alto. E1 progr(lrool
;sotto permile •·f!p<'tTr ;o:nli.tÚ'I CM lu ir.stt'IJ::d.a'I
nwevceee+e el proceso ;"rtd;urn" lo cuol hQcc.
;dé!. cnccnctid.o y c;p:1godo ; ee el ¡)rógr'Ul'(I termine
;el llmW:> a la !dl'°vt"Üla
• SUS.ROi !NA or ~ETAROO exee-eo ;Genero el ciclo "externo"
:--
; les in..<.tru<.:ciones qtl(l :>~nucn sólo se RCTOR»:) -DE LA .!.llBRUTIN/I.
aJe<·utcin si son LIQn:oclas con
; uno i1l$tr\.lcción "col l w
r-ere-n ;Pet'tlitci n:.tomor de 1a
;- ;subrutina
:--
rr.-tol"do movlv.· dato1 :Se 1.t.1ryp W <00 el ll'Ólur ; F!mL 0[1 PJroGRA>,14

movwt rt'{listrol
ten dolol (lSJ
;5<: t.rvsl<dl ot '° l'E;j1i-trcd
:-
,.., ;Fin del progr(JnQ
extfli·ni;i riov\'I! doto? ;Se CCll'\10 W <VI el volOI"'
;M d<Jto2 (30)
eovwf ~.stro.' ; Se t:roslo:b W o! reqistr&
mWio 'lllOvl• dato3 ;~ <.'<l'llQ 1' COll el vntor Nota:
:en doto'.-! (35) Para el r<-gisl10 ').ltlSR SI'.' ha uulivndo 1~ direc-
mo.,..,.,f ~Sln'rl ; ~ t.r(r;loi; W ot N.TJiW"o3
(.i6lJ Ox86. lisrc dii·lge al microooutr<>i:idor di
interno decfsz l"t!llstro3 :Se l'ffitu 1ro ol regis~.
recramcme al segundo banco de n1~n1oria.
¡:i.; el volOI' r~-...vltC1nle
.es cero oµ::\ta a lo
;instruccióo .-.1!1'ri<.'nte~ Conclusión
:En cu~Q <.:ontrorio La pr«'gr<lJtl<L<:iOn es un nnc que se estructura ¡>or
;o:l'ltin.i:i a:ti la '>1.!}.nt'rlle capas: cada \'~. que usecd donijna una récnica cu
;in.<;trvcción. C.$t.U pnrrfc.ular, ésra le. sct:.l útil p:irn un prvblemn de
; i.nstruce:ión (.qoto) Io
JU:.t}'t)r c:onlpl1:ji<lad.
;hOr.e rq;resar o lo
;<'ti(Veto "interno"
goto i ritemo ;~ et delo ""irrMTo"" Ejercicio No. 3
dccfsz Mg:if.t:n:i2 ;Si ll0!9a r1 esee lectura de una interrupción
; 1 n:.trucciOO, e.<. por\1vc externa (INT)
;el 1·~i.·;tl"OJ olcawS ~l Esre ripo de interrupción lr.ib:aja d('(('Ct;,u1<lo los
;valor cero. AhorQ ~e
: rep~t-.1· lo iU'\lerior Ilanoos de un;\ sctial de: entrada por un pin dctcr-
;fl(lro el 1-eg1str~~1 pero minadó. el cual se puede ubicar ~¡ciliut'nrc por
:esto ver $Ollondo u posc:er la dcncminccién JNT en c:I di<l.gf<\JJ1~• Je
;lo et\quetu -11cd\o» las hojas de daros. Corno se n1ostc6 en la sccciou
m1.'<tio ;e~ el ciclo '"l!W10" ele tcoda, el tipo de ffa.iJ<.u dd>e S('l(x,x·joJ1arKme-
!~c.tn,ll ; Si 1 lego tJ CSl:Q
dienec c:I hit6 del registro ()PC(()N (l~tTf.D<:;),
; 1ri-.,-rucciOO, e~ porqvc
: et regi1'tf'\9 .11lccnzó el deudo las posibilidades In dcrcccicn de A:incos
;vutrµ- cero. IJ1()r<1 se <le: subida o flancos de bajada.
;repite In cote-ter- f'On.J
;('I rcgi.strol, f)l:cl"O CSlC EJ procedirnicnco exacro que .sigue 110 n1i
;ve2 !>.iJI tc:1ndo a la C.'Til\tHl1COl~;dor,<lc-.<.dcel 1uomcnro co. que' ap~rc-
;etiqueta "1~xt.-n'IO" 1,J.:la inrcrru1x~ivu.i:s d sigui('úlC'. Si ~ c:n<.11<.~ntrn
: Sin t'sdxirgo, ahoi-o l'oy
;uno di(er~rl<'t<J;
CjC'CUt<W<lO UO:l in~lJUL·1:ión !::i (:PU Ja cc:rmina
;cuuruJo et t'egi.stru1 ele: ejeo1{~r <.uu1¡1lc-r::mcnl1., lt'e Jo handi;t;,t indi-
,¡¡, ---:=-:;-----~·~eN! ~I "Nl?f' cero, «t<lvra t!t:I habilil-:U.lt>r ~loba! (GI~:} y ~¡ k1 l.'.U·

4.Íc'1z: Curso pr.ir:tk:tl$CbteM'/C.tOl!OltbrJIJdorss


cucnrra scrivada quiett' decir que: las
unerrupcioncs se cocucouan habi-
lnadas. Ahora debe derecere .s.i la
bandera iodicadora dc unerrupcién
fN'(' xe encuenrm-acrivada, si es- así,
procede a la secuencia tic: inrcrmp-
cién. Si alguua Je las dos banderas
.anteriores se encucn rra dcsaciivada,
el microconuoladcr ba.-3 c:i.<;.c1 omi- .. 11U1.;JJ:~flll
.. cr.1:.:.~ 1
.so de lttS intcrrupcioues ~ut: oca-
rran y conrinnard c:nn so rc:i.l:o~jv
normalmcme, ""'' I ·.: ~
;
..
1""''
Asumiendoqur:sc- dcrcoaron (O·
rrrcramcmcambasbanderaselmicm-
corurolndor Mm b b:.\1\1.kra del ha·
bilit.a<.lor·glolr.J.esto p;u~ evitar reconocer intcrrup- ; C.iCRC'T(<:O: 1 FCT\IRA Ot U!i4 lWIE'MU?Ci?t. CXTU:llo\
cienes :.kii<iouak~ lut'go gu:mb la (linicr.i6n de re- :--A
tomo en l1 pil:i )' salra a la dinwiéu 01. li!:t p-16(84
rudi• hc<x
:--·-
1~1 circuito dela ÜgW".i.6.23 nos serviré corno
'
[Q.U
[Q.U •
t
ejercicio p.1ra <l<:r«:rnr 11n:1 interrupción de este
iipo y Iamiliariramos con su manejo, y las posl
l'Ul:.IOUI\
JNT(Otl
tOU
l:QU
••••
;--(-
bilidadcs \}1.IC podernos wuec
º"' 0
GOTO
lt~l<.10

En ía li-h-ur.l 6·.21 observamos él <Migo f1.1c:n-


ORG
r.010
'1Nífí<IM'llóN
ee del ejercicio y en l'A fi~u~ 6.25 su diagrama Je: ;-- o
NIClO
Aujv, ocu estos dos cfemcnr~ podernos tener una l«>\'LW 8~01111111'
idea n1uy t'l)ll)~'lfCt-a clcl Jc:sam>lfo del c:jcrcicjo. OPTION
!l.Cf IllTCON,1 ;A(»btAX· St.Ht>t!V.\ lf{f
S~· IITTfl»I, 7 ;4(TTVAR: Hl\8!lfll\OOO
E11 e~lc ejercicio el microoonrmlsdo. 11:<.: el Gl~L
J
p1111pr.r 1 que se cncucuua conecredo al pin 1 1'11
BSl- lmtON.·I ;llASttlT.A.R TNTl:RKtJJ'(lOtl

del put'rlo A y muestra su csrado en el put 2 del


puerro A; CJl csu operación pcrm.1n<'CC hasrn qu<: ""'"
!l(F
l:S'<.'0000010'
TP.TS Í'V!:l<l<M
PVERTOf..l
;cotlrIGli!AR PUCRTO A
:!NlCilil:IZJ.R PI~ICS 2 Y 3
.!PJ-f«<! 11n:1 inrerrupcién ('~lCJ:ua.
; '"r e'UERIO.\, 3 ~lltl r'UERTO l\

( '.t);uldO aparece una interrupción externa c-1


microcouerolador salrn :1 1:1 posición t.>1, donde
PRllC:GJo BlíS<; Pl;FRTO", J
GGTO CTl~tfTAI
ITTQLltiAZ
.
;LtO u,
.
Jl.WCR J L

;SJ E.SIA 11l:~All!V/IOO


!l~f F'OCRT(!r?.,7 ;<\F P(:t¡f- E'N ALlO u, PIN Z
\C enrucntra b .subruciua de: k1 ineerrupcién. EU<l <.O 1 U Pf!Ut llA ;Ofl Pl!FRTO A
ectjvn el 1 J~J) indi(~dot ultlt.·a<lo cu c:t pin .~ dd fT)Q\ltlAl .sr C$TÁ A(TJVAOO
0(1- PO!:l!JUA,2 .sr Pai" rn RAJO Ft l'!N l
pucno .1\ corno señalización ri~ que J\a ocurrido GOIO J.Wt8A :OCL PUfRTO ~
dicha inrcrrupciéu, :; E-----
INTEStRlJP('JQU
S<\F l'Ul:itlCIA,S ;SE Peri[ CN i\l.10 r.l PTN)
Descripción clel programa CJCLO (.oTO eme .ou PUtRTO A
oe
En el código tncntc mostrado eu Y.1 l'igur:i ().24.
podemosobservar las parres fi11\dtun<.~i1tales <.tUC' fi9·1n 6.2A Có:Ogi) fiMnfe-der eJtf~~'!;,~ d<! una

4'ir1z:. <2>
~ .......................!!Yll!l'Jt.?

Cursoi>*l/l;OSOW.-
• 3oaar tancsa
Je direcciones debe contener Jos puertos, el rc:-
gisuo de escale, el registro de inrermpcioucs, CCC'~;
esro e<>, lo.~ rcgisrros especiales o Sfl{ y les regis-
ucs <le propói..iro general que: vamosa utlliur
para nuestras vaciablc:s.
""
&.ts definiciones esrdn dnda.;; en la S«.Ció11
B ctcl programa a uavés <le: Ias directivas l;.C~U.
La función de esra directiva ("S definir una cons-
ranrc ~ un nombre C'11 el prui~m3; cualquier ve-
lor definido por E(~U es fijo y ne se puede me-
dificar en ninguna p:irrc del prog~nl.<l,

Especfficamenre p:lrn <',.-srccjcrcii..~o. solo JJ~


ccsiteroos definir I~ direcciones.del puen.u A y

(;) o de fN't'c·:c)N que .omn lo.'> registros que vamos a


urili1:ir: :;il rcgisuo de Lral>aju ~' se ha asignado
el número 1 y a la lerra 1: el número O. de esca
O.l3J'1('1~. deuuc del pro<¿-r.tnta,c~da que ponga-
mes la letra W. eJ microcomroladcr t'ltlru<lr:r.i
que equivale a poner un 1.

En el bloque C del programa cstsblcccrucs


las direcciones dentro de la. memoria de jlí0-
grama, del inicio del programa y del ct)di¡;o de
la rutina de inrcrrupcié», n rravéo; de la dirccu-
v;t. ORG. Revcrdemcs c.iuc en la lección de or-
gani1;ición de la memoria observamosquc efec-
rivameme la rutina- de inrcrmpcién se ubica .en
la dirccciéu 01.
Rgun 6.25 a:agrams de flu}nl1el eierciCIO(te f«ttiQ de. (N1a En él bloque l) o: donde realmente se inii::i:t
Á'l((.'(fUJ}(:i(N1e,rl(:,fl~
nncsrro programa, EJ1 primer Jugar configuramos
<:omponc:n un pro~m~ en lc:,ngu:i;c cnsam- adecuadamented rcgi$rrn ()l'(;(ON;_ pala lli;\•at
bladcr, Eu la parle eriquetada con l:i letra A se a cabo esta tarea debernos org:tr \Y/ con d númc-
han eser¡ ro dos dirccr ivas que simplemeure sir- ro deseado y-f.cdc.ar Ja insrruccién <.)PTit)N.
ven para.establecer algunas confignmcioncs que
el programa eusarubl..dor ulilizar.í para creer Eu este case \'(! se: ha cargado mediante [a
el código ohjc.ro; en CSC<' (,J),S(l se declara qee se insrruccién MOVL\VB'O 1111111 '.Ella <::tn•a
v?. a trabajarcon un J>l(~l()F84 y que: el fer- en \'<l (:'I número B'Ol 11111' "
en donde la B an-
maco por dcfccro de los valores conseameses tes del número quiere decir que se encuenrra
el hexadecimal. en norni::ión biuarla, Si C\0$ basarnos cu el ruap:t
del regisrm ()P(:t()N que vimos en la lección
Sic.mprcqucdcsa(rollaiuos un pf'Ob>t:tma parJ. de la ALU y la ·CPU, podernos decir que: !':C: van
ruicroccrnrolador,dc.-hemos especificar el mapa :1 leer Ann.:::o!' de bajada. ~la(~ la interrupción

de memoria RA1vf. que ~-e va a manejar. l-sre m:rp3 externa debido al 1 en el hit<• { 1 N'l"l:DC;),

~ ~1r..;, ClJn4pr.lc<Jco .- _,,..,,,,., .. .,..


Aht)rn- debernos trabajar con el registro 1 NT· Jo ("1\ uu microcontrolador PIC16F81, utilizan-
CON que vimos en la lccciéu de reonade mane- do nuestro programador K-224 o cnatqnier otro,
jo de interrupciones .. l':tr.l <¡uc: cl micrcconuola Monee el circuito en \11\ ¡1rowbú1rrdy h:iJ}l rodas
dcr esté en capacidad de (.(«i.i~ja.r I:! inresrupcién f:\s pruebas y variaciones que .CC"; le ocurrau. RK~
C'X.tC'fúa debemosbabllimrla, poniendo un l ~11 lo:.. cuerde que es la pcíctica la que hace el maestro.
biñ 4 y 7 de 11\~CON, ~uc corresponden lll ha-
biJitador de ln inrcrrupcién lNT y al habilitador Instrucción GOTO
global de Jas iruerrupciones (<.;JE). Pinahnente, RI \X1111;1ll1.n:<le progr.lm3. ~u ti l:.:i di11.'l:1:i<'•n ..k'°.
denrm dC"J •1'1.i.s-1\lO bloque D c.:onll1;t.1-r3n1os cl IÍ1n- No afu:u a. nin¡,1i11 !Ji1 1ld t('giluu de estado.
ci-0Jt.arnicntc>dcl puc:rro A para que opere <le acuer- SintJxi1. G<.Jro k
l-Jrtnplu:
do al (.ira.U.lo planteado en este ejercicio. A pai:Li.t
de este rnomcnro, el microconuolador estará :i 1.-i
coro cC-cl(")
cspcrade un flanco de baj:ld.7por el pin INT para Anees de la IR$1..0nri6u
gencm.r una interrupción y saltar n In subrutina < \>n(:idor de progtanu =-?
correspondiente. l.05 numerales 1 al) del diagra- Después de l:.:i in,.t ""'x:i1í11
ma de Dujo corresponden a esre hloquc, Contador de progt:"í1n::i- d1~k1

En el bloque E se encncnrra d pt<>gi<Uua prin- ln$1mcci0n STFSS


cipal del ejercicio, ~te: st eja1.1r::ir.í normal y comi "iin1axis: H·.11•S!:i f.b
neamenre hasra <)\IC no oc- presente d fb.nco de: ba- .Prueba el bir"h"" dd 1t~i:•1r9"f" y salta una linea $t
j;:ida ro cl pin INI: En la linea do1ldc S(" cueucnua
la.eriqucra PRUrn3.AS<.'"haceuna lectura del pin 1 l·.,111111111: :h1ur li'll'SS regis,0
del puerto A que es donde 5('. ('fiQ..IU1trJ. el jumpa folso GOTO
verdad. .....
de crurada, Para ello utilixamos la iosnucclou
BTl~S PlJERTOA,l, ~""f""l,'Utlt>,id hit 1 dd
1\Jlftli de l:i in1.1cruo1.·ci6n
pucno .4.. se encuentra en 1 y se saha la siguie1ue CQ1U:Hio~ tlt; pn.:igr;u:na-=- aquí
jn.<;rn1cci6n si la rcspuescaGS afum3riv:1. l )e :i\·11(1"· f>t:o:.pu(-,; 11\· r... insm1cci6n
do al estado de dicho bit, ,.Jrnnm; ETIQUE1AJ S-i el bit () o1.lcl rt'ij'-stro r~..,is=- l
6 :1 IITIQUETA2 donde se activa o ri®.«ÍVa el C.ont:tdordc p«>grn!n:¡¡ .. ~"U\lad
LEl), de acuerdo :i la lccct1ta delju1nptr. 1-:n d di:tgr.l'- Si i;I !tit O dt:l J't'gi!>'tro regis = O
O)<l de ilujo este procedimiento lo podemos apre- ('.ont:)llo1 1lc pu~.1m«-=- biso
ci;i;d«ckcl bloque 6 bascad bloque R, donde po·
cknw.s ver cada uno de los pasos scgu1dos. tns1ruc<:l-On BTFSC
'iin1:•''': n·1r:sc f.b
En d hloq11r, F, numeral ~' se encuentra la Pru<:bael 6i;"h,. del r~Í$11(1"(""y salta un:1; tínca si
.:SI :t en (ll;:flJ,
subrutina de interrupción, ( 'nandc el 1lUCl'iJ(._'QJ1·
rrolador detecta <:I Ü<tUOO correspondiente por el
,.,,,.,tpl•·· 2,1uí 1i·ri-<sc.:
filio GOTO
P•O IN'l: se dirige hasm este bloque del progrJ:~ VCftiltll. ••• _
ma, En este punto el microcmrrolador simple·
mene activa $U .~lid~ por el pin 3 del puerto A. .~tesde b in$1111(;(.:i.6u
~ñ.al coa la t¡uc- nos damos por encerados que se C..onudor de progr.irn:,i, - aquí
ha entrado a la ruriaa de: imersupción. Después de l:i i1muucción
Si el hü U d1~l 1egi~11V ~s =O
Copie C'Sl( progneua c:n un editor de; rcxro, Conudor de P!'.O?P1ll2 - v1,,T(,lad
<ruambldo 2 rrnv6' del P'"S"'"'ª MPASM'\XllN Si cl bi: O <11.:I r~i;i.$trv regís = 1
•dispon iblc c.n.nav.u1,111icrochip.cnn;) y prográmc- Contadorde progr.ima = f~kt·
Ejercicio No. 4.
Generación de señales digitales a
través del TMRO
En <'.SlC ejercicio vamos a urtii?.<'lf l·a·~ propieda-
des del temporizador Interno de- los PI(: dono-
minado '1'/v1J{O p:lrn generar uua cuda cuadra-
da que se- cmrega por un pin del micrccouuo-
lador r se :lplioi sobre UÚ diodo L!:.t), figura
6.26. Com« fuente de scñ:ll para el tCUlJX>ri:.:a·
dor $C nrilir.:in los ciclos Je reloj internos del
microcontrolador, sometidos a UJJ pro<.·cso de
división con cl médule prescelador con un fac- Suor..ilirsa ce
tor Je 256. Es decir, vamos a dividir la fiecneo-
cbl in<..:-roa ¡.>0r 25() y con e.c:a Frec.ucn<.~Ía rcsul-
'"""'
eanee vamos :i ini;ccnlCUlar secucncialmenrc el
registro Je} 'J 'M 1{0.

En l:i figuri 6.27 podernos apreciar el


Jí~grat11a Je Aujo del eicrcicio, iuicialmeure se:
configura el Iuncicnamienro del 1·t\4RO por
Figura8.ZT~de~ 11&'1.Wrncd!a11t8el TW?n
medie del ret,~~ro {)P(_:roN~ ~ configura c:J
puerco A <:01110 salida y luc:go se ci\tta a tui et- sut1cutina<)e
1etudo
cloque h:i.<;a ~~' lunciouauiiemc en el resultado
del TMll(}. En primera imtaru.:ia se activa el
IJ•:O de salida permaneciendo en ese estado
durante un ricmpo dcrcrruiuado, luc:J~<l se: des-
~(.tiv~ el LE[> permaneciendo ap:l.g<\do durante
el mismo periodo de ti~Ul.J>O que estuvo cnccn- St
diJo; e~.te ciclo se repite de manera Indefinida.

La JY.lrfC: más incC1'C$.Wtedel pro1;rnn1n es 1:1


,.,
subrutina <le retardo desarrollada alrededor del
·riVI RO, la cual vemos eu la figun 6.2g.

~ 6.28 StdKuf:in¡¡ IÍ'J ,'YJWda


( :'ld:l~ qui.' se U1V<K.:1. J:r suhrurina RETI\R~
"l DO, la primera l'l<ción qoc se: ejec:uca es uo borrado
""I .

del rcgiruu TMllO. k• <¡ne h:1<.c: que el tcrupcrizador
empicrr.51.1 i oocm e·l no <le-de cero. ( :u:inM d TMRO
u':.iliaja en modo !:';nlpori?adt)t; 4UÍ~R' decir qn<: se
inc:n:menti aatom..iti<.::unt"n«: con los pulsos lltt~r-
aes <ld rdoj di"idido.s por t:lfi(c.1.o: ~ccicfoc;nn el
prcscalador, En esta snhmrina se hace en chequeo
,. , consranrc del b:'t 6 Jd registro ~l";\:1RO, que se nwt--

Oifj,IC IT.:. Cano 1Kktico"""' M-·~


nc1:"' ha._~q;:.- .i.Jm ou ~ pong.t en uno; ¡:J tiempo
rr.mstum:1111 p.u.; que el hi1 6 se ponga eo uoo o- (:1
que- '>'llíuuv :i uullzar p.1.l~generar el r.::f:ln.kt.

Par.. c:1irul::u-d retardo pl()(<.'<lc:nl0$c.kb ~iguit'1t-

l~-
re fuml.<t si uri1irawtll'i 11n L'fi'iral<k.1 Mh7. l.afu:oK"Jl Registro
61. Ultt.'m;\ <S de: 1 Mle, )';I que se divide p<ir cuatro OPCION
(dc:h.i1.io :i los ciclos <k búsqueda >' ~jea 1ci.ón que• esto-
·0Mlirpor256
dsceos cu h sen:ión <le rroftt, b.rioo.e.: sobrcla (~J•l J).
t-~..r~1 f~1cncia inre1T1a~clc:h.:- dividir por 256 queeo; flrtsr..:il;i.;!or af 1 '-IFIO
el vJl0<<..unhglU~<> c;oo el l'~>r lo que 00$ da
No us'1io "' este <ien:ICIO
11n periodo de 256 us, }::..;<'\~; mulriplic:.xio por()).
FTgura 6.29 a\lrf.$1!/fSdOO del ff:(J[sl!u Oft;J()I/
t¡UC('S(._~ •'akw·hasw (.~ rualu)C';llmd'f 'l\lfROf);U':l lkg_u-

al.b1í(., 11os cl111n periodo fin.:iJde 16.64 rus.



EJEH<.J(TO Ot T(f«l'Ol\!ZA(lON (ON tl TMR0
í:.o fa pclctic.:a, d LEl) Jl<'l(('<:e estar encendi SE (HtQUEA tl RIT 6 Oí-1 TMK0 ftESUI TA.~ 6.5
; IN(KLMíNTOS
do tudo <"1 tiempo debido. a c¡uc: 16.()4 ms ex 11n ; AETASU!Q - 16.64 Nlll~íGUNucn,.
tiempo muy cerro para ser detectado por cl ojt> : CRlSflil 4 MHZ
humano. la verdadera formo de C'if:.l·ouch pue-
--
l tST P-t'f.F84
--
de aprcci;lf~ en uu <.mcilo.sc.vpio. RADIX Hl.X

•'
;-
CQO o
fri fa Új,'Uf:\ 6.29 podcrucs :ipo.Uar ci \~Or q1.1~ .
T>R0
[QU

rqu
l

se dd>e ;i.~ignar al r~uo ( )PCION par4.c:unlp.llr les 01


!t'<JltO'io1ienn)$ del cj<:r(.tcio;.9 ric-1K ~guna duda so.
hl'l:d s!gi~ de cada unode N((\S bia,coreulrc 1~
PORta í<:(J
PORTU ~··c¡u
((WlA íQU
.,."'
00
-
sn:-r.ióilefe recría donde se hace una cb-upcióncom-
pkm del 1~\TI'(I OP< :l()N. 1;:¡nal1lli:nrc ro b. tlgi.11~
tNl{l()
O>G •
6.30 ¡xxfmJ.os apn'X.tu·d cM'sv lÍ.Jm!(' <ld c:j('rc.i<..i<t íl~OI :CONnGUl~AR OPC!Uti
1-0VLW 8'J1010lll' :AStc;N~ PRESCALAIX)1l
Ejercicio No. 5. ~110. ;tN 7.56. t ThCReotHrO fllJ<
Contando eventos externos MOYLW ~xoo
:R.tLOJ lltTíRHO

En el -aruerior !'Jt:rc.i<.io udlsamos d 'f'MRO en c:: l TRIS PORTA ;Vl!lRTO A (Old) SAJ iO/iS
(t~ PORTA :SOIU<O EL PUERTO
modo Je ~o..1pori?;l.<.io.r.
C\1'() ~71ifl(a yuc se iucre-
los ciclos uucmcsdc n:l<>j. Í'Jl L'ltc <"jc-r
Ulalt:\l>a(.'C>n B5F PURT!i.0 : tNtlfUOO fl tEO
f'All IUJt.ROO ; Rt íAROO POR S.USKUTIHA
c:icio vamos a t.mhaf.tru>n la &..'b'llndaopciónp..v.1.el G(f PORTB.0 ;APAGO. El Lí-0
manejo del TM!lO Jn cual corresponde ~ modo <le (All RrTAAOO :~tíAROO POR
couC!dnr. Ahor:i, d ~?.~ del ·1 ·i\1R<)se hscemeo- (.iOTO OOOA
:SUBRUTINA
¡;¡r.'Í sólo con Ia ~ri(.iót1<le CVCUUlSCX{('J°UOs. por WJ
asignado paracsralabor (p.i.u · ¡ ( )(.:. •ETAROO
pL1 ~"t~t!mcnt(' tLR:F l.m0 :1N1f'TO lA
: Ultra. ce;u:- (F.l'(l
KI, RA4 en <'1161;84). f1 <fi~r.una ~utm:iri<o <lel
cinniro lv rod<'o·M ::ipr('('.iar en I~ (4,w.1 G.31. f·1 ob Rt.Piru líITSS ,.,,¡1.(i ;¿S.ll 6 llL Thf» tli IJ.0?
jero en esrc ejercicio es sirn plcuenro leer Ja mr1~ de
c;oro RLPTTO : M.) > BOORO (lt; NUE\10
F:FTLl.f\N : SJ > :-OAI GO CIL 1 A
vul<os atemos, ú:1crcn~uuar-d TMf{O &: acuedo a ~ SIJRRUTmA
los pul~ que .'fe ÍlM leido y \•i'iu:t.li:7ai·d valor ~IÍlnacr,- CNO
nade <..'Uc:I t('Jl~t'ori1~1dorpor nx..Wo de echo diodos
LEl) c:on1.x.tk~C."I d pu('rtv B.
Fig.ur36.30COOigqpam .(1!Ji.•1>erari&tlde.~ .d>'g.'t.~

Cws•fK.>elico,__._,,,,,,. <fl6Ítclr.;. ~
Registro
OPCION
e5e3l:J.Oor
:No Ulli!ZOOúJ
al
Pte!1!A'lfador .:i:oigna-00

--
watchdo~~nu uJiUnido>
1.ia11r.1ent•)P'Jf n~a:i oe
~-•baj~d.:t de fos pulsoi;

Rgrxs 6.33 C<mffGL'111Ci{in <1CI 1cgis1ro OPCl(JN f)ara·ca.m.-


Figura 6.31 ~arna f!SqlJ~ dr:/ C¡et'C((:l'q fM1d~ e.dtml(l$

En b figur¿ 6.32 podemos •p=ior el dia¡;r.1- (JERCICIO PARA C<»ITAR t.Vl:.ffTOS EXTE..RNOS
rna de Ilujo del prcsemeejercicio, en la ligur;¡ 6.33 ;----
b configuración del rcgi.ruo <.")J'(:f()N para esre
caso y en la flg1i.ra 6.34 d código {Umtc. 1 ~ princi- lI~'T P=.16FM
pal difci-c1lcia con respecto ;il ejercicio anterior; es RADIX HtX
lat.'01di.gurnci6a establecidaen d rq;isrro OPQON)
b a.ial brinda la djrcar:iz- sohrc cual C"S la fucnccJt·
señal quev.\a urilir~'lrel TMRO;en esrccasoson los
pulsos externos y sobreellos no tjet.ut:.l ~1 eccién C'J
p~r <ld:>ido a que eS1: mMulo se Ju evitado
al aggn:irlo al temporizador 1w1ehdog.

THICIO
Ml)Vl'lf 0x..-1 COllFIGURAR PUERTÓ /1
Tf<l~ POR.TA. ; (<Kl FNTRAOJ.\S
1-0VLW e:xoo ; COMFIGURAR POERTO s
Til.iS PORTB : coo SALIDAS
<;.lRf POKrn. ; tN<lAR u, PU¬ R. TO 8
(tRr ThfR0 : lNnAR El MG
Clf(NOT ; DE.SACl'J:VAR WAT(f(X)G.
f«"JVLW R'0110llll'; CONFIGUICAR FI
OPTICW .: RtGTSlR.O l)(i{G
Ctar TMR0 : IHTCIAR OESot URO OE NUt.VO

CICLO
MOVt- lw.G,f.' ; LEER (l THRO
MOVWF PORle ; VTSUl\LI2A1t RtSULTAOO tN CI
; Pllt:RTO ll
(.OTO crCLO

,. .
ENO
'--
Figwa ILS2 ~:J<J conw-~e:xwt'IO$
CtNsoprktico-·-- ..
PMI

~1r.:.
• ' 1 •

ClRWDT ,,
Rnrr:t la cuc;ul1' 111:.I t(,'lllJIOrii'.<tJur UNUcht/qg. Ct"CI
Sin1.;oii>, (:LRWOT 'oo
l:jctJ•¡\lo: <~l.R\'<'lr.1·
1 ose VF.i íll
Anrcs de J3 Ulsuuccsón ;¡;
Ccnradcr WU.f - ?
~l '~I -
:ls
Después de I;,) ins1 n1l·.cü1n
Contador WDT = 00 - ~ "'
RElURN
Recomo desde subrurin:l
S111a..1:ir.i.'"~ lU::.:rU!{N
Fjet:op1o~ Rf.11.JRN
1 k~1l1<.~ Je b.rultn.1tis...., routador de progr.una e pila

Eíercicio No. 6
Generación de señales mediante el
TMRO e interrupciones
l':n esecejerciciovamosa csmdiar orra {é(;11la1. para
gc11c1-ar señales digitales; al el ejercicio No. 4 ob-
servemos qoc cada vez que el í<""JsttoT.MRO lle-
gaha hasta cierto valor se generaba cada uno de
los riempos, E1l esta (K.a.-.i611 vamos a •:arg:.i.r un
\'lllor inicial en el ·rMRO a partir delcual se inccc
menta el registro mediante los ciclos de reloj in-
ternos y al desbordarse, genera una imcrrupcién.

El diagrama t:'.s4ueu1áti(:o Je este ejercicio l<t


podemos apreciar en la fi~u~ G.35 y su moniajc
práctico sobre un circuito impreso universal en COrf'9!lrnt pua,<JA
cornos;;l(l;¡
i• figura 6.36.

Esrando dcnuo dcl servicie de iucerrupcién. Confl~rar ~i:.1rJ


se chequea el estado del pio de salida. Sl esca en. de 1lllEftll~"1
escadc l<)gic.:o alto, sc: pone en bajo )' viceversa.

El cuerpo principal de este- programa In


podemos apreciar cu el diagrama <le Ilujc Je
fa fi¡,,'U.fa 6.37. Jnicialmenrc se hacen las con-
figurac.ioüts bdsicas para e] maneje que se va C3'9!f el Tl/100
a hacer sobre J.,~ interrupciones y el modo de
trcal>ajo del TMI\O; se carga un valor c:spcdfi-
co en c:I registro TMRO y se corra CJl un cicle Cit!3
de e:s-pcr:.i. p·:tf".t el momento en que 5C pre.<>en-
se l:i intc1rupciÓJ). Ngur. &:n O>agr.vn; dq flujo del e¡sre;ciD

Cum>,,,;.,;cosobrolflie<_..,.. ~IT.:.~
765()210 g<'1tt.'raci6t'l Je 1<1 mrcrrupcmn y
Registro 1 ~1· . ... -o.:;-
---¡,, ya solo basta esperar c.:J momenro
1 •

INTCON -"--· -~--


en que ella ocurra para ejecutar
l Tntt!rrupclOo
Bardera 'IL'fl se ttee\"J r.i;;,n@ .oo nrl!P'la una
lff!l)r(lo '.:1 ti!storoo dllf Tri1Ho la subrutina dt'nomíoa<la servicio
de inrcrrupcién.
L---Uab!!ita001 di! ba iOifnur.<;ICOC:i por ThraG
l .c;i c..:onfigur-:ic:ión Je! 'íMJ{O
se hace mediante, 1.·I registro ()p_
ero», en ~I
-:.e establece que se
va a trabajar c:<:111 los ciclos inrcr.
~----Rt:m:~encllb>D'fll J)JJN up
dl:f Jll lffil'I dosh;.'lb! ~ .. nos de reloj y el valor qu(· se V:\ a tomar p-ar:i el
prcscalaelor, llh'lln'I.6.39.
1m.irrunaoo o.C!!rna ~ bun
.----~ !Su tm;oo.i (~o utirfzáru ~1
tst;~ f!.iE'cielu} A p:1rtir <le ese uiomcmu el ('l(oi;c:in1a f,:spc-
~--fvt.'fllecle m11 · re.t; ii•mo ra que se presente el desborde del ·rMRO ypor
Registro lo tanto la inrcrrup\.ión. Cuando ella Uega se
OPCION ejecuta 1:1 csrrucmra urosrrada en f~ figura 6.40.

l!
cu donde se pr<'g\l.nf:l por el estado actual de I~
Prca:uh•b-Dlvl(tlf por 1 :)3
li'nca de: salida i' se origina una saJida que in-
vierte dicha Icrture. f.:Jcódigo ruc.:nr<"-d~ <:SfC: cjcr-
Pt~f3'1LV ffl¡l'lrodtJ.nl TMHO
ciclo es el que se muestra en 1:1 figura 6.11.
increntcmneri i'larr.n de !l.lt..r.ln
too UbTU>Ó()j
Flgt)TJ 6.39 ~1~-:íMdsl f'tf9J$VO CIPCN'J.V SCllViciode
IM~rrupcil'111
Es de suponer que dependiendo del valor
Sorr;;i1 t;ar.d:ra ce
cargado en et regisrro T1\.IRO. varta la fr<:cu~u- 1n!errupc!érr de!
cia Je salida rft Ja señal digital. 11.P.O

( 'orno hemos visto, l.:i. con1ir~1tmcióu de las


in.(crrupcionc~ se hace por medio d~I registro
1 NTCON (lN"forrupt CON trol), G¡,""'' 6..38;
el prirucr paso c.s borrar 1~ bandera TOJl: (hiJ
2), la cual se acriva c."Jd!l ''t':t que se prcsenm
una imerrupcién originarla por un desbcnle
del registro ·rf\.iRO.

l·:Sra precaucién también se debe tener en Pr.rtA. 0-1


ene.uta clcnuo de: f.a rutina de ínre-.rl'\1p;:ión; míen-
l
.,.
tras esca bandera pcrmaut".1..c::>a<'Ü\';'J no se podrán
atender nuevas interrupciones ,dcl TM RO.

1:¡ nahnenrc se- dcfxu acri\'ar el (>1'J h:ihtli


rador J~fobal de incerrupcjonc:.~ (c;JJ:) y el bit
habili<<td<>r de la inrcrrupcién po( desborde
del TM R.O. (Aln el cumplirnicruo <le estas dos
condiciones, se ncriva en forma definiriva JJ
A ,,,,,
~ C«_Klr..: Cur$(¡,,,actJca-...,_,,.,_r1orn
~-~~~=---------------111!!!!!•11!!!!!!!!111
;- . . :::..~::=::....::
-~J:::1tacrn &•
Por la. línc.t <le: salida, pin f del pucno H.
1 ;~1RA1 '°" en, ~n n-.-,-,.,--·---- podernos ccnecrae un diodo 1.J->I) o aún ruc
jor~ visualizar el resultado por medio de un
Lf.'\r 1'-!('i(.84
11.\ilIX Hl:X osciloscopio, Este t'jcrci('io se vuelve Inrcre-
.•.--
1
,, ti.ti!
--
-:.
sante cuando jugarnos con los p:tr3mC'Lros del
sistema par:1 variar 1:1 fte<:ucnci.a Je: ~;ilida )'
1- (QO l
llegar :.i uu valor deseado.
; M.\PA.
000
°'
tW
t+M'All\
01 l -05 par.ímC'ffl>Scon los que podemos iug:.tr
. l'f'RTtl. CQU % son: el valor del cristal externo, el valor asignado
IWl'Ct:tl l:QU 011
:11 prcscalador y el valor cargado inickdrncnre en
;--
OllG
OOTO

ltaCIO
<.~ rc:y,i!;rro TM R.O.

"'" •">ER INT En las figuras 6.42, 6.13, <>.41y6.45 pv-


'°'º demos apreciar divvrsas frecuencias generadas
IIOtlO >f.Wt.W tc·~· ; C-01.:FIWIV.R Plt~¡.~ D(t con distinros pardrncrros, recordemos que p.:tra
tR!S
'"'"' ; l'tJERTO 11 (00 SAUfl.1.') conocer el morncneo en que: se: genera l:i inre-
"''
"' """'' INT(.<IN,'! ; lltAA.\11 8J.N'lf.lV! Ot lll'f.
rrupción, debernos dividir ht Írc:cuc.n<.·ia del
crlsral externo pot cuatro pa~ saber la frccuc:n-
: O[l !~O
cia interna del n1i<.·ro<.-oncs:0Ja<l<)r; de esta ma-
"" IWT(~,-7 ; W.SlLITAOOM <iLOB'.t.l
: nmr.:.tlP'Cl~'\
W.
ncra• sabernos ._·.acl:l cuaurc ricmpo se inc.reusen-

,,"'_
INT<O..,S ;. h'.\.~ILIT.IJtl.!n'fAAtlP· t:t el registro ·rtvL'lO.
: (Iet.1-' DEL ~

,\CM.Vi' lt'Ol0l01l~' : CO!l'F1r.uu.R TI4f!I) la velocidad con que se aumenta este t~gis-
-OPl((W
rro se ve alterada !JOr ln división que origina el
lrtO\'L# »XOO
M()',._f ~~ prcscalador y esca nueva frc:o.1l'U<.Ía incrcmenra
OCU) COTO i l(LO al l'r-..fRt> desde e) valor cu que fu.e ._·arr,:icfo Iui-
cialmenrc. Cuando llega :l _¡:F y p:t..<;:1 a 00 se ori
; --
1 )tJt I*T
.Sl:RYlCIO OC IHIUIW?CIOO-- gina una condicién de ..b'hordt se genera lnr
&er IN'T(tll,Z
iutcrrupcit)n donde se modifice l;'l ~t.b~
;~ v~wm oc )l'lr. t<L
; !~, E5TO l'fV.MITt Ll~~
; FVTIIRA'\ INT(~. (.:011c.\T.Cejercicio culminamos esta serie <le
idTF'\' PO~TB.1 : ¿FIU~ 1 ((l P!n'IQ Di a: uo~ ~jctr<.icin,\" b<é.-iutt en uticroc.outrol::>cior(':. 1•1( :, ~J
VJTO A( 1 l'l_llIT ; ">I !Sf,t, 1-111 C[RO 5l llte.t
: Al1tV1'R
igual que c:I aprendizaje sobre el nlóduln tempo-
rl1.:1dor TMJ{O, que es une Je les n1ás importan.
; .PCfU·~ EN l)A)() 1-( en l tes denrm de les m.lcroc<)nrr<i.laJorec;.
; O~l FUEIU(} 8
WTO ('(JlfIG_UOOt
J.CTIV_QO Hesra ahora hemos visto cerno utilizar uu
SSf l(!lli'S,1 • ?OO[ft 1-H A.l TO ft ICfT l microcouerolndor PIC cerne coruador y cerno
: -ill-t l'UCRTO s. te1npnri-tador, :11 i.gual c111c se ha moslJ-;;«.Ju como
: (AK(l,R, CSJE VALOR. PJ\Rt.
modiílcar redes les parámetros de su ñ1J:tl'.K>na-
; Il~IIDR n~soe: All l miento. Ya c..'St:\Olos lisrospara abordar unn nueva
: lN)llAR !L ~ lección de ejercicios de un nivel un poco rHás el~·
\'3cio, donde: <icsarroll:ircc1los ~jcrcicios de (.('.1Jl1u-
u.l<.-ac:ion(".$~ri:ilc:s, tnanejo de 10c')d11los 1(-~I }, oo
ncxión <le ·nlCJlluria~ sctialc:.-.. t:f(~
fn.'CUC!flCia-a 1,6 KHl
tada vez que el TMRO se desborda se gtoora
ona infem41ci6nen la cual se camf)ia cl estado
dt la seti3f de salida.El l~Rk en que ocurre
un e3mbio de nivel es e-1 momentoex.ecro en
que la int8mJpcl6n et 0>tcnclid.a.

Ffspn 6.42 En l!Slt e.no s1: ha cargNlf1 d TMRO cun el wwr


l1t.•xi1119Cim.11 f r y se IJ<J asiy.:tdo t.111 fat.((I( de misiiJn de 1zs

Podemos notar aue -0rrt:re mayor Se3 et lactor


de dlV'l$Són del TMRO, se necesitara un tiempo
«nayOr p~ 11&9ar al ctesbOrdc-,por lo tantc> "n
periodo mayat.
Rgura6.43AIM ~ha ímr:~.11M® ,., TMiWr.n no y se llitbccho
lm• un bypsss del ()fc.st;;Jlarior asfg.:Ji(l(fQkJ-;d w~

FTgut~ 6.44Ert1!1.feCJ$() tarrdJiM si b.'l}()(ri1do8! 1MflOpeto&:


ha hcdto tm,; tlM$i6t1 J}(Jf 2, CtV(}Ml(!;J¡;/J.WSClt.~lffer (;(J(I OOfJ en
/ns ll'i".$fJ(imeros ~ dtf (*1Ju OPCK»I

Figf.lra 6.45Aqufse h:Jjnjcj;J/j;;J..10eJ TJIRQ,qn(J(Jy la rt~


di: entra!!.? se ~ divjdjdo(J(I( .')?.
EJERCICIOSAVANZADOS DE
PROGRAMACIÓN CON
MICROCONTROLADORES PIC
Y,1 hemos conocido las principales berra-
mientas para el desarrollo de proyectos con
los ruicroconrroladores PI C. También hemos
estudiado algunos ejemplos que ilustran con-
ceptos fundamentales parad manejo de es-
tos dispositivos. Ahora estamoslisms p;1n1 en-
trar a analizar procesos más elaborados de
programación como refuerzo a los concep-
ros expue.•ro.• en la sección de teoría.

evrs., ,.- ,..,..Mi<rocDn....,••<es 4_Íc1r.: ~


Ejercicio No. 7 algunas dv las nuís conocidas son 24LCO l /02/
Conexión de memorias seriales al PJC 04/ 16. L~ velocidad de transferencia de informa­
Las récn icas para al 111:1cc11ar in forrmcicn en me­ c:icin para esros dispositivos es <k 100 ó 400 IJ lz
dios electrónicos se perfeccionan más cadadía. A (aunque el límirc lo imponed protocolo l"C. mas
diario vernos ejemplos de su utilización en nues­ no la tccnologia del disposirivo). Como caractc­
rros hogares y oficinas. por ejemplo, en receptores rfsrica importanre de: i.:st<.' elemento se 1-ic.11<· la in­
de relevisión, reproductores de discos compactos, munidad al ruido, dado gue estos circuitos intc­
sistemas de control remoto, impresoras. fotoco­ grados ricncn filtros en los pines de comunicación.
piadoras, 1cléfimos celulares, etc, Una de <~las tec­
nologías corresponde a las llnmadas memorias Estas memorias urilizan el bus de 2 hilos para
EEPROM seriales, las cuak;. tienen grandes ven­ comuuicarse con otros dispositivos. Dado que
cajas si se comparan con otras posibilidades. Entre cumplen con el protocolo J"C. tienen un pin lla­
sus principales características se cuentan: mado SCL que recilx­ los pulsos generados por
el dispositivo maestro fo sea el rnicrocoruroln­
• Se pueden conectar fücilmcncc con micro­ dor) y otro llamado SDA que maneja el flujo de
procesadores o microcontroladores: inclu­ daros en forma bidireccional (entrada/salida). En
sive alr:unos de ellos tienen pines dedica­ la figura 7.1 se muestra el d iagrama de pines co­
" esca labor,
dos para rrcspondicnre :l estas memorias.
• Transferencia de daros de manera serial, lo que
penni«­ ahorrar pines del microcontrolador Esre disposii ivo no requiere de un pin hahi­
para dedicarlos • otras funciones. lirador o chip selcct, y;1 q uc en csrc esquema la
• Ocupan la décima pan e <.Id espacio de: las me­ crnn.dcrcncia de información sólo se puede ini­
morias que trabajan en paralelo. l~ro permi­ ciar cuando el bus esré libre. En esre caso, corno
ce ahorrar dinero debido al menor tamaño del cada dispositivo tiene su dirección dcrcrminada
circuito impreso. mediante los pines AO, A 1 y A2, solamente res­
• El consumo de corriemc e>; mucho menor que ponden( la memoria cuya di rección coi ncida con
en l:is memorias q11c trabajan en paralelo, Esro la dirección que va encabezando la trama <k· in­
las hace ideales para sistemas porní1 ilcs (jllC [ormación. En la figura. 7.2 se muestra la capaci­
funcionan con barcrías. dad de almacenamiento dt· csros dispositivos y
las posibilidades de dircccionamienro que tienen.
El objeto de esre ejercicio es mostrar los as­
p<.:ccos más iniporranrcs de su c<.:cnología y cnsc­ 1 r:imÍ<:rrnóa de la i 11 Iormacion. Cuando el mi­
fiar conceptos básicos para su utilización en cir­ croconrrolador desea enrabiar comunicación con
cuiros reales. Se basa en las memorias que tienen la memoria, debe enviarle una serie de /,its que
comunicación a 2 hilos empleando la interfaz I'C, llevan la siguiente.: información:

6
1,7.3 AO, A1,A2 011ecc111f1 ctul tf1:;posttivo en el h11s·
4 Vss Trwr:i
7 5 SOA Datos y dirt>i;ciones seriales ~O
6 SCL llt'1oj
7 WP• Plo1ec1:i(10 ne •cstritllm St "si.i en O hab1hla
l:i cscótura, e11 1 la desh~bihla
G Vct 15V

(En la 7'1LC01, ci µul \'IP oo llene 111~1111.1 lunclón

Figura 7.1 Diagtama tic pines de las m<;morias 24XX


,
C.~ IT,;. Curso práctjca sobre Microcoutrotadores
l. El bit de arranque o start M1 Después de esio, b memoria dctx­ enviar
' El código JO IO (propio de estas memorias) un reconocimienro para informarle al micro­
3. La dirección del dispositivo (A2, A 1, AO) controlador que recibió la inJ;.>rmación. Dicho
­!. Un bi1 "ü" el cual indica <¡11c se desea. escribir ascruimicnro, Il.rrnado ACJ(, conxisrc en poner
en la memoria el bus en un nivel bajo {lo hace la memoria).

R&ferencta Calk!cillad Bloques ÜISl)QSitiVOS Luego. el m icrocon r rolador


i.1 Kbils miernos Ali Al A2
en 1~ ~us
debe enviar los bi1:1 que corres­
24LC-OIB, 24C01 1 1 ióO 160 lóO 8 ponden :i la posición de memoria
24LC02B, 24C02 2 1 lóO 1ó0 160 8 que se quiere leer o escribir; rruc-
24LC04B.24C04 4 2 X IÓO lóO 4 vamcnre la memoria cnvfa un re­
2~LC086 8 4 X X 1ó0 2
24LC!61l conocimicnro. El paSfl siguiente
16 8 X X X 1
depende de la operación que se
Figura 7.2 Capaci<IM de memori.?y direccionamiento de lilSrncmMa.~ 24iCXX vaya a ejecu l" r.

t Slart bit 5 Recui1oci1nic1110 env1arto por t.1 nu.>nl0f1a


7 Codtno t 01 o ¡pmpm de tas 24XX) ñ. nirección<ft1 rnc1noriJ q11f? se V'J a trab~1{tlr
:;. 011ccc:ion del d1~posibvu en 1!l ous 7 Rec-0n0i'imientu l!l1viado por In rnr,moria
4 ~f - 1) lh.lr\l CSCfil>tr

SCL

JI 117
SOA...j.11.:.:..JJL.::.J1L:;;:.U..::.:.n.:::::JL:~::..:..J1.::!.:(l{):JJ¡1¡:' lf d6 11 U!> lf d4 11 d3 ll <1? JI dl 11 <JO flAo:t.1@7]1 ,. f

Pnrnar hyti• do d3IOG


* Seym•lr¡by/edr•tla1Ds /
lerr.<Jr /Jyte, etc _/ /
S/Qpbit
B. Esc.11t11rn del /Jyre

1, St:ulbr/ s. Boconot11ni,!ntoPnvi:tdopoc ~1 n1e1rmna


i. C<nJ1go 1 DIU (i>roplo do t.i:; 24XX) 6. l'f11n.r byte leido.
3 Oirocc11'1n del disJ)()O>i\1vo en el bu> r Scqttndo /J¡1" de dates
4 ll 1 paia le¡,r 8. S,'Op!nt

Figura 7.3 Diagramas de ücmpos Mm Ja tecus« y la esaius» en una memoria 24LCXX


,,
Curso práctico sobre Microcorrtroladores e~ IT..:
't:i.l'l~@ii]&btii·!.}flj·li.!·füliiij@.!i'1·1,!u@i·M·l,!@@[,j'fjij[!t
Si se trata de un proceso de escritura. cl micro­ En la 11gura 7.4 se muestra el diagrama es·
controlador sólo debe enviar el dato que va a ser quernático del circuito. En este caso los pines de
almacenado y esperar el asentimiento por parte de dirección de l.1 memoria se conectaron a tierra,
la memoria pasa confirmar que llegó correcramen­ al igual que el pin WP. La resistencia ele 1,7 kQ
re. Si se erarade una lectura, nuevarnenre se deben conectada al pin SDA es necesaria dado que di­
repetir los primeros cuatro pasos, solo que en lugar cho pin tiene salida <le colector abierto (open co­
de un "U", que indica escritura, se debe enviar un Ll.ector). El disphzyse conecta al puerco A y el pul­
"1 ",que indica lectura, Después se espera el asenri­ sador al pin RBO.
mieoro y, acto seguido, se puede leer el byre con el
dato que estaba en la posición de memoria que S<: El progra1na que se: escribe en el microcon­
indicó anreriorrnenre. Cuando se termina la ope.m­ rrolador se muestra en la figura 7.5, su función
ción, el microcontrolador debe enviar una señal de principal es llevar el control de la cuenca decimal
patada (si.op bit). En la figura 7.3 se muestran los y almacenar en la memoria el mismo dato que se
diagrama~ de tiempos corrcspondicmc a todo el pro­ envía al dispÚ')'.
ceso descriro anteriormente.
En d programa, la subrutina WAJT pro­
Desarrollo del ejercicio duce un retardo en milisegundos. I.a carui­
El. ejercicio propuesto consiste en hacer un conta­ dad de milisegundos deseada debe escribirse
dor de O a 9 con un interruptor pulsador y 1111 en el registro loops antes de hacer el llamado
dispkty de siete segmentos, donde el número que correspondiente. Se uriliza principalmcnre
se muestra en el display S<: va a almacenar simulrá­ p:.ra hacer un rerardo de 1 O milisegundos lue­
neamenre en una memoria 24LCOJ (LC quiere go de escribir un dato en la memoria. Se debe
decir que puede trabajar desde 2 voltios). Se va a tener en cuenta que los retardos están calcu­
utilizar un microcontrolador P!Cl 6F84 (aunque lados para un oscilador de 4 Ml­lz en el mi­
se puede utilizar un 16C6J o un 16C71). crocontrolador.

+5V
¡~V
.sv ­5V

4.7K

1SV
P11tsos1le
entrada
REAO/WRlTE _L
__e-<> o---4------"

2.7K
lOK
1 OO!l
L..A/\A--6---<o "L
_L. arsrr

Rgura 7.4 Diagrama esquemático del comsa« con PICy memoria 24LC01
.,
CEKIT..: Cursapráctico sabre Microcontroladores
;ESTE PROGRAMA ELABORA UN COl>ITAOOR OECIJ.~\L CON \ltl NOP
:i'IJLSllOOR y VN DISPLAY OE 7 SECMfNTOS, EL VALOR or BC~ PTOB,SCtK ;SC BA.lA LA LiNFA DE RELOJ 1
;LA CUENTA SE GUARDA EN LA MEr.«JRIA S(RlAL 24Lí01 NOP ;PARA TERMfHAR EL PULSO
STATiJS EQU 3H ;REGISTRO DE ESTADOS NOP
PTOA EQU SH RETLW 0
1PTOB
11\DOR
EQU 6H BSIOf' ;ESTA llllllli\ (<NOlA El STOP arr
EQU 0DH ; POSICTÓN DE 14'~LA ()()< SE ; PN>A LA CO.\.NJ:(,'>Cll}j SOOAL
; LEE O J:SCRIBE MOVl.11' 8 '00111111'
IOAT•\O E(i!I ~EH ;REGISTRO l'ARA E$(RT81R TRIS PTOB ;PR()(;RAAIA RELOJ Y DATOS
;DATOS EN LA MEMORIA :C(Ml SAi.IDAS
IS LAVE EQ\J 0FH :DIRECCIÓN DEL DISPOSmvo ser PTOB. SDATA;ASEQ.llA, l.Íl>EA lk ll\lC6 EN ll>\JO
; EN H SUS (2( (10i0XXX0) NOP
TXllUF EQ\J 10H ;8U>FER DE TRANSM{SJON NOP
(01,t<T EQU llH ;CONTADOR DE BITS tiOP
Hl'!lOM EQ\J 12H ;BUFFER DE SITS BSF PTOB,SCtK :lll<EA 0E RflW EN Nll'fL ALTil
RXBur EQU 13H :BUFFER OC RECEPCIÓH NOI'
1100!'$ EQU 15H ;SE UTJLIZAN EN RETARDOS N()¡)
LOOPS2 EQU L6H H()I>
¡D1 EQU 7 ; BIT DE Et>ITRADI DESDE Ef.PRCl.i BSF PTOR,SDATA;LA lÍffA CE 1)\1()5 !'ASO. A ALlO
¡DO EQU 6 ;RTT DE SALIDA PARA EEPRCJ.! NOP ;MIEMlWi EL RELOJ ESTÁ Al 1'0
ÍSDATA F.QU 6 ; LÍNEA DE OATllS SERIAL(S NOP
;(PIN R86) BCF PTOB,SCLK ;LA LÍNEA OE RELOJ BAJA
ISCLK EQU 7 ; RELOJ SER.T Al (PJN 1Ui7) 1.:>P ;NUEVAMEITT~
ICONTA EQU 17ll ;LLEVA LA OJl'ffA lk l'lJLVO(l'ES NOP ;PARA CCl>lPl.ETAR EL PULSO
(ONTAZ EQU 1811 NOP
TRISA EQU 8SH ; REGISTRO DE CONFIGURArt(J¡ RETLW 0
;DEL PUERTO A OITOUT ;ESTA RUTINA T~ El BIT QUE SE O~BE
jTRISB EQU StiH :REGISTRO DL COllFIGIJRA(J<)N ;TRANSl.UTLR Y LO SACA AL PUERTO
;DEL PUERTO B >!OVL\\' 8 '00111111' ;ADCMÁS GENERA El P1JLSO
'z EQIJ ilZH : 8'o'«AA 11' CERO DEL RF.G1:smo ;DE RflOJ
;DE ESTAODS TRIS PTOO : PROGIW•IA RELOJ Y D•TOS
11 EQU ~0H ;INDICA QUE Et RESULTAOQ ; COI«) SALIDAS
; SE GUARDA EN 11 BSF PTOO,SDATA;ASUME QUE EL BIT ES ALTO
·e EQU 00H ;BANDERA DE CARRY STFSS EEPRúM,DO ;PREGUITTA ESTADO DEL BrT
ORG 001i ;VECTOR OE RESET ;QUl S~ VA A TRANSM[TTR
cero

-
TNlCIO ser P'rOB,~DATA;S¡ El BIT ES BAJO PONE
()l(G 0311 ;LA SALCDA EN RAJO
llAH ;Sl!ru'!NI l'E liFJ)lITTl !* 14U.Sll;, CLKOUT NOP
fTOP2 l4'.JVLYi1 .110 :EL ~Ú­Ero IE ~~ LLE&.
t.o:)Vf/F lOOPS2 ;CARGAOO EN EL REGISTRO LOOPS BSF PTOB ,SClK ;SUBE Et NIVCL DE LA
NOP NOP ;LiNEA DE REIOJ
NOP NOP ;PARA FORMAR EL l'UL~O
NOP NOP
NOP NOP
NOP 8CF PTOB.SCLK ;TERMINA PIJLSO OE RELOJ
NOP RETLW 0
DECFSZ LOOPS~ ;PREGUNTA Sl l'~~UNO 1 MS BITTN ;FSTA RUTIW\ LEE LN an llE LA "90\TA Y LO rolC EN
GOTO TOP ;LN RE~m)
OECF~Z LOOPS BSF ECPRC.t,Dl ;ASUME Q(IE EL RIT ES DE
GOTO TOP2 ;NIVEL AlTO
REnri 0 l­0\llfl 8'6l.ll.ll.ll' ;PROGRAMA PIN DE D~TOS
'l!T.\RDO ~'JVLW , 100 ;RE IAROO DE 100 MILISEG~ ;COMO ENTRADA
MOVWF LOOP$ TRIS PTOB
{ALL "AlT BSF PTOR,S(lK ;SUBE LA LINEA DEL RELOJ
RETLW
3START ;F.STA ~
MOVLW
0
a
<Ii'GlA SIJ'Jlf srr ~ IA ©OOCIODN
B'001Ulll'
= llOP
NOP
llOP
TRIS PTOB ;PROGRAMAR DATOS Y RELOJ NOP
; COMO SALIDAS NOP ,
8CF PTOB,SCLK ;tÍl>EA DE RELOJ EN NJ.\IEl. BAJO BlFSS l'T08,SOATA ;¿ESTAllO DEL PIN DE DATOS?
BSF PlOB,~OATA;SI: AIBlRA l-*i\ !E IY\lll> EN N.lO BCF EEPRúM,OI ;SI E$ FAJO LO RN: EN &
NOP NMl. GCF PTOS, SClK : SI ES Al TO LO DEJA CO'tO
BSF PTOB,SCtK ;LÍNEA 0( RELOJ EN AlTO REll.W 0 ;SE ASUM!O AMTES
NOP TX ;l~lA RUTINA SE ENCARGA DE TRANSM1T1R UN BYTl'
NOI' ;.4JUSTE DE TIEMPO ; HAGA LA MB!ORlA
tiOP >!OVLW .8
NOP >!OVWF COUNT : EL NÚ>IERO DE BHS ES 8
l«)P TXLP BCF a
EEPR<l<, 00 ;A9>C Q.E BlT A eMM e; 8AX)
B(F
NOP
PTUB, $1lóTA ;SE SAJA LA ÜNEA DE DATOS STFSC Tl(l<Uf, 7 a
; (l}W.TA ESTPCO 1Jrli. ra, BlT
;MIENTRAS EL RELOJ ESTÁ ALTO BSF EEPR<l<,00 : SI lll\N:IO W CEJA <IN llIDQ ~0..
HOP
NOP
;AJUSTE DE l lEMPO CALL srrorr ;SACA EL BIT POR CL PUERTO
RLF TXRUF ,1 ;ROTA EL BYTE QUE SF ESTÁ

Curso práctico sobre Microcontroladores 4K#ir'..:.


;TRAHSMITlENOO NOP ;NUEV,.,IENTE lA ME~104l1A
DEffSZ C~T ;PREtuNTA SI YA PASARON NOP ;Y SE lE JNJICA MlXHE UCl\J\O
;lOS 8 BITS >IOVF DATAO,rl ; TOMA EL DATO QIJE VA A
GOTO TXlP ;SI NO HA TFRMIHADO SIGUE '10VWF TXBUF ; SER GRABAOO Y LO ENVÍA
; TRANSMITI<NOO CALL TX
CALl BITIN ;ESP<RA EL RECONOCIMIENTO CALL BSTOP
;ENVIADO POR LA MOVUI .10 ;Rfl'MU) DE l0 M5 AL ESIJUBIR
RETLW 0 ;ME>«lRIA (ACK) MOvwr LOOPS ;CADA DATO
RX ;ESTA RUT1NA RECIBE UN BYTE Y lO ENTRF.GA EN tALl llAIT
;El REGISTRO RXBUF RETLW 0
CLRF RXBUF ;60RAA El BlJfFER OE EllTRA()<I INICIO BSF STATUS,S ;SE UBICA EN EL SEGUNOO
MOVLl'f .8 ;INOTCA QUE RECIBES Sl'TS ;BANCO DE RAM
MOVWF COUITT MOVUV 0f0ll ;SE CNWA EL REG!smJ 11 ((N 0F
BCF STATUS,0 ; BORRA El CARRY MO\•WF TR!!>A ;SE PROGRAMA EL PUERTO A
RXlP RL~
CALl
RX8UF, F ;ROTA A LA IZQUTEROA
BITIH
.coo SALTOAS
;LEE UN BIT ~ID\'L\'i 07FH ;SE CoR('A El REGlSTRO W <X:N 00
BTFS( EEPROM,DI MOV\l'F TRISB ;SE PROGRAMA EL PUERTO B
SSF RXllUf ,0 ;SI 13 ~ a
RM: BIJ', EN 00 ; COMO ENTRADAS
DECFSZ COUNT ; PREQJtffA SI CGPl.EID 8 BITS B(F STATUS,5 ;SE UBTCA EN EL PRIJ.IER
GOTO RXLP ;SI NO. RECIBE OTRO BIT ;BANCO OE MEl«lRlA RAM
SSF EEPROM,()() :ENVIA El ACK oe t.x)VI VI 8'10100000' ;LA DIRECC!ON A0, Al, T
!ASENTIMIENTO ;AZ DE LA MEMORih
CALL BITOUT ; PARA TERMINAR l>l)VWF SLAVE ;EN EL BlJS RC ES 000
RETLW 0 CLRF ADOR ;CUANDO SE ENC!ENOE EL
lEER ; ESTA RtJTlNA RECillt LA OrRECCI(l­J QJE SE ;SJSTEl­IA SE VERIFICA QUE
;OESEA LEER T OEVIJELVE EL DATO ®E TIENE GRABNlD (AlL LEER ;EL DATO GUARDADO EN
CALL BSTART ; GENERA El START BIT ;ME~t)R!A ESTÁ EttTR( 0 Y ~
NOP MOVLW 0AH : LA PRUEBA SE HACf. PCRQUE
NOP ; LA PRHIERA VEZ QUE
BCF SLAVE ,0 ; SElECCIONA LA llE~t:lRIA SUBWF RXBUF,W;SE CNClENDA EL SISTEMA
lli:JVF SlAVE,W ;Y SELECCIOHA MOOO OE ;SE PUEDE TENER UN
;<SCl\ITURA BTFSS STATUS,( ;NÚMERO FUERA DEL RANGO'
l«lVWF TXllUF GOTO CICLO ;PARA LAS OCASIONES
CAll 1'X ;EINÍA ESOS DATOS A lA ; POSTERIORES NO Thll'ORTA
MEMOIUA IN!Z- ClRF CONTA ; INICIA CONTADOR EH CERO
MOVF ADOO,W (LRF OATAO
MOVWF TXBUF :EllVIA LA POSICIÓN DE CALl ES(RIB ;INICIA DATO llE MQOUA EN 0
;>IEt­OllA QLIE VA A SIR lUOA CICLO CAll
CALL
NOP
TX .
;AllORA SE SELECCIONA IJ{)VF
LEER ;LEER MEMORIA, OE\'\JELVE
;DATO EN VI
RXllUF,IY;PASA El VALOR DE IT AL
; l<UEVA>IEITTE lA ME>IORIA ;PUERTO A (DISPLAY)
NOP ; T SC LE lNllfA MlXJ OE LECT\PA l<OVPIF CONTA
CALL BS'íART ; GENERA START 811 MOVWf PTOA
OOP CALL RHAADO;RETARDO ESPERAH.00 QUE
HOP ¡SUELTEN LA TE(lA
BSF SlAVE,0 ;íllOICA QUE SE VA A LEER PULSA l!TFS( PTOB,0 ;PREGUNTA SI EL PULSADOR
IO)Vf SlAVE ,W ;SELECCIONA EL DISPOSITIVO ;ESTÁ OPRlMIOO
lli:JVWF TXllUF GOTO PULSA ;ST NO LO' ESTÁ CONTINÚA
(All TX ~ENViA ESA !NFOR>IACTÓH ;REVISÁNDOLO
NOP ; A LA MOtlRIA, CALL RE'TAROO;Sl ESTÁ OPRll­0:00 RETARDA
(All RX ;LA MEMORIA ENTREGA El ;100 MILISEGUNDOS
;BYIE DE ESA O!RECC!ÓN BTFSC P'TOS , 0 ; PARA (()!~PROBAR
8Sf EEPROM.00 ;EINIA El ACK DE GOTO PULSA ;SI l'll LO ESTÁ \\.el."1: A~
;RECONOCIMIEIJTO 1NCF CCtffA ;SI lO CONFIRMA
(ALL BITOUT ; INCREMENTA ol CCtffAOOR
CAU BSTOP ;SE EH>IÍA El STOP BIT.PARA 14'.)Vf CONT~,l'f;CARGA EL REGISTRO W CON
RHLl'I 0 ;FINALIZAR C<M.»IICACION ;EL VALOR DE LA CUENTA
ESCRlB ;ESTA RUTINA ESCRIBE UN DATO EN LA POSICIÓN 1­0VPIF DATAO ;El DATO DE lA CUENTA LO
;DE IEIOUA QJE SE LE 001(!.JE EN EL Ra>ISTRO Mm ; GUARDA EN r<EJ.IORIA
CALL BSTART ;GENERA El START BIT CALL E$CRtB ; PARA RECUPERARLO EN CASO
liOP ;DE UN CORTE DE ENERGÍA
NOP MOVF CONTA,l'I
BCF SLAVE,0 ;SELECCIONA LA MEMORIA XORL\f 0AH ;HACE OPERAC!Ótl XOR PARA
IO)Vf SlAVE,W ; Y !iELECCIO<» MX.O llE ESCRITURA ;VER SI ES lGUAL A 0AH
MOVWF TXBUF BTFSS STATUS,z ;PRUEBA SI EL CONTADOR
ou TX ;ENIÍA ESOS L\\TOS A LA l&OUA ;LLEGÓ A 0AH (DIEZ)
MOVF AODR,W WTO CICLO ;SI NO es IGUAL SE
MOVWF TXBUF ;ENVÍA lA POSICIÓN DE ; lNCREMENT A NORl­IALl<ENTE
;~11­0UA QJE VA A SER GWlll!b\ GOTO 11/tz
(ALL TX ;AHQllA SE SELEC(TONA END

Figura7.5 l'rogmmaparo el manejo de u11a memoriaserial

~ 4.Í<IT..: Cursopracf;cosobreMiCl'IJCQfltro/adores
1 ;; subrutina [iSTARTb>Crn;r..1 el bit de inicio dela Una prueba, que es muy inreresanre, consiste
comunicación, con la rempcrizacién y estado de los en <,>11 uhiar de posió<in d inrerrupror qnc selcccio­
pines adecuados. Por su parte, la subrutina BS'IVP na la protección de escritura. Cuando está en la
hace lo mismo con el biJ.de parada o de fin de Ja co­ posición READIWRITE, se puede incrcrnenrar d
municacién. la subrutina JJITOUT coma d bir dd contador normalmenrc, mientras que cuando se
daro que se debe transmitir y lo envía hacia la memo­ encuentra en la posición RF.AD el contador no se
ria, encargdndosc de programarcl pin del rnicrocon­ incrementa debido a que la memoria está protegi­
trolador como salida y de generar el pulso de reloj ne­ da concra escritura .. A continuación detallamos eres
cesario para la sincronización, 1~, rutina 81T7N hace instrucciones utilizadas en los ejercicios anteriores.
su parce cuando se esrá leyendo un bit enviado por la
memoria, ¡;¡::neta el pulso de rdoi y (>(1Sa d bit leido al CA L1­ Llama una subrutina que esrá ubicada
registro o breffér de entrada. Las rutinas 'fX y RX se en la posición de memoria o eriquera "k".
cncar¡,­an <le rransmirir y recibir un l~)'tecompleto de Si111axb; CAl.L k
datos. Cada una hace ocho llamados seguidos a las 1 jcmplo: aquí CALL rutina
rutinas B!TO{TT y BmN rcspccrivamentc, Ames de la instrucción: contador de
programa = aquí
1.:, rutina T.F.HR recibeen d rcgis\r<.> 1ultlr la 1.X>- Después de la instrucción: contador
sición de memoria que se debe leer y genera codas las de programa= rutina
señales necesarias (incluyendo el bit de .rlarty el hit dé Pila = di rección aquí
mp) pan obtener el claro qne en ella se encuentra
grahado. Al final devuelve d dato que recibió de la RLF. Rore el contenido del registro 'T' a la i1.­
memoria en el registro rxbuf la rutina J;S(',RJB coma quierda, usando el carry.
el dato contenido en el registro DATAO y lo escribe Sintaxis: RLF Ed ;si d= O el resultado se
en la posición de la memoria que está direccionada ;guarda en W, si d=.l el
en el n~gistro mklr. .rcsulrado se guarda en f
Ejemplo: RLF regis,O
Cada vez que se enciende el sistema, el micro­ Anees de la instrucción: C=O, W=', regís
controlador Ice el claro que se encuentra en la prime­ = 11100110
ra posición de memoria y lo pasa al tli.~pÍl'J.Una vez Después de la instrucción: C= 1,
que el pulsador sea oprimido, se debe incrementar W=l ioot lOO
dicho dato y actualizarse el display,al tiempo que se regis = 11JOOl10
vuelve a almacenar ese número en la memoria. Un
caso especial ocurre cuando se enciende el sistema Dl·CFSZ. Decrerneota el contenido del registro
por primera vez: Como d Jaco que se encuentra gra­ "f"; si el contenido queda en 00, salea una línea.
bado en la memoria es desconocido, y podría ser su­
periora 9, éste se debe probar, y s.i se encuentra que es Si111axÍ\; DECFSZ f,d
mayo1; se borro y se empieza la cuenta en O. Fjcmplo: aquí DECFSZ regís, 1
GQTO ciclo
L1s rutinas que permiten leer y escribir en la Conrinúa ....
memoria 241.CO 1 se pueden utilizar como parte de Antes de.: la instrucción: conrador dc
cualquier programa sin que se tengan conrratiem­ programa = aquí
pos. Sólo se debe rener en cuenca clue las rempori­ Despoés de la in.suuo:ióo: t:t'gÍS = regis­ 1
zaciones están calculadas para un oscilador de 4 si regis = O, enronces
MHz.. Con las rutinas LEER y ESCRIB se riene contador de progr.U11á =continúa
cna velocidad de transferencia de información de si regis <> O, enronoes
aproximadamente 60 kHz.. contador de programa =aquí+ 1

Curso pr.lctícosobre MícracontroladDres cliic-1T.. :. ~


Ejercicio No. 8 Módulos de cristal liquido o LGO
Manejo de un módulo LCD Ames de mostrar 1:1 forma de conectar estos mó­
Cuando se trabaja en el diseño de circuitos dulos con el microcontrolador, haremos un pe­
electrónicos es frccucnrc cncomrar b neccsi­ queño recuento de sus principales caracrerlsricas,
d,1<1 de visualizar un mensaje que tiene que las cual"' nos servirán para entender mejor los pro­
ver con el estado de la máquina q11é se va a gra111a.'i y los­diagra n1:-t.~ q ucvcrcrnos más adelante;
controlar, con instrucciones para el operario;
o si es un insr rurncnro de medida, mostrar el • l .os módulos LCD se encuentran en diferentes
valor re¡;i," rado. ~n la mayoría de los casos preseruacioucs, por ejemplo (2 líneas por 16 ca­
recurrimos a los tÍisplrip de siete scgmencos; racrcres), 2x20, 4x20, 4x40, cte. 1 ;1 forma de uri­
pero éstos, además de no most rar caracteres lizarlos y sus inrcrtaccs son similares, poreso. los
alfanuméricos ni ASCI l. tienen un elevado mnc:cpcos vistes "'JlÚ s.: pueden empicaren cual­
consumo de corricnre y son un poco dispen­ quiera de Jlns. F.11 nucsrro caso rrabaiaremos con
diosos de manejas, cuando se requiere hacer un displny de 2x 1 G. ya <¡u<: es ele bajo cosro, se
mulriplcxaje, consigue f.íciln1ente y tiene un tamaño .~uflcimtc
p;1r:1 b mayoría de los circuitos.
Los módulos de cristal líquido o LCD so­
lucionan estos inconvenierucs y presentan nl­ • La figura 7.6 contiene una de bs rn11flguracio­
gunas ventajas, como un menor consumo de ncs de pines mas comunes en que se encuen­
corriente, 110 hay que preocuparse por hacer tran """'dispositivos. Algunos módulos LCD
rnulciplexaje, no lrny que hacer rablas especia­ rimen una luz posterior o hackligln. para me­
les. con los caracteres que se de.""' mostear, se jorar su visualización; ésta se maneja :1 rravés de
pueden conectar focilrncnrc con microproc«­ dos pines que normalrnenrc se conectan a +5V
sadores o microcontroladores y, además. los y a tierra. Psra cvirar quc se presenren altas rcrn­
proyectos adquieren una <Íptima presenracióu pcraruras debido a la lm. posterior. estos pines
y funcion:ilidau. En principio, vamos :t cono­ los debernos manejar de manera pulsanrc (en­
ccr las caracrerísricas rn4s importantes de lo, ccndicndo y apagando), con una frecuencia de
módulos, luego mostramos ln formad<· concc­ aproximadamente 60 l lz, Otra opción mucho
rarlos con el microcontrolador y presenr:ue­ más sencilla es utilizar una resistencia de 10 oh­
mos programas simples para escribir mensajes mios (a 112\Y/} para alimenrar el rerminal posi­
en la pantalla. ' ivo de esta luz posterior,

Pin 14

. Figura 7.6 C()o/igutm;irinoc los pines áe los m(xJules lCO

~8'11'..;. Curso pracüco wbre Mict0Cónlrol:1dorcs


Tenninal Símbolo Nombre y función • La inrcrlaz entre el microcontrolador y el
1 Vss Tierr­J, OV displny de crisral l íqu ido se puede hacer con
1 Vdd Alimentación +5V el bus de datos trabajando a li u 8 bits. Las
3 señales de control 1 rnh;ijan de la misma for­
Vo Ajuste de volraje de contraste
ma en cualquiera de los dos casos; la difc­
4 RS Selección dato/com rol
rcncia se establece en el momento de ini­
5 PJW l .ecrura/escrirura en LCD
cializar el sistema. ya que existe una ins­
6 E Habilitación
rrucción que permite establecer dicha con­
7 DO DO Bit menos signilkativo
figuración. Estas conexiones se explican
8 DI DJ más adelante en forma dcrallada.
9 02 D2
LO D.3 D3 ­Los caracteres que se envían al display se
LI 04 D4 almacenan en la memoria RAM del mó­
12 05 D5 dulo. Existen posiciones de memoria RAM
13 06 D6 cuyos daros son visibles en la pantalla y otras
14 07 07 Bit más signillcárivo que no son visibles; estas últimas se pue­
Figura 7.7 FU11cl0r1 de los pines del módulo LCD den utilizar p;ira guardar caracteres que l uc­
go se desplazan hacia la pane visible. En la
• Los pines de conexión de estos módulos inclu­ figura 7. JO se muest ran las direcciones de
ycn un bus de­ daros de 8 bits, un pin de habili­ memoria visibles y no visibles, t¡uc confor­
ración (E), un pin de selección que nos indica man las dos líneas de caracteres del módulo.
q ue el dato es una instrucción o un carácter del
mensaje (RS), y 1111 pin que indica si se va a es­ • Es importante morar que: sólo se pueden mos­
cribir o leer en el módulo LCD (R/W). La figu­ tear caracteres ASCII de 7 bits, po1· In ianro
ra 7.7 describe h1 íoucióu de cada u110 <le dios. algunos caracteres especiales no se pueden ver

Sc'gÚ.11 la operución 'I"" deseemos hacer so­


bre el módulo de cristal líquido, los pines de
RS
\.
.•. '
/
control E, RS y R/W deben tener un estado ' \

determinado. Además. debe tener en el bus RIW r\~-4Mns _j /


de datos un código que indique un cardcrer 140ntl
para mostrar <:11 la pantalla o una insrruc­ E _,/ \._ __
ció11 de control, En la figura 7.8 se muestra
el diagrama de 1 icmpos que debemos cum­ _u_us_o_J1TO_s _,)<~__ v_o_fid_o
__ ~)<=
plir para manejar el módulo.

• El módulo l.CL> responde a un conjun­


AS
to especial de instrucciones: éstas deben
' '
ser enviadas por el microcontrolador o
sistema de control al display. según b RlW (~450fls __.:
140nn
/
operación que se requiera. Escas instruc­
ciones se emplean e11 los <:jcmplos con
los cuales practicaremos más adelante.
_E__ ~/ \ .~­­­­­
en ellosse explica la forma de utilizar­ _s_us_._u_A_•<_is ~)< va_''-~º )<=
las. En la figura 7.9 se muestran las ins­
trucciones del módulo. Figura 7.8 Oi.3grama de tiemposdel módulo lCD

Curso prácticosqlJrc Microcontroladores ~ IF.:: ~


saiope/DJµJD:NJJ:J!W :uqos o:i.q~VJd OSJn3 ·:'7AI~
,.
l'1>111¡ ¡opu111l;r,; l!f a¡1 t•um11a1u 90 uonr.;UJ

HOZ He!: Hf:Z


s
Hl~ Hlr Hl:S HZS H~t H9~ H61" lflt HI 1· llllZ
HUl lllr H61'
u V s u 3 o )
H~g~g
/
fl 1 1 N y
IHI> 1131­ 1101" 11:lt 119\' llVI> H,;p llSI> llll' 1191­ H~i' llM> ll&i' lill" HI r Jll)¡.. "
HOZ H€F HW Hll(; Hm Hl ~ Hl·'1 HES H6\' H9S HSI'
o V .1
H~l ,/'Hot ft:JO H3!1 HOtJ ~P Hilo HlO H90 H~O H:.0 H&ll" H?.Q
a
('­­ n!e-suaw 13P 69.IJ~ruro~I u JlíllSIAV31:1V
)
S"IU&!PllOclsa 11110 113$\1 SQijlpn:J cau11 ciawud e1 ap cuowatu au U!)l:i<SOJ

'('.)),) 'JOJlUO.) :>p S.)(


­soicp JP snqj $;'.>UO!XJllO:> SJJllJ.l~l!P
­l:!)JS ;'CI JP,ll
eu f~JU~ 09!)1.':J;'ldQ f.1 tpl!Z!J'!U!~! Q
­01)1puo:)E u.;iq~p as (lSI!:) cpE'.J ua ,( s.:uopc10.1mo'.J o¡np9ru (.:>p cu.1.Jlu! º9!)CJ.)l1o .:>1u~1na 1 :19
...OJ:J!l.11;>p 1->l~P~!Jt:A u1~J~ eun e .11a::>at1o~l uoprnul 11,11¡ n.u1:n::> :>p ~·o.lt:U o
,;is (1:)1 so1np9tu so¡ .>nb .nnoue ~<Jl':J 'O'SC) ,)JS.) '11(/ 04o<»p SOlC(I J - 'l(J
tpJ.1!nhi! e¡ e 01u.:>!tuurc¡ds:io o ­
CJ'Cd S';>UO!x;>uO:> ~p l)Ul<URe1p l" l!J.ls;J!llll ::is 11 'L c4:xu,,p l~I ·~ O)U.,!Hti::z:c¡d~(1 l '11­l
wn~9 CJ "!el »n S e soicp JP sm¡ p opu­c­L! 1•rn
JOSJID .:>A.:>OJl\J" 0
'l>Stl91 :)Id mp1:¡0.1)uO:)OJ:'lllu un t: opu1b)[ l"l~U:'J 1:11u.rucJ c?.c¡Jso(J 1 ~)/S
~p o¡np9tu ¡a .moouco t: sourcx O!:>p.1,;i(,;i JJSJ u3 J.'lJOp.tt::> l'J c.?pcd.n:d VN O
p .10J
SJfq 8 I? JOPl?IO.QUo:>OJ:l!W UO:J zeµa¡u¡ JO!>JO;) op•f"l!­" J>D]UCJ eopcd.red 1
JO~H:"> JCA!)~~;')ll o
·o¡ np11tu I' .1~sod onb vv Vil eu
(J.C!t!l:)t .."!-~.>p)l:l(l!.lut:<l e¡ J\>.3cdy O
­ouraiu e¡ ua s1>pcu;nctu¡c Á '(.10pcuic.1'S0Jd p
10d =r==» S.),CT'.).)dS:l S:l.l:ll:)l!JI?)J'L':l.1:) :ip u91:) CIJl!HH:cJ f.l (lt:J\!IZIC) :1¡,pu?~UtJ 1
c¡[<lur.d t¡ m o!~ >!tYUOI>'/ O
(J

-do CJ SOlll;)tl;>J •n1eJ l<,110 ·'º<l '{Sl>P!'l!l(0.1d 1'(1nlll~d E) U> >fm10UI )> r.?:O)Os;)Q 1 $
uos onb rniq> so1 .rooouoo erud 11'.)SV s.1.1~pt~1 1 0
l!Jll;)IU­:U:1:l(
f.HIJlU;)J:>Uf 1 - (lfl
·I?:> so¡ JP C(l]''l CllTI ouuru e J;)l")l SUllPtpp}
s1mqe¡11;uqe se1 ap ope:imu6!S
337 01na9w 110 SiJuo1:xJn11su16'/. e.mó!:J

..
,..., ... , .
:u"""~···.
,, .. ,.....,.... _,~,.,_ 1 1 IWllW.'Ml!Y)\~llfll 1

'11_1 ... ~~· • .....,........ eltll l!p lll'lUJon


• '
\'UTI :fl':hl~• 1 1 • ..... •• 1

.,,,...,_
•.V.OfAll ll'lJ1t>.,:ll~­.X~
»noome111mm,.,....•ft•­.M111.J1MI.
~Wlrlf"l8'. ''"" (U'­AA!l'llUUtf'tn :rt
w~ <TI1tn,. r.acu->uo
.e • •
...,.,.
-u:1~rr•·
..,aoi.a!Q"O._...Aqo_u.._11ltlft:Wllll•ll"'­""Q"lll~ 1
' ' lf'l'il!JI"

-~ ... 't'-•lllil•""""'
' '
....,jj(j~l{~~$1b)')\l.tlJ

.. ..
1 11

,,
l..IP'YK•ll.'l!S,»t>S ·~(!j'>l(O!K@)tll~ll~

' • '
!h ')""1A:.OJf'Y•tUI¡

.. ~...¡·\­'< •""'I 1
111; 11t ,....,,.. n>~-. llP~~""" 11cs mn111• $ """ pl'.f'f'tl~ 1 l 11 l1Ua1lltfl.,,.

• "' ..... ,............ ., "°'.... I' ""'"1'~_,i;,,"'""'


.. ,.,, ' • • ' • • llt-'!llllt- 11;.i• " 1"11'1

• ,
~-· • °''
•• .,.,,'(u::(tt­:n+ .. l'>Ul"ll

' ' ' ' u • ' •


to.:l\Jl:a.l'­;l!l_,•U»A.""1t.J11<U'll•~fft5"<1Jn~ "tlfll':I •&mr­ llrtlfW 1

•"flolt)­1i1>llJIU1)­Ufllohl'"""ft1;'1A.\Cll>~
M<lll!.l,)(t)Jt•AMNMl~­tJ\WOClt)'lll.l'(\WJ ' • ' • ' • • • ¡¡¡un'~ u'"

­1••­°"._­.,,~ ..UCGPM1t1~
...... _. ..., , ........ .,­u..., ... ~....,.~\;oif._":ü ... f\tol&!" ;IM"'"?lrj!¡

~1 ro~••>or•i­..11~NJ..)~lw.,.¡ ' ' ' o


' ' ' ' '
<llH01ú,'fft(rtr.un)••U':\lli(~·~17'11{1
i.1•'1191'" 1 • • • • o ..• ' ,,.o .,', ll'l:lmllrm(I

~:::;::·
,,.,
'"~ ..... ll!
·'' ti 11

­>­• IJllU ... >t\lT


" '
.,~ 11111·
,.. ,. ,..,
15V

t~{ L4
12 13
11 12

10 11
1SV
9 1 ()

Í'"'
6 y
7 8
!i 7
-
!8 fi fljuslft dul
00111raste
11 ~

Figura 7.11 Diagmma de coaesioocs entre el microcontrolMory el 1nó(t11!0LCD


Para estos ejercicios en panicular, sólo nos empicará solo una línea de caracteres. La ruti­
mteresa escribir daros en la pantalla (no hacer na llamada CONTROL se encarga de gene­
iCCtura); por lo ranro, el pin ck selección de lec­ rar las señales y los riempos necesarios pan1
tura/cscriru ra (l{/W} en d disphiy, se conecta a que exista una correcta comunicación.
derra. El puerro B del microconrrolador se urili­ 3. El segundo dato (071­1) le dice al módulo que
u como bus de datos, y el pLterco A se encar~a el mensaje se va a desplazar en la pantalla.
i!r generar las señales de control. 4. El tercer dato (OCM) hace que se encienda
d display.
l'ar;i el oscilador del PlCJ6F84 se emplea 5. El siguiente paso es entrar en un ciclo que hace
Wl cristal de 4 MHz. poi· lo tanto tenernos ciclos
una lecrurn de la tabla donde se encuentra cl
a.e instrucción <le un microsegundo. Para con­ mensaje y lo lleva a la memoria del módulo
i:ohr el contraste de la pantalla en el módulo LC:D. Cuando se rerminan de enviar todos los
LCD. se empica un potenciómetro de 5Kolim, caracteres, se inicia el ciclo nuevamente.
conectado corre +5V y cierra.
Las rutinas CONTROL y DATO empican
En la figura 7.12 se muestra el listado del las mismas instrucciones. l.a única diferencia
programa. Para este caso. d ejemplo consiste en es que cada una le da el nivel l6~i<:o adecuado
nacer circular LUl mensaje en b línea superior de ~I pin RS, que indica si el daro enviado es un
.a panralla, La explicación de los P'lsos conreni­ carácter del mensaje (un daro) o una insrruc­
!:OS en él es la siguiente: ción de courro],

e , Se programan los puercos scg1ín las concxio­ En el modo que desplaza el mensaje en la
nes que se tienen en el circuim, pantalla se tiene un tiempo de espera un poco
2. Se debe inicializar el módulo LCD. El pri­ largo ames de que aparezcan los caracrcres en ella,
mer <lato que se envía (30H) le dice al módu­ esto se debe a que primero se llena o se carga la
lo que la comunicación es ;1 8 bits y que se memoria de daros <le b parce no visible.

Curso práctico sobre Microcontroladores 4.Í<IV.: ~


; CSTC PROGRAl<A H•CC QUE UN MENSAJE CIRCULE EN LA RETlTI "O"
PANTALLA R~llfl "N"
;OE UN l<OOULO lCD ; P=16F84, OSt. XT, 1'11f = OH R[llVI ''T"
IllDF EQV 0H ;l'ARA OJR~CClOIW<L~NlO RETll'I "R"
MHRECTO RETlW "O"
llo1R() EQU lH ;CONTADOR DE TIEMPO R[Al RF,TI.W "I''
p( EQU lH ;CONTADOR OE PROGRAMA RETI,W "A"
STArUS EQU 3!1 ;REGISTRO DE ESTADOS Y SJTS REnl'I "O"
;DE CONTROL REnll "O"
~SR EQU 4tl ;SELECC(TÓN DE SANCOS DE RETtl',' "R"
<El<ORIA Y REGISTROS RETLJ/ "E"'
PTOA EQ(J SH ;PUERTOS RCTlW "S'
PTOB EQU 6H RETLll
R0C EQu 0CH RETLlr "P"
R0D EQU 00H RETL\\' "{"
.. t ..
~13 EQU 1311 RETI.\\
lz EQU 2M ; l!ANOERA DE CERO RETLll'
e
~
EQU
EQU
0H
011
; 6AHDERA DE CARRY
;PARA AIJ.IACENAR EN W
RETLll'
l<l:tlrl ,
.."C"..
R EQU 1H ;PARA ALMACENAR EN EL MlSl<O RETLW "K"
REGISTRO RETlVI 'T
E EQU lH RETlW "T"
RS EQU 011 RETIYI
RfnW
ORG 00 ;VECTOR DE RESET RETLW
GOTO INICIO RéflW
ORG 09! RI: ruv
1­ttTlrl 0
RETARDO M()VLW 0FFH
MOW.'F Rl3 INICIO M'.)VlYI 0fCtt ;PROGRA)IACIÓN OE PUERTOS
DECRE OECFSZ Rl3,R TRIS PTOA ;SEG\JN EL CIRCUITO
GOTO DfCRE t.()VL'i'i1 00H
RETLW 0 TRIS PTOB ;
6EGJN MO\ILW 30ll ;INIClA DJ$1'LAY A 8 BITS
COOTROL BCf PTOA,RS ;ESTA RUTINA GENERA 1.AS ;Y 1 LÍNEll
;SEÑALES DE CONTROl CALL CONTROL
GOTO DATOZ ;Y ENTREGA EL DATO HO'tL\1 01H ; SELECC1014A EL >1000 OE
;CORRE~PONDIENTE ,,, MODULO ;OESPLAZA~l!EHTO
DATO BSF PTOA,RS ;UTILIZA INTERFAZ A 8 BJTS CAlt CONTROl
DATOZ 8SF PTOA,E MOVL'i'i1 0Cll ¡ACTIVA DTSPl.AY
•~VWF PTOB CAll COOTROL
CALl RETARDO i.lJESTRA MOVLll' 0 : {NJCTA El ENVIO DE
R(F PTOA,1;_ :CARACTERES
ú'ILL RE1'ARIJO l<0\11/F Rf)C ;AL MÓDULO
REtLW 0 crno t.cí)VF R0(,W : HACE BARRllJO OE LA TABLA
(ALL TABLA2
TABLA2 ADOWF P(,R ;MENSAJE Q!JF oeaF SER ROTADO CALL DATO
RETLIY "(" l~VLW 09Fll ;RETARDO ENTR[ CARACTERES
RETLIY 'O" M'.)Vrir R00
RETLW 'R" ~l:TAl CALl RETAADO
RETLW "S" CALl RETARDO
RETL\\' "O" OECfSZ R00,R
RE1'LW ",. GOTO RETAl
RETLW "()" IH(F R0C,R ; SlWE CON El PRÓXIMO
RCTLW "f .. CARÁCTER DEL >IENSAJE
RETLW MOVLrl 28H
RETLW ..,.... XORllF R0C,W ;PREGUNTA SI TERMINÓ EL
RETLW .. I" ~NSA!E PARA VOLVER
RETLTI "C' BTFSS STATUS,l ;A EMPEZAR
RETLTI "R' GOTO CICLO
RETLW "O" GOTO ....iESTRA
RETLW "(" END

Figura 7.12 Progmmapara Ja conexiónde 8 birs

" . :. Curso practico sobre Microcontroladores


~· 4.Í<IT.
~
En varias lecciones de este curso hemos pre­ 1 >!'Cr Dccremenra el con re nido del regís­
sc111:1<lo poco a po<.:0 <.:ad" 1111a de las insrruccio t ro uf"

nes qu~ componen el lenguaje de los microcon­ Sima.'i" DECF f,d


rroladorcs PlC. Observemos ahora la sintaxis de F.jc111plo: D.ECF fl·gis, 1
las 4ue se encuentran pendientes par:t completar Ames <le la instrucción: regís = 13
rodo el conjuruo dt.: la~ instrucciones y dar por Í)1.,:sp11és de 1:1 inst r1 recién: r(.;gi~ = 12
finalizada esra lección.

\1 )1 >l .\V Suma un valor lireral aJ contenido del INCI• Incrementa el contenido del registro "f"
rcgi:-;t ro \Y/ Siuraxi». l NC:F í,d
\inc."i" ADDL\'\I k l'kmplo: INCF regis, l
Ljemplu: t\DDLW 15 Antes de la insrruccién: rt'gis = 24
Anres de la instrucción: W­10 Después Je la instrucción: rcgis ­ 25
Otspu(­s de 1:1 inst rucción: W=25

1 N( TSZ l ncremema el contenido del regis1 ro "I":


\llDI W Suma el contenido de un registro al si el contenido de "F" queda en OO. salea
conrcnido del rcgist ro W una linea
'>in1axis: ADDWF f.d Sintaxis: INCJ'SZ f:d
~jcmplo: ADDWF FSR,0 Ejemplo: eriqu 1 1 NCl­'~Z regis,
Antes <le b instrucción: W­ L7 l'SR­ C2 goro criqu2
Después de 1:1 insirucción: W­09 FSR­C:2

Anres de la inscrncci6n: concador de


\.'\])! W Operación lógica AND entre un lirc­ progra111:1 = criqu 1
ral y '-'J regisLru W Después Je la l11­.1 ru1..1..'(\ln: regís ~ regi~ + 1
\tntJxi.: ANDLW k Si regis = O, <."11ton ces
t:•cmplo: ANDLW 5¡.: contador de progrnm:1­ eriqu l
Anrcs dc la instrucción: ~'=17 l'SR= C2 Si rcg­is <> o. cmonccs
Después de la instrucción: W­D<) FSR =C2 contador de programa ­ eriqu 1 + 1

­..owr Operación lt\gica AND entre 1111 re­ IORLW Operación lcígica OR entre el registro
~ro "F'' y el registro W W y el lircrnl "k"
ruaxis: AND\1Vr: f.d Sintaxis: JORLW k
emplo: ANDWF rSR,l Ejemplo: IORLW 35
A111c~ de b1 im1 ruccióu: \'i/­17 FSR ­ C2 Ames de la insrrucción: \'i/ - 9A
Después de la instrucción:\'(/: 17 FSR = 02 Después de la instrucción: W = Bf

1 RW Borra el conreo ido del registro W, lo IORW'F Operación lógica OR entre el registro
~'g<i con 00 W y el registro "("
w'i" cu~w Simni" IORWF f.d
emplo. CI .RW Ej<·mplo: IOR\VF rcgis,O
Antes de la instrucción: W­5A Ames de la instrucción: rcgis = l.), W ­ 9 J
Después de la instrucción: W­00 Después de la instrucción: regis = 13, W = 93

Curso prácUco sobre Microcontroladores Cli.Kl'ii:.: '~~


MUVF Mueve d courcnido dd registro 'T' Después de la i11~t ruccióu: regís~ ·1, \V/::::
Sint;JXÍ~: MOVI­' [d C= 1 (posinvo)
l'.jc·mplo: MOVF rcgis,0 1 jcmplo 2:
Antes de la instrucción: W ~? ,'\n'"' de 1:. instrucción: rr!;i,=2, \XI ­ 2. C
Después de b instrucción: W= valorgu~rd:ido Después de la instrucción: rer,is ­ O, \Y/=:_
<...TI r~s C:l (cero)
l·.jrn1pln >:
OPTION Carga el registro O J>Cl O N con el An1es de la instrucción: r<;g:is­1. W = 2, G ..
contenido del registro \'I/ Después de la instrucción: regis ­H; W ­ ~
Sinl:"Í" O(YrfON C~I) (ncgarivo)
1.jcmplo: OPTION
Fsw insrrucción se considera obsoleta, pero
por fucilidad en el aprendizaje, se uriliza en SWAl'F Intercambia los cuan­o hitJ altos r la
el uive] h::íslco. cuarto bits bajos del registro "f"
Sinuxis: S\Y/APF 1:<1
l·j<'n•pln: SWAPF regis,O
RE1 Fil· Retomo dd llamado a interrupción. A mes de la i nsrrucción: regís = A 5 , \Y/ ~ ;
Simasi­= RETFIE Después de l.t instrucción: rcgis­ A5, W ­5A
Ejemplo: RETflE
Anrcs de la insrruccióu:
Contador de prograrn¡~ ? = 'l IUS Cargad 1·egisno TRIS (progr~111ación de
Después de la instrucción: los puertos como merada/salida) con el conrcni­
Contador de prognuna ~ila= do del 1·egi,1m W
Si""''": TRIS f
Eitmplo: TRIS puerroA
SUlll W resta d contenido del rcgis1m \Y/ del Esra instrucción se considera obsoleta. pero
literal .. k .. por facilidad en el apre11tlizaje, se 111iliza
Sinraxis: SUBLW k ca el nivel básico.
Ej.:u1plo 1: SLJBLW 02
Ames de la instrucción: W­1, C­)
Después de la instrucción: \'l/:l, e=
1 XORLW Operación lógica XOR entre el re­
Iposirivo) gisrro \'([y el literal "k"
Ejemplo ~= ~int.ixis: XORL\'I/ k
Antes de la instrucción: W­2, C:-) Ejc11tpln: XORI .W /\I'
Después de b instrucción: W=O, C = 1 (cero) Antes de la insrrucció n: \Y/- 135
l 'jcmplo .~: Despu{;s <k la instrucción: \Y/: 11\
A111<" <k b instrucción: \XI:.), C=?
Después de la inscrucción: W=IT. C =0
(negnrivo) XOR\'1/1• Operación lógica XOR entre el regis­
1 ro W y el rcgisrro .. F"
.o.;i111.ixi,: XORWI­' f.d
Sl/B\VF resta el couccnido cid registro \Y/ del Ej~mplo: XOR\Y/F rcgis. l
registro "f•· Ames de la instrucción: regis = A F,
Si11w,is: SUllWI' f;d \Y/= R5
Liemplo 1: SUill.\XI r<'gis.1 Después de b instrucción: regis = 1 A,
Antes de la insrrucción: regís~.>, W ­ 2, C­? W-B5

··~~ @~KH'Tf::.. Curso práctico soore Microwntrofadores


r
Ó­=­­­

EJERCICIOSCON
NDCROCONTRIUDORESMOTOROLA
A partir de esta lección iniciaremos una serie
de ejercicios con los microcontroladores Moro­
rola. Debido a su arquirccrura CISC, los mi­
crocontroladores de la familia HC08 cuentan
con una gran cantidad de instrucciones. Para
poder desarrollar mejor los ejercicios, podemos
tenerlas como referencia en la rabia con que ini­
ciarnos esta lección.

Curso practíco sobre Microco11troladorcs t:lliJf<l'lf:.,..


-- - -
- -- -
-
--
- -
-- •

EJERCICIOSDE PROGRAMACIÓN
CON EL BASIC Stamp
Ahora centraremos nuestra atención en la pro-
gramación de los famosísimos microcontrolado-
res BASIC Stamp I y 11, incluyendo los pasos
involucrados en el desarrollo de soluciones inte-
ligentes con estos poderosos dispositivos. Podre-
rnos capear la facilidad de trabajo y la gran canti-
dad de herramientas que dios nos ofrecen para
reducir significativamente el desarrollo de pro-
duccos electrónicos.

CursoprácticosobreMicroconfroladores 4K1r.. :. ~
Como es lógico, antes de empezar a desa- Desarrollode programas
rrollar un prognuna para un microcontrolador Quizás la principal ventaja de los BASIC Stam:-
se debe conocer bien su arquitectura, sus ins- es la facilidad que o.frecen para el desarrollo de
trucciones, su mapa de memoria. y en general, programas en muy corto tiempo, con los bene-
rodo lo relacionado con su hardumre. El gAS!C ficios adicionales que enrrega la programacion
Stamp no es una excepción, por lo tanto, con el en lenguaje de alto nivel. Además, estos rno-
fin de recordar los elementos principales que lo dulos se programan directamente desde el puer-
componen, se ha elaborado un diagrama que re- co de la computadora, evitando así la utiliza-
presenra los elementos que lo constituyen, di- ción de programadores especiales o costosos sis-
cho esquema se muestra en la figura 9.L temas de desarrollo.

Uno de los aspectos más importantes que se Los elementosque se requieren para trabajar
deben tener en cuenta ('S q,1e esre microconrrola- con el BASIC Scamp l son;
dor sólo tiene capacidad de memoria pata 75 ins-
micciones.Ello se debe a que cada instrucción es- • Una computadora cipo l'C con sistema ope-
criraen lenguajePBAS!C equivalea varias i nsrruc- rativo DOS 2.0 ó superior, con puerco parale-
cienes de ensamblador del m icroconcroladorPIC, lo para conectar el cable de. programación y
i ocluido en el módulo del Sramp, el cual está en- un drio« de 3.5" para copiar el programa al
cargado de inrerprerar los códigos recibidos. Otro disco duro.
fucror importante es la velocidad de ejecución de • Un microcontroladorBASIC Srarnp l
las instrucciones, limiradas a un máximode 2.000 • Una tarjeta para protoripos (carrier bMrt.Í) o
por segundo. Larazón fundamental para ello es la un protoboard
misma que se expuso anreriormenre para la capa- • Cable de programación
cidadde memoria, mientras el PIC posee un osci- • Programa sramp.exe
lador de 4 MH1. que le permite ejecutar una ins-
rrucción de ensamblador cada microsegundo, el Para empezar a rrabsjar, se debe montar el
tiempo de ejecución de. una instrucción en lengua- circuito o experimento en un protoboard o en la
je l'BAS!C es mucho mayor. tarjeta especial pata prototipos (carricr board).

l
Cablede
pro_gmrri:ición
{ j)Uerio 1w;ilelo
de la PCl

B pioos de
Alimeotadón Cfllrada/r;allda
6 1< 15 vec en el uin
VIN 6 5VCC en el pío
voo

Figura 9.1 Representación de/ microcootrolador /3ASIC Stamp t

¡I "
~ IT..:. Cursopractico sobre Microcontroladores
J709ramasión

Figura 9.2Aspecto (fe/ programa slamp.exe Figura 9.3Mentí ()e ay00a en panlili/a (FI)

Después, se debe conectar el cable de programa- ciales con ttucse. debe trabajar, se pueden obser-
ción entre el puerro paralelo y el circuito. Este var en pantalla con sólo pulsar la tecla F J. En la
cable se puede adquirir junto con el BASIC figura 9.3 se muestra el menú de ayuda que se
Sramp o se puede construir según las conexio- despliega en la pantalla, y en la figura 9.4 una
nes que se muestran en los circuitos. explicacién más detallada de los mismos.

El siguiente paso es instalar el software llama- Durante el proceso de compilación o en el


d» sramp.exe, el cual permite editar, compilar y momento de grabar el microcontrolador,se po-
descargar el programa hacia el microcontrolador. dría presentar algún problema, ya sea de sintaxis
Se recomienda crear un directorio nuevo en el o de comunicaciónentre los dispositivos. Por ral
disco duro y copiar allí el programa mencionado, motivo, es posible que en aJgún rnomcnro apa-
al igual que los programas de
utilidad que se vayan elaboran- Tecla Función Comentario
do.Al ejecutar el softwarede de-
F1 Pfesenta eJ menú de ayud.'l
sarrollo se obtiene una pantalla
como la que se muestra en la ALT·R Aun: descarga el prQgrama Muestra en forma gráfléa la
figura 9.2, c.¡ue, como se puede hacia ol STAMP. descarga d91:pfograma e indica la
apreciar, es bastante simple. poroón da memoria utilizada
Esro es una ventaja ya que se ALT·L Load; earqa un prograina
puede trabajar en computado- ya existente
ras nuevas y en máquinas vie- ...
ALT-S Save: Graba el programa
jas, que estaban destinadas asa- -
ALT ·I: lnfo: Muestra la versión Sólo en el BASIC Stamp 11
lir de circulación.
del chip intérprete

llecho lo anterior, sólo ALT-M Memory~ Muestra un mapa Sólo en el BASIC Stómp 11
-
resta escribir el programa pro- ® la memoria utfüzada
~'
pio de la carea y mediante al- ALT-0 Ouit: 'leernmael progran1a
gu nos comandos especiales, -
ALT-P Pot; Determlnaot vaJor de ia escala
compilarlo y descargarlo hacia
usada en la instruock)o· Pot Sólo en el BA~IC$1,amp 1
el microcontrolador, a través
ESC Termina el programa
del cable de programación. Por
facilidad, los C\•rnandos espe-
Figura 9.4 Comando$ utilizadosen el (fes:JtrOllo de programas

Curso práctico sobre Microcorrtroladores <iic- 1v.. :. ~


Mer_isaje Causa Posibles soluciones
Hardvr<i:e not B 1)ro9ran\a flO pudO • ReviSe la ruente oo alimemaoión OCI stamP
foond establecer comunicación • Asegire;euieel 1J1U<111ae;1ébrciona1>'.lot.;:. OOS
conelStamp • Revise el cable de conexión
~ Pruebe con un puerta diferente

- En ti caso del S1amp 11. salga <lel


programa y vuelva a entrar. especificando
d puerto que ubliza (S!amp 212 ó S13mp 2i1J

EEl'flOM verUy un problemaocurrió ~ Rr.\iisc la fuente de alim(Otación

foiled cuando el software


fue lei<IO o descargado • Intente reconectar el cable de progra.­nacióo
<r.t BA.'>IC$t.11l)f)
Va:rios mensajes E.Klsre un ettor - Revise 1a $intaxls00! programa
de error y porte de sintaxis en el y vuelvaa inten.ta1lo
del texto se 11umin.i programa qee se escribió

Figura 9.5 Me11s.1¡es de error que se pueden p¡eselllaf

rezca un mensaje de error en la pantalla, 1111fin Experimento No. 13


por la que consideramos de gran utilidadd rcsu- Encendery apagar un diodo LED
rnen que se muestra en la figura 9.5 y que inclu- Esre es el experimento básico por excelencia y
ye los mensajes de error más comunes, sus posi- quizás uno de los que brinda mayor satisfacción,
bles causas )' la forrn~ de solucionarlos. dado que representa el ingreso a este maravilloso
mundo de los microcontroladores.En la figura
El orden lógiro en que se deben seguir los ¡-,;1sos 9.6 se muestra el diagrama del circuito, inclu-
dd desarrollo de un programa,(:S el siguiente yendo el cable de programación. Para este pro-
yecto sólo se requiere una fuence de alimenta-
• Se ejecutael softwt1re sramp.exe ción externa de 5VCC.
• Se escribe en la pantalla el programa corres-
pondienrc En este punto, Ucg-~rnos a las insrruccioncs
• Se conecta el cable de programación entre la o comandos que se deben escribir, de acuerdo a
computadora y el circuito la tarea específica que se va a cumplir. En el artí-
• Se enciende la fuentede alimentación del circuito culo sobre los BASlC Stamp que se publicó en la
• Se compila y se descarga el programa hacia el edición anterior. se currcgó la tist~• completa de
microcontrolador, con el comando ALT-R las instrucciones propias de esre módulo.
• Anees de salir del programa de desarrollo se
debe guardar el prngranu, o los cambios que A parcir de ahora, y en codos los ejercicios
se hayan hecho que realicemos, iremos explicando la. esencia de
cada instrucción y los parámetros que involu-
Como sucede con casi rodo. la práctica es la cran. De codas formas, quienes están familiari-
que nos genera un verdadero conocimienro. Por zados con el lenguaje BASJC tradicional, reco-
tal l':l7.Ón. veremoscon 1 in uación unos ejerci­
;;¡ nocerán sin duda alguna la estrecha relación que
cios simples de programación con los cuales es- éste guarda coo el nuevo lenguaje en que tra-
pel'amos se disipen las dudas que puedan existir. bajamos, llamado PBASIC.

~ ~IT.:..Curso practico sobre MicroC1Jntroladores


r

•SV

~'

13

•• 25

••
••
PIN 11 busy
+SV

••
u
e,

"' ••
"'
••
_Q

••
!R
m
¡¡¡

..." ••
c.

•••
-c-
!j
Pin2-00


Rgura 9.6 Circuito otilizado paro el primercxperimefllo.Encelidcry apagar un aoao LEO

Primer caso. En la figura 9.7 se muestra el pri- La instrucción PAUSE (retardo) genera un
mer programa que se escribió para encender y ricmpo de espera,su parámcrro es el número que
apagar el diodo LED conectado al pin de en- se escribe frente a ella y que está dado en milise-
trada/salida número 7 de! Srarn p. En este caso gundos. Usted puede hacer diferentes pruebas
no se requieren demasiados comentarios ya que cambiando el número <le miliscgw1dos para ob-
es muy lógico e intuitivo. un claro ejemplo <le servar el resultado. En cuanto a I:¡ instrucción
las bondades <le la programación en un lengua- GOTO CI ( :J D. ésra sólo hace que el programa
je.de alro nivel. Las instrucciones High (alto) y se siga ejecutando iudefinidameme.
Loto (bajo), configuran el pin correspondienre
como salida, a la vez que le dan el nivel ló!:\ico &-gundo OL~o.En l:i figura 9.8 se muestra el se-
indicado poi· su propio nombre. El parámetro gundo programa escrito para encender y apagar el
utilizado por ellos es el número del pin referido diodo LEO. En esre caso, utilizamos una instruc-
(en este caso el pin 7).
ción del Sramp llamada TOGGLE, corno su era-

Figura 9. 7 Programa LED1.8AS. &u:iendey apaga un diodo LEO Figura 9.8 Programa LED2.BAS. Enciende y ap;¡ga un diOdo LED

Curso práctico sobre Microconúo/adores ÚKIT..:. •


t5V

'

•••
Pin 75 • GND
13 470!
2!.i 15V

••
••
Pinll - busy +5V

"' ••
lílkll
<>

"" ••
e,
-;¡¡-

u
"¡<>
••
... •• -1_t
••
.n

••
e-
e


'l
e,

••
Pm? llO
14

Rgura 9.9 Circuito de prueba. con un LEO y un botónpvi=Y

ducción lo indica, sirve para conmutar el estado de rimen ro. Allí cenemos un ciclo en el que se veri-
un pin. En este C'lSO el pin 7. que es donde está fica el estado del pin número 5. donde está co-
conectado el LE!). Luego de la instrucción que cam- nectado el pulsador; luego se hace un rerardo de
bia el esrado lógico del pin. se af,"T<:g:.• u11 retardo algunos milisegundos, )'.por último, se asigna a
generado por Ia insrrucción PAUSE. Si este retardo valor leído en la entrada al pin de salida númern
no se pone en este sirio, el LEO se verfa permanen- 7, donde está conectado el LED.
tcmcnrc encendido ya que la conmutación sería
demasiado rápida. Nuevamente, se u1ili:->J b etiqueta La instrucción DFBUG es muy especial, sir-
CICLO y la instrucción GOTO CICLO para eje- ve para mostrar en la pantalla de la computado-
cutar el progra.m:i indefinidamente. ra el valor o estado de algunas variables prescn-
res en el microcontrolador. Por lo can ro, se utili-
ExperimentoNo. 14 za frecuenrememe durante el desarrollo de al-
Controlandoel diodoLEO con un pulsador gún programa para monitorearcomo se esrá eje-
En la figura 9.9 se muestra el circuito utilizado
para el cxperirncmo, allí se ha adicionado un
botón pulsador conectado al pin 5 del Sramp.
En ese pwuo también se ha puesto una resisten-
cia que sirve para fijar un nivel lógico alto cuan-
do éste no es pulsado. L1 idea es leer el estado del
pulsador y de acuerdo a éste (pulsado o no pulsa-
do), tomar la decisión de encender o dejar apa-
gado el T.ED. Este ejercicio es mu)' importante
>'ªque por primera vez se hace lectura de señales
externas al rnicrocomrolador.

Primer caso. En b figurn 9.1 OS(' muestra el


primer prof,>Tama que se escribió para este expe- figura9.10Programa LED3:8AS. C-Ont(()/a un áiodlll.ED
,A ,,
V C«.KIT..:.corso práctico sobre Microcontto/ad-Ores
curando una carea. En este caso particular se uri- Si por d contrario, el pulsador está oprimí-
liza para mostrar en la pantalla el estado lógico do. se lecr:i un nivel lógico O y el microcontrola-
que riene el pin número 5, así podemos ver el dor ejecutará las instrucciones TOGGl.E 7 y
cambio entre unos y ceros cada vez que es opri- PAUSE, lo que genera un cambio en el estado
mido el pulsador. lógico del pin que maneja el LED y genera un
tiempo <le retardo, respecuvameorc. Esro quiere
La instrucción PAUSE genera un retardo de decir que, si se deja oprimido el pulsador,d lED
varios milisegundos, luego de los cuales. el valor va a estar cambiando de estado constantcmenrc
leído del pin 5 es pasado al pin 7 para controlar por lo que se verá titilar.
el LED. Así pues, cuando el pulsador cscá libre
se lee un nivel lógico alto y al poner este nivel en Para hacer los experimentos siguientes va·
la salida del LED, éste permanece apagado dada mos a utilizar el entrenador o circuito para pruc·
la forma en que está COnCCt2do. Cuando el pul- bas para el Basic Sramp l que se presenté en la
sador está oprimido, se lee un nivel lógico bajo, sección <le proyccros. Para cada experimento se
el cual, al pasar a la salida del LED permite que cnrregardel diagrama pictórico en donde se pre·
sé encienda. En algunos casos se noca el recudo senran las conexiones que se deben hacer en el
que hay entre el momento de oprimir el pulsa- entrenador para hacer el ejercicio, el diagrama
dor y el encendido del LEO. esto se debe a la esquemático y, por último, d programa que se
instrucción PAUSE. debe grabar en el microcenrrolador,

Segundo caso. En la figura 9.11 se mues- Ejercicio No.15


tra el segundo programa correspondiente a este Secuenciador con diodosLEO
ejemplo, como se puede ver, es más simple que Este ejercicio consiste en hacer u na rotación
el anterior. En este caso, recurrimos a una de en los cuarro diodos LED que posee el circuí·
las herramientas de programación más cono- ro ent rcnador, los cuales se conectan a los pi-
cidas en los lenguajes de alto nivel, los ciclos nes de entrada/salida !'O a P3 del microcon-
condicionales. En la línea if pin5 = 1 chen ci- trolador. En la figura 9.12 se muestran los
clo, se prueba el estado lógico que posee el pin diao;ramas csqucmárico y pictórico del experi-
donde se conectó el pulsador. Si ésrc no csrá mento. El programa que se escribió en el mi-
oprimido, d nivel lógico es 1 y por lo canco el croconrrolador incluye varias instrucciones
programa regresa a la eriqucra marcada ciclo y nuevas para nosotros, a continuación explica-
vuelve a hacer la pregunta. remos cada una de ellas.

La instrucción LET DlRS permite confi-


gurar los puertos del microconrrolador; en
este caso. un uno ( l) configura el pin corres-
pondiente como salida y un cero (O) lo hace
como entrada. El valor con que.: se programa
la dirección de los puenos esrá precedido por
un signo <le porcentaje (%) lo 4ue significa
que está dado en binario.

El delo principal del programa consiste


en llevar a los pines del puerto el valor co-
rrespondiente a las rotaciones, con el fin de
Figura 9.11 Progr¡¡ma LEIJ.f.BAS. C{/(rtrola 1111 diodo LEO lograr un efecto visual agradable.

CUtsa práctico sobre MícrlJC(l(ltro/adofeS c{é;cIT.~ ~


470<..l

Q~ DO
lt'V(.•
o-c:rutr ,,
.. . ,_, o J
,i:::¡ @)
";,,;¡',;

'ª 1 lw~ let dirs %00001111


" .QJJ:~
~o.ªº
J 1 =
rurinr
• e-\SJC 'S h\w;.. !

[O] 111111111
"(/O~ rotar:
,.,
ti:1J.. • +
{} "-' CES ..... ; ?.;J;~'
1111
01 for b2 ~ 0 to 3

~o
r.r+
c1.';"lC\'W
,. LOOKUP b2, (1,2,4,8),b-3
t:-ffiT,.

· · o
let pins = b3
~'() .Q~l,1.l)d,I ~. '"U
"D >;-1~n CCMl!l'(ICM.10-. ~S-~32

-- ..o"' pause 1000


&

~w
rr+t
~· l Cli'•WI
~ next
~ -II::J "
=
'----J
c-~ c»
· 0
F'e . goto rotar
·11:'11~
cocom
•"'V
t..,_•l•i
lfl .•
-~D ~- D~ o~~ ·=· -
s:
'" n-.. "'· ~
~~
111~•-:.•
DiSP'LA~ "'·~"1@21 Figura 9. 12 SecuenciadtJr con dicdcrs .E;
@.» l"lA. ~AWl:C!:

El ciclo FO.R realiza el mismo proceso du- Ejercicio No. 16


ran ce cuatro veces, dicha cuenta se lleva en la Transmisión de datos seriales vía RS-232
variable o posición de memoria RAM llama- Este experimento consiste en transmitir una serie de
da b2. La insrrucci6n LOOKUP se encarga daros desde el microcontrolador Basic Scamp 1 lu-
de p:•s:.r a b variable b3 los números que es- cia una computadora tipo PC, en la cual los daros !C
cán indicados dentro del paréntesis. reciben por un puercoserialy se mueseran en la pan-
talla. En nuestro caso, recurrimos al uso del prog;:.-
La instrucción Lec pins pasa el conreni- ma Hypercenninalde Wm.dows95 para la re.:q>-
do de la variable b3 hacia los pines del mi- ción de los datos ya que es de fácil uso y se encuecca
croconcrolador. De esca forma, los números disponibleen casi cualquier computadora,
1, 2, 4 y 8 se llevan a los puertos en forma
secuencial. formando una rotación en los Para convertir los datos que entrega el ~
LEO del entrenador, La instrucción Pause crocontrolador en lógica TTL a n iveles RS-:U:!
1000 genera un retardo de l segundo ( 1.000 se utiliza un circuico integrado referencia
ms) entre cada rotación. MAX232 y un conjunto de condensadores, a.
como se muestra en la figura 9.13. El pin ce
El uso de la instrucción LOOKUP es bas- transmisión de esce sistema debe conectarse a,
canre inreresante ya que permire hacer una se- pin <le recepción de la compuradora. Para d1o.
cu encía de números, sin que cenga que existir el entrenador posee un cable serial especialrneo-
alguna lógica u orden establecido entre ellos. te construido pala estos experimentos.

~ -KIT.:cursopráctico sobreMícrocontroladores
- IS\'

1bVlT
CoílOt!ns;JdOíCSde IOµf
llewur.r1u

Symbol doto = b0
Symbol i. = bl
let dirs %00000001
let pi.ns= %11111111
ci.clo:
let doto= 0
for i. = 1 to 8
let doto= doto+ 1
serout 0,T1Z00,(#b0)
pause 1000
next
goto ciclo
Rguro 9.13 Tronsmisl6n de dato.sseriales v~1RS-2.12

Para convenir los daros que cnu-ega el mi- El ciclo principal dd programa consiste en ha-
crocontrolador en lógic11TL a niveles RS-232,
cer un simple conrador de 1 a S y enviar por b salida
se u tiliza un circuito integrado referencia
serial dicho número de cal fom1a que, en la pantalla
MAX232 y un conjunto de condensadores, ral de la computadora, vayan apareciendo en forma se-
como Sé muestra en la figura 9.13. El pin de cuencial. Para ello, recurrimos a un cido FOR que
transmisión de. este sistema debe conectarse al se repite 8 veces, utilizando la variable daropam ha-
pin de recepción de la compuradora. Para ello. el cer la cuenta, La instrucción SEROUT se encarga
entrenador posee un cable serial cspecialmenn- de: sacar por un pin el dato en formaco RS-232.
construido para estos experirnenros.
Dicha instrucción tiene varios parámer ros
El programa empieza por la definición de dos de configuración que son: el pin del puerco por
variables, dasoe i. las cuales ocuparán l•s posiciones donde se sacan losdamsscrialmentc (en este caso
de memoria RAM Ilamadas bO y h l. Lueg«, se hace d pin 0), la velocidad de transmisión ( 1 .200 bps)
la programación de los puerros con Ja instrucción
y el dato o valor que se va a transmirir (corres-
LET DIRS, dejando como salida únicamente el pin ponde ,., la variable bO 6 dttfQ}. La instrucción
PO del microcontrolador. Además. el pin PO se ini- PAUSE genera un retardo de 1 segundo entre el
cializa en un nivel lógico aleo con la instrucción de envío de cada dato serial. Obviamente,en la corn-
cargar el puerto llamada LET PINS.
puradora el programa Hyperrcnniusl se confi-

Curso pr¡jctico So/lre Microcontroladores c.K-1fl:.:._ $


guro p:ua recibir tlacos a 1.200 Ejercicio No. 17 9.14 apareced hardwareuri-
bps, sin paridad, con daros de Recepciónde datos lizado para el ejercicio.
8 bits (l.200, 8, N. l). seriales vía RS­232
Este experimento consiste en El programa del micro-
Norc que en la instrucción recibir daros que llegan serial- controlador se inicia con b
SEROUT la velocidad se cscri- mente desde una computadora definición de la variable dato,
bió como Ti200 lo <]t1C signi- mediante una inrerfaz RS-232. clue ocupa la posición de me-
fica. 1. 200 bps con polaridad Los datos son enviados desde el moria RAM bO. Los puerros
verdadera ('lh1c); ésta corres- programa 1 Iyperterminal, d se programan de cal forma que
ponde a lógica RS-232conven- cual se ha configurado para tra-
cional. También existe la con- bajar a 1.200 bps, daros de 8 Symbol doto= b0
figuración N1200, que corres- bits, sin paridad y 1 hit de para- let di.rs %00001111
ponde a una velocidad de 1.200 da o srop (l.200, 8, N, 1). let pi.ns = %00000000
bps con lógica RS-232 invcrri-
da; ésta es úril cuando se cornu- r .os daros que se van a en- ciclo:
seri.n 7,T1200,b0
nican dispositivos TTLsin que viar corresponden a los valo- let pins =dato
haya conversión a valores de res ASCII de las cedas que
voltaje RS-232. pulse el usuario. En la figura goto ciclo

- t-!>V

HlSH -!Y.. tr Al pin de 'rxdl!


Col1dcor ..111::ire:­;oc 1011 I de computndo1 a
Ta11Utfü1

(<N OU

Figura 9.14 Recepciónde datos seriales l'fa RS-Z12

Curso practico sobre Microcontroladores


los pines PO a P3. que manejan el display, que- Existen dos formas de comunicación se-
den como salidas y los demás como entradas, rial: la sincrónica y la no sincrónica. En la co-
incluyendo el pin que lee los daros seriales. El municación sincrónica, además de una línea
ciclo principal del programa se limita a recibir sobre la que se transfieren los datos, se necesi-
datos con la instrucción SERIN y luego los pasa ta otra que contenga pulsos de reloj que indi-
al display. Note que la instrucción SERJN tie- quen cuando cada hit de daros es válido; la
ne varios parámcrros que deben ser especifica- duración del hit está determinada por la dura-
dos: el pin por donde se reciben Jos daros (el ción del pulso de sincronismo. En la cornuni-
pin 7), la velocidad de los mismos y su polari- cación no sincrónica los pulsos de reloj no son
dad (TI 200), y Ja variable a donde se pasa el necesarios y se acude a otros mecanismos para
dato que es recibido (posición bO). hacer la lecrura/escrirura de los daros; la dura-
ción de cada bit sobre la línea está determina-
En el display sólo se m uesrra el dJgiro de da por la velocidad con la cual se hace la rrans-
menor peso del valor ASCll recibido, por lo terencia de daros.
tanto, si se oprimen las cedas de los números
del O al 9, se puede apreciar dicho número en Los microconrroladorcs 1\ASIC Stamp II
los displays. poseen instrucciones especiales para hacer los
dos cipos de comunicación serial. Para la co-
Ejercicio No. 18 municación no sincrónica, por ejemplo del tipo
Comunicación serial sincrónica RS-232, se utilizan las instrucciones SERIN y
Existen dos formas de intercambiar información bi- SEROUT paca recibir y transmitir datos, res-
naria: la paralela y la serial. La comunicación serial pccrivarnenre. Para hacer la comunicación sin-
transmire un bit~la VC'L, por lo cual posee la venraja crónica, que es la qu(~ nos interesa, existen las
de necesitar un menor número de líneas para la trans- instrucciones denominadas SH!Ff!N y SHIF-
ferenciade la informacióny las distanciasa las cuales TOUT, las cuales permiten recibir y enviar da-
se puede hacer el intercambio son mayores. ros, respecrivamcnre, Para explicar el funciona-

Co11t!C:ll1ISC o.J
puerto semi

"' •"' RESH


_L_
.....
•"' -i
•"' •...•
RES
ce vss VOD
1189 PO =...E P15
he11úJ"a
• "'• P1
.ll!
"'
S:?
P14
P2 g P13
P3 Pll
1SV PI. P11
P5 P!O
P6 pg
P7 P8
SeriJI
(0·5V)

Figura 9.15 Conexi6ndel BASIC Stamp 11 y el ADC0831

Curso practko sobro Microc{Jl1tro/adores ~IT.:. •


miento de escas instrucciones vamos a leer un
• Dpin es una variable o constante (entre O.
converudor A/D serial de 8 biss, referencia 15) que especifica el pin que se conecta ah
ADC083 1 de Narional Scm icond ucror, línea de daros,
• Cpin es una variable o constante (entre O y
Lectura del convcrr idor ADC083 l. En la fi-
15) que especifica el pin en el cual se conectara
gura 9.15 se muesu ..a el diagrama esquemático
la señal de reloj para la comunicación serial
del circuito construido . El converr idor
• Mocle es un valor entre O y 3 que especifica
ADC0831 puede leer una señal análoga con
en que forma se recibirán los datos seriales,
un intervalo de variación enrre O y SV. y, entre-
a-abaja como se indica en la tabla 9. l.
ga en su salida, de forrna serial, el equivalente
• Resulr es un bit, nibble, byte o palabra en la
digital de 8 bits de la seiial leída. Este conver- cual se almacenará el dato recibido.
tidor posee eres pines de concrol para hacer la • bits es un parámetro opcional en el cual se espe-
comunicacién- el pin llamado es
(chip select) cifica cuantos bitr de daros S(: recibirán (l a 16),
se debe hahilitar antes de hacer una lectura
por defecio está configurado para datos de 8 bits..
(pasar a nivel lógico bajo) y se debe deshabili-
tar al terminarla (nivel lógico aleo), el pin ClK la instrucción DEBUG se eocarga de mostrar
(reloj) debe recibir una onda cuadrada en la
en la panralla de la computadora cl dato recibido del
cual cada pulso habilita la salida de un bit de
convertidor. Obviamente. el cabJe de programación
datos a través del pin DO.
debe permanecer conectado a la PC para que fun-
cione correcramcnre, El resto del programa es muy
El programa escrito para que el microcontro- sencillo y puede ser comprendido facilmence.
lador le• el daro del convertidor y lo presente en la
pantalla de la cornpuradora, se muestra en la figu- • MSBPRE O lee el bit MSB primero,
.r.a 9.16. En dicho listado se utiliza la instrucción muestrea bits antes del pulso de reloj
SHTfTlN para leer el dato serial; este comando se
• LSBPRE 1 Lee el bit lSB primero,
<.:ncarga de controlar los dos pines de comunica- muestrea bits anees del pulso de reloj
ción, es decir, genera los pulsos de reloj para el pin • MSBPOST 2 Lee cl bit MSB primero,
CLK y lee los bits que provienen del pin DO. faca
muestrea bits después del pulso
mstruoción posee el siguiente formato:
• LSBPOST 3 Lee el bit lSB primero,
muestrea bíts después del pulso
Shi.ftin dpin,cpin,mode,[resulc\bii:s)
Tabla 9.1 Forma de .recibir kJs datos seriales

AD res ver byto ~esultado de lo conversjón: un byte


t
es con 0 Chip select
ADat.a con l Datos
CLK con 2 ' Reloj
high es Oeshabil'ita AD(
agoi.n:
low es Activa el AOC0831.
shifttn AData, CLK .msbpos+, [ADres\9] ' Lec los datos
high es ' Desactiva el AOC0831
debug? ADres Muestra el resultado en la pantalla
pause 1000 • Retardo de un segundo
goto ogoin 1
Vuelve o empezar

Figura 9.16 Programa que lee los daros del ADC0831 con taiflS/Jucci(mSHIFTIN

• 4Í<1T..;. Curso práctico sobre Microcontroladores

También podría gustarte