Está en la página 1de 26

Qu es un microcontrolador?

Es un circuito integrado programable que acepta un listado de


instrucciones y contiene todos los componentes de un computador. Se
utilizan para realizar determinadas tareas o para gobernar dispositivos,
debido a su reducido tamao, suele ir incorporado en el propio dispositivo
que gobierna.

El microcontrolador es un dispositivo dedicado. En su memoria solo reside
un programa destinado a gobernar una aplicacin determinada, sus lneas
de entradas y salidas !"#$% permiten la cone&in de sensores, relay,
motores, etc. 'na vez programado y con(igurado el microcontrolador
solamente sirve para gobernar la tarea asignada.
'n microcontrolador dispone normalmente de los siguientes componentes)
* +rocesador o ,+' !'nidad ,entral de +roceso%.
* -emoria ./- para ,ontener los datos.
* -emoria para el programa tipo .$-#+.$-#E+.$-#EE+.$- 0 12/S3.
* 2neas de !entrada # salida% para comunicarse con el e&terior.
* 4iversos mdulos para el control de peri(ricos !temporizadores,
+uertos Serie y +aralelo, /#4 y 4#/, etc.%.
* 5enerador de impulsos de relo6 que sincronizan el (uncionamiento de
todo el sistema.
777777777777777777777777777777777777777777777777777777777
El siguiente traba6o va dedicado a todos aquellos que se inician en el
mundo de los microcontroladores as como aquellos que les gustara dar
un repaso a lo aprendido. 2a primera parte del tutorial notaran que tiene
el en(oque 8acia un +", en especial, el 9:1;<<, ya que es uno de los que
esta en boga y adem=s esta tomando aceptacin entre las escuelas, y
pienso que el 9:1;> ya esta muy conocido pero no de6a de ser poderoso,
+ero recuerden las bases son las mismas.
Espero les agrade y sea motivo de me6oras.
Empezar por El diagrama de un sistema microcontrolado que sera algo
as)
2os dispositivos de entrada pueden ser un teclado, un interruptor, un
sensor, etc. 2os dispositivos de salida pueden ser 2E4?s, pequeos
parlantes, zumbadores, interruptores de potencia !tiristores,
optoacopladores%, u otros dispositivos como rels, luces, un secador de
pelo, en (in... lo que se desee. /qu tienes una representacin en bloques
del microcontrolador, se puede ver que lo adaptamos tal y cual es un
ordenador, con su (uente de alimentacin, un circuito de relo6 y el c8ip
-icrocontrolador, el cual dispone de su ,+', sus memorias, y por
supuesto, sus puertos de comunicacin listos para conectarse al mundo
e&terior
Enseguida describir algunos aspectos b=sicos que tienen que ver con
todos lo microcontroladores +", de -icroc8ip para su utilizacin.
En su interior posee un microprocesador, una memoria ./- !vol=til%
donde guardaremos las variables, una memoria EE+.$- !no vol=til%
donde guardaremos nuestro +rograma, un @imer o contador que nos
(acilitar= algunas tareas, y algunas otras cosas m=s que ir=n variando
dependiendo de que +", utilicemos.
Eso no es todo, algunos traen (unciones especiales, ya 8ablaremos de
ellas.
-icrocontroladores +",9:,AA#1AA de -icroc8ip Estos micros pertenecen a
la gama media y disponen de un set de BC instrucciones, por eso lo llaman
de tipo ."S, !.educed "nstruction Set ,omputer% en espaol sera
D,omputador con Set de "nstrucciones .educidoD pocas instrucciones pero
muy poderosas, otras son de tipo ,"S, !,omple& "nstruction Set
,omputer E ,omputador con Set de "nstrucciones ,omple6o%, demasiadas
instrucciones, y lo peor, di(ciles de recordar.
Esta (amilia de microcontroladores se divide en tres rangos segFn la
capacidad de los microcontroladores. El m=s ba6o lo compone la (amilia
9:,CA. El rango medio lo componen las (amilias 9:,:A# <A# ;A, algunos
con conversores /#4, comparadores, interrupciones, etc. 2a (amilia de
rango superior lo componen los 9<,AA.
Estas son las (unciones especiales de las cuales disponen algunos
micros...
,onversores an=logo a digital !/#4% en caso de que se requiera
medir seales analgicas, por e6emplo temperatura, volta6e,
luminosidad, etc.
@emporizadores programables !@imer?s% Si se requiere medir
perodos de tiempo entre eventos, generar temporizaciones o salidas
con (recuencia espec(ica, etc.
"nter(az serial .SEGBG. ,uando se necesita establecer comunicacin
con otro microcontrolador o con un computador.
-emoria EE+.$- +ara desarrollar una aplicacin donde los datos no
se alteren a pesar de quitar la alimentacin, que es un tipo de
memoria .$- que se puede programar o borrar elctricamente sin
necesidad de circuitos especiales.
salidas +H- !modulacin por anc8o de pulso% +ara quienes
requieren el control de motores 4, o cargas resistivas, e&isten
microcontroladores que pueden o(recer varias de ellas.
@cnica llamada de D"nterrupcionesD, !sta me gust% ,uando una
seal e&terna activa una lnea de interrupcin, el microcontrolador
de6a de lado la tarea que est= e6ecutando, atiende dic8a
interrupcin, y luego continFa con lo que estaba 8aciendo.
2os microcontroladores se programan en 2engua6e ensamblador
b=sicamente, aunque tambin e&isten compiladores para 8acerlo con otros
lengua6es y cada microcontrolador vara su con6unto de instrucciones de
acuerdo a su (abricante y modelo. 4e acuerdo al nFmero de instrucciones
que el microcontrolador mane6a se le denomina de arquitectura ."S,
!reducido% o ,"S, !comple6o%.
E2 +ic9:1;<< pertenece a la gama media de -icrocontroladores donde
encontraremos modelos desde 9; 8asta :; +ines, su repertorio de
instrucciones es de BC, de 9> bits cada una !@odas las instrucciones son
de un solo ciclo con e&cepcin de las rami(icaciones del programa que son
de dos ciclos%. 4isponen de interrupciones y una pila de ; niveles que
permite el anidamiento de subrutinas. Se le puede encontrar en un tipo de
encapsulado de >I pines !J patas% +4"+ el cual es el mas utilizado para su
utilizacin did=ctica en proyectos escolares.
,uenta con una arquitectura 3arvard en la que son independientes la
memoria de instrucciones y la memoria de datos y cada una dispone de su
propio sistema de buses para el acceso.
Posee Rango amplio de tensiones de funcionamiento:
,omercial) G.I a C.C volts
"ndustrial) G.I a C.C volts
Consumo muy bajo:
K G m/ tpico a C volt, >-3z.
9C L/ tpico a G volt, BGM3z.
NI.C L/ tpico de corriente en reposo a G volts.
Caractersticas que lo hacen destacarse por su popularidad en el
mundo de la electrnica:
Soporta modo de comunicacin serial, posee dos pines para ello.
/mplia memoria para datos y programa.
-emoria reprogramable) 2a memoria en este +", es la que se
denomina 12/S3 de ;MO este tipo de memoria se puede borrar
electrnicamente !esto corresponde a la P1Q en el modelo%.
Set de instrucciones reducidas !tipo ."S,%, pero con las instrucciones
necesarias para (acilitar su mane6o.
En su arquitectura adem=s incorporan)
B temporizadores
> puertos "#$.
,omunicacin serie y paralela) 'S/.@, +S+.
Rus "G,
-odulo ,onvertidor analgico a digital /#4.
-odulo ,omparador con un volta6e de re(erencia.
Sus caractersticas ms importantes son:
CARACTERSTICAS 16F877A
1recuencia m=&ima 4AEGI-3z
-emoria de programa (las8 palabra de 9>
bits
;MR
+osiciones ./- de datos B:;
+osiciones EE+.$- de datos GC:
+uertos E#S /,R,,,4,E
SFmero de pines >I
"nterrupciones 9C
@imers B
-dulos ,,+ G
,omunicaciones Serie -SS+, 'S/.@
,omunicaciones paralelo +S+
-odulo /nalgico a 4igital de 9I bit ; canales de
entrada
Tuego de instrucciones BC "nstrucciones
2ongitud de la instruccin 9> bits
/rquitectura 3arvard
,+' .isc
-dulos ,omparador#comparador#+Um G
E E!C"PS#"$%&
$'"(R")" $E *%+#ES $E S# "R+#',EC,#R" '!,ER!"&
"qu muestro una tabla en la cual describo cada Pin o patilla del
)icrocontrolador&
!%)*RE $E
P'!
P'
!
,'P%
,'P%
$E
*#--ER
$ESCR'PC'.!
%SC/0C1'! 9B " S@#-$S $scilador de cristal entrada #
Entrada de seal de relo6 e&terna
%SC20C1%#, 9> $ E $scilador de cristal salida # Salida
de seal de relo6 e&terno.
)CR03pp& 9 "#+ S@ -aster ,lear !entrada% Volta6e
de programacin !salida%.
-aster ,lear !reset% entrada. Este
pin activa el reset vuando esta en
ba6o !Iv.%
Entrada del volta6e de
programacin.
R"40"!4
R"4
"!4
R"/0"!/
R"/
"!/
R"20"!203ref5
R"2
"!2
3ref5
C6ref
R"70"!703ref8
R"7
"!7
3ref8
R"90,4C1'
R"9
,4C1'
C/%#,
R":0
0"!90C2%#,
R":
"!9
C2%#,
G
B
>

C
:
<
"#$
"
"#$
"
"#$
"
"
$
"#$
"#$
"
I
"#$
"
"
$
@@2
@@2
@@2
@@2
S@
@@2
+$.@/ es un puerto "#$
bidireccional
./$) 4igital "#$
Entrada /nalgica I
./9) 4igital "#$
Entrada /nalgica 9

./G) 4igital "#$
Entrada /nalgica G
/#4 Entrada volta6e !ba6o%
de re(erencia.
,omparador V.E1. Salida
./B) 4igital "#$
Entrada /nalgica B
/#4 Entrada de volta6e
!alto% re(erencia.
./>) 4igital "#$
@imerI entrada de relo6
e&terno.
,omparador9 salida


./C) 4igital "#$
S+" esclavo seleccin entrada
Entrada /nalgica >
,omparadorG salida
R*%0'!,
R*%
'!,
R*/
R*2
R*70P()
R*7
P()
R*9
R*:
R*;0P(C
R*;
P(C
R*<0P($
R*<
P($
BB
B>
BC
B:
B<
B;
BW
>I
"#$
"
"#$
"#$
"#$
"#$
"
"#$
"#$
"
"#$
"#$
@@2#S@
@@2
@@2
@@2
@@2
@@2
@@2
@@2#S@
+$.@R es un puerto "#$
bidireccional. +uede ser
programado en todas las
entradas con pull up.

.RI) 4igital "#$
"nterrupcin e&terna.
.R9) 4igital "#$
.RG) 4igital "#$
.RB) 4igital "#$
Entrada de programacin de ba6o
volta6e ",S+
.R>) 4igital "#$
.RC) 4igital "#$
.R:) 4igital "#$
"n circuit debugger y .elo6 de
programacin serial ",S+
.R<) 4igital "#$
"n circuit debugger y 4ato de
programacin serial ",S+
RC%0,/%S%0,/
C1'
RC%
,/%S%
,/C1'
RC/0,/%S/0CCP
2
RC/
,/%S/
CCP2
RC20CCP/
RC2
CCP/
9C
9:
9<
"#$
$
"
"#$
"
"#$
"#$
"#$
S@
S@
+$.@, es un puerto "#$
bidireccional
.,$) 4igital "#$
salida del oscilador timer9
entrada de relo6 del timer9
.,9) 4igital "#$
Entrada del oscilador timer9
Salida +H- G, ,apturaG entrada,
,omparadorG salida
.,G) 4igital "#$
,aptura9 entrada, ,omparador9
salida, +H-9 salida
RC70SC10SC
RC7
SC1
SC
RC90S$/0S$"
RC9
S$/
S$"
RC:0S$4
RC:
S$4
RC;0,=0C1
RC;
,=
C1
RC<0R>0$,
RC<
R>
$,
9;
GB
G>
GC
G:
"#$
"#$
"#$
"#$
"
"#$
"#$
$

"#$
$
"#$
"#$
"
"#$
S@
S@
S@
S@
S@
S@
.,B) 4igital "#$
Entrada o salida serial de relo6
sncrono para modo S+".
Entrada o salida serial de relo6
sncrono para modo S+" e "X,
.,>) 4igital "#$
entrada de datos S+"
"X, "#$ datos
.,C) 4igital "#$
salida de datos S+"
.,:) 4igital "#$
@ransmisor asncrono 'S/.@
.elo6 sncrono 'S/.@9.
.,<) 4igital "#$
.eceptor asncrono 'S/.@
4atos 'S/.@ sncronos
R$40PSP4
R$4
PSP4
R$/0PSP/
R$/
PSP/
R$20PSP2
R$2
PSP2
R$70PSP7
R$7
PSP7
R$90PSP9
R$9
PSP9
9W
GI
G9
GG
G<
"#$
"#$
"#$
"#$
"#$
"#$
"#$
"#$
S@#@@2
S@#@@2
S@#@@2
S@#@@2
S@#@@2
+$.@4 es un puerto bidireccional
paralelo
.4I) 4igital "#$
4ato de +uerto paralelo esclavo
.49) 4igital "#$
4ato de +uerto paralelo esclavo
.4G) 4igital "#$
4ato de +uerto paralelo esclavo
.4B) 4igital "#$
4ato de +uerto paralelo esclavo
.4>) 4igital "#$
4ato de +uerto paralelo esclavo.
R$:0PSP:
R$:
PSP:
R$;0PSP;
R$;
PSP;
R$<0PSP<
R$<
PSP<
G;
GW
BI
"#$
"#$
"#$
"#$
"#$
"#$
S@#@@2
S@#@@2
S@#@@2
.4C) 4igital "#$
4ato de +uerto paralelo esclavo.
.4:) 4igital "#$
4ato de +uerto paralelo esclavo.
.4<) 4igital "#$
4ato de +uerto paralelo esclavo.
RE%0 0"!:
RE%
"!:
RE/0 0"!;
RE/
"!;
RE20 0"!<
"!<
;
W
9I
"#$
"
"
"
"#$
"
"
"#$
"
"
S@#@@2
S@#@@2
S@#@@2
+$.@E es un puerto "#$
bidireccional
.E$) 4igital "#$
,ontrol de lectura para el puerto
esclavo paralelo.
Entrada analgica C.
.E9) 4igital "#$
Escritura de control para el
puerto paralelo esclavo.
Entrada analgica :
.EG)4igital "#$
Selector de control para el puerto
paralelo esclavo.
Entrada analgica <.
3ss 9G
B9
+ E .e(erencia de tierra para los
pines lgicos y de "#$
3dd 99
BG
+ E 1uente positiva para los pines
lgicos y de "#$
$escripcin de los puertos:
+uerto /)
+uerto de e#s de : pines
./I Y ./I y /SI
./9 Y ./9 y /S9
./G Y ./G, /SG y Vre(E
./B Y ./B, /SB y Vre(Z
./> Y ./> !Salida en colector abierto% y @I,M"!Entrada de relo6 del
modulo @imerI%
./C Y ./C, /S> y SS !Seleccin esclavo para el puerto serie sncrono%
+uerto R)
+uerto e#s ; pines
.esistencias pullEup programables
.RI Y "nterrupcin e&terna
.R>E< Y "nterrupcin por cambio de (lanco
.RCE.R< y .RB Y programacin y debugger in circuit
+uerto ,)
+uerto e#s de ; pines
.,I Y .,I, @9$S$ !@imer9 salida oscilador% y @9,M" !Entrada de relo6
del modulo @imer9%.
.,9E.,G Y +H-#,$-+#,/+@
.,9 Y @9$S" !entrada osc timer9%
.,BE> Y "",
.,BEC Y S+"
.,:E< Y 'S/.@
+uerto 4)
+uerto e#s de ; pines
Rus de datos en ++S !+uerto paralelo esclavo%
+uerto E)
+uerto de e#s de B pines
.EI Y .EI y /SC y .ead de ++S
.E9 Y .E9 y /S: y Hrite de ++S
.EG Y .EG y /S< y ,S de ++S
$ispositi6os perif?ricos:
@imerI) @emporizadorEcontador de ; bits con preescaler de ; bits
@imer9) @emporizadorEcontador de 9: bits con preescaler que puede
incrementarse en modo sleep de (orma e&terna por un cristal#cloc[.
@imerG) @emporizadorEcontador de ; bits con preescaler y
postescaler.
4os mdulos de ,aptura, ,omparacin, +H- !-odulacin de
/nc8ura de pulsos%.
,onversor /#4 de 9I bits.
+uerto Serie Sncrono -aster !-SS+% con S+" e "
G
, !-aster#Slave%.
'S/.@#S," !'niversal Sync8ronous /sync8ronous .eceiver
@ransmitter% con W bit.
+uerta +aralela Esclava !+S+% solo en encapsulados con >I pines.
@)CR 0 3ppA: Es una pata de mFltiples aplicaciones, es la entrada de
.eset !master clear% si est= a nivel ba6o y tambin es la 8abilitacin de la
tensin de programacin cuando se est= programando el dispositivo.
,uando su tensin es la de V44 el +", (unciona normalmente.
E RESE,: E2 +",9:1;<< posee internamente un circuito temporizador
conectado al pin de reset que (unciona cuando se da alimentacin al
micro, se puede entonces conectar el pin de -,2. a la (uente de
alimentacin. Esto 8ace que al encender el sistema el microcontrolador
quede en estado de reset por un tiempo mientras se estabilizan todas las
seales del circuito !lo cual es bastante bueno, por eso siempre la
usaremos...%, /dem=s de que nos puede servir por si el micro en algFn
momento no nos responde nunca esta dem=s aqu muestro el
cone&ionado del botn que 8ar= dic8a (uncin.
@3SS y 3$$A: Son respectivamente las patas de masa y alimentacin. 2a
tensin de alimentacin de un +", est= comprendida entre GV y :V
aunque se recomienda no sobrepasar los C.CV
@%SC/0C1'! y %SC20C1%#,A: ,orresponden a los pines de la
entrada e&terna de relo6 y salida de oscilador a cristal respectivamente.
El oscilador e=terno: Es un circuito e&terno que le indica al micro la
velocidad a la que debe traba6ar. Este circuito, que se conoce como
oscilador o relo6, es muy simple pero de vital importancia para el buen
(uncionamiento del sistema. El +9,9:1;<< puede utilizar cuatro tipos de
relo6 di(erentes. Estos tipos son)
RC& $scilador con resistencia y condensador.
>,& ,ristal.
BS& ,ristal de alta velocidad.
P& ,ristal para ba6a (recuencia y ba6o consumo de potencia.
En el momento de programar o DquemarD el microcontrolador se debe
Especi(icar que tipo de oscilador se usa. Esto se 8ace a travs de unos
1usibles llamados D(usibles de con(iguracinD o (uses.
En el +",9:1;<< se puede admitir un oscilador de cristal desde > a GI
-3z. +or el momento utilizamos uno de >-3z, porque garantiza mayor
precisin y un buen arranque del microcontrolador. "nternamente esta
(recuencia es dividida por cuatro, lo que 8ace que la (recuencia e(ectiva de
traba6o sea de 9 -3z, por lo que cada instruccin se e6ecuta en un
microsegundo. El cristal debe ir acompaado de dos condensadores y el
modo de cone&in es el
Siguiente)
Si se requiere de muc8a precisin en el oscilador, podemos utilizar una
.esistencia y un condensador, como se muestra en la (igura. 4onde $S,G
Queda libre entregando una seal cuya (recuencia es la del $S,#>.
SegFn las recomendaciones de -icroc8ip !.% puede tomar valores entre
C[ y 9II[, y , superior a GIp(.
%rganiCacin de la memoria&
En primer lugar tenemos que distinguir claramente entre tres tipos de
-emoria)
'na) la memoria EE+.$- donde almacenaremos el programa que
3aremos, esta memoria solo podr= ser leda por el pic !el pic va
2eyendo las instrucciones del programa almacenado en esta memoria
\ las va e6ecutando%. /l apagar el pic esta memoria no se borra.
4os) la memoria ./- en cuyos registros se ir=n almacenando los
Valores de las variables que nosotros queramos y cuando nosotros
Queramos !por programa%, al apagar el pic esta memoria se borra.
@res) la memoria EE+.$- para datos, es un espacio de memoria
EE+.$- en la que se pueden guardar variables que queremos
,onservar aunque se apague el pic. So se tratar= aqu por ser una
-emoria m=s di(cil de emplear.
a memoria EEPR%) D memoria de Programa&
El espacio marcado como P'ser memory SpaceQ es el espacio de memoria
donde ira nuestro programa, desde IIII8 8asta la 91118.
D.eset VectorD es la primera direccin a la que se dirige el pic al
encenderlo o al
.esetearlo.
D+,D y los DStac[ 2evelD son empleado por el pic y nosotros no tenemos
acceso
a ellos.
" )E)%R'" R") 2a memoria ./- no solo se usa para almacenar
nuestras variables, tambin se almacenan una serie de registros que
con(iguran y controlan el +",. +odemos observar en la imagen que esta
memoria esta dividida en > Rancos !banco I,9, G, B%. /ntes de acceder a
un registro de esta memoria tenemos que preguntarnos en que banco
estamos, generalmente se traba6a en el banco I cada banco contiene sus
registros que sirven para la con(iguracin y control de la memoria ./-.
Estos registros se usan para controlar los pines del +",, consultar los
resultados de las operaciones de la /2' !unidad aritmtica lgica%,
cambiar del banco de memoria entre otras cosas.
2a seleccin del banco de memoria se 8ace por medio de los bits .+9 y
.+I del registro S@/@'S !:,C%.
,abla de seleccin de bancos&
C%!-'(#R"C'.! $E %S P#ER,%S $E P'C
2leg el momento de ver como con(igurar los puertos del +",. +ara poder
3acerlo es necesario conocer la tabla de registros de la memoria de datos,
la cual como di6imos, est= dividida en el *"!C% 4E *"!C% /, *"!C% 2E
*"!C% 7.
2os registros importantes en la con(iguracin de los puertos son)
S,",#S direccin 47h
P%R," direccin 4:h
P%R,* direccin 4;h
P%R,C direccin 4<h
P%R,$ direccin 4Fh
P%R,E direccin 4Gh
,R'S" direccin F:h
,R'S* direccin F;h
,R'SC direccin F<h
,R'S$ direccin FFh
,R'SE direccin FGh
S$@/) solo incluyo los registros de los bancos I y 9 ya que para los dos
restantes es similar su con(iguracin. +or de(ecto el +", tendr= todos los
"#$ +ort?s !es decir los puertos ./, .R, .,, .4, .E%, colocados como
entrada de datos, y si queremos cambiarlos 8abr= que con(igurarlos.
/l con(igurar los puertos se deber= tener en cuenta que)
Si asignas un CER% @4A a un pin, ste quedar= como salida y...
Si le asignas un #!% @/A, quedar= como entrada&
Esta asignacin se 8ace en)
,R'S" para los pines del P#ER,% "&
,R'S* para los pines del P#ER,% *&
,R'SC para los pines del P#ER,% C&
,R'S$ para los pines del P#ER,% $&
,R'SE para los pines del P#ER,% E&
Por e6emplo si @."SE es igual a 99I todos sus pines ser=n entradas salvo
.EI que esta como salida.
S" ,R'S* es igual a IIIIIII9 todos sus pines ser=n salidas salvo .RI
que esta como entrada.
,uando el +", arranca se encuentra en el R/S,$ I, como @."S/ y @."SR
Est=n en el *"!C% / no queda de otra, deberemos cambiar de banco.
Esto se logra a travs del .egistro S,",#S&
S,",#S es un .egistro de ; bits u ; casillas, en el cual la S] C !RP4% y la
S] : !RP/% de(inen la posicin del banco en donde nos encontramos.
,omo se muestra con la (igura que se vio en la seccin de la "
)E)%R'" R") @,abla de seleccin de bancosA&
$ESCR'PC'%! $E "(#!%S $E %S RE('S,R%S '!,ER!%S $E
*"!C% 4&
'!$- @direccionamiento indirectoA: 4ireccin II8, sirve para ver el
dato de la direccin a la que apunta el registro 1S. !dir. I>8%.
,)R4 @,imer0contadorA: 4ireccin I98, /qu se puede ver el valor en
@iempo real del @imer#contador. @ambin se puede introducir un valor
y alterar as el conteo. Este conteo puede ser interno !cuenta ciclos de
.elo6% o e&terno !cuenta impulsos introducidos por ./>%.
PC @Parte baja del contador de programaA: 4ireccin IG8,
-odi(icando este registro se modi(ica el contador de programa, este
contador de programa es el que seala al pic en que direccin !de
EE+.$-% tiene que leer la siguiente instruccin. Esto se utiliza muc8o
para consultar tablas.
STATUS: Direccin 03h, este es uno de los registros mas importantes
Y el que ms vas a utilizar. Hay que analizar el funcionamiento de
ste registro !it a !it"
CARRY, Direccin STATUS, 0 (bit 0): !it de des!ordamiento. ste !it
se pone a #$# cuando la operacin anterior ha re!asado la capacidad de un
!yte. %or e&emplo, si sumo dos n'meros y el resultado no ca!e en ( !it el
)*++Y se pone a #$#, %asa lo mismo cuando resto dos n'meros y el
resultado es un n'mero negativo. ,e puede usar para sa!er si un n'mero
es mayor que otro -restndolos, si hay acarreo es que el segundo era
mayor que el primero.. /na vez que este !it se pone a #$# no se !a&a solo
-a#0#., hay que hacerlo por programa si queremos volverlo a utilizar.
DC (digit carry), Direccin STATUS, 1 (bit 1): lo mismo que el anterior
pero esta vez nos avisa si el n'mero no ca!e en cuatro !its.
Z (zero), Direccin STATUS, 2 (bit 2): ,e pone a #$# si la operacin
anterior ha sido cero. Y pasa a #0# si la operacin anterior no ha sido cero.
,e usa para compro!ar la igualdad entre dos n'meros -restndolos, si el
resultado es cero am!os n'meros son iguales.
D (o!er " Do!n bit), Direccin STATUS, # (bit#): se pone a #0#
despu0s de e&ecutar la instruccin ,1%, se pone a #$# despu0s de
e&ecutar la instruccin )1+2D3 o despu0s de un po4er5up.
T$ (Ti%er U&), Direccin STATUS, ' (bit'): se pone a #0# cuando se
aca!a el tiempo del 2*3)HD67, ,e pone a #$# despu0s de e&ecutar las
instrucciones, )1+2D3 o ,1% o despu0s de un po4er5up.
R0 y R1 ((e)eccin directa de banco), Direccin STATUS, * y
STATUS, +: $$ 8 9an: 3 -$(0h5$;;h.
$0 8 9anco < -$00h5$=;h.
0$ 8 9anco $ -(0h5;;h.
00 8 9anco 0 -00h5=;h.
)ada !anco es de $<( !ytes.
,R,((e)eccin indirecta de banco) Direccin STATUS,-:
$ 8 9anco <, 3 -$00h5$;;h.
0 8 9anco 0, $ -00h5;;h.
.SR (/ntero), Direccin 0'0, se usa para direccionamiento indirecto en
com!inacin con el registro >?D; -dir. 00h." se carga la direccin del registro
que queremos leer indirectamente en ;,+ y se lee el contenido de dicho registro
en >?D;.
$RTA (/erto A), Direccin 0*0: )on este registro se puede ver o modificar
el estado de los pines del puerto * -+*0 @ +*=.. ,i un !it de este registro est a
#$# tam!i0n lo estar el pin correspondiente a ese !it. l que un pin est0 a #$#
quiere decir que su tensin es de AB, si est a #0# su tensin es 0B.
*sC sucede tam!i0n para %6+39, ), D y .
C1AT2, Direccin 0A0: Dodifica la parte alta del contador de programa
-%)., el contador de programa se compone de $3 !its, los ( !its de menor peso
se pueden modificar con %)1 -dir. 0<h. y los A !its de mayor peso se pueden
modificar con %)1*3H.
,3TC$3 (contro)a )a( interr/&cione(), Direccin 040: ,e estudia !it a
!it"
R4,. (.)ag de interr/&cin &or ca%bio de $RT4) Direccin
,3TC$3,0 (bit0): se pone a #$# cuando alguno de los pines +9E, +9A,
+9F, o +9= cam!ia su estado. /na vez que est a #$# no pasa a #0# por si
mismo" hay que ponerlo a cero por programa.
,3T. (.)ag de interr/&cin de R40) Direccin ,3TC$3,1: ,i est a
#$# es que ha ocurrido una interrupcin por +90, si est a #0# es que
dicha interrupcin no ha ocurrido. ste !it es una copia de +90.
T5R$,. (.)ag de interr/&cin &or de(borda%iento de T5R0)
Direccin ,3TC$3,2: )uando 3D+0 se des!orda este ;lag avisa
poniendose a #$#. %oner a #0# por programa.
R4,6 (2abi)ita )a interr/&cin &or ca%bio de $RT4) Direccin
,3TC$3,#: ,i est a #$# las interrupciones por cam!io de %6+39 son
posi!les.
,3T6 (2abi)ita )a interr/&cin &or R40) Direccin ,3TC$3,': ,i lo
ponemos a #$# la interrupcin por +90 es posi!le.
T5R$,6 (2abi)ita )a interr/&cin &or de(borda%iento de T5R0)
Direccin ,3TC$3,*: ,i este !it esta a #$# la interrupcin por
des!ordamiento de 3D+0 es posi!le.
6,6 (2abi)ita )a interr/&cin de &eri78rico( Direccin ,3TC$3,+:
)uando este !it est a #$# ha!ilita todas las interrupciones de perif0rico
enmascara!les.
9,6 (2abi)ita )a( interr/&cione( g)oba)%ente) Direccin ,3TC$3,-:
ste !it permite que cualquier interrupcin de las anteriores sea posi!le.
%ara usar alguna de las interrupciones anteriores hay que ha!ilitarlas
glo!almente e individualmente.
)"P" $E )E)%R'" R") H RE('S,R%S&

SE, $E '!S,R#CC'%!ES P"R" P'C/;-F<>:
Para entender mejor cada instruccin se e=plica a continuacin el
significado de algunos parmetros:
() .egistro al que a(ecta la instruccin
H) /cumulador !Hor[ing register%
b) SFmero de bit !8ay instrucciones que a(ectan a un solo bit%
[) constante !un nFmero%
d) seleccin de destino del resultado de la instruccin, puede ser DID
o D9D, si es DID el resultado se guarda en el acumulador !H% y si es
D9D se guarda en el registro ( al que a(ecta la instruccin.
,n(tr/ccione( orientada( a regi(tro(:
"$$I- fEd Suma H y el registro (, el resultado lo guarda
segFn d !si d^I se guarda en H y si d^9 se guarda en (%.
"!$I- fEd .ealiza la operacin /S4 lgica entre H y (, el
.esultado lo guarda segFn d.
CR- f Rorra el registro ( !pone todos sus bits a cero%.
CRI E Rorra el acumulador.
C%)- fEd ,alcula el complementario del registro ( !los bits
que estan a DID los pone a D9D y viceversa. .esultado segFn d.
$EC- fEd 4ecrementa ( en uno !le resta uno%. .esultado
segFn d.
$EC-SJ fEd 4ecrementa ( y se salta la siguiente instruccin si
el resultado es cero. .esultado segFn d.
'!C- fEd "ncrementa ( en uno !le suma uno%. .esultado segFn
d.
'!C-SJ fEd "ncrementa ( y se salta la siguiente instruccin si
el resultado es cero !cuando se desborda un registro vuelve al
valor II8%. .esultado segFn d.
'%RI- fEd .ealiza la operacin lgica $. entre H y (.
.esultado segFn d.
)%3- fEd -ueve el contenido del registro ( a H si d^I !si d^9
lo vuelve a poner en el mismo registro%.
)%3I- f mueve el valor de H a (. +or e6emplo, si queremos
copiar el valor del registro D.E59D al registro D.E5GD !ya veremos como
ponerles nombres a los registros% escribiremos)
5$:. R691,0 G mueve el valor de +7$ a 2
5$:;. R692 G mueve el valor de 2 a +7<
1o que va despu0s delG son comentarios
3$ 5 ?o hace nada, solo pierde el tiempo durante un ciclo.
R- fEd .ota el registro ( 8acia la izquierda a travs del bit ,/..\
!todos los bits se mueven un lugar 8acia la izquierda, el bit < de (
pasa al ,/..\ y el bit ,/..\ pasa al bit I de (%. .esultado segFn d.
RR- fEd 2o mismo que .21 pero 8acia la derec8a.
S#*I- fEd .esta ( y H !( E H%. .esultado segFn d.
SI"P- fEd intercambia los > primeros bit de ( por los otros cuatro.
.esultado segFn d.
>%RI- fEd .ealiza la operacin lgica A$. !$. e&clusiva% entre H
y (. .esultado segFn d.
,n(tr/ccione( orientada( a bit(:
4C. 7,b %one a #0# el !it ! del registro f
4S. 7,b %one a #$# el !it ! del registro f
4T.SC 7,b ,e salta la siguiente instruccin si el !it ! del registro f es #0#
4T.SS 7,b ,e salta la siguiente instruccin si el !it ! del registro f es #$#
,n(tr/ccione( orientada( a con(tante( y de contro):
ADD1; < 1e suma el valor : al acumulador -2..
A3D1; < 6peracin lgica *?D entre 2 y el valor : -resultado en 2..
CA11 < 1lamada a su!rutina cuyo inicio esta en la direccin :
C1R;DT 5 9orra el registro 2atchdog
9$T$ < ,alta a la direccin : de programa.
,$R1; < 6peracin lgica 6+ entre 2 y el valor : -resultado en 2.
5$:1; < carga el acumulador con el valor :. %or e&emplo, si queremos
cargar el valor <*h en el registro #+7$# escri!iremos"
5$:1; 2A2G carga el acumulador con el valor <*h
5$:;. R691G mueve el valor de 2 a #+7$#
R6T.,6 5 >nstruccin para volver de la interrupcin
R6T1; < carga el valor : en 2 y vuelve de la interrupcin
R6TUR3 5 vuelve de una su!rutina.
S166 5 l pic pasa a modo de ,tand!y.
4,41,$9RA.,A:
$. Ho&a de datos del %>)$F;(=H* de Dicrochip.
<. %rogramacin del %>)$F;(E. por )arlos DCaz 444.electron.es.vg
3. )lu! ,a!er electrnica Icurso de pics para estudiantes y aficionadosJ ?
0
<0.
E. d Kuar: >ng. Horacio D. Balle&o
A. )lu! ,a!er electrnica Imicrocontroladores %>) %rogramacin y desarrolloJ
?
0
<E. d Kuar: >ng. Horacio D. Balle&o
F. 1 %>)$F;(== por Darco *ntonio Drquez ,urez

También podría gustarte