Microcontroladores PDF
Microcontroladores PDF
Microcontroladores PDF
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
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.
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.
.O clí7c1T..:.
grama que presemamosen la 'figura l. 5 . presenres en las rcsrantcs computadoras.
Alarma sonora
'1~ -----'-?-----1--------•lll~
Vale O 1 Vale 1
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.
~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 dhgra
1
ma de bloques, figur.t 1.11.
O
Figura 1.13 Flecl>asqua indicanel nujo de ejecucióndel programa
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
••••••••
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) .
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
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
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:
~ú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
u
o o 1 1 la suma como el valor del acarreo (carry) que se
+ 1 + o + 1 transfiere a la siguiente columna.
~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.
Cudiqo ,-:,w1'.,..j ,
fuMte 1 , ••
tt f11rnl11>~l<t
Figura 3.1 Estructura del enS3mblador Figura 3.2 CíCIO de vid,1de un proyecto embebido
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.
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.
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
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,
-.:: 'l. - .
o
o
• •
.
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.
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,
-
;.' 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
Desplazamiento circular ce W
100001101 Dato original
1100001101 Resultado
- .!_ .... • -
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
• 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
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.
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
.. Fig11ra 4.1 La arquitectura del PIC 16F84 1lesrfe el punto de vista del programador
~~
_ 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 signiffc: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.
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.
: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
20· SubB
40•D•
Figura 4.13 Fu11ck!l•1111íento de una pila
Píla
··JO···
, 28m•mi··• •
¡~
W instrucción 30 '·mi-
..
' i::; PUERTOB
Continúa en la ' ' , !!l
><
lnstrucc1ón 82 ' lil3)- o
'C
e:
:::¡
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
...........
...~
......
,
.... &v.
, ~
'!
r~
,..,,º
1·~
~
4i'~f"'
!"'..,,,.
#$1u1'7o
~
.....
ra.,ir--.r.1<.
: .. - 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
•
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
entradasalida 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-
-::... ...
,
,.,., -~ •'"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 •••
·- -- ..
¡.,,,_ __ .....
.. _ .... ..,, '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.
--.....~-~-
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-¡,¡
r«
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~
,. #
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'($
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 '
'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,
..
• ,!
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".-
(Íó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
- -··---- -
... ··~:1
~
z- ~-
:~ ~-;
~::-- _.......___,,
... --: ..._--'.._
... ~.:::-. 1
~ •...,.- .. -
,'-.' 1
.--.:'!. ;;-;-1. : . I
- ·-~,,_
t ·--.::···- .t;
-~-...... ---
t.,,
...
::r /
1
·--...
-. ... . ..11
+
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.
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 ........
~ 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
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
"'._... . . _ 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
:=:.::=--..
~
: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-
-
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
~la in:>tl'lt<.x.;ón
~U
~· goco nciliz:t un <>pcr-.:indoquedea.e
Ctll]','t'U
• 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.
""'""""""''•-.,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
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.
.
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.
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".
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<).
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.
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'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,
de memoria RA1vf. que ~-e va a manejar. l-sre m:rp3 externa debido al 1 en el hit<• { 1 N'l"l:DC;),
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-
•'
;-
CQO o
fri fa Új,'Uf:\ 6.29 podcrucs :ipo.Uar ci \~Or q1.1~ .
T>R0
[QU
rqu
l
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;
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.
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 •
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
,,"'_
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.
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
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
+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 l0\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Á
~ 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
Pin 14
-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
.,,,...,_
•.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.,,.
• ,
~-· • °''
•• .,.,,'(u::(tt:n+ .. l'>Ul"ll
•"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!¡
~:::;::·
,,.,
'"~ ..... ll!
·'' ti 11
t~{ L4
12 13
11 12
10 11
1SV
9 1 ()
Í'"'
6 y
7 8
!i 7
-
!8 fi fljuslft dul
00111raste
11 ~
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.
\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: W10 Después Je la instrucción: rcgis 25
Otspu(s de 1:1 inst rucción: W=25
..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: W5A Ames de la instrucción: rcgis = l.), W 9 J
Después de la instrucción: W00 Después de la instrucción: regis = 13, W = 93
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.
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
¡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.
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
•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
'
•••
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
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.
Q~ DO
lt'V(.•
o-c:rutr ,,
.. . ,_, o J
,i:::¡ @)
";,,;¡',;
[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
~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!:
~ -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-
- t-!>V
(<N OU
Co11t!C:ll1ISC o.J
puerto semi
Figura 9.16 Programa que lee los daros del ADC0831 con taiflS/Jucci(mSHIFTIN