Sie sind auf Seite 1von 25

1.

EN EL INTERIOR DEL PROCESADOR


1.1 UNA ARQUITECTURA MODERNA Y REVOLUCIONARIA.
Para lograr una compactacin en el cdigo ptima y una velocidad superior a la de sus
competidores los microcontroladores PIC incorporan en un procesador tres de las
caractersticas ms avanzadas en los grandes computadores:
Procesador tipo RISC, sea que dispone de un juego de instrucciones reducido,
simple y pequeo, lo cual se consigue que la mayora de las instrucciones se
ejecuten en un ciclo de instruccin!
Procesador segmentado, que aumenta el rendimiento del computador de"ido al
#omento del paralelismo implcito, descomponi$ndolo en etapas para poder
procesar una instruccin di#erente en cada una de ellas y tra"ajar con varias a la
vez!
%rquitectura &arvard, donde son independiente la memoria de instrucciones y la
memoria de datos y cada una dispone de su propio sistema de "uses para el
acceso! 'sta dualidad, adems de propiciar el paralelismo, permite la adecuacin
del tamao de las pala"ras y los "uses de los requerimientos espec#icos de las
instrucciones y de los datos! (am"i$n la capacidad de memoria es di#erente!
1.2 MEMORIA DE PROGRAMA.
)a arquitectura de los PIC de la gama media admite un mapa de memoria de programa
capaz de contener *!+,- instrucciones de +. "its cada una! 'ste mapa se divide en
pginas de -!/.* posiciones! Para direccionar *0 posiciones se necesitan +1 "its, que es
la longitud que tiene el contador del programa, sin em"argo, en el PIC +23*. solo tiene
implementadas +0 posiciones, por lo que se ignoran los 1 "its de mas peso del PC!
+!-!+ 'l Contador de Programa y la Pila!
'l rango de direcciones, del PIC +23*., en su memoria de programa llega desde la ////
& a la /133 &, o sea, un total de +!/-. posiciones de +. "its de tamao!
'n el PC se ignoran los 1 "its de mayor peso, de #orma que puntuar a la
direccin 11 & es lo mismo que 4acerlo a las .11 &, *11 &, C11 &, +/11 &, +.11 & o a
la +C11 &!
%l igual que todos los registros espec#icos que controlan la actividad del
procesador, el contador de programa est implementado so"re un par de posiciones de la
memoria R%5! Cuando se escri"e el contador de programa como resultado de una
operacin de la %)6, los * "its de menos peso del PC residen en el registro PC), que
ocupa, repetido, la posicin - de los dos "ancos de la memoria de datos! )os "its de
ms peso, PC 7+-:*8, residen en los 9 "its de menos peso del registro PC)%(&, que
ocupa la posicin /% & de los dos "ancos de la memoria R%5!
'n la instrucciones goto y call de la gama media los ++ "its de menos peso del
PC provienen del cdigo de la instruccin y los otros dos de los "its PC)%(& 7. : 18!
Con los ++ "its que cargan en el PC desde el cdigo de las instrucciones goto y
call, se puede direccionar una pgina de -0 de la memoria! )os "its restantes
PC7+-:++8 tienen la misin de apuntar una de las cuatros pginas del mapa de memoria
y , en los modelos del PIC que alcanzan este tamao, dic4os "its proceden de PC)%(&
7.:18!
)a pila es una zona aislada de la memoria de instruccin y datos! (iene una estructura
)I3:, en la que el ;ltimo valor guardado es el primero que sale! (iene * niveles de
pro#undidad, cada uno con +1 "its! 3unciona como un buffer circular, de manera que
el valor que se o"tiene al realizar el noveno desempilado 7pop8 es igual al que se
o"tuvo en el primero!
)a instruccin call y las interrupciones que originan la carga del contenido del
PC en el nivel superior o cima de la pila! 'l contenido del nivel superior se saca de la
pila al ejecutar las instrucciones return, retlw, retfie! 'l contenido del registro PC)%(&
no es a#ectado por la entrada o salida de in#ormacin de la pila!
1.3 MEMORIA DE DATOS:
)a memoria de datos del pic +23*. dispone de dos zonas di#erentes:
+!< rea de RAM estt!"a # SRAM$ donde reside el "anco de registros especi#ico
7S3R8 y el "anco de registro de propsito general! 'l primer tiene -. posiciones de
tamao "yte, aunque dos de ellas no son operativa, y el segundo 2*!
-!< rea EEPROM de 2. "ytes, donde opcionalmente se pueden almacenar datos
que no se pierden al desconectar la alimentacin!
)a zona de memoria R%5 se 4alla dividida en dos "ancos 7"anco / y "anco +8 de +-*
"ytes cada uno! 'n el pic +23*. slo se 4allan implementadas #sicamente de las */
primeras posiciones de cada "anco, de las cuales +- primeras estn reservadas a los
registros de propsito general 7S3R8, que son los encargados de procesador y sus
recursos! %lgunos de dic4os registros se 4allan repetidos en la misma direccin de los
dos "ancos, para simpli#icar su acceso 7I=>3, 'S(%>:, 3SR, PC)%(& e I=(C:=8!
)a posicin apuntada por la direccin ? & y la apuntada por la *? & no son operativas!
)os 2* registros restantes de cada "anco se destinan al registro de propsito general y,
en realidad, slo son operativos los 2* del "anco / porque los del "anco + se mapean
so"re el "anco /, es decir, cuando se apunta a un registro general del "anco +, se accede
al mismo de "anco /!
Para seleccionar el "anco a acceder 4ay que manipular el "it 97RP08 del registro
ESTADO! Si RP0! se accede al "anco + y si RP00 se accede al "anco /! (ras un
reset se accede automticamente al "anco /! Para seleccionar el registro de propsito
general no 4ay que tener en cuenta el estado del "it RP0, porque al estar mapeado el
"anco + so"re el "anco /, cualquier direccionamiento de un registro del "anco +
corresponde al 4omlogo del "anco /! 'n el direccionamiento directo a los registros
@PR se ignora el "it de ms peso, que identi#ica el "anco, y sus direcciones estn
comprendidos entre el valor 0"0c y 0"#f en 4eAadecimal!
)os registros S3R se clasi#ican en - grupos! 'n unos se incluyen aquellos que
controlan el n;cleo del microcontrolador 7'S(%>:, :P(I:=, I=(C:=, etc8 y en el
otro los que determinan la operatividad de los recursos auAiliares y peri#$ricos! 'n la
#igura de la pagina siguiente se ve la estructura de la memora R%5 del +23*.:
5'5:RI% >' >%(:S
// I=>3 I=>3 */
/+ (5R/ :P(I:= *+
/- PC) PC) *-
/1 'S(%>: 'S(%>: *1
/. 3SR 3SR *.
/9 P6'R(% % (RIS % *9
/2 P6'R(% B (RIS B *2
/? *?
/* ''>%(% ''C:=+ **
/, ''%>R ''C:=- *,
/% PC)%(& PC)%(& *%
/B I=(C:= I=(C:= *B
/C
2* R'@IS(R:S >'
PR:PCSI(:
@'='R%)
5%P'%>:S
'= ')
B%=C: /
*C
.3 C3
>ireccin no implementada #sicamente! (oma el valor de /!
+!1!+>escripcin >el Registros >e Propsito 'speci#ico:
>ir =om"re Bit ? Bit 2 Bit 9 Bit . Bit 1 Bit - Bit + Bit /
Banco /
// 4 I=>3 6sa el contenido de 3SR para direccionar la memoria
/+ 4 (5R/ RelojD Contador en tiempo real de * "its
/- 4 PC) Bits de menos peso de PC
/1 4 'S(%>: IRP RP+ RP/ (:E P>E F >C C
/. 4 3SR >ireccionamiento indirecto con I=>3
/9 4 Puerta % GGG GGG GGG R%.D(/C0+ R%1 R%- R%+ R%/
/2 4 Puerta B RB? RB2 RB9 RB. RB1 R%- R%+ R%/
/? 4 =o implementado, se lee como /!
/* 4 ''>%(% Registro de datos de la ''PR:5
/, 4 ''%>R Registro de datos
/% 4 PC)%(& GGG GGG GGG Se escri"e los 9 "its de PC&
/* 4 I=(C:= @I' ''I' (:I' I=(' RBI' (:I3 I=(3 RBI3
Banco +
*/ 4 I=>3 6sa el contenido de 3SR para direccionar memoria
*+ 4 :P(I:= RBP6E I=(>'@ (:CS (:S' PS% PS- PS+ PS/
*- 4 PC) Byte de menos peso del PC
*1 4 'S(%>: IRP RP+ RP/ (:E P>E F >C C
*. 4 3SR >ireccionamiento indirecto con I=>3
*9 4 (RIS % GGG GGG GGG Con#iguracin puerta %
*2 4 (RIS B Con#iguracin puerta B
*? 4 =o implementado, se lee como /!
** 4 ''C:=+ GGG GGG GGG ''I3 HR'RR HR'= HR R>
*, 4 ''C:=- Registro de control ''PR:5 7no es un registro #sico8
*% 4 PC)%(& GGG GGG GGG Bits de mayor peso de PC
*B 4 I=(CI=(C:= @I' ''I' (:I' I=(' RBI' (:I3 I=(3 RBI3
+!1!->ireccionamiento >e )a 5emoria >e >atos:
'n los PIC de la gama media la memoria de datos est organizada para alojar un
mAimo de . "ancos de +-* "ytes cada uno! 'l PIC +23*. slo tiene implementados los
*/ primeros registros! 'n este microcontrolador solo se usan - de los . "ancos por lo
que solo se destina un "its del registro de ESTADO 7RP0$ para seleccionar el "anco + o
el "anco cero, y otros ? "its para elegir una de las */ posiciones de "anco
seleccionado7en realidad son +-* posiciones pero solo son ;tiles las */ primeras8!
+!1!-!+ >ireccionamiento >irecto
'l operando que utiliza la instruccin en curso se re#erencia mediante su direccin, que
viene incluida en el cdigo :P de la misma, concretamente en los ? "its de menos peso!
'l "anco a acceder lo determinan el "it RP0 del registro ESTADO!
+!1!-!- >ireccionamiento Indirecto
'ste modo de direccionado se usa cuando en una instruccin se utiliza como operando
el registro %&D', que ocupa la direccin / de am"os "ancos! 'n realidad el registro
%&D' no est implementado #sicamente y cuando se le 4ace re#erencia, se accede a la
direccin de un "anco especi#icado con los ? "its de menos peso del registro 'SR(!'l "it
de ms peso de 'SR junto con el "it %RP del registro de ESTADO se encargan de
seleccionar el "anco a acceder, mientras que los ? "its de menos peso del 'SR apuntan a
la posicin! Como solo 4ay dos "ancos en nuestro pic en este modo de
direccionamiento, el "it %RP0 siempre!
E)emplo*
6sando el modo de direccionamiento indirecto poner a / las posiciones de la memoria
de datos comprendidas entre la direccin 0"0c y 0"#+ del "anco / en un pic +23*.!
Soluci,n*
'n el modo de direccionado indirecto act;a como puntero el contenido del registro 3SR,
que en este ejercicio se ir incrementando desde 0"0c 4asta el valor 0"#-, en el que su
"it 1 pasa a valer +!
mo.lw 0"0c /0 toma el .alor inicial del puntero
mo.wf 'SR /'SR se carga con el .alor de 0
bucle incf 'SR /Se incrementa 'SR en una unidad
btfss 'SR,1 /Si el bit 1 de 'SR .ale ! se brinca
/la siguiente instrucci,n 2s3ip$
goto bucle /Se salta a bucle por4ue .ale 0
/el bit 1 de 'SR
1.% EL REGISTRO DE ESTADO
&asta a4ora el 'S(%>: es el registro ms usado y es el momento de descri"irle en su
totalidad! :cupa la direccin 1 tanto del "anco / como del "anco + de la memoria de
datos R%5! Sus "its tienen tres misiones distintas!
+!< Se encargan de avisar las incidencias del resultado de la %)6 7C, >C, y F8!
-!< Indican el estado de reset 7(:E y P>E8!
1!< Selecciona el "anco a acceder en la memoria de datos 7IRP, IRP/,IRP+8!
)os "its de (:E y P>E indican el estado del procesador en algunas condiciones y no se
pueden escri"ir! Por este motivo la instruccin clrf 'S(%>: deja el contenido de dic4o
registro con el valor ///u u!uu, siendo u el sm"olo de Ino cam"iaJ! Slo se pone a /
los tres "its de ms peso, el "it F7cero8 se pone a + y los restantes no alteran su valor!
'n la pagina siguiente se descri"e la misin de los "its del registro 'S(%>:!
IRP RP+ RP/ (:E P>E F >C C
C: a"arre# &''e(ada e) e' *!t de +as ,es#
+: Cuando este "it vale + indica que se 4a producido acarreo en el "it de
mas peso del resultado al ejecutar las instrucciones addwf y addlw(
/: =o se 4a producido acarreo!
DC: a"arre# &''e(ada e) e' %*!t de.
'l mismo signi#icado que el "it C pero re#iri$ndose al . "it! >e inter$s cuando se
tra"aja como BC>!
-: Cer#
+: 'l resultado de una operacin lgicoGaritm$tica 4a sido /!
/: 'l resultado de una operacin lgicoGaritm$tica no 4a sido /!
PD.: /P#0er D#0)1
+: Se pone automticamente a + despu$s de la alimentacin de la coneAin del
microcontrolador o al ejecutar la instruccin clrwdt(
/: Se pone automticamente a / mediante la ejecucin de la instruccin sleep!
TO.: /T!+e #2t1
+: Se pone a + despu$s de la coneAin de la alimentacin o al ejecutarse la
instrucciones clrwdt y sleep!
/: Se pone a / cuando se produce el des"ordamiento del perro guardin
RP13RP4: Se'e""!5) de *a)"# e) d!re""!#)a+!e)t# d!re"t#.
Como el PIC +2A*. slo tiene - "ancos, ;nicamente emplea el "it RP/, de #orma
de que cuando vale + se accede al "anco + y cuando vale / se accede al "anco /!
>espu$s de un Reset RP/K/!
IRP: Se'e""!5) de' *a)"# e) d!re""!#)a+!e)t# !)d!re"t#.
'ste "it junto con el de mas peso del registro 3SR sirven para determinar el
"anco de la memoria de datos seleccionado en el modo direccionamiento
indirecto! 'l PIC +2A*. al tener solo - "ancos no se usa este "anco por lo cual
de"e programar como /!
2.LOS RECURSOS 6UNDAMENTALES: TEMPORI-ADORES$ PUERTAS E&S
Y EEPROM DE DATOS.
2.1 EL PAPEL DE LOS TEMPORI-ARODES
)os PIC disponen de un procesador rpido y potente! 'n $l se incluye la memoria de
programa, la de datos, la %)6, la unidad central de control y algunos registros especiaG
les! Si dentro de un microcontrolador ;nicamente eAistiese el procesador, slo se poG
dran ejecutar instrucciones lgicoGaritm$ticas y de trans#erencia! Pero un microconG
trolador es muc4o ms que un procesador, 4ay puertas 'DS para conectarse 4a periG
#$ricos, canales de comunicacin, temporizadores para controlar tiempos, sistemas de
interrupciones capaz de detectar anomalas o sucesos especiales, sistemas de seguridad,
modo de #uncionamientos con "ajo consumo y un largo etc$tera de recurso que con#iguG
ran la potencial integral de un computador!
'l pic +23*. contiene poco recursos! Pero posee los su#icientes como para
resolver gran parte de las aplicaciones tpicas de los microcontroladores!
'n este captulo se descri"en los siguientes recursos del +23*., que son:
(emporizadorD Contador (5R/!
Perro guardin 7ILatc4dogJ8!
Puerta de 'DS!
5emoria ''PR:5 de datos!
2.2 TEMPORI-ADOR& CONTADOR TMR4
6na de las la"ores ms 4a"ituales en los programas de control de dispositivos suele ser
determinar intervalos concretos de tiempo, y reci"e el nom"re de temporizador 7timer8
el elemento encargado de realizar esta #uncin! (am"i$n suele ser #recuente contar los
impulsos que se producen en el eAterior del sistema, y el elemento destinado a este #in
se denomina contador!
Si las la"ores del temporizador o contador las asignamos al programa principal
ro"aran muc4o tiempo al procesador en detrimento de actividades ms importantes! Por
este motivo se disean recursos orientados espec#icamente a estas misiones!
'l pic +23*. poseen un temporizadorD contador de * "its, llamado (5R/, que
act;an de manera di#erentes:
+! Como el contador de sucesos, que esta representado por los impulsos que se
aplican a la patita R%.D (/C0I! %l llegar al valor 33 & se des"orda el conG
tador y, con el siguiente impulso, pasa a // &, advirtiendo de esta
circunstancia activando un "it I"anderaJ yDo provocando una interrupcin!
-! Como temporizador, cuando se carga en el registro que implementa al reG
curso un valor inicial se incrementa con cada ciclo de instruccin 73oscD.8
4asta que se des"orda, o sea, pasa de 33 a // &, y avisa poniendo a + un "it
I"anderaJ yDo provoca una interrupcin!
Para poner el (5R/ como contador de eventos en la patita (/C0I 4ay que poner a + el
"it (/CS, que es el que ocupa la posicin 9 del registro :P(I:=! 'n esta situacin, el
registro (5R/, que es el u"icado en la direccin + del "anco / de la memoria de datos,
se incrementa con cada #lanco activo aplicado a la patita (/C0I! 'l tipo de #lanco activo
se elige programando el "it (/S', que es el que ocupa la posicin . del registro
:P(I:=! Si (/S'K+, el #lanco activo es descendente, y si (/S'K/, es el ascendente!
Cuando se desea que el (5R/ #uncione como temporizador el "it (/CSK/!
'n realidad el +23*. dispone de dos temporizadores, el (5R/ y el perro guardin! 'l
primero act;a como principal y so"re el recaen el control de tiempo y la cuenta de
impulsos que entra por la patita (/C0I! 'l otro vigila que el programa no se IcuelgueJ,
y para ello cada cierto tiempo comprue"a que el programa se esta ejecutando normalG
mente! 'n caso contrario si, si el control est detenido en un "ucle in#inito a la espera de
alg;n acontecimiento que no se produce el perro guardin IladraJ, lo que se traduce en
un Reset que reinicia el sistema!
% menudo el (5R/ y el perro guardin precisan controlar largos intervalos de
tiempo y necesitan aumentar la duracin de los impulsos de reloj que les incrementa!
Para cu"rir este requisito se dispone de un circuito programa"le denominado divisor de
#recuencia, que divide la #recuencia utilizada por diversos rangos!
Para programar el comportamiento del (5R/, el perro guardin 7H>(8 y el
divisor de #recuencia se utilizan algunos "its del registro :P(I:= y de la pala"ra de
con#iguracin, que se eAplicara ms adelante!
'l divisor de #recuencia puede usarse con el (5R/ o con el H>(! Con el
(5R/ act;a como predi.isor, es decir, los impulsos pasan primero por el divisor y
luego se aplican al (5R/, una vez aumentada duracin! Con el perro guardin act;a
despu$s, realizando la #uncin de post5di.isor! )os impulsos, que divide por un rango
el divisor de #recuencia, puede provenir de una seal de reloj interna 73oscD.8 o de lo
que se aplica (/C0I!
'l (5R/ se comporta como un registro de propsito especial 7S3R8 u"icado en
la direccin + del "anco / de la memoria de datos! 'n igual direccin, pero en el "anco
+, se 4alla el registro :P(I:=!
(5R/ puede ser ledo y escrito en cualquier momento al estar conectada el "us
de dato! 3unciona como contador ascendente de * "its! Cuando #unciona como
temporizador conviene cargarle con el valor de los impulsos que quiere temporizar, pero
eApresados en complementos a -! >e esta manera, al llegar el n;mero de impulsos
deseado se des"orda y al pasar por // & se activa el "it (:I3 yD o se produce una
interrupcin!
Para calcular los tiempos a controlar con el (5R/ se utilizan la siguiente
#ormula:
8 7 8 / arg -92 7 . di.isor del Rango T6R en ado c 7alor T i,n Tempori8ac
osc
=
'n cualquier momento se puede leer el valor que contiene el (5R/, sin detener su
cuenta! )a instruccin adecuada al caso es mo.f tmr0,w(
-!-!+ 'l Registro :P(I:=
)a misin principal de este registro es go"ernar el (5R/ y el divisor de #recuencia!
:cupa la posicin *+ & de la memoria de datos, que equivale a la direccin + del "anco
+! 'l "it (/CS 7timer 0 cloc3 edge select$ selecciona en el multipleAor 5PM+ la
procedencia de los impulsos de reloj, que puede se los del oscilador como interno
73:SCD.8 o los que se aplican desde el eAterior por la patita (/C0I! 'l "it (/S'K+, el
#lanco activo es el descendente y si es / ser el #lanco ascendente!
'l "it PS% del registro :P(I:= asigna el divisor de #recuencia (5R/ 7PS%K/8
o al H>( 7PS%K+8!
)os 1 "its de menos peso de :P(I:= seleccionan el rango por el que se divide el
divisor de impulsos que se le aplican en su entrada!
'l "it 2 I=('>@ 7%nterrupt Edge$ sirve para determinar el #lanco activo que provocar
una interrupcin eAterna al aplicarse a la patita RB/DI=(! 6n + es ascendente y un / es
descendente!
'l "it ? RBP6E7R9 Pull5:p$ activa, si vale /, o desactiva, si vale +, las
resistencias PullG6p que pueden conectarse opcionalmente en las lneas de la puerta B!
? /
RBP6E I=('>@ (:CS (:S' PS% PS- PS+ PS/
C#+*!)a"!5) de '#s *!ts PS2$ PS1$ PS4
PS- PS+ PS/ >ivisor de
(5R/
>ivisor del
H>(
/ / / +:- +:+
/ / + +:. +:-
/ + / +:* +:.
/ + + +:+2 +:*
+ / / +:1- +:+2
+ / + +:2. +:1-
+ + / +:+-* +:2.
+ + + +:-92 +:+-*
PSA
+: 'l divisor de #recuencia es asignado al H>( 7perro guardin8!
/: 'l divisor de #recuencia es asignado al (5R/ !
TOSE
+: Incremento de (5R/ cada #lanco descendente!
/: Incremento de (5R/ cada #lanco ascendente!
TOCS
+: Pulsos introducidos a trav$s de tocN+ 7contador8!
/: Pulsos introducidos a trav$s de 3oscD. 7temporizador8!
INTEDG 78'a)"# a"t!(# de !)terr2,"!5) e9ter)a:
+: 3lanco ascendente!
/: 3lanco descendente!
R;PU. 7res!ste)"!as ,2''32, ,2erta *:
+: >esactivadas!
/: %ctivadas!
2.3 EL PERRO GUARDIN 7<DT:.
Se trata de un contador interno de * "its que origina un Reset cuando se des"orda! Su
control de tiempos es independiente de (5R/ y est "asado en una simple red RGC! Su
actuacin es opcional y puede "loquearse para que no #uncione programando el "it
H>(' de la pala"ra con#iguracin!
'l tiempo nominal con la que se 4alla programado el perro guardin es de +*
ms! Pero usando el divisor de #recuencia puede aumentarse 4asta alcanzar los -!1
segundos!
Para evitar que se des"orde el perro guardin 4ay que re#rescarle previamente!
'n realidad este re#resco consiste en ponerle a cero mediante las instrucciones clrwdt y
sleep! 'l programador de"e analizar las instrucciones de la tarea y situar alguna de esas
dos en sitios estrat$gicos por los que pase el #lujo de control antes de que transcurra el
tiempo asignado al H>(! >e esta manera, si el programa se IcuelgaJ no se re#resca el
perro guardin y se produce el reincio del sistema!
)a instruccin clrwdt "orra el H>( y reinicia su cuenta! Sin em"argo, la instruG
ccin sleep, adems de "orrar el H>(, detiene el sistema y lo mete en estado de
IreposoJ o de I"ajo consumoJ! Si no se desactivara el perro guardin al entrar en el
modo de reposo, al completar su cuenta provocar un Reset y sacar al
microcontrolador del modo de "ajo consumo! Para desactivar al perro guardin 4ay que
escri"ir un / en el "it - 7H>('8 de la pala"ra de con#iguracin!
'n el registro 'S(%>: un "it denominado (:E que pasa a valer cero despu$s
del des"ordamiento de H>(!
2.% LAS PUERTAS E&S.
)os PICS +23*. solo disponen de dos puertas de 'DS! )a puerta % posee 9 lneas, R%/G
R%., y una de ellas soporta - #unciones multipleAadas! Se trata de la R%.D(/C0+, que
puede actuar como lnea de 'DS o como patita que reci"en los impulsos que de"e contar
(5R/! )a puerta B tiene * lneas, RB/GRB?, y tam"i$n tiene una con #unciones
multipleAadas, la RB/DI=(, que, adems la lnea tpica de 'DS, tam"i$n sirve como
patita por la que se reci"en los impulsos eAternos que provocan una interrupcin!
Cada lnea 'DS puede con#igurarse independientemente como entrada o como
salida, seg;n se ponga a + o a /, respectivamente, el "it asociado del registro de
con#iguracin de cada puerta 7(RIS% y (RISB8! Se llama P6'R(%% y P6'R(%B los
registros que guardan la in#ormacin que entra o sale por la puerta que ocupan las
direcciones 9 y 2 del "anco / de la memoria de datos! )os registros de con#iguracin
(RIS% y (RISB ocupan las mismas direcciones pero en el "anco +!
-!.!+)a Puerta %
)as lneas R%1GR%/ admiten niveles (() y de salida C5:S! )a lnea R%.D(/C0+
dispone de un circuito Sc4mitt (rigger que proporciona una "uena inmunidad al ruido y
la salida la tiene drenador a"ierto! R%. multipleAa su #uncin de 'DS con la entrada de
impulsos eAternos para el (5R/!
Cuando se lee una lnea de la puerta % 7instruccin mo.fw puertaa8 se recoge el
nivel lgico que tiene en ese momento! )as lneas cuando act;an como salidas estn
Ilac4eadasJ, lo que signi#ica que sus patitas sacan un nivel lgico que se 4aya cargado
por ;ltima vez en el registro de P6'R(%%! )a escritura de una puerta implica la
operacin IlecturaD modi#icacinD escrituraJ! Primero se lee la puerta, luego se modi#ica
el valor y #inalmente se escri"e en el Ilatc4J su salida!
%l reiniciarse el PIC todos los "its de los registros (RIS quedan a +, con los que
las lneas de las puertas quedan con#iguradas como entradas!
Cada lnea de salida puede suministrar una corriente mAima de -/ m% y si es
entrada puede a"sor"er 4asta -9 m%! %l eAistir una limitacin en la disipacin mAima
de la potencia del c4ip, se restringe la corriente mAima de a"sorcin de la puerta % a
*/ m% y la de suministro a 9/ m%! )a puerta B puede a"sor"er un mAimo de +9/ m%
y suministrar una total de +// m%!
Con mo.f puerta;,w se lee una puerta y con la instruccin mo.wf puertaa se
escri"e en la puerta!
-!.!- )a Puerta B!
Consta de * lneas "idireccionales de 'DS, RB?GRB/, cuya in#ormacin se guardan en
el registro P6'R(%B, que ocupa la direccin 2 del "anco /! 'l registro de con#iguraG
cin (RISB ocupa la misma direccin en el "anco +!
)a lnea RB/DI=( tiene dos #unciones multipleAadas! %dems de patita 'DS, acG
t;a como patita para la peticin de una interrupcin eAterna, cuando se autoriza esta
#uncin mediante la adecuada programacin del registro I=(C:=, del que 4a"lar ms
adelante!
% todas las lneas de esta puerta se las permite conectar una resistencia pullGup,
de elevado valor, con el positivo de l alimentacin! Para este #in 4ay que programar en
el registro :P(I:= el "it RBP6E K/, lo que provoca la coneAin de una resistencia a
todas las lneas! Con el Reset todas las lneas con#iguradas como entradas y se desactiG
van las resistencias pullGup!
)as . lneas de ms peso, RB?GRB., pueden programarse para soportar una
misin especial! Cuando las . lneas act;an como entradas se las puede programar para
generar una interrupcin si alguna de ellas cam"ian su estado lgico! 'sta posi"ilidad es
muy prctica en el control de teclados!
'l estado de las patitas RB?GRB. en modo entrada se compara con el valor antG
guo que tenan y que se 4a"a lac4eado durante la ;ltima lectura de la puerta B! 'l camG
"io de estado de algunas de estas lneas origina una interrupcin y la activacin del
sealizador RBI3!
)a lnea RB2 tam"i$n se utiliza para la gra"acin serie de la memoria de prograG
ma y sirve para soportar la seal de reloj! )a lnea RB? constituye la entrada de los daG
tos en serie, cuando se gra"a un programa en la memoria de cdigo!
2.= LA PALA;RA DE CON6IGURACI>N
's una posicin reservada de la memoria del programa situada en la direccin -//? & y
accesi"le ;nicamente durante el proceso de gra"acin! %l escri"irse el programa de la
aplicacin es necesario gra"ar el contenido de esta posicin de acuerdo con la caracteG
rsticas del sistema!
'n las siguiente ta"la se muestra la distri"ucin y asignacin de los +. "its de la
pala"ra de con#iguracin del PIC +23*. y a continuacin las siguientes #unciones:
CP CP CP CP CP CP CP CP CP CP PHR('E H>(' 3:SC+ 3:SC/
CP: ;!ts de ,r#te""!5) de "5d!?#.
+: =o protegido!
/: Protegido! 'l programa no se puede leer, evitando copias, tampoco se puede
so"rescri"ir! %dems evita que pueda ser accedida la ''PR:5 de datos y, #inalmente,
si se modi#ica el "it CP de / a +, se "orra completamente la ''PR:!
P<RTE.: A"t!(a"!5) de' te+,#r!@ad#r /,#0er 2,1.
'l temporizador IpoLer upJ retrasa ?-ms la puesta en marc4a o reset que se produce al
conectar la alimentacin al PIC, para garantizar la esta"ilidad de la tensin aplicada!
+: desactivado!
-: activado!
<DTE: A"t!(a"!5) de' ,err# ?2ard!).
+ : %ctivacin del perro guardin!
/ : >esactivacin!
6OSC136OSC4: Se'e""!5) de' #s"!'ad#r 2t!'!@ad#.
3:SC+ 3:SC/ :scilador
+ + RC
+ / &S
/ + M(
/ / )P
-!9!+ Pala"ra de Identi#icacin 7I>8!
Son . posiciones reservadas de la memoria de programa u"icadas en las direcciones
-//// &G -//1 &, que no son accesi"les en el #uncionamiento normal del microcontroG
lador y slo pueden ser ledas y escritas durante el proceso de gra"acin!
Slo se utilizan los . "its de menos peso de cada pala"ra de identi#icacin 7I>8,
en donde se almacena un valor que puede consistir en un n;mero de serie, cdigos de
identi#icacin, numeraciones secuenciales o aleatorias, etc!
2.A MEMORIA EEPROM DE DATOS:
'l PIC +2A*. tiene 2. "ytes de memoria ''PR:5 de datos donde se puede almacenar
datos y varia"les que interesa que no se pierden cuando se desconecta la alimentacin al
sistema!
)a memoria ''PR:5 de datos no est mapeada en la zona de memoria de datos
donde se u"ican S3R y @PR! Para poder leerla y escri"irla durante el #uncionamiento
normal del microcontrolador 4ay que manejar . registros del "anco S3R:
G''>%(%
G''%>R
G''C:=+
G''C:=-
'n el registro ''>%R, u"icado en la direccin , del "anco /, se carga la direccin a
acceder de la ''PR:5 de datos! )as 2. posiciones de un "yte ocupan las direcciones
de un mapa que comienza en // 4 y termina con 13 4, por eso los - "its de ms peso del
registro ''%>R siempre valen /!
'n el registro ''>%(%, u"icado en la direccin * del "anco /, se depositan los
datos que se leen o se escri"en!
'l registro ''C:=+, que ocupa la direccin ** 4 de la memoria de datos, o la
direccin * 4 de "anco +, tiene misiones de control en las operaciones de la ''PR:5, y
la distri"ucin de sus "its se representan en la siguiente ta"la:
GGG GGG GGG ''I3 HR'RR HR'= HR R>
RD: Le"t2ra
Se pone a + cuando se va realizar un ciclo de lectura en la ''PR:5! )uego pasa /
automticamente!
<R: Es"r!t2ra
Se pone a + cuando se va realizar un ciclo de escritura en la ''PR:5! )uego pasa /
automticamente!
<REN: Per+!s# de es"r!t2ra
+: Permite la escritura en la ''PR:5!
/: Pro4"e la escritura!
<RERR: ;a)dera de err#r de es"r!t2ra.
+: Se pone a + cuando una operacin de escritura 4a terminado prematuramente!
/: )a operacin de escritura se 4a completado correctamente!
EEI6: ;a)dera de 8!)a' de #,era"!5) de es"r!t2ra.
+: Cuando este "it se pone a + indica que la operacin de escritura se 4a
completado con $Aito! Se pone a / por programa!
/: )a operacin de escritura se 4a completado!
'l registro ''C:=- en realidad no esta implementado #sicamente! %l leerlo todos sus
"its son /! Slo se emplea como dispositivo de seguridad durante el proceso de escritura
de la ''PR:5, para evitar inter#erencia en lo largo del intervalo de tiempo que precisa
su desarrollo!
-proceso de lectura*
Se inicia un ciclo de lectura colocando la direccin a acceder en el registro ''%>R y
poniendo el "it R>K+ en el registro ''C:=+! 'l dato ledo estar disponi"le en el
registro ''>%(% en el siguiente ciclo y permanecer en el 4asta que se realice una
nueva lectura o escritura en la ''PR:5!
E)emplo*
Con#eccionar un programa para realizar la lectura de una posicin, IlectJ, de la
''PR:5!
Solucin:
"c# estado, rp/ OBanco /!
movlL lect Odireccin a leer!
movL# eeadr O
"s# estado, rp/ OBanco +!
"s# eecon+, rd O )ectura
"c# estado,rp/ O"anco /
mov# eedata,L OH se carga con el valor leido en la direccin IlectJ de la
O''PR:5
-proceso de escritura:
Para escri"ir en la ''PR:5 de datos el usuario de"e seguir una determinada secuencia
de instrucciones en las que participa el registro ''C:=-! 'ste registro, que en realidad
no esta implementado #sicamente, slo asume #unciones de seguridad en el proceso,
cargndose en $l dos valores concretos: 99 4 y %% 4! )a duracin tpica de un ciclo de
escritura es de +/ ms, que es nota"lemente larga en comparacin con la velocidad del
PIC!
'l ciclo de escritura comienza cargando en el registro ''%>R la direccin de la
posicin a escri"ir y en el registro ''%>%(% el valor a gra"ar! 'n la pagina siguiente
se ve un ejemplo de proceso de escritura!
E)emplo*
'scri"ir en la direccin IescrJ de la ''PR:5 el valor del dato!
Solucin:
"c# estado, rp/ OBanco /
movlL escr
movL# eeadr OSe escri"e en el registro eeadr la direccin
movlL dato
movL# eedata OSe escri"e el dato en eedata
"s# estado,rp/ OBanco +
"s# eecon+,Lren Opermiso de escritura
Oinicio de secuencia de escritura
movlL /A99 4
movL# eecon- Ose escri"e 99 4 en eecon-
movlL /Aaa 4
movL# eecon- Ose escri"e aa 4 en eecon-
"s# eecon+,Lr Ocomienza la escritura
%l aca"ar el proceso de escritura el "it HR pasa a valer / automticamente, mientras
que el "it ''I3 se pone a +! 'ste ;ltimo "it 4ay que ponerlo a / posteriormente
mediante so#tLare!
6na "uena precaucin es veri#icar si la escritura de la ''PR:5 4a sido correcta, para
lo cual se suele restar el dato escrito con el registro ''>%(%! Si no se 4a producido
error, el "it F pasa a valer +!
>ada la importancia de conocer el #in de la escritura de una posicin de la
''PR:5, no slo se in#orma activando el "it ''I3, sino que adems, si se desea, se
puede provocar una interrupcin!
3.INTERRUPCIONES$ RESET Y OTROS RECURSOS AUBILIARES.
3. 1 IMPORTANCIA DE LAS INTERRUPCIONES:
)as llamadas a su"rutinas mediante la instruccin call son desviaciones del #lujo de
control del programa originadas por instrucciones, por lo que se consideran sncronas,
se producen cada vez que se ejecutan dic4a instruccin!
)as interrupciones son desviaciones de #lujos de control del programa originadas
asncronamente por diversos sucesos que no se 4allan "ajo la supervisin de las instruG
cciones! >ic4os sucesos pueden ser eAternos al sistema, como la generacin de un
#lanco o nivel activo en una patita del microcontrolador, o "ien internos, como el
des"ordamiento de un contador!
'l comportamiento de microcontrolador ante la interrupcin es similar a de la
instruccin call de llamada a su"rutina! 'n am"os casos se detiene la ejecucin del
programa en curso, se salva la direccin actual de PC en la pila y carga el PC con una
direccin reservada de la memoria de cdigo llamado vector de interrupcin!
'n los PIC +2M*M el vector de interrupcin se 4alla situado en la direccin ///.
4, en donde comienza la Rutina de servicio a la interrupcin 7RSI8! 'n general, en dic4o
vector se suele colocar una instruccin de salto incondicional I@:(:J, que traslada el
#lujo de control a la zona de memoria de cdigo destinada a contener la rutina de
atencin a la interrupcin!
3.2 CAUSAS DE LA INTERRUPCI>N !
+P %ctivacin de la patita RB/DI=(!
-P >es"ordamiento del temporizador (5R/!
1P Cam"io de una de las patitas de mas peso del la puerta " 7RB?:RB.8!
.P 3inalizacin de la escritura de la ''PR:5!
Cuando ocurre cualquiera de los . sucesos se origina una peticin de interrupcin, que
si se acepta y se atiende comienza depositando el valor del PC actual en la Pila,
poniendo el "it @I'K/ y cargando el PC con el valor ///. 4, que es el vector de
interrupcin donde se desva el #lujo!
Cada #uente de interrupcin dispone de un "it I"anderaJ o I#lagJ, que se pone
automticamente a + cuando esta produce! %dems, cada #uente de interrupcin tiene
otro "it de permiso, que seg;n su valor permite o pro4"e la realizacin de la
interrupcin!
1!-!+Registro >e Control >e Interrupciones I=(C:=!
)a mayor parte de las "anderas y "its de permiso de las #uentes de interrupcin estn
implementada en el registro I=(C:=!
? /
@I' ''I' (/I' I=(' RBI' (/I3 I=(3 RBI3
)a descripcin de cada uno de los "its de este registro se ven en la pagina siguiente!
GIE : Per+!s# ?'#*a' de !)terr2,"!#)es!
+: Permite la ejecucin de todas las interrupciones, cuyos "its de permiso
individuales tam"i$n las permitan!
/: Pro4"e todas las interrupciones!
EEIE : Per+!s# de !)terr2,"!5) ,#r 8!) de 'a es"r!t2ra e) 'a EEPROM.
+: Permite se origine una interrupcin cuando termina la escritura de la
''PR:5 de datos!
/: Pro4"e que se produzca esta interrupcin!
T4IE: Per+!s# de !)terr2,"!5) ,#r des*#rda+!e)t# de' TMR4
+: Permite una interrupcin al des"ordarse el (5R/!
/: Pro4"e esta interrupcin!
INTE: Per+!s# de I)terr2,"!5) de 'a ,at!ta R;4&INT
+: Permite la interrupcin al activarse RB/DI=(!
/: Pro4"e esta interrupcin!
R;IE: Per+!s# de 'a I)terr2,"!5) ,#r "a+*!# de estad# de R;C:R;%
+: Permite esta interrupcin!
/: Pro4"e esta interrupcin!
T4I6: ;a)dera ,#r des*#rda+!e)t# de' TMR4.
+: Se pone a + cuando 4a ocurrido el des"ordamiento!
/: Indica que el (5R/ no se 4a des"ordado!

INT6: ;a)dera de a"t!(a"!5) de 'a ,at!ta R;4&INT.
+: Se pone a + al activarse RB/DI=(, al reci"ir un #lanco activo desde el
eAterior!
/: Indica que RB/DI=( no 4a reci"ido #lanco activo!
R;I6: ;a)dera de "a+*!# de estad# e) 'as ,at!tas R;C:R;%.
+: Pasa a + cuando cam"ia el estado de alguna de estas . lneas!
/: =o 4a cam"iado el estado de RB?:RB.!
Cuando @I' K/ no se acepta ninguna de las interrupciones! Si @I' K+ slo se aceptan
aquellas #uentes de interrupcin!
Siempre que se produzca una interrupcin por cualquier causa, @I'K+ y el PC se
carga el valor ///.&, que es el vector de interrupcin! Para conocer qu$ causa 4an
provocado la interrupcin se eAploran las "anderas, 1 de los cuales se u"ican en el
registro I=(C:= y el , ''I3, que se pone a + cuando #inaliza la escritura de la
''PR:5 se 4alla en el "it . del registro ''C:=+!
)as "anderas de"en ponerse a / por programa antes del retorno de la interrupcin y son
operativos aunque la interrupcin est$ pro4i"ida por su "it de permiso correspondiente!
E)emplo de e"ploraci,n de tipo de interrupci,n*
Con#eccionar un programa que eAplore de #orma continua las . #uentes de interrupcin
para averiguar cual se 4a activado:
GSoluci,n
Se usa la instruccin btfss registro, n, que eAplora el "it InJ de IregistroJ y si vale + se
salta una instruccin, o sea, el PC se incrementa en - unidades! % esta operacin se la
denomina "rinco!
;inicio del ser.icio de interrupci,n por acti.aci,n de R90<%&T
int btfss intcon,intf /E"plora el bit intf de
/intcon = si .ale ! >a= brinco
goto puertab /salta puertab
;inicio del ser.icio de interrupci,n por cambio en R9+ * R9?
puertab btfss intcon,rbif /e"plora el bit rbif de
/intcon = .ale ! se produce brinco
;inicio del ser.icio de interrupci,n por desbordamiento del T6R0
tmr0 btfss intcon,t0if / e"plora el bit t0if = si
/.ale ! brinca
goto eeprom
;inicio del ser.icio de interrupci,n por fin de la escritura en la EEPRO6
eeprom btfss eecon!,eeif / e"plora el bit eeif del
/registro eecon! = si
/.ale ! >a= brinco =
/ = se salta el goto(
goto int
1!-!+ Interrupcin eAterna I=(:
'sta #uente de interrupcin es sumamente importante para atender acontecimientos
eAternos en tiempo real! Cuando ocurre alguno de ellos, se activa la patita RB/DI=( y se
4ace una peticin de interrupcin! 'ntonces, de #orma automtica, el "it I=(3 K + y, si
el "it de permiso I=(' K + se autoriza el desarrollo de la interrupcin!
5ediante el "it 2, llamado I=(>'@, del registro :P(I:= se puede seleccionar
cul ser el #lanco activo en RB/DI=(! Si desea que sea ascendente se escri"e un + en
dic4o "it, y si se desea que sea descendente se escri"e un /!
'l procesador eAplora el "it I=(3 al #inal del primer ciclo de reloj de cada ciclo
de instruccin! Recu$rdese que cada ciclo de instruccin consta"a de . ciclos de reloj
7Q+, Q-, Q1, Q.8! %l terminar Q+ se eAploran los "its "anderas, produci$ndose un
periodo de latencia de 1 o . ciclos de instruccin desde el momento que 4ay un "it
"andera activado 4asta que se inicializa la interrupcin!
Si I=('K+ y se aplica un #lanco RB/DI=(, el "it I=(3 se pone a +
automticamente y se solicita una interrupcin , que es aceptada cuando @I' K +! %ntes
de regresar al programa principal 4ay que "orrar I=(3, puesto que en caso contrario
ejecutar la interrupcin de retorno retfie se volvera a desarrollar el mismo proceso de
interrupcin!
1!-!1 Interrupcin por des"ordamiento del tmr/:
Cuando el (5R/ se des"orda y pasa del valor 33 & al //&, el "it (/I3 se pone
automticamente a +! Si adems, el "it de permiso de la interrupcin del (5R/, (/I'K+
y el "it de permiso glo"al de interrupciones @I'K+, se produce una interrupcin!
Si no se recarga el (5R/ cuando se des"orda, sigue contando desde //& a 33&!
'n cualquier momento se puede leer y escri"ir este registro, pero cada vez que se
escri"e se pierde - ciclos de reloj para la sincronizacin !
Cuando se carga inicialmente (5R/ con el valor =
+/
, cuenta -92G= impulsos,
siendo el tiempo que tarda eApresado en la siguiente #ormula
Tempori8aci,n ?;Tosc2#@A5&
!0
$;Rango del di.isor de frecuencia(
1!-!. Interrupcin Por Cam"io >e 'stado 'n )as )neas R"?:R. >e )a Puerta B:
'sta interrupcin est diseada espec#icamente para detectar la pulsacin de una
correspondiente a un teclado matricial , que se eAplora con . lneas de estrada y salida!
Para esta #uncin se destinan las lneas RB?:RB. de la puerta B, que cada vez que
cam"ia el estado lgico de una de ellas se #uerza al "it RBI3 a ponerse a +, y si los "its
de permiso RBI'K@I'K+ se autoriza la interrupcin!
1!-!9 Interrupcin Por 3inalizacin >e )a 'scritura 'n )a ''PR:5 >e >atos:
'l tiempo tpico que tarda en desarrollarse una operacin de escritura en la ''PR:5 de
datos de los PIC+2M*M es de +/ ms, que es considera"le comparado con la velocidad a
la que el procesador ejecuta sus instrucciones! Para asegurarse que se 4a completado la
escritura y puede continuar el #lujo de control del programa es aconseja"le manejar la
interrupcin que se origina al #inalizar la escritura, que pone automticamente el "it
I"anderaJ ''I3 a +! y se autoriza siempre que ''I'K@I'K+!
Cuando se descri"i el proceso de escritura de la ''PR:5 de datos se indic
que se usa"a un registro no real para asegurar la misma! Se trata"a del ''C:=-, en el
que se gra"a"an dos valores, el 99& y el %%&! >urante la escritura de este registro de"e
pro4i"irse la aceptacin de interrupciones para salvaguardar la operacin de escritura,
por eso ese mdulo se pone @I'K/, tal como se indica en el siguiente trozo de programa
orientado a escri"ir la memoria ''PR:5! Se supone que la direccin a acceder ya se
4a cargado en el registro ''%>R y el dato a escri"ir en ''>%(%!
9sf estado,rp0 /Selecciona el banco !
9cf intcon,gie /B%E 0( Pro>Cbe interrupciones
9sf intcon,eeie /Permite la interrupci,n de la EEPRO6
9sf econ!,wren /Permiso de escritura de la EEPRO6
6o.lw 0"@@
6o.wf eecon# /Se escribe en eecon# el dato @@D(
6o.lw 0"aa
6o.w eecon# /se escribe aaD en eecon#
9sf eecon(,wr /comien8a el proceso de escritura
9sf intcon,gie /permiso de interrupciones( B%E!
'n los PIC+2C*. y el PIC+23*M se puede leer y escri"ir en la ''PR:5 de datos se
4aya protegido el cdigo! 'n los PIC+2CR*A, que disponen de memoria R:5 para el
cdigo, eAisten dos "its para el cdigo de proteccin :uno dedicado a la R:5 de cdigo
y el otro a la ''PR:5 de datos!
3.3 REINI-ALI-ACI>N O RESET.
)os PIC+2M*M tienen cinco causas que provocan el reinicio del sistema, consistente en
cargar el PIC con el valor /// & 7vector de reset8 y poner el estado de los "its de los
registros espec#icos con un valor conocido!
+!< ConeAin de la alimentacin, P:R 7IPoLer on ResetJ8!
-!< %ctivacin de la patilla 5C)RE 7I5aster clear ResetJ8 en #uncionamiento
normal!
1!< %ctivacin de la patita 5C)RE en estado de reposo!
.!< >es"ordamiento del perro guardin en estado normal!
9!< >es"ordamiento del perro guardin en estado de reposo!
'n la ta"la se ve los estados que toman los "its de los registros de propsito de la
memoria de datos cuando se provoca un reset por cada una de las 9 #ormas posi"les:
R'@IS(R: >IR'CCIC=
C:='MIC= >'
)%
%)I5'=(%CIC=
>'SB:R>%5I'=(:
>') P'RR:
@6%R>IR= '=
5:>: =:R5%)
>'SB:R>%5I'=(:
>') P'RR:
@6%R>IR=
5:>: R'P:S:
5C)RE
5:>:
=:R5%)
5C)RE
5:>:
R'P:S:
H
GGGGG
AAAA AAAA uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu
I=>IR // 4 GGGG GGGG GGGG GGGG GGGG
R(RC /+ 4 AAAA AAAA uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu
PC /- 4 //// 4 //// 4 pcS+ //// 4 //// 4
S(%(6S /1 4 ///+ +AAA //// +uuu uuu/ uuuu ///u uuuu ///+ /uuu
3SR /. 4 AAAA AAAA uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu
P:R( % /9 4 AAAA AAAA uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu
P:R( B /2 4 AAAA AAAA uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu
(RIS % *9 4 GGG+ ++++ GGG+ ++++ GGGu uuuu GGG+ ++++ GGG+ ++++
(RIS B *2 4 ++++ ++++ ++++ ++++ uuuu uuuu ++++ ++++ ++++ ++++
:P(I:= *+ 4 ++++ ++++ ++++ ++++ uuuu uuuu ++++ ++++ ++++ ++++
''>%(% /* 4 AAAA AAAA uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu
''%>R /, 4 AAAA AAAA uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu
''C:=+ ** 4 GGG/ T/// GGG/ //// GGGu uuuu GGG/ T/// GGG/ T///
''C:=- *, 4 GGGG GGGG GGGG GGGG GGGG
PC)%(& /a 4 GGG/ //// GGG/ //// GGGu uuuu GGG/ //// GGG/ ////
I=(C:= /" 4 //// ///A //// ///u uuuu uuuu //// ///u //// ////
6K=o cam"ia AKIndeterminado GGGGK=o implementado TK>epende de otras condiciones
1!1!+ Reset por #allo en la alimentacin 7IBroLn :utJ8
Se produce un #allo por alimentacin cuando el voltaje de alimentacin U
>>
desciende
por de"ajo del valor mnimo, sin llegar a cero, y luego se recupera! 'n esta situacin es
preciso provocar un Reset!
3.% EL MODO DE REPOSO O DE ;ADO CONSUMO.
'ste modo de #uncionamiento de los PIC est caracterizado por el reducido consumo de
energa que requiere y est muy recomendado en aquellas aplicaciones en las que 4ay
largos periodos de espera 4asta que se produzca alg;n suceso asncrono, como la pulsaG
cin de una tecla! 'n dic4os periodos el procesador est inactivo!
'n este modo el consumo del PIC, que generalmente es de -m%, se reduce a +/
V%, lo que permite alimentarle con una pequea pila durante casi - aos!
Para entrar en el modo de reposo 4ay que ejecutar la instruccin sleep y produce
una situacin muy especial de #uncionamiento que parece que el sistema se 4a WcongelaG
doW, requiriendo el mnimo suministro de energa para mantener el estado del procesaG
dor sin ninguna actividad!
'n reposo la patita (/C0+ se conecta a U
>>
o a tierra para eliminar la entrada de
impulsos eAternos al (5R/! Por otra parte, como se detiene el oscilador principal que
genera los impulsos (
osc
, tam"i$n se para (5R/! )as patitas de 'DS mantienen el estado
anterior al modo de reposo y las que no se 4allan conectadas a peri#$ricos y act;an
como entradas de alta impendancias se recomienda conectarlas a U
>>
o a tierras para
evitar posi"les #ugas de corriente! )a patita 5C)RE de"e conectarse a nivel alto! Sin
impulsos de reloj el procesador se congela y deja de ejecutar instrucciones 4asta que
IdespierteJ y salga del estado!
Para salir del estado de reposo7despertar8 eAisten 1 alternativas:
+! < %ctivacin eAterna de 5C)RE para provocar un reset!
-! < >es"ordamiento de perro guardin si quedo operativo en modo de reposo!
1! < @eneracin de una interrupcin! 'n este caso, como (5R/ est parado slo
pueden producirse los otros tres tipos de interrupcin!
Cuando se despierta el PIC se desarrolla la secuencia del :S(, que retarda +!/-. (
osc
para esta"ilizar la #recuencia de tra"ajo, y luego se pasa a ejecutar la siguiente
instruccin a sleep 7PCS+8!

%.REPERTORIO DE INSTRUCCIONS:
)as instrucciones que usa el PIC +23*. se clasi#ican en cinco grandes grupos, que son
los siguientes:
%.1INSTRUCCIONES QUE MANEDAN ;ITS:
Slo 4ay dos instrucciones en este grupo, pero son muy #leAi"les! 6na de ellas pone a +
7bsf8 cualquier "it de un registro, mientras que la otra lo pone a / 7bcf8!
I=S(R6CCI:='S Q6' 5%='X%= BI(S
SI=(%MIS :P'%CIC= CIC):S 3:R5%(: +.
BI(S
S'Y%)IF%>:R'S
BC3 #," Borra "it " de # + // //"" "###
####
GGG
BS3 #," Pone al + el "it
" de #
+ /+ /+"" "###
####
GGG
%.2INSTRUCCIONES DE CONTROL Y ESPECIALES:
'n este grupo se incluyen instrucciones que rompen la secuencia normal del programa
porque alteran el contenido de PC y tam"i$n las instrucciones especiales!
)a instruccin de salto incondicional goto carga en el PC la direccin de la
nueva instruccin! )a instruccin call de llamada a su"rutina, antes de cargar el PC con
la direccin de la instruccin a saltar, salva la direccin de partida guardando en la cima
de la pila el valor actual del PC! >e esta manera, al retornar de la su"rutina se saca de la
pila la direccin a la que regresar en el programa principal!
Para realizar un retorno de la su"rutina se pueden emplear - instrucciones! )a
ms 4a"itual es return, que se limita a eAtraer de la cima de la pila el valor que carga en
el PC! :tra ms compleja es retlw 3, que, adems de 4acer lo mismo que return, carga
en H el valor inmediato de 3! 's decir devuelve un parmetro desde la su"rutina!
Para el #inal de las interrupciones 4ay otra instruccin cuyo nemnico es retfie!
)a operacin de esta instruccin consiste en cargar en el PC el contenido de la cima de
la pila y poner el "it @I'K+, pues al comenzar la interrupcin este "it se pone
automticamente a / para evitar que cuando se atiende una interrupcin se produzca
otra! @I' es el "it de permiso glo"al de interrupciones!
'n cuanto a las instrucciones especiales, se 4an incluido dos en este grupo:
clrwdt y sleep( )a primera pone a / el contenido del perro guardin, es decir, lo re#resca
o reinicializa! 'l perro guardin si se des"orda 7pasa de /A## a /A//8 provoca un reset!
)a instruccin clrdwt 4ay que colocarla estrat$gicamente en ciertos puntos del programa
para evitar la reinicializacin!
)a instruccin sleep introduce al procesador en un modo de #uncionamiento que
se llama de Reposo o de Bajo Consumo! >etiene el oscilador y el procesador queda
congelado, no ejecutando instrucciones y manteniendo el mismo valor en las puertas de
'DS! (am"i$n pone los "its P>EK/ y (:EK+ y "orra el perro guardin y el divisor de
#recuencia!
I=S(R6CCI:='S >' C:=(R:) 'SP'CI%)'S
SI=(%MIS :P'R%CIC= CIC):S 3:R5%(:
>' . BI(S
S'Y%)IF%>:R'S
C%)) N )lamada a
su"rutina
- +/ /NNN NNNN
NNNN
(:E,P>E
C)RH>( Borra el perro
guardin
+ // //// /++/
/+//
GGG
@:(: N Salto
incondicional
- +/ +NNN NNNN
NNNN
GGG
R'(3I' Retorno de
interrupcin
7@I'K+8
- // //// ////
////
GGG
R'()H N Retorno
su"rutina y
carga LKN
- ++ /+AA NNNN
NNNN
GGG
R'(6R= Retorno de
su"rutina
- // //// ////
////
GGG
S)''P Pasa al modo
de reposo
+ // //// /++/
//++
(:PE, P>E
%.3INSTRUCCIONES DE ;RINCO:
Slo 4ay cuatros instrucciones de salto condicional en los PIC de gama media! >os de
ellas testean un "it de un registro y seg;n valga + o /, "rinca o no! Recu$rdese que un
"rinco es un IsaltitoJ pequeo, slo se salta la instruccin siguiente a la condicional!
)as otras dos instrucciones se incrementa o decrementan un registro y la posi"ilidad de
"rinco se e#ect;a si con esa operacin el valor del registro 4a llegado a cero! Cuando
estas - instrucciones no "rincan porque no se cumple la condicin, tardan + ciclo de
instruccin en ejecutarse! 'n caso de que "rinquen tardan el do"le!
I=S(R6CCI:='S >' BRI=C:
SI=(%MIS :P'R%CIC= CIC):S 3:R5%(:
>' +. BI(S
S'Y%)IF%>:R'S
B(3SC #, d 'Aplora un "it
de # y "rinca si
vale /
+7-8 /+ +/"" "###
####
GGG
B(3SS #,d 'Aplora un "it #
y "rinca si vale
+
+7-8 /+ ++"" "###
####
GGG
>'C3SF #, d >ecrementa # y
si es /, "rinca
+7-8 // +/++ "###
####
GGG
I=C3SF >ecrementa # y
si es +, "rinca
+7-8 // ++++ "###
####
GGG
SI dK/ el resultado se guarda en el acumulador y si dK+ se guardara en el
registro #uente!
%.% INSTRUCCIONES QUE MANEDAN REGISTRO:
Responde a la sintaAis nem,nico f,d siendo # y d los dos operando #uente y destino que
se 4allan implementados por registro de * "its de la memoria de datos!
'l registro # viene re#erenciado por la direccin de ? "its que ocupa, mientras
que el destino solo por uno, que si vale / se re#iere al acumulador y si vale + es el
registro #uente!
I=S(R6CCI:='S Q6' 5%='X%= R'@IS(R:S
SI=(%MIS :P'R%CIC= CIC):S 3:R5%(:
>' +. BI(S
S'Y%)IF%>:R'S
%>>H3 #, d Suma L y #! + // /+++ d###
####
C,>C,F
%=>H3 #,d %=> # con L! + // /+/+ d###
####
F
C)R3 # Pone a cero #! + // ///+ +###
####
F
C)RH GGG BoraA L! + // ///+ /AAA
AAAA
F
C:53 #,d Complementa
#!
+ // +//+ d###
####
F
>'C3 #, d >ecrementa #! + // //++ d###
####
F
I=C3 #,d Incrementa #! + // +/+/ d###
####
F
I:RH3 #,d :R 7L,#8! + // /+// d###
####
F
5:U3 #,d 5ueve #! + // +/// d###
####
F
5:UH3 # 5ueve L y #! + // //// +###
####
GGG
=:P GGG =o opera! + // //// /AA/
////
GGG
R)3 #,d Rota # 4acia la
izquierda a
trav$s del
acarreo!
+ // ++/+ d###
####
C
RR3 #,d Rota # 4acia la
derec4a a trav$s
del acarreo!
+ // ++// d###
####
C
S6BH3 #,d Resta # y L! + // //+/ d###
####
C, >C, F
SH%P' #,d Intercam"ia
ni""les
+ // +++/ d###
####
GGG
M:RH3 #,d M:R de L con
#
+ // /++/ d###
####
F
SI dK/ el resultado se guarda en el acumulador y si dK+ se guardara en el
registro #uente!
%.=INSTRUCCIONES QUE MANEDAN OPERANDO INMEDIATOS:
Se trata de media docena de instrucciones que realizan una operacin con un valor
inmediato de * "its que se proporciona dentro del #ormato de instruccin, el cual slo
tiene 2 "its y varan los "its "anderas de la pala"ra de estado! 'l resultado es guardado
en el acumulador!
I=S(R6CCI:='S Q6' 5%='X%= :P'R%=>:S I=5'>I%(:S
SI=(%MIS :P'R%CIC= CIC):S 3:R5%(:
>' +. BI(S
S'Y%)IF%>:R'S
%>>)H N Suma
inmediata con
L
+ ++ +++A NNNN
NNNN C, >C, F
%=>)H N %=> inmediato
con H
+ ++ +//+ NNNN
NNNN
F
I:R)H N :R inmediato
con H
+ ++ +/// NNNN
NNNN
F
5:U)H N 5ueve a L el
valor de N
+ ++ //AA NNNN
NNNN
GGG
S6B)H N Resta L de un
inmediato
+ ++ ++/A NNNN
NNNN
C, >C, F
M:R)H N :R eAclusiva
con L!
+ // +/+/ NNNN
NNNN
F
)os sealizadores son "its de la pala"ra de estado!

Das könnte Ihnen auch gefallen