Sie sind auf Seite 1von 66

MANUAL DE MICROCONTROLADORES PIC

Contenido:
CAPITULO 1
Introduccin a los microcontroladores ( Microcontroladores PIC de Microchip)
CAPITULO 2
Programacin en lenguae ensam!lador
CAPITULO "
T#cnicas en lenguae ensam!lador
CAPITULO $
%&perimentos Introductorios
CAPITULO '
%&perimentos a(an)ados
1.1 Arquitectura Harvard La arquitectura tradiciona:
La ar*uitectura tradicional de computadoras + microprocesadores se !asa en el es*uema
propuesto por ,ohn -on .eumann/ en el cual la unidad central de proceso/ o CPU/ esta
conectada a una memoria 0nica *ue contiene las instrucciones del programa + los datos
(1igura 12121)2 %l tama3o de la unidad de datos o instrucciones esta 1iado por el ancho del
!us de la memoria2 %s decir *ue un microprocesador de 4 !its/ *ue tiene adem5s un !us
de 4 !its *ue lo conecta con la memoria/ de!er5 manear datos e instrucciones de una o
m5s unidades de 4 !its (!+tes) de longitud2 Cuando de!a acceder a una instruccin o dato
de m5s de un !+te de longitud/ de!er5 reali)ar m5s de un acceso a la memoria2 Por otro
lado este !us 0nico limita la (elocidad de operacin del microprocesador/ +a *ue no se
puede !uscar de memoria una nue(a instruccin/ antes de *ue 1inalicen las trans1erencias
de datos *ue pudieran resultar de la instruccin anterior2 %s decir *ue las dos principales
limitaciones de esta ar*uitectura tradicional son 6
a) *ue la longitud de las instrucciones esta limitada por la unidad de longitud de los datos/
por lo tanto el microprocesador de!e hacer (arios accesos a memoria para !uscar
instrucciones compleas/

!) *ue la (elocidad de operacin (o ancho de !anda de operacin) esta limitada por el
e1ecto de cuello de !otella *ue signi1ica un !us 0nico para datos e instrucciones *ue
impide superponer am!os tiempos de acceso2
La ar*uitectura (on .eumann permite el dise3o de programas con cdigo
automodi1ica!le/ pr5ctica !astante usada en las antiguas computadoras *ue solo ten7an
acumulador + pocos modos de direccionamiento/ pero innecesaria/ en las computadoras
modernas2

!I". 1.1.1 Arquitectura #on Ne$%ann
La arquitectura Harvard & 'u' venta(a':
La ar*uitectura conocida como 8ar(ard/ consiste simplemente en un es*uema en el *ue
el CPU esta conectado a dos memorias por intermedio de dos !uses separados2 Una de
las memorias contiene solamente las instrucciones del programa/ + es llamada Memoria
de Programa2 La otra memoria solo almacena los datos + es llamada Memoria de 9atos
(1igura 12122)2 Am!os !uses son totalmente independientes + pueden ser de distintos
anchos2 Para un procesador de :et de Instrucciones ;educido/ o ;I:C (;educed
Instruccin :et Computer)/ el set de instrucciones + el !us de la memoria de programa
pueden dise3arse de manera tal *ue todas las instrucciones tengan una sola posicin de
memoria de programa de longitud2 Adem5s/ como los !uses son independientes/ el CPU
puede estar accediendo a los datos para completar la eecucin de una instruccin/ + al
mismo tiempo estar le+endo la pr&ima instruccin a eecutar2 :e puede o!ser(ar
claramente *ue las principales (entaas de esta ar*uitectura son6
a) *ue el tama3o de las instrucciones no esta relacionado con el de los datos/ + por lo
tanto puede ser optimi)ado para *ue cual*uier instruccin ocupe una sola posicin de
memoria de programa/ logrando as7 ma+or (elocidad + menor longitud de programa/

!) *ue el tiempo de acceso a las instrucciones puede superponerse con el de los datos/
logrando una ma+or (elocidad de operacin2
Una pe*ue3a des(entaa de los procesadores con ar*uitectura 8ar(ard/ es *ue de!en
poseer instrucciones especiales para acceder a ta!las de (alores constantes *ue pueda
ser necesario incluir en los programas/ +a *ue estas ta!las se encontraran 17sicamente en
la memoria de programa (por eemplo en la %P;OM de un microprocesador)2
!I". 1.1.) Arquitectura Harvard
Los microcontroladores PIC 1<C'=/ 1<C== + 1>C== poseen ar*uitectura 8ar(ard/ con
una memoria de datos de 4 !its/ + una memoria de programa *ue/ seg0n el modelo/
puede ser de 12 !its para los 1<C'=/ 1$ !its para los 1<C== + 1< !its para los 1>C==2
1.) Dia*ra%a de +oque'
Dia*ra%a de +oque' de o' %icrocontroadore' PIC1,!-.
1./ Ma0a' de %e%oria Me%oria Interna 1RAM2
Or*ani3aci4n
La memoria interna de datos/ tam!i#n llamada archi(o de registros (register 1ile)/ esta
di(idida en dos grupos6 los registros especiales/ + los registros de propsito generales2
Los primeros ocupan las 11 posiciones primeras *ue (an desde la ?? a la ?@/ + los
segundos las posiciones *ue siguen/ o sea de la ?4 a la $A2
Los registros especiales contienen la pala!ra de estado (:TATU:)/ los registros de datos
de los tres puertos de entrada salida (Puerto A/ Puerto @/ Puerto C)/ los 4 !its menos
signi1icati(os del program counter (PC)/ el contador del ;eal Time ClocBCCounter (;TCC)
+ un registro puntero llamado Aile :elect ;egister (A:;)2 La posicin ?? no contiene
ning0n registro en especial + es utili)ada en el mecanismo de direccionamiento indirecto2
Los registros de propsito general se di(iden en dos grupos 6 los registros de posicin 1ia
+ los !ancos de registros2 Los primeros ocupan las 4 posiciones *ue (an de la ?4 a la ?A2
los !ancos de registros consisten en hasta cuatro grupos o !ancos de 1< registros cada
uno/ *ue se encuentran superpuestos en las direcciones *ue (an de la 1? a la 1A2 :e
puede operar con un solo !anco a la (e)/ el cual se selecciona mediante los !its ' + < del
Aile :elect ;egister (A:;)
!I". 1./.1 Or*ani3aci4n de a %e%oria Interna 1RAM2 en a 5a%iia PIC1,C6.
Me%oria de Pro*ra%a
Or*ani3aci4n
La memoria de programa/ *ue en los PIC1<C'= puede ser de '12 a 2D instrucciones/
de!e ser considerada a los e1ectos de la programacin/ como compuesta por secciones o
p5ginas de '12 posiciones2 A su (e) cada p5gina de!e considerarse di(idida en dos
mitades de 124 posiciones cada una2 %sto se de!e/ como se (er5/ a las limitaciones de
direccionamiento de las instrucciones de salto
!I". 1./.) Or*ani3aci4n de a %e%oria de 0ro*ra%a en a 5a%iia PIC1,C6.
1.7 Re*i'tro' de 5uncione' e'0eciae' Ca%ino de o' dato' & re*i'tro 8
La 1igura 12$22 representa un diagrama simpli1icado de la ar*uitectura interna del camino
de los datos en el CPU de los microcontroladores PIC2 %ste diagrama puede no
representar con e&actitud el circuito interno de estos microcontroladores/ pero es e&acto +
claro desde la ptica del programador2 La 1igura 12$21 representa el mismo diagrama para
un microprocesador 1icticio de ar*uitectura tradicional2 :e puede o!ser(ar *ue la principal
di1erencia entre am!os radica en la u!icacin del registro de tra!ao/ *ue para los PICEs se
denomina F (ForBing ;egister)/ + para los tradicionales es el Acumulador (A)2
%n los microcontroladores tradicionales todas las operaciones se reali)an so!re el
acumulador2 La salida del acumulador esta conectada a una de las entradas de la Unidad
Aritm#tica + Lgica (ALU)/ + por lo tanto #ste es siempre uno de los dos operandos de
cual*uier instruccin2 Por con(encin/ las instrucciones de simple operando (!orrar/
incrementar/ decrementar/ complementar)/ act0an so!re el acumulador2 La salida de la
ALU (a solamente a la entrada del acumulador/ por lo tanto el resultado de cual*uier
operacin siempre *uedara en este registro2 Para operar so!re un dato de memoria/ luego
reali)ar la operacin siempre ha+ *ue mo(er el acumulador a la memoria con una
instruccin adicional2
%n los microcontroladores PIC/ la salida de la ALU (a al registro F + tam!i#n a la
memoria de datos/ por lo tanto el resultado puede guardarse en cual*uiera de los dos
destinos2 %n las instrucciones de do!le operando/ uno de los dos datos siempre de!e
estar en el registro F/ como ocurr7a en el modelo tradicional con el acumulador2 %n las
instrucciones de simple operando el dato en este caso se toma de la memoria (tam!i#n
por con(encin)2 La gran (entaa de esta ar*uitectura es *ue permite un gran ahorro de
instrucciones +a *ue el resultado de cual*uier instruccin *ue opere con la memoria/ +a
sea de simple o do!le operando/ puede dearse en la misma posicin de memoria o en el
registro F/ seg0n se seleccione con un !it de la misma instruccin2 Las operaciones con
constantes pro(enientes de la memoria de programa (literales) se reali)an solo so!re el
registro F2
%n la memoria de datos de los PICEs se encuentran u!icados casi todos los registros de
control del microprocesador + sus peri1#ricos autocontenidos/ + tam!i#n las posiciones de
memoria de usos generales2 %n el caso de los 1<C'=/ algunos registros especiales de
solo escritura (T;I: + OPTIO.) no est5n accesi!les dentro del !lo*ue de memoria de
datos/ sino *ue solo se pueden cargar desde el registro F por medio de instrucciones
especiales2
Contador de Pro*ra%a
%ste registro/ normalmente denominado PC/ es totalmente e*ui(alente al de todos los
microprocesadores + contiene la direccin de la pr&ima instruccin a eecutar2 :e
incrementa autom5ticamente al eecutar cada instruccin/ de manera *ue la secuencia
natural de eecucin del programa es lineal/ una instruccin despu#s de la otra2 Algunas
instrucciones *ue llamaremos de control/ cam!ian el contenido del PC alterando la
secuencia lineal de eecucin2 9entro de estas instrucciones se encuentran el GOTO + el
CALL *ue permiten cargar en 1orma directa un (alor constante en el PC haciendo *ue el
programa salte a cual*uier posicin de la memoria2 Otras instrucciones de control son los
:DIP o HsalteosI condicionales/ *ue producen un incremento adicional del PC si se
cumple una condicin especi1ica/ haciendo *ue el programa saltee/ sin eecutar/ la
instruccin siguiente2
%l PC es un registro de J !its en los 1<C'$C''/ 1? !its en el 1<C'</ + 11 !its en el 1<C'>/
lo *ue permite direccionar respecti(amente '12/ 1?2$ o 2?$4 posiciones de memoria de
programa2
Al resetearse el microprocesador/ todos los !its del PC toman (alor 1/ de manera *ue la
direccin de arran*ue del programa es siempre la ultima posicin de memoria de
programa2 %n esta posicin se de!er5 poner una instruccin de salto al punto donde
(erdaderamente se inicia el programa2
A di1erencia de la ma+or7a de los microprocesadores con(encionales/ el PC es tam!i#n
accesi!le al programador como registro de memoria interna de datos/ en la posicin de
?22 %s decir *ue cual*uier instruccin com0n *ue opere so!re registros puede ser
utili)ada para alterar el PC + des(iar la eecucin del programa2 %l uso indiscriminado de
este tipo de instrucciones complica el programa + puede ser mu+ peligroso/ +a *ue puede
producir comportamientos di17ciles de predecir2 :in em!argo/ algunas de esta
instrucciones utili)adas con cierto m#todo/ pueden ser mu+ 0tiles para implementar
poderosas estructuras de control tales como el goto computado2 Como el
microprocesador opera con datos de 4 !its/ + la memoria de datos es tam!i#n de 4 !its/
estas instrucciones solo pueden leer o modi1icar los !its ? a > del PC2
Stac9
%n los microcontroladores PIC el stacB es una memoria interna dedicada/ de tama3o
limitado/ separada de las memorias de datos + de programa/ inaccesi!le al programador/
+ organi)ada en 1orma de pila/ *ue es utili)ada solamente/ + en 1orma autom5tica/ para
guardar las direcciones de retorno de su!rrutinas e interrupciones2 Cada posicin es de
11 !its + permite guardar una copia completa del PC2 Como en toda memoria tipo pila/ los
datos son accedidos de manera tal *ue el primero *ue entra es el ultimo *ue sale2
%n los 1<C'= el stacB es de solo dos posiciones/ mientras *ue en los 1<C== es de 4
posiciones + en los 1>C== es de 1< posiciones2 %sto representa/ en cierta medida/ una
limitacin de estos microcontroladores/ +a *ue no permite hacer uso intensi(o del
anidamiento de su!rutinas2 %n los 1<C'=/ solo se pueden anidar dos ni(eles de
su!rutinas/ es decir *ue una su!rutina *ue es llamada desde el programa principal/ puede
a su (e) llamar a otra su!rutina/ pero esta ultima no puede llamar a una tercera/ por*ue
se des!orda la capacidad del stacB/ *ue solo puede almacenar dos direcciones de
retorno2 %sto de hecho representa una tra!a para el programador + adem5s parece
impedir o di1icultar la programacin estructurada/ sin em!argo es una !uena solucin de
compromiso +a *ue estos microcontroladores est5n dise3ados para aplicaciones de alta
(elocidad en tiempo real/ en las *ue el o(erhead (demoras adicionales) *ue ocasiona un
e&cesi(o anidamiento de su!rutinas es inacepta!le2 Por otra parte e&isten t#cnicas de
organi)acin del programa *ue permiten mantener la claridad de la programacin
estructurada/ sin necesidad de utili)ar tantas su!rutinas anidadas2
Como +a se menciono anteriormente/ el stacB + el puntero interno *ue lo direcciona/ son
in(isi!les para el programador/ solo se los accede autom5ticamente para guardar o
rescatar las direcciones de programa cuando se eecutan las instrucciones de llamada o
retorno de su!rutinas/ o cuando se produce una interrupcin o se eecuta una instruccin
de retorno de ella2
Paa+ra de E'tado de Proce'ador
La pala!ra de estado del procesador contiene los tres !its de estado de la ALU (C/ 9C +
K)/ + otros !its *ue por comodidad se inclu+eron en este registro2
> < ' $ " 2 1 ? ;egistro :TATU:

%l !it K indica *ue el resultado de la ultima operacin 1ue C%;O2 %l !it C indica acarreo
del !it m5s signi1icati(o (!it >) del resultado de la ultima operacin de suma2 %n el caso de
la resta se comporta a la in(ersa/ C resulta 1 si no hu!o pedido de pr#stamo2 %l !it 9C
(digit carr+) indica acarreo del cuarto !it (!it ") del resultado de la ultima operacin de
suma o resta/ con un comportamiento an5logo al del !it C/ + es 0til para operar en @C9
(para sumar o restar n0meros en cdigo @C9 empa*uetado)2 %l !it C es usado adem5s
en las operaciones de rotacin derecha o i)*uierda como un paso intermedio entre el !it ?
+ el !it >2
%l !it P9 (POF%; 9OF.) sir(e para detectar si la alimentacin 1ue apagada + encendida
nue(amente/ tiene *ue (er con la secuencia de iniciali)acin/ el Latch dog timer + la
instruccin sleep/ + su uso se detallara en la seccin re1erida al modo POF%; 9OF.2 %l
!it TO (TIM%MOUT) sir(e para detectar si una condicin de reset 1ue producida por el
Latch dog timer/ esta relacionado con los mismos elementos *ue el !it anterior + su uso
se detallara en la seccin re1erida al FATC8 9OG TIM%;2 Los !its de seleccin de
pagina PA?CPA1CPA2 se utili)an en las instrucciones de salto GOTO + CALL/ + se
e&plicaran con detalle en la seccin re1erida a las instrucciones de control/ + a la
organi)acin de la memoria de programa2 %n realidad en el 1<C'$ estos !its no se usan +
sir(en para propsitos generales2 %n el 1<C'> el PA? si se usa pero los otros dos no2 %n
el 1<C'' se utili)an PA? + PA12 PA2 esta reser(ado para uso 1uturo + en cual*uiera de
los PIC 1<C'= sir(e para propsitos generales2
OTROS RE"ISTROS ESPECIALES
Las ocho primeras posiciones del 5rea de datos est5n reser(adas para aloar registros de
propsito especial/ *uedando las restantes li!res para contener los datos u operandos
*ue se desee (registros de propsito general)2
%l registro I.9A *ue ocupa la posicin ? no est5 implementando 17sicamente +/ como se
ha e&plicado/ se le re1erencia en el direccionamiento indirecto de datos aun*ue se utili)a
el contenido de A:;2
%n la direccin esta el registro TA;? (Tempori)ador) *ue puede ser le7do + escrito como
cual*uier otro registro2 Puede incrementar su (alor con una se3al e&terna aplicada al pin
T?CDI o mediante el oscilador interno2
%l PC ocupa la posicin 2 del 5rea de datos en donde se halla el registro PCL al *ue se
a3aden " !its au&iliares + se conectan con los dos ni(eles de la Pila en las instrucciones
CALL + ;%TLF2
%l registro de %stado ocupa la posicin " + entre sus !its se encuentran los
se3ali)adores
C/ 9C + K + los !its PA1 + PA? *ue seleccionan la p5gina en la memoria de programa2 %l
!it > (PA2) no est5 implementando en los PIC de la gama !aa2
A;: se u!ica en la direccin $ + puede usarse para contener las direccin del dato en las
instrucciones con direccionamiento indirecto + tam!i#n para guardar operandos en sus '
!its de menos peso2
Los registros *ue ocupan las posiciones ' /< + > soportan los Puertos A/ @ + C de %C:2
Pueden ser le7dos + escritos como cual*uier otro registro + manean los (alores de los !its
*ue entran + salen por los pines de %C: del microcontrolador2
1.6 Puerto' de entrada : 'aida Los microprocesadores PIC1<C'= tienen dos o tres
puertos de entradaCsalida paralelo de usos generales llamados Puerto A/ Puerto @ +
Puerto C2 %l Puerto A es de cuatro !its + los dem5s son de 4 !its cada uno2 %l Puerto C
solamente esta disponi!le en el 1<C'' + el 1<C'>2
Circuito equivaente
%l circuito e*ui(alente de un !it cual*uiera de un puerto de entrada salida es el siguiente
Circuito equivaente de 0uerto I:O
%l latch L1 corresponde a un !it del registro de datos del puerto/ mientras *ue L2 es un !it
del registro de control de tristate del mismo2 @1 es el !u11er tristate de salida *ue tiene
capacidad de entregar 2? mA + drenar 2' mA2 @1 es controlado por L22 :i L2 tiene
cargado un H1I/ @1 se encuentra en triMstate/ es decir con la salida desconectada (en alta
impedancia)/ + el puerto puede ser usado como entrada2 :i L2 tiene cargado un H?I/ la
salida de @1 esta conectada (!aa impedancia) + el puerto esta en modo de salida2 @2 es
el !u11er de entrada/ es decir el *ue pone los datos en el !us interno del microcontrolador
cuando se lee el registro de datos del puerto2 Puede (erse *ue el dato le7do es
directamente el estado del pin de entrada
1., Dia*ra%a 4*ico
Dia*ra%a 4*ico 0ara o' %icrocontroadore' PIC1,C67:6,
Dia*ra%a 4*ico 0ara o' %icrocontroadore' PIC1,C66:6;
1.; Te%0ori3ador:Contador 1RTCC2 %ste dispositi(o/ llamado ;eal Time ClocB C
Counter/ es !5sicamente un contador de 4 !its/ constituido por el registro operacional
;TCC *ue se encuentra en la posicin ?1 de la memoria de datos2 %ste registro puede
usarse para contar e(entos e&ternos por medio de un pin de entrada especial (modo
contador) o para contar pulsos internos de relo de 1recuencia constante (modo timer)2
Adem5s/ en cual*uiera de los dos modos/ se puede insertar un prescaler/ es decir un
di(isor de 1recuencia programa!le *ue puede di(idir por 2/ $/ 4/ 1</ "2/ <$/ 124 o 2'<2
%ste di(isor puede ser utili)ado alternati(amente como prescaler del ;TCC o como
postscaler del Fatch 9og Timer/ seg0n se lo programe2
Para su programacin se dispone de dos registros6 el ;TCC +a mencionado + el registro
OPTIO.2 %ste 0ltimo no es accesi!le como memoria de datos/ no se lo puede leer de
ninguna manera/ + solo se lo puede escri!ir con la instruccin especial OPTIO. (1amilia
PIC1<C'=)2 %ste registro contiene los !its necesarios para seleccionar modo contador o
modo timer/ 1lanco de conteo en modo contador/ prescaler para ;TCC o para F9T +
constante de di(isin del prescaler/ seg0n el siguiente es*uema6
A continuacin se muestra un circuito e*ui(alente del ;TCC (TM;?) + el prescaler2
%n el es*uema se puede o!ser(ar claramente como operan los !its de con1iguracin
T?:%/ T?C: + P:A/ en cual*uiera de sus com!inaciones2 :e o!ser(a adem5s *ue en la
entrada del contador ;TCC ha+ un circuito de sincroni)acin *ue introduce una demora
de dos ciclos del clocB de instrucciones (Aosc2 C $)2 Al escri!ir so!re el ;TCC
autom5ticamente se resetea este circuito/ por lo tanto solo se incrementara dos ciclos
despu#s2
%l prescaler es un contador asincrnico de 4 !its m5s un multiple&or 4 a 1 comandado por
los !its P:? a P:2/ *ue permite seleccionar como salida a cual*uiera de los !its del
contador2 Al escri!ir so!re el ;TCC/ si este esta programado para operar con prescaler
(P:AN?)/ se !orra autom5ticamente el prescaler2 Las instrucciones CL;F9T + :L%%P
!orran el prescaler/ si este esta programado para operar como postscaler del Latch dog
timer (P:AN1)2
1.- Interru0cione' Los 1<C== agregan la posi!ilidad de contar con sistema de
interrupciones2 %ste sistema consiste en un mecanismo por el cual un e(ento interno o
e&terno/ asincrnico respecto del programa/ puede interrumpir la eecucin de #ste
produciendo autom5ticamente un salto a una su!rutina de atencin/ de manera *ue
pueda atender inmediatamente el e(ento/ + retomar luego la eecucin del programa
e&actamente en donde esta!a al momento de ser interrumpido2 %ste mecanismo es mu+
0til por eemplo para el maneo de timers o rutinas *ue de!en repetirse peridicamente
(re1resh de displa+/ antire!ote de teclado/ etc2)/ deteccin de pulsos e&ternos/ recepcin
de datos/ etc2
%&isten de tres a doce e(entos *ue pueden generar interrupciones en los PIC1<C==
e&istentes hasta el momento/ pero nada impide *ue puedan agregarse m5s en (ersiones
1uturas2
!unciona%iento
%n los 1<C== las interrupciones se comportan casi e&actamente igual *ue las su!rutinas2
9esde el punto de (ista del control del programa/ al producirse una interrupcin se
produce el mismo e1ecto *ue ocurrir7a si el programa tu(iese un CALL ???$h en el punto
en *ue se produo la interrupcin2 %n uno de los registros de control del sistema de
interrupciones e&iste un !it de ha!ilitacin general de interrupciones GI%/ *ue de!e ser
programado en 1 para *ue las interrupciones puedan actuar2 Al producirse una
interrupcin/ este !it se !orra autom5ticamente para e(itar nue(as interrupciones2 La
instruccin ;%TAI% *ue se utili)a al 1inal de la rutina de interrupcin/ es id#ntica a un
retorno de su!rutina/ sal(o *ue adem5s coloca en uno autom5ticamente el !it GI%
(ol(iendo a ha!ilitar las interrupciones2 9entro de la rutina de interrupcin/ el programa
de!er5 pro!ar el estado de los 1lags de interrupcin de cada una de las 1uentes
ha!ilitadas/ para detectar cual 1ue la *ue causo la interrupcin + as7 decidir *ue accin
tomar2
L4*ica de interru0cione' 0ara o' <controadore' PIC1,!-.
!uente'
La se3al *ue produce la interrupcin es en realidad una sola/ *ue resulta de la
com!inacin de todas las 1uentes posi!les + de los !its de ha!ilitacin2 %&isten dos grupos
de 1uentes/ unas *ue se ha!ilitan con solo colocar en uno el !it GI%/ + otras *ue adem5s
necesitan *ue este puesto a uno el !it P%I%2 %n algunas (ersiones de los 1<C== solo
e&iste el primer grupo2 Adem5s/ cada 1uente de interrupciones tiene su respecti(o !it de
ha!ilitacin indi(idual2
Las 1uentes de interrupcin (ar7an con cada (ersin/ + pueden ser por eemplo6
O Interrupcin e&terna por pin ;@?CI.T
O 9es!orde del Timer ? o ;TCC
O Cam!io en el estado de los !its $ a > del puerto @
O 9es!orde del timer 1
O 9es!orde del timer 2
O Interrupcin del captureCcompare 1
O Interrupcin del captureCcompare 2
O transmisin o recepcin de un caracter por la inter1ace serie sincrnica
O transmisin o recepcin de un caracter por la inter1ace serie asincrnica
O Ain de con(ersin AC9
O LecturaCescritura del puerto paralelo de comunicacin con otros microprocesadores
O %scritura de %%P;OM 1inali)ada
Pro*ra%a 5uente:
%l programa 1uente esta compuesto por una sucesin de l7neas de programa2 Cada l7nea
de programa esta compuesta por $ campos separados por uno o m5s espacios o
ta!ulaciones2 %stos campos son6
=Etiqueta> Co%ando =O0erando1'2> =?Co%entario>
La eti*ueta es opcional2 %l comando puede ser un mnemnico del conunto de
instrucciones2 %l operando esta asociado al comando/ si no ha+ comando no ha+
operando/ e inclusi(e algunos comandos no lle(an operando2 %l comentario es opcional
para el compilador aun*ue es !uena pr5ctica considerarlo o!ligatorio para el
programador2
La eti*ueta/ es el campo *ue empie)a en la primer posicin de la l7nea2 .o se pueden
insertar espacios o ta!ulaciones antes de la eti*ueta sino ser5 considerado comando2
Identi1ica la l7nea de programa haciendo *ue el compilador le asigne un (alor
autom5ticamente2 :i se trata de una l7nea cu+o comando es una instruccin de programa
del microcontrolador/ se le asigna el (alor de la direccin de memoria correspondiente a
dicha instruccin (location counter)2 %n otros casos se le asigna un (alor de una
constante/ o la direccin de una (aria!le/ o ser5 el nom!re de una macroinstruccin/ etc2
%l comando puede ser un cdigo mnemnico de instruccin del microcontrolador/ o una
directi(a o pseudoinstruccin para el compilador2 %n el primer caso ser5 directamente
traducido a cdigo de ma*uina/ en el segundo caso ser5 interpretado por el compilador +
reali)ara alguna accin en tiempo de compilacin como ser asignar un (alor a una
eti*ueta/ etc2
%l campo de par5metros puede contener uno o m5s par5metros separados por comas2
Los par5metros dependen de la instruccin o directi(a2 Pueden ser n0meros o literales
*ue representen constantes o direcciones2
%l campo de comentario de!e comen)ar con un caracter punto + coma2 .o necesita tener
espacios o ta!ulaciones separ5ndolo del campo anterior/ e incluso puede empe)ar en la
primer posicin de la l7nea2 %l compilador ignora todo el te&to *ue contenga la l7nea
despu#s de un caracter punto + coma2 9e esta manera pueden incluirse l7neas *ue
contengan solo comentarios/ + es mu+ !uena pr5ctica hacer uso + a!uso de esta
posi!ilidad para *ue los programas resulten autodocumentados2
).1 Con(unto de in'truccione' %l conunto de instrucciones de los microprocesadores
PIC 1<C'= consiste en un pe*ue3o repertorio de solo "" instrucciones de 12 !its/ *ue
pueden ser agrupadas para su estudio en tres a cinco grupos2 %n este curso se ha optado
por clasi1icarlas/ desde el punto de (ista del programador/ en cinco categor7as !ien
de1inidas de acuerdo con la 1uncin + el tipo de operandos in(olucrados2 %n primer lugar
se agrupan las instrucciones *ue operan con !+tes + *ue in(olucran alg0n registro de la
memoria interna2 %n segundo lugar se anali)aran las instrucciones *ue operan solo so!re
el registro F + *ue permiten cargarle una constante impl7cita o incluida literalmente en la
instruccin (literales)2 %n tercer lugar se agrupan las instrucciones *ue operan so!re !its
indi(iduales de los registros de la memoria interna2 %n cuarto lugar se clasi1ican las
instrucciones de control de 1luo del programa/ es decir las *ue permiten alterar la
secuencia lineal de eecucin de las instrucciones2 Por 0ltimo se agrupan unas pocas
instrucciones *ue llamaremos especiales/ cu+as 1unciones o tipos de operandos son mu+
espec71icos + no encaan en ninguna de las clasi1icaciones anteriores2
In'truccione' de @&te que o0eran con Re*i'tro'
%stas instrucciones pueden ser de simple o do!le operando de origen2 %l primer operando
de origen ser5 siempre el registro seleccionado en la instruccin/ el segundo/ en caso de
e&istir/ ser5 el registro F2 %l destino/ es decir donde se guardara el resultado/ ser5 el
registro seleccionado o el F/ seg0n se seleccione con un !it de la instruccin2
%l 1ormato gen#rico de estas instrucciones es el siguiente 6

? 1 2 " $ ' , ; - A 1B 11
d 5 5 5 5 5
Los !its ? a $ (' !its)/ denominados H1I permiten seleccionar uno de "2 registros de la
memoria interna2 %l !it '/ denominado HdI/ permite especi1icar el destino del resultado2 :i
d N 1 el resultado se guardara en el registro seleccionado2 :i d N ? el resultado se
guardara en F2 Los !its < a 11 identi1ican la instruccin especi1ica a reali)ar2
Las instrucciones siguientes son las tres operaciones lgicas de do!le operando 6
AND8! 5Cd ?o0eraci4n AND 4*icaC de'tino D 8 E 5
IOR8! 5Cd ?o0eraci4n OR 4*icaC de'tino D 8 E 5
.OR8! 5Cd ?o0eraci4n .OR 4*icaC de'tino D 8 E 5
Los nom!res mnemnicos de estas instrucciones pro(ienen de 6 A.9 F con A/ Inclusi(e
O; F con A + =O; F con A2
Las *ue siguen son las cuatro operaciones aritm#ticas + lgicas sencillas de simple
operando 6
MO#! 5Cd ?%ovi%iento de dato'C de'tino D 5
COM! 5Cd ?co%0e%ento 4*icoC de'tino D NOT 5
INC! 5Cd ?incre%ento arit%FticoC de'tino D 5 G 1
DEC! 5Cd ?decre%ento arit%FticoC de'tino D 5 H 1
Los mnemnicos de estas instrucciones pro(ienen de 6 MO-e Aile/ COMplement Aile/
I.Crement Aile + 9%Crement Aile2
%n las siete instrucciones anteriores el 0nico !it a1ectado de la pala!ra de estado del
procesador es el K/ *ue se pone en 1 si el resultado de la operacin es ????????/ + se
pone en ? si el resultado tiene cual*uier otro (alor2

A continuacin siguen las dos instrucciones de rotacin de !its a tra(#s del CA;;P 6
RL! 5Cd ?rotaci4n a a i3quierdaC de'tino D 5 ROT E
RR! 5Cd ?rotaci4n a a derecIaC de'tino D 5 ROT E
%n estas operaciones (;otate Le1t Aile + ;otate ;ight Aile) los !its son despla)ados de
cada posicin a la siguiente/ en sentido derecho o i)*uierdo2 %l despla)amiento es
cerrado/ 1ormando un anillo/ con el !it C (CA;;P) de la pala!ra de estado2
%n estas dos instrucciones/ el 0nico !it a1ectado de la pala!ra de estado del procesador
es el !it C/ *ue tomar5 el (alor *ue tenia el !it > o el !it ?/ seg0n sea el sentido del
despla)amiento2
%stas instrucciones son mu+ 0tiles para la manipulacin de !its/ + adem5s para reali)ar
operaciones aritm#ticas/ +a *ue en numeracin !inaria/ despla)ar un n0mero a la
i)*uierda es e*ui(alente a multiplicarlo por 2/ + hacia la derecha/ a di(idirlo por 22
La instruccin siguiente reali)a el intercam!io de posiciones entre los cuatro !its menos
signi1icati(os + los cuatro m5s signi1icati(os (ni!!le !ao + ni!!le alto)2
S8AP! 5Cd ?interca%+ia ni++e'C de'tino D S8AP 5
%sta instruccin (:FAP Aile) no a1ecta ninguno de los !its de la pala!ra de estado del
procesador2
%sta instruccin es mu+ 0til para el manipuleo de n0meros @C9 empa*uetados/ en los
*ue en un solo !+te se guardan dos d7gitos @C9 (uno en cada ni!!le)2

Las dos operaciones *ue siguen son la suma + la resta aritm#ticas 6
ADD8! 5Cd ?'u%a arit%FticaC de'tino D 5 G 8
SU@8! 5Cd ?re'ta arit%FticaC de'tino D 5 H 8
%stas operaciones (A99 F a A + :U@stract F de A) a1ectan a los tres !its de estado C/
9C + K2
%l !it K se pone en 1 si el resultado de la operacin es ????????/ + se pone en ? si el
resultado tiene cual*uier otro (alor2
La suma se reali)a en aritm#tica !inaria pura sin signo2 :i ha+ un acarreo del !it >/ es
decir *ue el resultado es ma+or *ue 2''/ el !it C (carr+) resulta 1/ en caso contrario
resulta ?2 :i ha+ un acarreo del !it "/ es decir *ue la suma de las dos mitades (ni!!les)
menos signi1icati(as (!its ? a ") resulta ma+or *ue 1'/ se pone en 1 el !it 9C (digit carr+)/
en caso contrario se pone en ?2
%emplos 6
1?1? ??1? 11?1 ????
Q ?1?? 1111 C DC J Q ?11? 1111 C DC J
1111 ???1 ? 1 ? ??11 1111 1 ? ?

La resta se reali)a sumando/ en !inario puro sin signo/ el registro 1 m5s el complemento a
dos de F (el complemento a 1/ o complemento lgico/ m5s 1)
%emplos 6
1 R ?1?? ?1?? ??1? 1???
FSR M ??1? 1??? C DC J M ?1?? ?1?? C DC J
???1 11?? 1 ? ? 111? ?1?? ? 1 ?

RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSR
e*ui(alente a 6
1 R ?1?? ?1?? ??1? 1???
cmp22 F R Q 11?1 1??? C DC J Q 1?11 11?? C DC J
???1 11?? 1 ? ? 111? ?1?? ? 1 ?

Los !its de estado C + 9C toman el (alor normal correspondiente a la suma de 1 con el
complemento a 2 de F2 9e esta manera el signi1icado para la operacin de resta resulta
in(ertido/ es decir *ue C (carr+) es 1 si no hu!o des!orde en la resta/ o dicho de otra
manera/ si el contenido de F es menor *ue el de 12 %l !it 9C se comporta de manera
similar/ es decir *ue 9C es 1 si no hu!o des!orde en la mitad menos signi1icati(a/ lo *ue
e*ui(ale a decir *ue el ni!!le !ao del contenido de F es menor *ue el del registro 12

Las instrucciones *ue siguen son de simple operando/ pero son casos especiales +a *ue
el destino es siempre el registro seleccionado 6
CLR! 5 ?+orrado de contenidoC 5 D B
MO#8! 5 ?co0ia contenido 8 E 5C 5 D 8
La instruccin CL;A (CLea; Aile) a1ecta solo al !it K *ue resulta siempre ?2
La instruccin MO-FA (MO-e F a A) no a1ecta ning0n !it de la pala!ra de estado2
In'truccione' de @&te que o0eran 'o+re 8 & Literae'
%stas instrucciones se re1ieren todas al registro F/ es decir *ue uno de los operandos de
origen + el operando de destino son siempre el registro F2 %n las instrucciones de este
grupo *ue tienen un segundo operando de origen/ este es siempre una constante de
programa literalmente incluida en la instruccin/ llamada constante literal o simplemente
literal2
%l 1ormato gen#rico de estas instrucciones es el siguiente 6
? 1 2 " 7 6 , ; - A 1B 11
9 9 9 9 9 9 9 9
Los !its ? a > especi1ican la constante literal de 4 !its *ue se utili)ara en la operacin2
Las tres instrucciones *ue siguen son las operaciones lgicas tradicionales/ similares a
las *ue +a (imos anteriormente/ pero reali)adas entre una constante de programa + el
registro F 6
IORL8 9 ? o0eraci4n OR 4*icaC 8 D 8 E 9
ANDL8 9 ? o0eraci4n AND 4*icaC 8 D 8 E 9
.ORL8 9 ? o0eraci4n .OR 4*icaC 8 D 8 E 9
%n estas tres instrucciones (Inclusi(e O; Literal F/ A.9 Literal F + =O; Literal F) el
0nico !it a1ectado de la pala!ra de estado del procesador es el K/ *ue se pone en 1 si el
resultado de la operacin es ????????/ + se pone en ? si el resultado tiene cual*uier otro
(alor2
La instruccin *ue sigue sir(e para cargar una constante de programa en el registro F 6
MO#L8 9 ?car*a con'tante en 8C 8 D K
%sta (MO-e Literal F) instruccin no a1ecta ninguno de los !its de estado del procesador2
La instruccin *ue sigue (CLea; F) no corresponder7a incluirla en este grupo/ +
pertenece en realidad al primero/ el de las instrucciones *ue operan so!re registros/ +a
*ue se trata de un caso especial de la instruccin CL;A/ con destino F/ + 1 N ?2 La
incluimos a*u7 por*ue como se le ha asignado un mnemnico particular re1erido
espec71icamente al registro F/ creemos *ue/ desde el punto de (ista del programador/ es
m5s 0til (erla dentro del grupo de instrucciones re1eridas a F2
CLR8 ?+orra e contenido de 8C 8 D B
Al igual *ue en la instruccin CL;A/ el 0nico !it de estado a1ectado es el K *ue resulta 12
In'truccione' de @it
%l 1ormato gen#rico de estas instrucciones es el siguiente 6
? 1 2 " 7 6 , ; - A 1B 11
+ + + 5 5 5 5 5
Los !its ? a $ (' !its)/ denominados H1I/ permiten seleccionar uno de "2 registros de la
memoria interna2 Los !its ' a >/ denominados H!I/ permiten especi1icar el numero de !it (?
a >) so!re el *ue se operara2 %stas instrucciones operan solamente so!re el !it
especi1icado/ el resto de los !its del registro no son alterados2 %stas instrucciones no
tienen especi1icacin de destino/ +a *ue el mismo es siempre el registro seleccionado2
@C! 5C+ ?+orra e +it + de 5 ?+it 51+2 D B
@S! 5C+ ?cooca en uno e +it + de 5 ?+it 51+2 D 1
%stas instrucciones (@it Clear Aile + @it :et Aile) no a1ectan ning0n !it de la pala!ra de
estado del procesador2
In'truccione' de Contro
"OTO 9 ?'ato a a 0o'ici4n 9 1A +it'2 de 0ro*ra%a
%sta es la t7pica instruccin de salto incondicional a cual*uier posicin de la memoria de
programa (*ue en la ma+or7a de los microprocesadores con(encionales se llama ,UMP)2
La constante literal B es la direccin de destino del salto/ es decir la nue(a direccin de
memoria de programa a partir de la cual comen)ar5n a leerse las instrucciones despu#s
de eecutar la instruccin GOTO2 %sta instruccin simplemente carga la constante B en el
registro PC (contador de programa)2 La 0nica complicacin de esta instruccin es *ue la
constante B es de solo J !its/ mientras *ue el registro PC es de 11 !its/ +a *ue en el
1<C'> de!e permitir direccionar una memoria de programa de 2 D2 Los dos !its 1altantes/
!it J + 1? del PC/ son tomados respecti(amente de los !its de seleccin de p5gina PA? +
PA1 de la pala!ra de estado2 %ste comportamiento particular hace *ue la memoria de
programa apare)ca como di(idida en paginas de '12 posiciones como se (era m5s
adelante2 %l programador de!e tener en cuenta *ue antes de eecutar una instruccin
GOTO es posi!le *ue ha+a *ue programar los !its PA? + PA12
La *ue sigue es la instruccin de llamado a su!rutina6
CALL 9 ?'ato a a 'u+rutina en a 0o'ici4n 9 1- +it'2
:u comportamiento es mu+ similar al de la instruccin GOTO/ sal(o *ue adem5s de saltar
guarda en el stacB la direccin de retorno de la su!rutina (para la instruccin ;%TLF)2
%sto lo hace simplemente guardando en el stacB una copia del PC incrementado/ antes
de *ue el mismo sea cargado con la nue(a direccin B2 La 0nica di1erencia con la
instruccin GOTO respecto de la 1orma en la *ue se reali)a el salto/ es *ue en la
instruccin CALL la constante B tiene solo 4 !its en (e) de J2 %n este caso tam!i#n se
utili)an PA? + PA1 para cargar los !its J + 1? del PC/ pero adem5s el !it 4 del PC es
cargado siempre con ?2 %sto hace *ue los saltos a su!rutina solo puedan reali)arse a
posiciones *ue est#n en las primeras mitades de las paginas mencionadas2 %l
programador de!e tener en cuenta este comportamiento + asegurarse de u!icar las
posiciones de inicio de las su!rutinas en las primeras mitades de las paginas2
La instruccin *ue aparece a continuacin es la de retorno de su!rutina6
RETL8 9 ?retorno de 'u+rutina con con'tante 9C 8 D 9
%sta (;%Turn con Literal in F) instruccin produce el retorno de su!rutina con una
constante literal B en el registro F2 La operacin *ue reali)a consiste simplemente en
sacar del stacB un (alor + cargarlo en el PC2 %se (alor es el PC incrementado antes de
reali)ar el salto/ de la ultima instruccin CALL eecutada/ por lo tanto es la direccin de la
instruccin siguiente a dicho CALL22 9ado *ue el stacB es de 11 !its/ el (alor cargado en
el PC es una direccin completa/ + por lo tanto se puede retornar a cual*uier posicin de
la memoria de programa/ sin importar como est#n los !its de seleccin de pagina2 %sta
instruccin adem5s carga siempre una constante literal en el registro F2 Pa *ue esta es la
0nica instruccin de retorno de su!rutina de los PIC1<C'=/ no ha+ en estos
microprocesadores 1orma de retornar de una su!rutina sin alterar el registro F2 Por otro
lado/ + con una metodolog7a especial de programacin/ un conunto de sucesi(as
instrucciones ;%TLF puede ser usado como una ta!la de (alores constantes incluida en
el programa (%2 6 ta!las @C9C> seg2/ he&aCA:CII/ etc2)2
A continuacin se presentan las dos 0nicas instrucciones de HsalteoI (sBip) condicional2
%stas instrucciones son los 0nicos medios para implementar !i1urcaciones condicionales
en un programa2 :on mu+ generales + mu+ poderosas +a *ue permiten al programa tomar
decisiones en 1uncin de cual*uier !it de cual*uier posicin de la memoria interna de
datos/ + eso inclu+e a los registros de peri1#ricos/ los puertos de entradaCsalida e incluso
la pala!ra de estado del procesador2 %stas dos instrucciones reempla)an + superan a
todo el conunto de instrucciones de salto condicional *ue poseen los microprocesadores
sencillos con(encionales (salto por cero/ por no cero/ por carr+/ etc2)2
@T!SC 5C+ ?'ateo 'i +it D BC +it D 51B2 E 'atea
@T!SS 5C+ ?'ateo 'i +it D 1C +it D 5112 E 'atea
@TA:C (@it Test Aile and :Bip i1 Clear) saltea la pr&ima instruccin si el !it ! del registro 1
es cero2 La instruccin @TA:: (@it Test Aile and :Bip i1 :et) saltea si el !it es 12 %stas
instrucciones pueden usarse para reali)ar o no una accin seg0n sea el estado de un !it/
o/ en com!inacin con GOTO/ para reali)ar una !i1urcacin condicional2
E(e%0o 1 :

M M M M M M M M M M M M M
M M M M M M M M M M M M M
!t1sc 1lags/run Ts7 ha arrancado el relo
inc1 tiempo Tincremento contador de tiempo
M M M M M M M M M M M M M
M M M M M M M M M M M M M

E(e%0o ) :

M M M M M M M M M M M M M
M M M M M M M M M M M M M
mo(1 tiempo/L Ttesteo por tiempo N <?
&orlL <?
!t1ss :TATU:/K
goto accU2 Tsalto si tiempo VW <?
M M M M M M M M M M M M M Taccin 1
M M M M M M M M M M M M M
M M M M M M M M M M M M M
goto accU1in
accU2
M M M M M M M M M M M M M Taccin 2
M M M M M M M M M M M M M
M M M M M M M M M M M M M
accU1in Tac5 se unen los caminos
Las instrucciones *ue siguen son casos especiales de las de incremento + decremento
(istas anteriormente2 %stas instrucciones podr7an categori)arse dentro del grupo de
instrucciones orientadas a !+te so!re registros (primer grupo)/ +a *ue e1ecti(amente
operan so!re los mismos/ + el 1ormato del cdigo de la instruccin responde al de ese
grupo/ pero/ a di1erencia de las otras/ pueden adem5s alterar el 1luo lineal del programa +
por eso se les inclu+ en este grupo2
DEC!SJ 5Cd ?decre%enta & 'atea 'L BC de'tinoD 5 H 1C D B E 'atea
INC!SJ 5Cd ?incre%enta & 'atea 'L BC de'tinoD 5 G 1C D B E 'atea
%stas dos instrucciones (9%Crement Aile and :Bip i1 Kero/ e I.Crement Aile and :Bip i1
Kero) se comportan de manera similar a 9%CA e I.CA/ sal(o *ue no a1ectan a ning0n !it
de la pala!ra de estado2 Una (e) reali)ado el incremento o decremento/ si el resultado es
????????/ el microprocesador salteara la pr&ima instruccin del programa2 %stas
instrucciones se utili)an generalmente en com!inacin con una instruccin de salto
(GOTO)/ para el dise3o de ciclos o la)os (loops) de instrucciones *ue de!en repetirse una
cantidad determinada de (eces2
E(e%0o:
clr1 1? Tpongo cero en la posicin 1? de la memoria interna
loop Tlo *ue sigue se eecutar5 2'< (eces
2222222222222222222222222222222222222
2222222222222222222222222222222222222
2222222222222222222222222222222222222
inc1s) 1?/1 Tincremento la posicin 1? hasta *ue llegue a ?
goto loop Tsi no llego a cero (o+ a repetir la secuencia
Tcuando llegue a cero salteo el goto
2222222222222222222222222222222222222 T+ sigue la continuacin del programa
2222222222222222222222222222222222222
2222222222222222222222222222222222222
In'truccione' E'0eciae'
%n este grupo se reunieron las instrucciones *ue controlan 1unciones espec71icas del
microprocesador o *ue act0an so!re registros especiales no direccionados como memoria
interna normal2
La instruccin *ue sigue es la t7pica .O OP%;ATIO./ e&istente en casi todos los
microprocesadores2
NOP ?no Iace nadaC con'u%e tie%0o
%sta instruccin solo sir(e para introducir una demora en el programa/ e*ui(alente al
tiempo de eecucin de una instruccin2 .o a1ecta ning0n !it de la pala!ra de estado2
La siguiente es una instruccin especi1ica de control de los puertos de entradaCsalida2
TRIS 5 ?car*a e tri'tate controC TRIS5 D 8
%sta instruccin (T;I:tate) carga el registro de control de los !u11ers tristate de un puerto
de entrada salida (data direccin register)/ con el (alor contenido en F2 %l par5metro 1
de!e ser la direccin de memoria interna del puerto/ aun*ue el (alor F no ser5 cargado
en el puerto sino en el registro de tristate del mismo2 Los (alores (alidos para 1 son $ + '
en los 1<C'$C'< + $/ ' + < en los 1<C''C'>2 %sta instruccin no a1ecta ning0n !it de la
pala!ra de estado2
La siguiente instruccin sir(e para programar el registro OPTIO. *ue controla el ;TCC +
prescaler
OPTION ?car*a e re*i'tro OPTIONC OPTION D 8
%l registro OPTIO. no es accesi!le como memoria interna + solo se lo puede programar
con esta instruccin2 %sta instruccin no a1ecta ning0n !it de la pala!ra de estado2
La instruccin *ue sigue !orra el contador del Latch dog timer2 %ste registro tampoco esta
accesi!le como memoria/ + esta es la 0nica instruccin *ue lo modi1ica2
CLR8DT ?+orra e $atcI do* ti%erC 8DT D B
%sta instruccin/ adem5s/ coloca en uno los !its P9 (poLer doLn) + TO (timeMout) de la
pala!ra de estado2
La siguiente es una instruccin especial de control del microcontrolador *ue lo pone en el
modo poLer doLn2 %n este modo el microprocesador se detiene/ el oscilador se apaga/
los registros + puertos conser(an su estado/ + el consumo se reduce al m7nimo2 La 0nica
1orma de salir de este estado es por medio de un reset o por timeMout del Latch dog timer2
SLEEP ?cooca e <C en %odo 'ee0C 8DT D B
%sta instruccin/ adem5s/ !orra el !it P9 (poLer doLn) + setea el !it TO (timeMout) de la
pala!ra de estado2
Re'u%en de in'truccione' 1ca'i5icaci4n 'e*Mn e 5a+ricante en tre' *ru0o'2:

Instrucciones orientadas a byte:
Instrucciones orientadas a bit:
Instrucciones orientadas a literal y control:
%n esta ta!la de resumen del conunto de instrucciones se pueden o!ser(ar los
mnemnicos/ la e&plicacin/ el n0mero de ciclos/ el cdigo de m5*uina + los !its
a1ectados del registro :TATU: para cada una de las instrucciones2
).) Modo' de direcciona%iento
Direcciona%iento de a %e%oria de dato' 1RAM2
La memoria interna se direcciona en 1orma directa por medio de los ' !its H1I contenidos
en las instrucciones *ue operan so!re registros2 9e esta manera se puede direccionar
cual*uier posicin desde la ?? a la 1A2 Como se (i en el cap7tulo correspondiente a los
mapas de memoria/ las direcciones 1? a 1A corresponden a los !ancos de registros/ por
lo tanto/ en los microcontroladores *ue tengan m5s de un !anco/ antes de acceder a
alguna (aria!le *ue se encuentre en esta )ona/ el programador de!er5 asegurarse de
ha!er programado los !its de seleccin de !anco en el registro A:;2 Los registros
especiales + de uso general de la posicin ?? a la ?1 est5n presentes en todos los
PIC1<C'=/ al igual *ue el !anco ? de registros2 Los !ancos 1/ 2 + " de registros est5n
presentes solo en el 1<C'>2
%l registro A:;/ adem5s de ser(ir para seleccionar el !anco acti(o/ sir(e como puntero
para direccionamiento indirecto2 La posicin ?? del mapa de ;AM es la llamada direccin
indirecta2 :7 en cual*uier instruccin se opera con la direccin ??/ en realidad se estar5
operando con la direccin a donde apunte el contenido del A:;2 Por eemplo si el A:;
contiene el (alor 1$/ una instruccin *ue opere so!re la direccin ?/ operara en realidad
so!re la direccin 1$2 :e puede decir en este eemplo *ue la posicin 1$ de memoria 1ue
direccionada en 1orma indirecta a tra(#s del puntero A:;2
Ejemplo :
T %sta porcin de programa !orra ' posiciones de memoria a partir de la direccin 12
A:; e*u ?$ T(de1inicin al comien)o del programa)
2222222222222222222222222222222222222
2222222222222222222222222222222222222
mo(lL ' Tprepara para repetir ' (eces
mo(L1 ?4 T(el registro ?4 es el contador del loop)
mo(lL 12h Tapunta a la direccin 12h
mo(L1 A:; T
loop6
clr1 ? T!orra una posicin de memoria
inc1 A:; Tapunta a la siguiente
dec1s) ?4 Tsi toda(7a no !orra todas
goto loop Tsige !orrando
2222222222222222222222222222222222222
2222222222222222222222222222222222222
%l direccionamiento indirecto es mu+ 0til para el procesamiento de posiciones
consecuti(as de memoria/ como en el eemplo/ o para el direccionamiento de datos en
su!rutinas2
Direcciona%iento de a %e%oria de 0ro*ra%a 1EPROMC OTP2
La instruccin GOTO dispone solo de J !its en el cdigo de operacin para especi1icar la
direccin de destino del salto2 Al eecutar una instruccin GOTO el microprocesador toma
los dos !its *ue restan para completar la direccin de 11 !its/ de los !its ' + < de la
pala!ra de estado2 %stos 0ltimos son llamados !its de seleccin de p5gina (PA? + PA1)2
%l programador de!er5 asegurarse de *ue estos dos !its tengan el (alor correcto antes de
toda instruccin GOTO2 -er 1igura 22221
!I" ).).1 Direcciona%iento directo con in'trucci4n "OTO
9e!er5 tenerse en cuenta adem5s *ue es posi!le a(an)ar de una p5gina a otra en 1orma
autom5tica cuando el PC se incrementa2 %sto ocurre si el programa empie)a en una
p5gina + sigue en la siguiente2 :in em!argo/ al incrementarse el PC desde la 0ltima
posicin de una p5gina a la primera de la siguiente/ o' +it' PAB & PA1 no 'e %odi5ican/
+ por lo tanto s7 se eecuta una instruccin GOTO/ CALL o alguna *ue act0e so!re el PC/
esta producir5 un salto a la p5gina anterior/ a menos *ue el programador tenga la
precaucin de actuali)ar el (alor de dichos !its2 Por este moti(o es con(eniente di(idir el
programa en mdulos o rutinas *ue est#n con1inados a una p5gina2
%n el caso de la instruccin CALL/ el direccionamiento se complica un poco m5s/ +a *ue
la misma solo dispone de 4 !its para especi1icar la direccin de destino salto2 %n este
caso tam!i#n se utili)an los mismos !its de seleccin de p5gina para completar los !its
d#cimo + decimoprimero de la direccin/ pero 1alta el no(eno !it2 %n estas instrucciones
este !it se carga siempre con ?/ lo *ue implica *ue solo se pueden reali)ar saltos a
su!rutina a las mitades in1eriores de cada p5gina2 %n este caso tam!i#n el programador
de!er5 asegurarse *ue el estado de los !its PA? + PA1 sea el correcto al momento de
eecutarse la instruccin2 -er 1igura 22222
!I". ).).) Direcciona%iento directo con in'trucci4n CALL
Las instrucciones *ue operan so!re el PC como registro + alteran su contenido
pro(ocando un salto/ responden a un mecanismo mu+ similar al de las instrucciones CALL
para la 1ormacin de la direccin de destino2 %n este caso los !its ? a > son el resultado
de la instruccin/ el !it 4 es ? + los !its restantes se toman de PA? + PA12
%ste mecanismo se llama paginado/ + a pesar de *ue representa una complicacin
!astante molesta para el programador/ resulta mu+ 0til +a *ue permite ampliar la
capacidad de direccionamiento de memoria de programa para las instrucciones de salto
)./ Herra%ienta' de de'arroo
UNA MIRADA RAPIDA AL MPLA@
NuF e' e MPLA@ O
%L MPLA@ es un H%ntorno de 9esarrollo Integrado H (Integrated 9e(elopment
%n(ironment/
I9%) *ue corre en HFindoLs H/ mediante el cual Usted puede desarrollar aplicaciones para
los microcontroladores de las 1amilias PIC 1<C1>2
%L MPLA@ le permite a Usted escri!ir/ depurar + optimi)ar los programas (1irmLare) de
sus dise3os con PIC 1<C1>2 %L MPLA@ inclu+e un editor de te&to/ un simulador + un
organi)ador de pro+ectos2 Adem5s/ el MPLA@ soporta el emulador PICMA:T%; + a otras
herramientas de desarrollo de Microchip como el PIC:TA;T M Plus2
De que 5or%a e a&uda e MPLA@ O
Con e MPLA@ U'ted 0uede:
9epurar sus programas 1uente2
9etectar errores autom5ticamente en sus programas 1uente para editarlos2
9epurar los programas utili)ando puntos de corte (!reaBpoints) mediante (alores
de los registros internos2
O!ser(ar el 1luo del programa con el simulador MPLA@ M:IM/ seguirlo en
tiempo real utili)ando el emulador PICMA:T%;2
;eali)ar medidas de tiempo utili)ando un cronmetro2
Mirar (aria!les en las (entanas de o!ser(acin2
%ncontrar respuestas r5pidas a sus preguntas/ utili)ando la A+uda en l7nea del
MPLA@2
LAS HERRAMIENTAS DEL MPLA@
%l Organi)ador de Pro+ectos (Pro+ect Manager)2
%l organi)ador de pro+ectos (Pro+ect Manager) es parte 1undamental de MPLA@2 :in
crear un pro+ecto Usted no puede reali)ar depuracin sim!lica2 Con el Organi)ador de
Pro+ectos (Pro+ect manager) puede utili)ar las siguientes operaciones6
Crear un pro+ecto2
Agregar un archi(o de programa 1uente de pro+ecto2
%nsam!lar o compilar programas 1uente2
%ditar programas 1uente2
;econstruir todos los archi(os 1uente/ o compilar un solo archi(o2
9epurar su programa 1uente2
So5t$are en'a%+ador:
%l so1tLare ensam!lador *ue presenta Microchip (iene en dos presentaciones/ una/ para
entorno 9O: llamado MPA:M2%=% + la otra/ para entorno FindoLs llamado
MPA:MFI.2%=%
Las dos presentaciones soportan a TO9O: los microcontroladores de la 1amilia PIC de
Microchip2
%l conunto de instrucciones de los microcontroladores PIC es en esencia la !ase del
lenguae ensam!lador soportado por este so1tLare2

Directiva' de u'o 5recuente:
:on instrucciones para el compilador2
PDE!INE
e2 Xde1ine Vnom!reW YV(alor a rempla)arWZ
e&plicacin6 declara una cadena de te&to como su!stituto de otra
END
e2 end
e&plicacin6 indica 1in de programa
ENU
e2 status e*u ?'
e&plicacin6 de1ine una constante de ensam!le
INCLUDE
e2 include VPIC1<A4$2hW
e&plicacin6 inclu+e en el programa un archi(o con cdigo 1uente
OR"
e2 org ?&1??
e&plicacin6 ensam!la a partir de la direccin especi1icada
Para in1ormacin m5s completa re1erirse a la gu7a r5pida del MPA:M2
Una (e) instalado adecuadamente el MPLA@/ para reali)ar la simulacin de un programa
de!en seguirse los siguientes pasos6
%dite en un archi(o de te&to el siguiente programa6
?e(e%0o:
status e*u ?&?" Thace e*ui(alencia entre el s7m!olo status indic5ndolo como " en
he&adecimal
Cont e*u ?&2?
A e*u 1
org ? Tindica posicin de memoria desde donde se ensam!la
Inicio
mo(lL ?&?A Tcarga de L con el (alor constante 1' (literal)
mo(L1 Cont Tel contenido de L se pasa al reg2 CO.T
Loop
dec1s) Cont/A Tdecremento de Cont + elude siguiente siN?
goto Loop Tsalto incondicional a Loop
goto [ T:alto incondicional a*ui mismo
end TAin del cdigo

Lista de pasos6
12 8aga do!le clicB en el 7cono correspondiente a MPLA@2
22 Crear el archi(o 1uente correspondiente (men0 Aile222.eL :ource)2
"2 :al(e el archi(o (con e&tensin 2A:M) una (e) terminada su edicin (men0
AIL%222:a(e)2
$2 9e!e a continuacin crearse un nue(o pro+ecto (men0 Proect222.eL Proect)2
'2 Cuando apare)ca la (entana de .eL Proect editar las caas de te&to6
Proect path and .ame + 9e(elopment Mode/ hacer clicB en VODW2
<2 %n la siguiente (entana %dit Proect/ hacer clicB en la seccin .onMproect 1iles so!re el
nom!re del archi(o 1uente reali)ado en los pasos 2 + "2
>2 8aga clicB en el !otn VNadd + luego de *ue #ste apare)ca en la seccin Proect Ailes
haga clicB so!re el !otn VODW2
42 :al(ar el pro+ecto (en el men0 Proect222:a(e proect)2
J2 ;eali)ar la \construccin de todo el pro+ecto\ (men0 Proect222@uild All)2
1?2 %n esta etapa se reali)a en 1orma autom5tica el ensam!le de nuestro programa 1uente
+ el (aciado de #ste en memoria de simulacin2 %l proceso de ensam!le generar5 un
archi(o de errores en caso de *ue estos e&istan/ s7 es as7 de!en corregirse directamente
so!re el archi(o 1uente/ sal(ar las correcciones + reconstruir el pro+ecto (men0
Proect222@uild All)2 VVV%n esta etapa del proceso +a se tiene el entorno listo para la
simulacinWWW
#i'ta tL0ica de entorno MPLA@
Como en la ma+or7a de las aplicaciones FindoLs la pantalla se di(ide en (arias
secciones6
12 @arra de t7tulo6 :e o!ser(a el nom!re del pro+ecto
22 @arra de menus6 Acceso a las di1erentes opciones del entorno
"2 @arra de herramientas6 Cada 7cono eecuta las acciones correspondientes
$2 @arra de estados6 Indica el estado del entorno + sus (entanas
Si%uaci4n:
12 ;esetear el procesador (men0 9e!ug222;un222;eset) con A< con el 7cono
correspondiente en la !arra de herramientas2
22 Crear una nue(a (entana donde se inclu+an las (aria!les *ue *ueremos tener en
cuenta (FindoL222.eL Fatch FindoL)
"2 %mpe)ar a correr paso a paso el programa haciendo el seguimiento detallado de todos
+ cada uno de los pasos (men0 9e!ug222;un222:tep) con la tecla A> con el 7cono
correspondiente en la !arra de herramientas2
%l proceso de simulacin nos permite detectar + corregir pro!lemas de lgica/ pro!lemas
de situaciones *ue no ha+amos tenido en cuenta *ue son errores *ue no pueden ser
detectados en el momento del ensam!le del programa2
.ota6 %l programa MPLA@ puede o!tenerse en 1orma gratuita de la direccin6
http6CCLLL2microchip2comC1?CToolsCmToolsCMPLA@Cinde&2htm
/.1 Su+rutina' & a%ado'
IMPORTANCIA DE LAS RUTINAS 1Q2
La ma+or7a de los microcontroladores inclu+en en su repertorio de instrucciones algunas
*ue permiten saltar a una rutina +/ cuando se complementa su eecucin/ retornar al
programa principal
%l empleo de su!rutinas aporta muchas (entaas entre las *ue se destacan las
siguientes6
12 :e pueden escri!ir como su!rutinas secciones de cdigo + ser empleadas en
muchos programas ( por eemplo/ la su!rutina de e&ploracin de un teclado )2
22 9an a los programas un car5cter modular/ es decir/ se pueden codi1icar di1erentes
mdulos para usarlos en cual*uier programa2
"2 :e reduce nota!lemente el tiempo de programacin/ la deteccin de errores/ usando
repetidamente una su!rutina2
$2 %l cdigo es m5s 15cil de interpretar/ dado *ue las instrucciones de las su!rutinas no
aparecen en el programa principal2 :olo 1iguran las llamadas CALLs2

LAS INSTRUCCIONES CALL R RETURN 1Q2
La instruccin CALL ( llamada la su!rutina) consigue *ue la eecucin del programa
contin0e en la direccin donde se encuentra la su!rutina a la *ue hace re1erencia2 %s
similar a GOTO pero coloca en la pila la direccin de la siguiente instruccin *ue se de!e
eecutar despu#s de la CALL2
La su!rutina 1inali)a con la instruccin ;%TU;. (;etorno de la su!rutina) *ue retoma la
direccin guardada en le pila + la coloca en el contador del programa PC continuando el
1luo de control con la instruccin *ue sigue a la CALL2
%n la 1amilia PIC de gama media la pila tiene ocho ni(eles de memoria del tipo AIAO
(primero en entrar/ 0ltimo en salir)2 :i se produce la llamada a una su!rutina durante la
eecucin de otra su!rutina/ la direccin de retorno de esta segunda es colocada en la
cima de la pila so!re la direccin anterior2 %sta segunda direccin es la primera en salir de
la pila mediante la instruccin ;%TU;.2
Con la pila de ocho ni(eles/ una su!rutina puede llamar a otra + #sta/ a su (e)/ llamar a
otra hasta un m5&imo de ocho2 La gama !aa slo puede reali)ar dos llamadas de este
tipo al poseer una pila de slo dos ni(eles2
Las su!rutinas de!en colocarse al comien)o de las p5ginas de!ido a *ue el !it 4 del
contador del programa es puesto a ? por la instruccin CALL (o por cual*uier instruccin
*ue modi1ica el PC)2 Las su!rutinas de!en colocarse en la mitad inicial de las p5ginas (las
2'< pala!ras)2
* Tomado de: Microcontroladores PIC, la solucin en un chip, Angulo y otros, Seccin 5.
/.) Con'uta a ta+a' %n muchas ocasiones es necesario para un programador e1ectuar
una coincidencia entre alguna cantidad de (alores conocidos + un n0mero desconocido
*ue se tiene como 7ndice/ por eemplo/ !asados en el contenido de una posicin de
memoria ;AM (7ndice) se puede o!tener de una serie consecuti(a de datos almacenados
en memoria de programa (a estos datos \conocidos\ almacenados se le denomina ta!la)/
el dato despla)ado n posiciones adelante del comien)o de esta ta!la/ este n0mero n
corresponde al contenido de la posicin de memoria ;AM 7ndice2
Programa eemplo6
o11set e*u ?Ch Tposicin de memoria ;AM
L e*u ? Tdestino F
1 e*u 1 Tdestino A
2222222222222222
2222222222222222
2222222222222222
mo(1 o11set/L Ttomamos a F el n0mero n utili)ado como 7ndice
call ta+a Tposicin en donde se encuentra la serie de datos
Ten este sitio luego del retorno de la su!rutina se tiene en F el dato
le7do de la ta!la
2222222222222222
2222222222222222
2222222222222222
ta+a
addL1 PCL/1 Tse suma al PC el contenido de F o!teniendo como resultado un salto
inde&ado
retlL "?h Ts7 el contenido de F sumado al PCL es ? se retorna en esta posicin/
FN"?h
retlL "1h Ts7 el contenido de F sumado al PCL es 1 se retorna en esta posicin/
FN"1h
retlL "2h Ts7 el contenido de F sumado al PCL es 2 se retorna en esta posicin/
FN"2h
retlL ""h Ts7 el contenido de F sumado al PCL es " se retorna en esta posicin/
FN""h
retlL "$h Ts7 el contenido de F sumado al PCL es $ se retorna en esta posicin/
FN"$h
retlL "'h Ts7 el contenido de F sumado al PCL es ' se retorna en esta posicin/
FN"'h
. ?...
.
.
Ainalmente + luego de o!ser(ar el eemplo anterior/ podemos anotar *ue antes de hacer
el llamado a la su!rutina ta+a/ se de!e cargar en el registro de tra!ao F el (alor del
7ndice + una (e) se retorne de dicha su!rutina/ es en este mismo registro de tra!ao en
donde se o!tiene el resultado de la consulta a la ta!la ((emos *ue la sucesin de
instrucciones ret$ 9 se encuentra en memoria de programa)2
/./ Conver'i4n a ASCII
%l conunto de car5cteres A:CII (American Standard Code 1or In1ormation Interchange) es
el cdigo de representacin en he&adecimal del al1a!eto/ los n0meros del ? al J + los
principales s7m!olos de puntuacin + algunos car5cteres de control2 -er Ta!la "2"21
2 Ta+a /./.1 Con(unto de carSctere' ASCII Como se o!ser(a en la ta!la "2"21/
podemos di(idir a cada caracter representado en he&adecimal como una parte alta de "
!its (Mo't 'i*ni5icant cIaracter) + una parte !aa de $ !its (Lea't 'i*ni5icant
cIaracter)/ o sea/ la representacin total se hace con solo > !its2
9e los pro!lemas usuales en la programacin est5 el con(ertir un n0mero he&adecimal
representado en 4 !its a dos car5cteres A:CII los cuales sean la representacin de dicho
n0mero para permitir la (isuali)acin en terminales de datos tales como Monitores de
(ideo o Impresoras entre otras2
%emplo6
:e *uiere representar el n0mero he&adecimal ;BI cu+a representacin en !inario es
B111BBBB+ como los dos car5cteres A:CII \>\ + \?\/ gr51icamente6

;
B en he&adecimal (4 !its)
EE
EE
T;T
TBT en ascii (1< !its)
EEEE
EE
/;I
/BI ascii en he&adecimal (1< !its)

Transport5ndolo a un programa6
.um8e& e*u ?Ch T posicin donde se almacena el n0mero a con(ertir
Ascii8 e*u ?9h T posicin donde se almacena el resultado parte alta
AsciiL e*u ?%h T posicin donde se almacena el resultado parte !aa
22222222222222222222222
22222222222222222222222
mo(lL ?Ah T dato para enmascarar parte alta
andL1 .um8e&/? T se enmascara la parte alta del n0mero he&a + pasa a
F
iorlL "?h T con(ierte el n0mero en ascii
mo(L1 AsciiL T el n0mero *ueda sal(ado en la (aria!le de salida
mo(lL ?A?h T dato para enmascarar parte !aa
andL1 .um8e&/1 T se enmascara la parte !aa del n0mero he&a + *ueda
all7
sLap1 .um8e&/? T se in(ierten parte alta + !aa
iorlL "?h T con(ierte el n0mero en ascii
mo(L1 AsciiL T el n0mero *ueda sal(ado en la (aria!le de salida2
222222222222222222222
222222222222222222222
:e de!e tener en cuenta *ue el eemplo anterior 1unciona en 1orma correcta siempre +
cuando lo ni!!les del n0mero h&adecimal a con(ertir/ est#n en el rango de ? a J/ de!e
reali)arse un tratamiento adicional a estos si se encuentran en el rango de Ah a Ah2
;ealice en un programa esta condicin2
/.7 Ra%i5icaci4n %Mti0e
Cuando se tiene *ue solucionar un diagrama de 1luo como el de la 1igura "2$21 en el cual
tenemos tres posi!les respuestas a una pregunta/ se plantean las soluciones a*u7
presentadas2
!I". /.7.1 Tre' 0o'i+iidade' 0ara una 0re*unta. Souci4n P1
Una de las 1ormas de solucionar en un programa este pro!lema es6
9eterminando para la opcin 1/ la opcin 2 + la opcin " un (alor consecuti(o como6

opcin1 e*u ?
opcin2 e*u 1
opcin" e*u 2

Uno de estos posi!les (alores lle(arlos a F + en una parte del programa tratarlos as76

9ecisin6 Tsitio en donde la pregunta \O\ tendr7a solucin
addL1 PCL/1
goto Accin1
goto Accin2
goto Accin"
Accin16
2222222222222222222222222222222 Tinstrucciones correspondientes a la Accin 1
2222222222222222222222222222222
2222222222222222222222222222222
goto encuentro
Accin26
2222222222222222222222222222222 Tinstrucciones correspondientes a la Accin 2
2222222222222222222222222222222
2222222222222222222222222222222
goto encuentro
Accin"6
2222222222222222222222222222222 Tinstrucciones correspondientes a la Accin "
2222222222222222222222222222222
2222222222222222222222222222222
encuentro6 Tsitio de encuentro luego de una de las acciones
2222222222222222222222222222222 Tcontinuacin del programa
2222222222222222222222222222222
Souci4n P)
Otra 1orma posi!le es comparando una por una los (alores de las di1erentes opciones
almacenadas en memoria ;AM en una (aria!le llamada OPCION
mo(lL Opcin1
&orL1 OPCIO./? Tse reali)a la (eri1icacin del contenido de OPCIO. con respecto
a F
!t1sc :TATU:/K T-eri1icando la !andera K
goto Accin1
mo(lL Opcin2
&orL1 OPCIO./? Tse reali)a la (eri1icacin del contenido de OPCIO. con respecto
a F
!t1sc :TATU:/K T-eri1icando la !andera K
goto Accin2
mo(lL Opcin"
&orL1 OPCIO./? Tse reali)a la (eri1icacin del contenido de OPCIO. con respecto
a F
!t1sc :TATU:/K T-eri1icando la !andera K
goto Accin"
Accin16
2222222222222222222222222222222 Tinstrucciones correspondientes a la Accin 1
2222222222222222222222222222222
2222222222222222222222222222222
goto encuentro
Accin26
2222222222222222222222222222222 Tinstrucciones correspondientes a la Accin 2
2222222222222222222222222222222
2222222222222222222222222222222
goto encuentro
Accin"6
2222222222222222222222222222222 Tinstrucciones correspondientes a la Accin "
2222222222222222222222222222222
2222222222222222222222222222222
encuentro6 Tsitio de encuentro luego de una de las acciones
2222222222222222222222222222222 Tcontinuacin del programa
2222222222222222222222222222222
Aun*ue este 0ltimo m#todo es m5s largo *ue el anterior/ permite *ue los (alores de las
di1erentes opciones no sean consecuti(os entre si2
/.6 Arit%Ftica
9entro de los microcontroladores PIC se cuenta con instrucciones aritm#ticas tales como
A99FA + A99LF/ :U@FA + :U@FA/ para e1ectuar operaciones de suma + resta
respecti(amente e instrucciones tales como ;LA + ;;A para reali)ar operaciones de
rotacin a tra(es del carr+ con las cuales se pueden reali)ar di(isiones entre 2 +
multiplicaciones por 2 respecti(amente/ hasta este punto podr7amos (er el conunto de
instrucciones un poco limitado/ sin em!argo/ utili)ando t#cnicas a(an)adas de
programacin podemos o!tener operaciones m5s compleas2 Una !uena cantidad de ellas
la o!tenemos de dos notas de aplicacin de Microchip en 1ormato P9A2
Los siguientes archi(os pueden o!ser(arse con el Acro!at ;eader]
;utinas matem5ticas para PIC1<C'=C1<C==6 PIC1<C'= C 1<C== Math Utilit+
;outines
;utinas matem5ticas generales Math Utilit+ ;outines
/., Te%0ori3aci4n %&isten momentos dentro de la programacin en los *ue se necesita
reali)ar un retardo de tiempo2 Los retardos de tiempo se pueden o!tener mediante
hardLare o por medio de ciclos repetiti(os
!asados en so1tLare2 La precisin de los retardos generados por so1tLare depende en
esencia del
tipo de oscilador *ue se utilice como !ase de tiempo en el microcontrolador/ la ma+or
precisin se o!tiene de los cristales de cuar)o2
La (elocidad a la *ue se eecuta el cdigo (instrucciones) depende de la (elocidad del
oscilador + del n0mero de ciclos de m5*uina eecutados2 Las instrucciones necesitan 1
2 ciclos de m5*uina para ser eecutadas2 Un ciclo de m5*uina es un tiempo utili)ado por
el microcontrolador para reali)ar sus operaciones internas + e*ui(ale a cuatro ciclos del
oscilador2 Por tanto6 Tciclo m5*2N $ ^ Tosc RRR Tciclo m5* N $ C 1osc %l n0mero de ciclos de
m5*uina utili)ados por una instruccin para ser eecutada depende de la misma2 Las
instrucciones *ue modi1ican el contador de programa necesitan dos (2) ciclos de m5*uina/
mientras *ue todas las dem5s necesitan tan solo uno (1)2
%l hecho de generar ciclos repetiti(os por medio del programa + calcular el tiempo total de
eecucin nos puede a+udar a generar tiempos precisos2
!I". /.,.1 Cico re0etitivo de retardo
%l ciclo repetiti(o de retardo de la 1igura "2<21 se tomar5 un n0mero de ciclos as76

O0eraci4n
P de cico'
la carga de B en F 1
la carga de F en el contador 1
el decremento del contador mientras no llegue a cero BM1
el decremento del contador cuando llegue a cero 2
el salto a Loop 2 ^ (BM1)
Tota:
/Q9G1

Por cada instruccin agregada de!e incluirse en la cuenta total el n0mero de ciclos
correspondiente a dicha instruccin2
Tra!aando a $ Mh) + asumiendo *ue B se rempla)a por el (alor 1'd en el eemplo
tendr7amos un tiempo igual a6
.0mero de ciclos N ("^1') Q1 N $< ciclos de m5*uina/
Tciclo m5*2N $ C $ Mh) N 1 _ segundo/ el tiempo total del eemplo entonces ser5 $<
_segundos2
7.1 O0eracione' Entrada : Saida O+(etivo':
-eri1icar el modo en el *ue se de!e programar el sentido de los puertos
;eali)ar la entradas por puerto mediante la lectura de interruptores \dipMsLitch\
%scri!ir so!re un puerto de salida (isuali)ando so!re L%9s
!I". 7.1.1 Hard$are 0ara e(ercicio Entrada:Saida Procedi%iento:
%n el proceso de utili)acin de un puerto de!e tenerse en cuenta como primera instancia
la
programacin del sentido en *ue dicho puerto (a a utili)arse2 Una (e) energi)ado el
microcontrolador todos + cada uno de los puertos *uedan programados como entrada/
entonces/
tan solo de!en programarse los *ue se *uieren utili)ar como salida2
%n el hardLare de la 1igura $2121 se o!ser(a *ue se han colocado $ dip sLitch al puerto @
+ estos
no poseen resistencia de pull up lo cual nos o!liga a ha!ilitar las resistencias internas con
las *ue
cuenta el microcontrolador PIC1<A4$/ el programa de!e entonces en un repetiti(o in1inito
leer el
ni(el lgico *ue colocan los sLitch + pasar este resultado al puerto A complementando el
estado de
la in1ormacin puesto *ue de acuerdo a la disposicin de los L%9s un estado !ao en el
puerto
enciende el L%9 correspondiente + por ende un estado alto en el puerto/ apaga el L%92

Programa6
status e*u ?"h
optionr equ 81h
trisa equ 85h
porta equ 05h
trisb equ 86h
portb equ 06h
;
Inicio:
bsf status,5 ;se pasa al banco 1 de RAM
clrf trisa ;se prograa el puerto A coo salida
o!l" 0#h ;dato para la prograaci$n del puerto %
o!"f trisb ;parte alta coo salida & parte ba'a coo entrada
bcf optionr,( ;se habilitan resistencias de )ull *p
bcf status,5 ;se pasa al banco 0 de RAM
+oop:
cof portb,0 ;se lee el puerto %, se copleenta su !alor & el
;resultado pasa a ,
o!"f porta ;se pasa el resultado de , al puerto A
goto +oop ;e'ecuta un ciclo infinito
end
!n un proceso de lectura de interruptores, casi siempre cuando se detecta un cam"io en
el estado, es aconse#a"le amortiguar la lectura de estos con un retardo de so$t%are.
&ependiendo de la calidad del interruptor el tiempo del retardo puede estar al rededor de
5' mS. !n el caso de este e#ercicio en particular no es re(uerido puesto (ue un cam"io
en el interruptor de"e re$le#arse inmediatamente en el puerto de salida. Se de"e tener en
cuenta (ue nunca una entrada de"e (uedar al aire puesto (ue los microcontroladores PIC
son hechos con tecnolog)a CM*S. !s por este moti+o (ue en el programa se program la
parte alta del puerto , como salida.
7.) #i'uai3aci4n ; 'e*%ento' O+(etivo':
;eali)ar la decodi1icacin de @C9 a > segmentos por so1tLare
Multiple&ar en el tiempo la in1ormacin para 2 d7gitos > segmentos
!I".
7.).1 Dia*ra%a eFctrico 0ara vi'uai3aci4n dinS%ica en di'0a& ; 'e*%ento' de do'
dL*ito'
Procedi%iento:
%l hecho de (isuali)ar datos en displa+ de > segmentos de la 1orma en *ue se muestra en
la 1igura $2221 o!liga a interconectar entre si los pines correspondientes a los segmentos
del d7gito 1 (d1) con los pines de los segmentos del d7gito 2 (d2)/ de esta manera se
ahorran l7neas de cone&in2
%l m#todo utili)ado para la (isuali)acin d7namica consiste en (isuali)ar cada d7gito
durante un instante de tiempo + a una (elocidad tal *ue gracias a la persistencia del oo el
e1ecto 1inal es *ue todos los d7gitos est5n encendidos al tiempo
!I". 7.).) Dia*ra%a de 5u(o 0ara vi'uai3aci4n dinS%ica en di'0a& ; 'e*%ento' de
do' dL*ito'
Li'tado de 0ro*ra%a de di'0a& en a''e%+er
Trutina de displa+ din5mico de dos d7gitos
-define %A./0 bcf 01A1*0,R)0
-define %A./1 bsf 01A1*0,R)0
2ont3 equ 0405
5ato1 equ 0406
5ato3 equ 040#
5el1 equ 0410
5el3 equ 0411
5ispla&
%A./1
clrf 1RI0A ;puerto A coo salida
clrf 1RI0% ;puerto % coo salida
%A./0
o!l" 0407 ;inhabilita transistores
o!"f )8R1A
;
o!l" 910 ;!alor de repeticiones
o!"f 2ont3
+oop5isp
;
;0acar al puerto el 5ato 1 por un tiepo espec:fico
;
o!f 5ato1,, ;5ato para decodificar
call 1abla ;5ecodificaci$n del dato
o!"f )8R1% ;5ato decodificado a puerto
bcf )8R1A,0 ;;abilita < dato 1
call Ret5ig ;Retardo de d:gito
bsf )8R1A,0 ;Inhabilita < dato 1
nop ;Retardo de apagado
nop
nop
nop
;
;0acar al puerto el 5ato 3 por un tiepo espec:fico
;
o!f 5ato3,, ;5ato para decodificar
call 1abla ;5ecodificaci$n del dato
o!"f )8R1% ;5ato decodificado a puerto
bcf )8R1A,1 ;;abilita < dato 3
call Ret5ig ;Retardo de d:gito
bsf )8R1A,1 ;Inhabilita < dato 3
nop ;Retardo de apagado
nop
nop
nop
;
decfs= 2ont3,# ;5ecreenta 2ont3, elude sig9 s: cero
goto +oop5isp ;Repite ciclo
return
1abla
add"f )2+,#
retl" 0401 ;2uando el d:gito es 0
retl" 04># ;2uando el d:gito es 1
retl" 0413 ;2uando el d:gito es 3
retl" 0406 ;2uando el d:gito es 7
retl" 04>2 ;2uando el d:gito es >
retl" 043> ;2uando el d:gito es 5
retl" 0430 ;2uando el d:gito es 6
retl" 040# ;2uando el d:gito es (
retl" 0400 ;2uando el d:gito es 8
retl" 040> ;2uando el d:gito es ?
retl" 0408 ;2uando el d:gito es A
retl" 0460 ;2uando el d:gito es %
retl" 0471 ;2uando el d:gito es 2
retl" 04>3 ;2uando el d:gito es 5
retl" 0470 ;2uando el d:gito es 6
retl" 0478 ;2uando el d:gito es #
;
Ret5ig
o!l" 3
o!"f 5el1
+oop1
o!l" 950
o!"f 5el3
+oop3
decfs= 5el3,#
goto +oop3
decfs= 5el1,#
goto +oop1
return
T
!l listado anterior de"e colocarse en un archi+o llamado di'0a&.a'%C en el programa
(ue se +a a utili-ar incluirlo con una l)nea del tipo: Xinclude Vdispla+2asmW y llamarlo
desde el programa con una l)nea: call displa+ sin ol+idar cargar pre+iamente las +aria"les
dato1 y dato) con los +alores he.adecimales (ue se desea +isuali-ar.
7./ Servicio de interru0ci4n O+(etivo':
%ncender + apagar un L%9 como respuesta a un est7mulo de interrupcin
9eterminar la 1orma en *ue de!e colocarse el cdigo en el programa 1uente para
aceptar + atender una rutina de interrupcin
Procedi%iento:
Para eempli1icar el uso de un ser(icio de interrupcin se ha dispuesto el hardLare de la
1igura $2"21 en el cual se decide utili)ar la interrupcin e&terna INT (R@B) en un PIC1<A4$/
esta interrupcin est5 (ectori)ada a la direccin de memoria de programa ??$h/ dentro de
la atencin a esta interrupcin se opta por complementar el estado del L%9 colocado al
puerto ;A? cada (e) *ue esta sea atendida2
9iagrama electrnico6
I". 7./.1 Hard$are 0ara e(e%0o de interru0ci4n
Dia*ra%a de 5u(o:
!I". 7./.) Dia*ra%a de 5u(o 0ara acci4n de interru0ci4n
Li'tado de 0ro*ra%a en a''e%+er:
TPrograma para reali)ar el apagado + encendido de un L%9 colocado en el TPuerto A?
!asado en la interrupcin e&terna I.T (;@?)
;
list p@16#8>
status equ 0407
porta equ 0405
portb equ 0406
intcon equ 040%
optionr equ 0481
trisa equ 0485
trisb equ 0486
-define +65 porta,0
-define %A./1 bsf status,5
-define %A./0 bcf status,5
org 000h ;Indica al ensablador la direcci$n de eoria de
;la sig9 instrucci$n
goto Inicio
org 00>h ;Indica al ensablador la direcci$n de eoria de
;la sig9 instrucci$n
Interrupcion
btfss intcon,1 ;es interrupci$n I.1A
retfie ;retorna de interrupci$n & BI6@1
btfsc porta,0 ;probar estado actual del +65
goto )render ;!a a encender el +65
Apagar
bsf porta,0 ;apaga el +65
goto 6spera
)render
bcf porta,0 ;enciende el +65
6spera
btfss portb,0 ;espera a que se suelte el pulsador
goto 6spera
bcf intcon,1 ;borra bandera I.1
retfie ;retorna de interrupci$n & BI6@1
;)rograa principal
Inicio
%A./1 ;selecci$n del banco 1
bcf trisa,0 ;selecciona porta,0 coo salida
%A./0 ;selecci$n de banco 0
bsf porta,0 ;apagar +65
;prograaci$n de interrupci$n
bsf intcon,> ;acti!ar interrupci$n I.1
%A./1 ;selecci$n banco 1
bcf optionr,6 ;selecci$n del flanco de ba'ada en el pin I.1
%A./0
bsf intcon,( ;;abilitar interrupciones globales
goto C ;queda a la espera de interrupci$n
end
!l s)m"olo / signi$ica la direccin de memoria de programa en donde se encuentra 0ste
1ciclo in$inito de espera2
&e"e notarse la u"icacin de la rutina de interrupcin a partir de la posicin de memoria
de programa ''3h.
7., Conver'i4n A:D O+(etivo':
;eali)ar la o!ser(acin pr5ctica de la utili)acin del con(ersor AC9 en un
PIC1<C>1
Con1igurar uno de los canales de entrada al con(ersor AC9 (canal ?)
Procedimiento6
Para reali)ar la o!ser(acin pr5ctica mencionada en los o!eti(os/ se reali)a el montae
de un (oltimetro digital AC el cual utili)a el canal an5logo ? como entrada de la muestra
9C tomada de un di(isor de (oltae2 9e acuerdo a la relacin del di(isor de tensin
con1ormado con el reostato A(u'te + de las resistencias/ de!e o!tenerse un (oltae
m5&imo de ' (oltios en el pin ;A?/ correspondiente a la m5&ima entrada de (oltae alterno
colocado en #AC in 2

Dia*ra%a eFctrico:
!I". 7.,.1 Hard$are utii3ado 0ara e voti%etro AC
Li'tado de 0ro*ra%a en a''e%+er
+I01 )@162(1
I.5# 6<* ;D0000D
1MR0 6<* ;D0001D
)2+ 6<* ;D0003D
01A1*0 6<* ;D0007D
#0R 6<* ;D000>D
)8R1A 6<* ;D0005D
)8R1% 6<* ;D0006D
A528.0 6<* ;D0008D
A5R60 6<* ;D000?D
)2+A1; 6<* ;D000AD
I.128. 6<* ;D000%D
;
8)1I8.ER 6<* ;D0081D
1RI0A 6<* ;D0085D
1RI0% 6<* ;D0086D
A528.1 6<* ;D0088D
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
, 6<* ;D0000D
# 6<* ;D0001D
-define E= 01A1*0,3
-define Ec 01A1*0,0
-define R)0 01A1*0,5
-define R)1 01A1*0,6
-define %A./1 bsf R)0
-define %A./0 bcf R)0
T
;E%F16 equ 10 ;Gariable I. de la rutina %3E%25
+E%F16 equ 11 ;Gariable I. de la rutina %3E%25
R0 equ 13 ;M0%&te 56 +A R*1I.A %3E%25
R1 equ 17
R3 equ 1> ;+0%&te 56 +A R*1I.A %3E%25
8n5&n equ 15
count equ 16
tep equ 1(
5IB7 equ 18 ;M05 56 +A R*1I.A 56 5I0)+AF
5IB3 equ 1?
5IB1 equ 1A ;+05 56 +A R*1I.A 56 5I0)+AF
)6R0I01 equ 1%
2ounter5ig equ 12
56+AF equ 15 ;R61AR58 GI0*A+IHA2I8.
56+AF3 equ 16
;IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIII
org 0
goto Main
;JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJ
;2on!ersi$n de %inario a %25 5 d:gitos
;6ntrada: *n binario de 16 %its en ;E%&te & +E%&te
;0alida: R0, R1 & R3; R0 es el M05
;JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJ
%3E%25
bcf Ec
o!l" 916
o!"f count
clrf R0
clrf R1
clrf R3
+oop16
rlf +E%F16
rlf ;E%F16
rlf R3
rlf R1
rlf R0
;
decfs= count
goto ad'562
retl" 0
;
ad'562
o!l" R3
o!"f #0R
call ad'%25
;
o!l" R1
o!"f #0R
call ad'%25
;
o!l" R0
o!"f #0R
call ad'%25
;
goto +oop16
;
ad'%25
o!l" 7
add"f 0,,
o!"f tep
btfsc tep,7
o!"f 0
o!l" 70
add"f 0,,
o!"f tep
btfsc tep,(
o!"f 0
retl" 0
;------------------------------------------------------------------------
--
Main
;Iniciali=aci$n de puertos
%A./1
2+R# 1RI0% ;)rograaci$n del puerto % coo salida
M8G+, 07
M8G,# 1RI0A ;)rograaci$n del puerto A, RA0 & RA1 coo
entrada
%A./0
M8G+, 0##
M8G,# )8R1A ;Iniciali=aci$n de los puertos A & %
M8G,# )8R1%
;Iniciali=aci$n del $dulo AK5 2anal 0 acti!o
%A./1
M8G+, %D000000010D
M8G,# A528.1
%A./0
M8G+, 021
M8G,# A528.0
;iniciali=aci$n de d:gitos
clrf 5IB1
clrf 5IB3
clrf 5IB7
I.IEA5
M8G+, 95
M8G,# 56+AF3
%0# A528.0,3
GI0*A+IHAR
M8G+, 9355 ;R61AR58 56 5I0)+AF
M8G,# 56+AF
+88)EGI0*A+
2A++ 5I0)+AF
562#0H 56+AF,#
B818 +88)EGI0*A+
562#0H 56+AF3,#
B818 GI0*A+IHAR
1601E#I.EA5
%1#02 A528.0,1 ;0L 601M 6. 0 .8 ;A 16RMI.A58 +A 28.G6R0I8.
B818 ;6NE%25 ;28.G6R0I8. F A562*A2I8. 56 5A180 A G6R
B818 GI0*A+IHAR ;06B*IR 28. +80 5A180 FA )R65616RMI.A580
;
5I0)+AF
M8G+, 07
M8G,# 2ounter5ig
M8G+, 0#%
M8G,# 8n5&n
M8G+, 5IB1 ;)osici$n d:gito enos significati!o O+05)
M8G,# #0R
0alt1
M8G+, 10
M8G,# )6R0I01
M8G# I.5#,,
562# #0R,#
2A++ 1abla
M8G,# )8R1%
M8G# 8n5&n,,
M8G,# )8R1A
%0# Ec
R+# 8n5&n,#
5ecre
562#0H )6R0I01,#
B818 5ecre
.8)
.8)
M8G+, 0##h
M8G,# )8R1A
562#0H 2ounter5ig,#
B818 0alt1
.8)
.8)
.8)
R61*R.
1abla
A55,# )2+,#
R61+, 07h ;0
R61+, ?#h ;1
R61+, 35h ;3
R61+, 05h ;7
R61+, ??h ;>
R61+, >?h ;5
R61+, >1h ;6
R61+, 1#h ;(
R61+, 01h ;8
R61+, 1?h ;?
R61+, 0#5h ;06B g
R61*R.
;JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJ
;6NE%25
%2# A528.0,1 ;#I. 56 28.G6R0IP.
M8G# A5R60,, ;R60*+1A58 56 +A 28.G9 AK5
0*%+, 0#%h
%1#00 Ec ;
B818 8G6R#+8,
;0I1*A2I8. .8RMA+
M8G# A5R60,,
M8G,# +E%F16 ;)ARA +A 28.G6R0I8. %3E%25
2+R# ;E%F16 ;)ARA +A 28.G6R0I8. %3E%25
2A++ %3E%25 ;28.G6R1IR 5A18
M8G# R3,,
A.5+, 0#h
M8G,# 5IB1
0,A)# R3,,
A.5+, 0#h
M8G,# 5IB3
M8G# R1,,
M8G,# 5IB7
B818 I.IEA5
M8G+, 0Ah ;representa o!erflo" en la edici$n
M8G,# 5IB7
M8G,# 5IB3
M8G,# 5IB1
B818 I.IEA5
end
!l programa presentado hace uso de los recursos (ue posee el PIC4C5 el cual posee 3
canales an6logos y un con+ersor A7& de 8 "its9 para mayor in$ormacin +er las
especi$icaciones t0cnicas de este dispositi+o.
7.; Co%unicaci4n 'eria
O+(etivo':
-eri1icar la comunicacin serial s7ncrona + as7ncrona
Compro!ar los algoritmos de comunicacin serial
%n (ista de *ue algunos de los elementos de la 1amilia PIC1<C=== no poseen peri1#ricos
de comunicacin serial/ este cap7tulo har5 re1erencia al desarrollo del algoritmo como tal
simulando los pines de comunicacin serial con puertos del microcontrolador2
Co%unicaci4n 'eria 'Lncrona:
La comunicacin s7ncrona se caracteri)a por*ue los pulsos de sincroni)acin de!en ser
transmitidos a lo largo de la l7nea de comunicacin entre el transmisor + el receptor2
9entro de los (arios tipos de comunicacin serial s7ncrona (amos a notar el protocolo I
2
C
de dos hilos + el protocolo :PI de tres hilos2
LLnea1'2 de dato' LLnea de reo(
I
)
C :9A (serial data) :CL
SPI :O (serial out)/ :I (serial in) :CD
Ta+a 7.;.1 No%encatura de o' 0ine' de co%unicaci4n 1'Lncrono'2
!I". 7.;.1 Di'0o'ici4n tL0ica de 0ine' en di'0o'itivo' 'Lncrono' 1a2 I
)
CC 1+2 SPI
I
)
C
%l !us I
2
C es un !us dise3ado para *ue so!re #ste puedan colocarse (arios dispositi(os
dentro de la misma tareta electrnica (comunicacin multipunto)/ cada dispositi(o tendr5
una direccin lgica asignada 17sicamente mediante los pines A?/ A1 + A2 de acuerdo al
ni(el lgico al *ue estos sean alam!rados2 (er estos pines en la 1igura 7.;.1 a2
!I". 7.;.) @it' de START & STOP de 0rotocoo I
)
C
%n las 1iguras 7.;.) + punto se o!ser(a la 1orma en *ue las se3ales :CL + :9A de!en ser
maneadas2 Para iniciar la comunicacin so!re un dispositi(o I
2
C de!e reali)arse la
secuencia denominada !it de :TA;T *ue consiste en pasar la l7nea de datos :9A de
ni(el alto a !ao mientras *ue la l7nea :CL permanece en alto2 Para la culminar la
comunicacin con el dispositi(o I
2
C de!e eecutarse la secuencia denominada !it de
:TOP la cual consiste en pasar la l7nea de datos :9A de ni(el !ao a alto mientras *ue la
l7nea de relo :CL permanece en alto2 Un !it de datos es aceptado por el dispositi(o
mientras *ue so!re la l7nea de datos :9A permanece el ni(el adecuado al !it en cuestin/
+ so!re la l7nea de relo :CL se lle(a a ca!o un pulso/ es decir/ el paso de ni(el de !ao a
alto + luego de alto a !ao2 Los tiempos implicados en esta secuencia dependen
!5sicamente del 1a!ricante del dispositi(o2
!I". 7.;./ Te%0ori3aci4n en e +u' I
)
C
SPI
%l !us :PI es un !us dise3ado para *ue so!re #ste se colo*ue un dispositi(o maestro +
un dispositi(o escla(o (comunicacin punto a punto) (er 1igura 7.;.1 +2 Con relacin al !us
I2C podemos notar *ue #ste soporta ma+or (elocidad de comunicacin2
!I". 7.;.7 Entrada de dato' a di'0o'itivo SPI
!I". 7.;.6 Saida de dato' de di'0o'itivo SPI
%l dispositi(o :PI posee como o!ser(amos el 1igura $2>21/ una l7nea de seleccin C: la
cual de!e pasar al ni(el lgico acti(o (en este caso !ao) para poder reali)ar la
comunicacin con el dispositi(o2 9esde este punto de (ista podr7amos colocar so!re un
!us de este tipo (arios dispositi(os/ pero utili)ando un dispositi(o decodi1icador adicional2
Otra l7nea podemos o!ser(ar es la l7nea 8OL9 la cual permite al procesador detener
moment5neamente la comunicacin/ (er 1igura 7.;.,
!I". 7.;., Utii3aci4n de a Lnea HOLD
Co%unicaci4n 'eria a'Lncrona:
%n este tipo de comunicacin tanto el transmisor como el receptor tienen incluido el relo
de sincroni)acin de tal 1orma *ue no se transmite a lo largo de la l7nea de comunicacin2
Dato' de Entrada Dato' de Saida
;&9 T&9
Ta+a 7.;.) No%encatura de o' 0ine' +S'ico' 1a'Lncrono'2
Para sa!er algunas generalidades del puerto serial as7ncrono6 The serial port/
%ste art7culo ha sido tomado de6 http6CCLLL2l(r2com en donde pueden encontrarse temas
mu+ interesantes acerca del mundo de la computacin + las di1erentes cone&iones
paralelas/ serie/ etc2
Algunas notas de aplicacin de comunicacin en 1ormato PD!6
Comunicacin serial s7ncrona :PI6 A.'"? A.'<?
2ounicaci$n serial sincrona I32: A.'1' A.'<>
2ounicaci$n serial as:ncorna: A.'1? A.'''

%l cdigo 1uente de las notas de aplicacin comprimidas en 1ormato JIP:
Comunicacin serial s7ncrona :PI6 A.'"? A.'<?
Comunicacin serial sincrona I2C6 A.'1' A.'<>
Comunicacin serial as7ncorna6 A.'1? A.'''

Aplicacin de Transmisin + ;ecepcin con PIC1<A4$ simulando el puerto serial
as7ncrono6
Cdigo 1uente6 T=;=A:I.2T=T ($D@)
Aplicacin de %scritura + Lectura so!re dispositi(o I2C simulando el puerto serial
s7ncrono6
Cdigo 1uente6 :%;IAL2T=T ('D@)
6.1 EU0oraci4n de tecado
!I". 6.1.1 Hard$are corre'0ondiente a eU0eri%ento de eU0oraci4n de tecado
Para la lectura del teclado de!emos tener en cuenta la disposicin de las 1ilas + las
columnas como se o!ser(a en la AIGU;A '2122 con la cual reali)ando la operacin all7
descrita se de!e o!tener un n0mero consecuti(o de las teclas en la organi)acin a*u7
mostrada2 Luego/ mediante el acceso a una ta!la se decodi1ica la tecla le7da para o!tener
el patrn 1inal o!ser(ado en el diagrama del hardLare AIG2 '21212
%2 :7 se oprimi#se la tecla C del teclado ( AIG2 '2121)/ el cdigo de e&ploracin
correspondiente a esta es el 1"d (AIG2 '2122) *ue de!e ser representado como el 11??!
en las salidas 9C@A ( AIG2 '2121)2

!I". 6.1.) Di'tri+uci4n de tecadoC nu%eraci4n en 5ia' & cou%na' & a 54r%ua
0ara Iaar a teca o0ri%ida
%n este e&perimento se reali)a la emulacin del integrado decodi1icador de teclado
>$CJ22 en cuanto a su 1uncionamiento/ pero de acuerdo a la con1iguracin de hardLare
de la AIG2 '21212

Listado del programa para e&ploracin de teclado6
list pN1<14$
-include Qp16f8>9incR ;archi!o de encabe=ado por MicrochipS
;
;6016 )R8BRAMA 6M*+A *. (>2?33 56285I#I2A58R 56 162+A58
;
28.1#I+ 6<* 0413 ;2ontador de #ilas
28.128+ 6<* 0417 ;2ontador de 2olunas
28+/%5 6<* 041> ;5A18 6. 28+*M.A0
1ep 6<* 0415
R1 6<* 0416 ;Gariable para Retardo
R3 6<* 041( ;Gariable para Retardo
R7 6<* 0418 ;Gariable para Retardo
R> 6<* 041? ;Gariable para Retardo
28*.1 6<* 041A
2;AR 6<* 041% ;Alacenaiento teporal 02A.
A*N 6<* 0412 ;Gariable Au4iliar
Xde1ine U) :TATU:/2
-define Ec 01A1*0,0
-define 86 )8R1A,>
-define %A./0 bcf 01A1*0,R)0
-define %A./1 bsf 01A1*0,R)0
;
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:
8RB 0400
MAI.
%A./1
2+R# 1RI0A
%A./0
2+R# )8R1A
.8)
.8)
Muestre
%2# 86
R*02A.
2A++ 02A.
N8R+, 0400 ;espera una 1ecla
%1#02 E=
B818 Muestre
M8G,# )8R1A
M8G+, 950
M8G,# 28*.1
+88)02A.
2A++ 56+5M0
562#0H 28*.1,1
B818 +88)02A.
B818 R*02A.
;JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJ
56+5M0
M8G+, 913
M8G,# R1
M8G+, (
M8G,# R3
M8G+, 1
M8G,# R7
M8G+, 1
M8G,# R>
+88)56+5
562#0H R1,#
B818 +88)56+5
562#0H R3,#
B818 +88)56+5
562#0H R7,#
B818 +88)56+5
562#0H R>,#
B818 +88)56+5
.8)
R61*R.
;JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
;R618R.A ,@00 .8 ;AF 162+A 8)RIMI5A,
;R618R.A ,@285 0I 162+A 8)RIMI5A9
;JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
02A.
%A./1
M8G+, 040# ;el puerto que lee teclado Q0:7R filas OinT
M8G,# 1RI0%
%A./0
M8G+, 0401
M8G,# 28.128+
M8G+, 04(#
M8G,# 28+/%5
R01#I+
2+R# 28.1#I+ ;R6061 28.1 #I+A0
M8G# 28+/%5,,
M8G,# )8R1% ;28+82AR *. 26R8 6. 28+*M.A0
nop
nop
nop
M8G# )8R1%,, ;+66R #I+A0 56 162+A58
M8G,# A*N
R+# A*N,#
R+# A*N,#
R+# A*N,#
R+# A*N,#
1601#I+
R+# A*N,#
%1#00 Ec
B818 A26R1A58
I.2# 28.1#I+,#
M8G# 28.1#I+,,
N8R+, 040>
%1#00 E=
B818 1601#I+
@:A Uc
RR# 28+/%5,# ;rotacion del cero a colocar
I.2# 28.128+,#
M8G# 28.128+,,
N8R+, 0405
%1#00 E=
B818 R01#I+
R61+, 0400
AC%;TA9O
MO-A CO.TAIL/F
=O;LF ?&??
@TA:C U)
GOTO %:C%;O
MO-LF ?&??
MUL
A99LF ?&?$
9%CA:K CO.TAIL
GOTO MUL
:UMACOL
A99FA CO.TCOL/F
CALL TA@D@9
;%TU;.
TA@D@9
addL1 PCL/A
retlL ? Tin(5lido
retlL ?&1?
retlL ?&11
retlL ?&12
retlL ?&1"
retlL ?&1$
retlL ?&1'
retlL ?&1<
retlL ?&1>
retlL ?&14
retlL ?&1J
retlL ?&1A
retlL ?&1@
retlL ?&1C
retlL ?&19
retlL ?&1%
retlL ?&1A
%:C%;O
MO-LF ?&??
GOTO :UMACOL
end
6.) Contro de %otor 0a'o a 0a'o
Para conocer las generalidades de los motores paso a paso visite:
12 ,ones on :tepping Motors
22 Tom Porter`s Motor Control Fe! Page
"2 Ian 8arries on :tepping Motors
$2 Ton+ Mercer`s Le! Pages
6.7 Re*uaci4n de veocidad de %otor D.C.
Por medio de la presente pr5ctica se pretende hacer la (ariacin de la (elocidad a un
motor 9C aplicando un (oltae (aria!le a este por medio del m#todo de modulacin por
ancho de pulso o PFM2

Onda rectan*uar & 'u' caracterL'tica'

%l m#todo de modulacin por ancho de pulso est5 !asado en la o!tencin de un (oltae
9C (aria!le a partir de una onda rectangular de 1recuencia constante + ciclo 0til (aria!le/
de tal manera *ue6
-dc N (Ciclo 0til) ^ -m

-dc N (tonCT) ^ -m
Siendo:
ton el tiempo en alto de la onda cuadrada
T el periodo de la onda rectangular (T N ton Q to11 )
-m el +olta#e m6.imo de la onda

:e puede concluir a partir de esta simple ecuacin *ue s7 hacemos (ariar el ciclo 0til de la
onda rectangular o!tendremos una (ariacin en el (oltae promedio + s7 este es aplicado
como alimentacin del motor 9C/ el e1ecto ser5 el de la (ariacin de la (elocidad2
Para a a0icaci4n de e'te 0rinci0io no' +a'a%o' en e 'i*uiente circuito:
%l programa *ue comanda so!re este 8ardLare 1unciona !asado en el pulsador :1 como
control de 1? pasos discretos de (elocidad los cuales son indicados so!re el displa+ >
segmentos (? a J) + cu+o e1ecto 1inal se o!ser(a directamente en la (elocidad del motor
M12
Li'tado de 0ro*ra%a
LIST PD 1,!-7
PINCLUDEVP1,!-7.INCW
DI" ENU BCH
#RO!! ENU BDH
#RON ENU BEH
CONT1 ENU B!H
CONT) ENU 1BH
. ENU .)6B
R ENU .1)
?QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ
INICIO
@S! STATUSCRPB ? PRO"RAMACIXN DEL SENTIDO DE PUERTOS
CLR! TRIS@
MO#L8 @Y111BBBB1Y
MO#8! TRISA
@C! STATUSCRPB
MO#L8 BBH
MO#8! DI"
@C! PORTAC7
DISZLOOP:
CALL DISPLAR ? #ISUALIJACIXN DE DI"ITO
@T!SC PORTACB ? LA TECLA ESTA OPRIMIDAO
"OTO RMOTOR
CALL RETAR ? TIEMPOS DE ANTIRE@OTE
CALL RETAR
CALL RETAR
CALL RETAR
CALL RETAR
CALL RETAR
CALL RETAR
CALL RETAR
CALL RETAR
CALL RETAR
CALL RETAR
INC! DI"C1
MO#L8 .11
.OR8! DI"CB
@NJ RMOTOR
CLR! DI"
RMOTOR
CALL MOTOR
"OTO DISZLOOP
?QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ
DISPLAR
MO#! DI"CB
CALL TA@LA
MO#8! PORT@
RETURN
?QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ
TA@LA: ? TA@LA DE DATOS PARA DECODI!ICACIXN A SIETE SE"MENTOS
ADD8! PCLC1
RETL8 BU/!
RETL8 BUB,
RETL8 BU6@
RETL8 BU7!
RETL8 BU,,
RETL8 BU,D
RETL8 BU;D
RETL8 BUB;
RETL8 BU;!
RETL8 BU,!
RETL8 BU;;
?QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ
MOTOR: ? ACTI#A MOTOR CON TIEMPOS: Ton R To55
MO#! DI"CB
SU@L8 .1B
MO#8! #RO!!
CLR8
.OR8! DI"CB
@J O!!MOTOR
MO#! DI"CB
MO#8! #RON
@S! PORTAC7 ? ENCIENDE EL MOTOR
MOTOR1:
CALL RETAR
DEC!SJ #RONC1
"OTO MOTOR1
O!!MOTOR
@C! PORTAC7 ? APA"A MOTOR
MO#! DI"CB
.ORL8 .1B
@J MOTOR/
MOTOR)
CALL RETAR
DEC!SJ #RO!!C1
"OTO MOTOR)
MOTOR/
RETURN
?QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ
RETAR
MO#L8 .
MO#8! CONT1
CICLO1
MO#L8 R
MO#8! CONT)
CICLO)
DEC!SJ CONT)C1
"OTO CICLO)
DEC!SJ CONT1C1
"OTO CICLO1
RETURN
?QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ
END
6.6 Peri5Frico' Intei*ente': M4duo LCD
Los mdulos LC9 est5n compuestos !5sicamente por una pantalla de cristal l7*uido + un
circuito microcontrolador especiali)ado el cual posee los circuitos + memorias de control
necesarias para desplegar el conunto de caracteres ASCIIC un conunto !5sico de
caracteres aponeses/ griegos + algunos s7m!olos matem5ticos por medio de un circuito
denominado generador de caracteres2 La lgica de control se encarga de mantener la
in1ormacin en la pantalla hasta *ue ella sea so!reescrita o !orrada en la memoria ;AM
de datos22
La pantalla de cristal l7*uido est5 con1ormada por una dos l7neas de 4/ 1</ 2?/ 2$ $?
caracteres de '&> pi&els cCu2
%l microcontrolador especiali)ado puede ser el modelo HITACHI 77;-B/ el modelo
HITACHI 771BB2 Tam!i#n e&isten mdulos LC9 con IC`s implantados directamente so!re
el PC@ (PO8ERTIP])2
%stos mdulos poseen a tra(#s de estos CI`s una inter1ese paralela para ser comandada
desde un microcontrolador/ microprocesador inclusi(e se puede reali)ar el control de
este desde el puerto paralelo de un PC2
%l microcontrolador + la pantalla de cristal l7*uido est5n colocados so!re un circuito
impreso (PC@) + se interconectan con el mundo e&terior (_C/ _P o PP del PC) a tra(#s de
un conector de 1$ pines/ el cual puede o!tenerse en dos presentaciones6 una l7nea + dos
l7neas teniendo la siguiente distribucin6
9escripcin de pines de los mdulos LC9
Pin nM%ero SL%+oo !unci4n
1 #'' Tierra 4 Ma'a
) #dd Ai%entaci4n G 6 #DC
/ #o #ota(e de a(u'te de contra'te
7 RS Seecci4n de Dato : Co%ando
6 R:8 Lectura : E'critura
, E Ha+iitador
; D@B 1a Lnea de dato' 1LS@2
- D@1 )a Lnea de dato'
A D@) /a Lnea de dato'
1B D@/ 7a Lnea de dato'
11 D@7 6a Lnea de dato'
1) D@6 ,a Lnea de dato'
1/ D@, ;a Lnea de dato'
17 D@; -a Lnea de dato' 1MS@2
En a' 'i*uiente' nota' de a0icaci4n 'e %ue'tra de %anera %S' co%0eta e
de+ido u'o & a eU0icaci4n de %ane(o de %4duo' LCD:

Maneo de mdulo LC9 con _C PIC en P9A ??'4>!2P9A /61K@
Cdigo Maneo de mdulo LC9 con _C PIC
(comprimido)
??'4>!2KIP 76K@
Inter1ase de un mdulo LC9 a _C Motoroa A.1>$'2P9A 16-K@
@i+io*ra5ia
Introduccin a los microcontroladores/ ,os# Adol1o Gon)5le) -2/ McGraL 8ill
Microcontroladores PIC/ Ta(ernier/ %ditorial Paranin1o
Microcontroladores PIC/ La solucin en un solo chip/ Angulo + otros/ %ditorial Paranin1o
Microcontroladores PIC/ 9ise3o de aplicaciones/ Angulo + otros/ McGraL 8ill
Cursos so!re Microcontroladores PIC/ .i(eles @5sico + A(an)ado/ TeBcien Ltda2
%m!edded Control 8and!ooB/ Microchip
PIC 1<C1> microcontroller data @ooB/ Microchip
MPA:M assem!ler2 UserEs Guide/ Microchip
MPLA@ I9% UserEs Guide/ Microchip2
LLL2microchip2com

Das könnte Ihnen auch gefallen