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 l neas 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.

* 2 neas 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 gustar a 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 ser a 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 ser a 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 per odos 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 l nea 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 var a 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/ t pico a C volt, >-3z. 9C L/ t pico a G volt, BGM3z. NI.C L/ t pico 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 -emoria de programa (las8 palabra de 9> bits +osiciones ./- de datos +osiciones EE+.$- de datos +uertos E#S SFmero de pines "nterrupciones @imers -dulos ,,+ ,omunicaciones Serie ,omunicaciones paralelo -odulo /nalgico a 4igital de 9I bit

4AEGI-3z ;MR

B:; GC: /,R,,,4,E >I 9C B G -SS+, 'S/.@ +S+ ; canales de entrada BC "nstrucciones 9> bits

Tuego de instrucciones 2ongitud de la instruccin

/rquitectura ,+' -dulos ,omparador#comparador#+Um

3arvard .isc 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'! %SC/0C 1'! %SC20C 1%#, )C R03pp&

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%#,

,'P% P' ,'P% $E $ESCR'PC'.! ! *#--ER 9B " S@#-$S $scilador de cristal entrada # Entrada de seal de relo6 e&terna 9> $ E $scilador de cristal salida # Salida de seal de relo6 e&terno. 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. +$.@/ es un puerto "#$ G @@2 bidireccional "#$ ./$) 4igital "#$ " Entrada /nalgica I B "#$ @@2 ./9) 4igital "#$ " Entrada /nalgica 9 > "#$ " " $ C "#$ @@2 @@2 ./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 e&terno. ,omparador9 salida de relo6

"#$ " I "#$ " " $

S@

<

@@2 ./C) 4igital "#$ S+" esclavo seleccin entrada Entrada /nalgica > ,omparadorG salida

+$.@R es un puerto "#$ bidireccional. +uede ser programado en todas las entradas con pull up. 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 "#$ "#$ .R<) 4igital "#$ "n circuit debugger y 4ato de programacin serial ",S+ "#$ @@2 @@2 @@2 @@2#S@ .R:) 4igital "#$ "n circuit debugger y .elo6 de programacin serial ",S+ .RB) 4igital "#$ Entrada de programacin de ba6o volta6e ",S+ .R>) 4igital "#$ .RC) 4igital "#$ "#$ "#$ "#$ @@2 @@2 @@2 @@2#S@ .RI) 4igital "#$ "nterrupcin e&terna. .R9) 4igital "#$ .RG) 4igital "#$

RC%0,/%S%0,/ C1' RC% ,/%S% ,/C1' RC/0,/%S/0CCP 2 RC/ ,/%S/ CCP2 RC20CCP/ RC2 CCP/

9C "#$ $ " 9: "#$ " "#$ 9< "#$ "#$

S@

+$.@, es bidireccional

un

puerto

"#$

.,$) 4igital "#$ salida del oscilador timer9 entrada de relo6 del timer9

.,9) 4igital "#$ Entrada del oscilador timer9 Salida +H- G, ,apturaG entrada, ,omparadorG salida S@ .,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@ .,B) 4igital "#$ Entrada o salida serial de relo6 s ncrono para modo S+". Entrada o salida serial de relo6 s ncrono para modo S+" e "X, S@ S@ S@ .,C) 4igital "#$ salida de datos S+" S@ .,:) 4igital "#$ @ransmisor as ncrono 'S/.@ .elo6 s ncrono 'S/.@9. S@ .,<) 4igital "#$ .eceptor as ncrono 'S/.@ 4atos 'S/.@ s ncronos +$.@4 es un puerto bidireccional paralelo S@#@@2 S@#@@2 .49) 4igital "#$ 4ato de +uerto paralelo esclavo .4I) 4igital "#$ 4ato de +uerto paralelo esclavo .,>) 4igital "#$ entrada de datos S+" "X, "#$ datos

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 .4G) 4igital "#$ 4ato de +uerto paralelo esclavo S@#@@2 .4B) 4igital "#$ 4ato de +uerto paralelo esclavo S@#@@2 .4>) 4igital "#$ 4ato de +uerto paralelo esclavo.

R$:0PSP: R$: PSP: R$;0PSP; R$; PSP; R$<0PSP< R$< PSP<

G; "#$ "#$ GW "#$ "#$ BI "#$ "#$

S@#@@2 .4C) 4igital "#$ 4ato de +uerto paralelo esclavo. S@#@@2 .4:) 4igital "#$ 4ato de +uerto paralelo esclavo. S@#@@2 .4<) 4igital "#$ 4ato de +uerto paralelo esclavo.

RE%0 RE% "!:

0"!:

"#$ " " " "#$ " "

S@#@@2

+$.@E es un puerto "#$ bidireccional .E$) 4igital "#$ ,ontrol de lectura para el puerto esclavo paralelo. Entrada analgica C.

RE/0 RE/

0"!;

S@#@@2 .E9) 4igital "#$ Escritura de control para el puerto paralelo esclavo. Entrada analgica : S@#@@2 .EG)4igital "#$ Selector de control para el puerto paralelo esclavo. Entrada analgica <. .e(erencia de tierra para los pines lgicos y de "#$ 1uente positiva para los pines lgicos y de "#$

"!; RE20 "!< 3ss 3dd 0"!< 9I "#$ " " 9G B9 99 BG + + E E

$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 s ncrono%

+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 S ncrono -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. @)C R 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/0C 1'! y %SC20C 1%#,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 le da 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 *"!C% 4&

%S RE('S,R%S '!,ER!%S $E

'!$- @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. R 0 y R 1 ((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. C R- f Rorra el registro ( !pone todos sus bits a cero%. C RI 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